diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..3f142e1
Binary files /dev/null and b/.DS_Store differ
diff --git a/client/.gitignore b/client/.gitignore
new file mode 100755
index 0000000..769e64c
--- /dev/null
+++ b/client/.gitignore
@@ -0,0 +1,61 @@
+#/////////////////////////////////////////////////////////////////////////////
+# Fireball Projects
+#/////////////////////////////////////////////////////////////////////////////
+
+library/
+temp/
+local/
+build/
+
+#/////////////////////////////////////////////////////////////////////////////
+# Logs and databases
+#/////////////////////////////////////////////////////////////////////////////
+
+*.log
+*.sql
+*.sqlite
+
+#/////////////////////////////////////////////////////////////////////////////
+# files for debugger
+#/////////////////////////////////////////////////////////////////////////////
+
+*.sln
+*.csproj
+*.pidb
+*.unityproj
+*.suo
+
+#/////////////////////////////////////////////////////////////////////////////
+# OS generated files
+#/////////////////////////////////////////////////////////////////////////////
+
+.DS_Store
+ehthumbs.db
+Thumbs.db
+
+#/////////////////////////////////////////////////////////////////////////////
+# exvim files
+#/////////////////////////////////////////////////////////////////////////////
+
+*UnityVS.meta
+*.err
+*.err.meta
+*.exvim
+*.exvim.meta
+*.vimentry
+*.vimentry.meta
+*.vimproject
+*.vimproject.meta
+.vimfiles.*/
+.exvim.*/
+quick_gen_project_*_autogen.bat
+quick_gen_project_*_autogen.bat.meta
+quick_gen_project_*_autogen.sh
+quick_gen_project_*_autogen.sh.meta
+.exvim.app
+
+#/////////////////////////////////////////////////////////////////////////////
+# webstorm files
+#/////////////////////////////////////////////////////////////////////////////
+
+.idea/
diff --git a/client/README.md b/client/README.md
new file mode 100755
index 0000000..09b0019
--- /dev/null
+++ b/client/README.md
@@ -0,0 +1,2 @@
+# hello-world
+Hello world new project template.
diff --git a/client/README_copy.md b/client/README_copy.md
new file mode 100755
index 0000000..aa9bec7
--- /dev/null
+++ b/client/README_copy.md
@@ -0,0 +1,7 @@
+# hello-world
+Hello world new project template.
+2016-09-16 23:28:35.559 SCMJ-mobile[5764:6847046] *** Assertion failure in void _UIApplicationMainPreparations(int, char **, NSString *__strong, NSString *__strong)(), /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3512.60.12/UIApplication.m:3702
+2016-09-16 23:28:35.561 SCMJ-mobile[5764:6847046] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unable to instantiate the UIApplication subclass instance. No class named NSApplication is loaded.'
+*** First throw call stack:
+(0x183c16db0 0x18327bf80 0x183c16c80 0x18459c1c0 0x189023b5c 0x188de2054 0x1000befc0 0x1836928b8)
+libc++abi.dylib: terminating with uncaught exception of type NSException
\ No newline at end of file
diff --git a/client/assets/anims.meta b/client/assets/anims.meta
new file mode 100755
index 0000000..97044a5
--- /dev/null
+++ b/client/assets/anims.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "824dabd4-6ad7-487f-9c71-01ed2c6a6c40",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/angry.anim b/client/assets/anims/angry.anim
new file mode 100755
index 0000000..3d44c5f
--- /dev/null
+++ b/client/assets/anims/angry.anim
@@ -0,0 +1,67 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "angry",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1.3333333333333333,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "8fe224e5-640d-4a87-99b6-fa1e261713bf"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "e88648aa-c921-4c4c-a071-9ef8ea95a262"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "e88648aa-c921-4c4c-a071-9ef8ea95a262"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "43cf194b-951f-41d2-abf8-4b00596fc99c"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "0c68b464-2b10-4d64-a025-e93952845161"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "7411c09d-2f89-4202-9d7a-1101493513d4"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "1c88086c-8bdc-4480-b651-82a71273f079"
+ }
+ },
+ {
+ "frame": 1.1666666666666667,
+ "value": {
+ "__uuid__": "574a6b87-40f5-467f-9bd4-5decd2e86138"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/angry.anim.meta b/client/assets/anims/angry.anim.meta
new file mode 100755
index 0000000..cae1cbd
--- /dev/null
+++ b/client/assets/anims/angry.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "f6874ded-313f-4ce5-a3d4-08925be31265",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/dingque_tuijian.anim b/client/assets/anims/dingque_tuijian.anim
new file mode 100755
index 0000000..5d00dfc
--- /dev/null
+++ b/client/assets/anims/dingque_tuijian.anim
@@ -0,0 +1,54 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "dingque_tuijian",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1.2,
+ "sample": 5,
+ "speed": 1,
+ "wrapMode": 22,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {}
+ },
+ "props": {
+ "scaleX": [
+ {
+ "frame": 0,
+ "value": 0.95
+ },
+ {
+ "frame": 0.4,
+ "value": 1.1
+ },
+ {
+ "frame": 0.8,
+ "value": 0.95
+ },
+ {
+ "frame": 1.2,
+ "value": 1.1
+ }
+ ],
+ "scaleY": [
+ {
+ "frame": 0,
+ "value": 0.95
+ },
+ {
+ "frame": 0.4,
+ "value": 1.1
+ },
+ {
+ "frame": 0.8,
+ "value": 0.95
+ },
+ {
+ "frame": 1.2,
+ "value": 1.1
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/dingque_tuijian.anim.meta b/client/assets/anims/dingque_tuijian.anim.meta
new file mode 100755
index 0000000..2e5ccca
--- /dev/null
+++ b/client/assets/anims/dingque_tuijian.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a0a634b2-48b2-4a89-a985-ab8b4c00e172",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/fennu.anim b/client/assets/anims/fennu.anim
new file mode 100755
index 0000000..578d3ed
--- /dev/null
+++ b/client/assets/anims/fennu.anim
@@ -0,0 +1,43 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "fennu",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.6666666666666666,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "74885e9d-0ba7-4c31-ad8a-2f5a2b4fc6e7"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "74885e9d-0ba7-4c31-ad8a-2f5a2b4fc6e7"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "ec7d16ec-e9ab-4bde-aded-feb81e933c40"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "ec7d16ec-e9ab-4bde-aded-feb81e933c40"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/fennu.anim.meta b/client/assets/anims/fennu.anim.meta
new file mode 100755
index 0000000..97a3d1f
--- /dev/null
+++ b/client/assets/anims/fennu.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/guafeng.anim b/client/assets/anims/guafeng.anim
new file mode 100755
index 0000000..9b02e82
--- /dev/null
+++ b/client/assets/anims/guafeng.anim
@@ -0,0 +1,67 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "guafeng",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.6666666666666666,
+ "sample": 12,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "1ac0776a-ec85-476e-bbdb-6e9eace3e082"
+ }
+ },
+ {
+ "frame": 0.08333333333333333,
+ "value": {
+ "__uuid__": "8714b659-208c-4b6f-bf7c-69c3ed504017"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "b44ad3b9-5da6-4f10-89f1-630768646ed8"
+ }
+ },
+ {
+ "frame": 0.25,
+ "value": {
+ "__uuid__": "3dc7b598-874d-468f-9f4d-3013eab17d36"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "4f77b050-277e-41bc-9793-94a9c10b6bd9"
+ }
+ },
+ {
+ "frame": 0.4166666666666667,
+ "value": {
+ "__uuid__": "0ce7a298-26b4-428c-bccb-89b95cbbec39"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "999f2d03-9986-4725-8680-fc16a62646bc"
+ }
+ },
+ {
+ "frame": 0.5833333333333334,
+ "value": {
+ "__uuid__": "9ce1fd88-86b4-49a4-876d-9da08ddb294f"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/guafeng.anim.meta b/client/assets/anims/guafeng.anim.meta
new file mode 100755
index 0000000..ea90511
--- /dev/null
+++ b/client/assets/anims/guafeng.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "283c5930-9769-4d13-92bc-9f1605a36335",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/han.anim b/client/assets/anims/han.anim
new file mode 100755
index 0000000..853ca14
--- /dev/null
+++ b/client/assets/anims/han.anim
@@ -0,0 +1,31 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "han",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.3333333333333333,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "cc85a55a-6a5f-4376-a1e7-9def6d14f73b"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "37d4ee65-bd1a-47ae-be4d-eddc881e8ff0"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/han.anim.meta b/client/assets/anims/han.anim.meta
new file mode 100755
index 0000000..d59dce3
--- /dev/null
+++ b/client/assets/anims/han.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2f267281-0313-4ab5-bb20-2c8c084b9db7",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/happy.anim b/client/assets/anims/happy.anim
new file mode 100755
index 0000000..901505c
--- /dev/null
+++ b/client/assets/anims/happy.anim
@@ -0,0 +1,31 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "happy",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.3333333333333333,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "092833c8-627a-4f92-9774-83e743083685"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "5c72c12b-d37a-47aa-8a04-faa20f4d8be0"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/happy.anim.meta b/client/assets/anims/happy.anim.meta
new file mode 100755
index 0000000..3776c16
--- /dev/null
+++ b/client/assets/anims/happy.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "78b9174d-35ce-4e92-af35-e003f3348d34",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/huaixiao.anim b/client/assets/anims/huaixiao.anim
new file mode 100755
index 0000000..d4ac777
--- /dev/null
+++ b/client/assets/anims/huaixiao.anim
@@ -0,0 +1,67 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "huaixiao",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1.3333333333333333,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "59bbd743-7bfd-42bc-84d3-d0bb0898bea5"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "7fd48fa0-f426-4a16-8ffa-35093afdef59"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "b412c14f-56c7-4725-8896-d342425609bd"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "02fb2d75-6aff-4e2f-b971-ecc8a65de7a5"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "b460ae13-6304-4916-a065-092f5544ae00"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "caae3f7d-5afc-40df-b058-2c229216895e"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "ebe3fd18-d11e-449e-a9d7-f90daacfb94b"
+ }
+ },
+ {
+ "frame": 1.1666666666666667,
+ "value": {
+ "__uuid__": "ecec0041-4528-48f0-8b08-49f5358014b8"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/huaixiao.anim.meta b/client/assets/anims/huaixiao.anim.meta
new file mode 100755
index 0000000..d4dd47d
--- /dev/null
+++ b/client/assets/anims/huaixiao.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "1713f177-ed64-4b6e-8535-a5cea8101f5a",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/jiong.anim b/client/assets/anims/jiong.anim
new file mode 100755
index 0000000..7f7d1f5
--- /dev/null
+++ b/client/assets/anims/jiong.anim
@@ -0,0 +1,55 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "jiong",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "3d241371-739e-4441-963c-b0159a01a19e"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "5dec5a15-1c35-46ca-94a1-df6f0d024e29"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "dee9b327-1443-40c8-ab14-76110c4bae92"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "04ddd588-57c3-4d45-8322-0bb2eb8e0dd1"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "7635d991-faef-4770-bd40-3a3eebb3b281"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "4cf4ed66-5b23-4410-ad0e-ddeac313e067"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/jiong.anim.meta b/client/assets/anims/jiong.anim.meta
new file mode 100755
index 0000000..987e351
--- /dev/null
+++ b/client/assets/anims/jiong.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/lihai.anim b/client/assets/anims/lihai.anim
new file mode 100755
index 0000000..aa36837
--- /dev/null
+++ b/client/assets/anims/lihai.anim
@@ -0,0 +1,97 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "lihai",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 2.1666666666666665,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "d79c5202-76c4-4caa-938e-36a9452f100b"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "de0c43c2-ba63-44a8-b2e8-ace6b0d571ab"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "07ef7eba-7d2c-416f-8dc5-80b50fea62e3"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "789d279c-3505-47f1-aff4-62d2cd22ad66"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "c247a0e4-43d3-4d92-a51a-6ed4c7a8c040"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "e8eda776-a770-42ff-bd4b-1ddaa5aac8d8"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "cdb95d9b-b7ae-4d5d-bd67-fa757a4c282d"
+ }
+ },
+ {
+ "frame": 1.1666666666666667,
+ "value": {
+ "__uuid__": "cf1eac64-de9c-4dd6-9a26-a417abeb55e1"
+ }
+ },
+ {
+ "frame": 1.3333333333333333,
+ "value": {
+ "__uuid__": "1ca0ad3c-f918-44f8-b146-9c3afd14da18"
+ }
+ },
+ {
+ "frame": 1.5,
+ "value": {
+ "__uuid__": "f185a906-ccba-4a6e-9f1d-fd84839c25e8"
+ }
+ },
+ {
+ "frame": 1.6666666666666667,
+ "value": {
+ "__uuid__": "54a6caf2-73d4-4f69-a6dd-507e00f7539f"
+ }
+ },
+ {
+ "frame": 1.8333333333333333,
+ "value": {
+ "__uuid__": "006c6abe-45c5-421e-be27-44d827370cc9"
+ }
+ },
+ {
+ "frame": 2,
+ "value": {
+ "__uuid__": "7ecd578f-9f4e-4b1b-aa7f-ca8ca0e2e7c0"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/lihai.anim.meta b/client/assets/anims/lihai.anim.meta
new file mode 100755
index 0000000..e186fe1
--- /dev/null
+++ b/client/assets/anims/lihai.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4acfc9b0-d737-42b1-ade6-8254cbe914d3",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/nv_idle.anim b/client/assets/anims/nv_idle.anim
new file mode 100755
index 0000000..f20e841
--- /dev/null
+++ b/client/assets/anims/nv_idle.anim
@@ -0,0 +1,67 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "nv_idle",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 6.666666666666667,
+ "sample": 3,
+ "speed": 1,
+ "wrapMode": 22,
+ "curveData": {
+ "props": {
+ "scaleX": [
+ {
+ "frame": 0,
+ "value": 1
+ },
+ {
+ "frame": 3.3333333333333335,
+ "value": 1.05
+ },
+ {
+ "frame": 6.666666666666667,
+ "value": 1.0694200666669036
+ },
+ {
+ "frame": 6.666666666666667,
+ "value": 1.01
+ },
+ {
+ "frame": 6.666666666666667,
+ "value": 1
+ },
+ {
+ "frame": 6.666666666666667,
+ "value": 1.0401957999999227
+ }
+ ],
+ "scaleY": [
+ {
+ "frame": 0,
+ "value": 1
+ },
+ {
+ "frame": 3.3333333333333335,
+ "value": 1.05
+ },
+ {
+ "frame": 6.666666666666667,
+ "value": 1.0694200666669036
+ },
+ {
+ "frame": 6.666666666666667,
+ "value": 1.1
+ },
+ {
+ "frame": 6.666666666666667,
+ "value": 1
+ },
+ {
+ "frame": 6.666666666666667,
+ "value": 1.0401957999999227
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/nv_idle.anim.meta b/client/assets/anims/nv_idle.anim.meta
new file mode 100755
index 0000000..3a4de47
--- /dev/null
+++ b/client/assets/anims/nv_idle.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ea92705c-a5a5-41fe-876e-95193b26bd9e",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_gang.anim b/client/assets/anims/play_gang.anim
new file mode 100755
index 0000000..b2af694
--- /dev/null
+++ b/client/assets/anims/play_gang.anim
@@ -0,0 +1,95 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "play_gang",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.66,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "76bddb0f-eec5-4801-b527-5df333134dd5"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "99eaf0ec-4201-4fb5-9edb-389538ff8e43"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "99eaf0ec-4201-4fb5-9edb-389538ff8e43"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "99eaf0ec-4201-4fb5-9edb-389538ff8e43"
+ }
+ }
+ ]
+ }
+ },
+ "props": {
+ "scaleX": [
+ {
+ "frame": 0,
+ "value": 0.5
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 1
+ }
+ ],
+ "scaleY": [
+ {
+ "frame": 0,
+ "value": 0.5
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 1
+ }
+ ],
+ "color": [
+ {
+ "frame": 0,
+ "value": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ }
+ }
+ ],
+ "opacity": [
+ {
+ "frame": 0,
+ "value": 255
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 255
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": 255
+ },
+ {
+ "frame": 0.5,
+ "value": 0
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_gang.anim.meta b/client/assets/anims/play_gang.anim.meta
new file mode 100755
index 0000000..5a25012
--- /dev/null
+++ b/client/assets/anims/play_gang.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0470db5f-e2e7-4a23-985e-087e2faf1e35",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_guafeng.anim b/client/assets/anims/play_guafeng.anim
new file mode 100755
index 0000000..b88c003
--- /dev/null
+++ b/client/assets/anims/play_guafeng.anim
@@ -0,0 +1,93 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "play_guafeng",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1.17,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "d4b7c258-db82-4cee-99c3-cbdd4c71b941"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "fd62cb57-e79b-4fb0-865a-bce7bf226a16"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "09de0d73-53fe-44c3-8fd5-f02d3dfe80bb"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "7d776ae8-340f-4a13-ba9e-8c05afa9ac30"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "5bd44f21-8a1b-413d-8d64-08e3c4b67f90"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "a0fc3f61-d6aa-459a-acce-8203cea59a66"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "00d442fc-5cf0-417a-bb75-566f8d97b3b4"
+ }
+ }
+ ]
+ }
+ },
+ "props": {
+ "opacity": [
+ {
+ "frame": 0.8333333333333334,
+ "value": 255
+ },
+ {
+ "frame": 1,
+ "value": 0
+ }
+ ],
+ "scaleX": [
+ {
+ "frame": 0,
+ "value": 0
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 0.8
+ }
+ ],
+ "scaleY": [
+ {
+ "frame": 0,
+ "value": 0
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 0.8
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_guafeng.anim.meta b/client/assets/anims/play_guafeng.anim.meta
new file mode 100755
index 0000000..969a6d9
--- /dev/null
+++ b/client/assets/anims/play_guafeng.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ea90eb71-da66-44b9-b343-b577cdb7d53f",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_hu.anim b/client/assets/anims/play_hu.anim
new file mode 100755
index 0000000..25e9aac
--- /dev/null
+++ b/client/assets/anims/play_hu.anim
@@ -0,0 +1,95 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "play_hu",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.66,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "0a7d1bf3-6a53-4ebf-ac44-ceda9ca52a24"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "0a7d1bf3-6a53-4ebf-ac44-ceda9ca52a24"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "0a7d1bf3-6a53-4ebf-ac44-ceda9ca52a24"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "0a7d1bf3-6a53-4ebf-ac44-ceda9ca52a24"
+ }
+ }
+ ]
+ }
+ },
+ "props": {
+ "scaleX": [
+ {
+ "frame": 0,
+ "value": 0.5
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 1.5
+ }
+ ],
+ "scaleY": [
+ {
+ "frame": 0,
+ "value": 0.5
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 1.5
+ }
+ ],
+ "color": [
+ {
+ "frame": 0,
+ "value": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ }
+ }
+ ],
+ "opacity": [
+ {
+ "frame": 0,
+ "value": 255
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 255
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": 255
+ },
+ {
+ "frame": 0.5,
+ "value": 0
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_hu.anim.meta b/client/assets/anims/play_hu.anim.meta
new file mode 100755
index 0000000..a3bd1a8
--- /dev/null
+++ b/client/assets/anims/play_hu.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3172929a-6752-4840-b747-9ab45c973a88",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_peng.anim b/client/assets/anims/play_peng.anim
new file mode 100755
index 0000000..88c580b
--- /dev/null
+++ b/client/assets/anims/play_peng.anim
@@ -0,0 +1,95 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "play_peng",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.66,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "0af3806a-fc3e-4554-ae11-72122fc2a87d"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "fb70909f-8fd7-45c3-9a8a-409e63c6d6e5"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "fb70909f-8fd7-45c3-9a8a-409e63c6d6e5"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "fb70909f-8fd7-45c3-9a8a-409e63c6d6e5"
+ }
+ }
+ ]
+ }
+ },
+ "props": {
+ "scaleX": [
+ {
+ "frame": 0,
+ "value": 0.5
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 1
+ }
+ ],
+ "scaleY": [
+ {
+ "frame": 0,
+ "value": 0.5
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 1
+ }
+ ],
+ "color": [
+ {
+ "frame": 0,
+ "value": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ }
+ }
+ ],
+ "opacity": [
+ {
+ "frame": 0,
+ "value": 255
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 255
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": 255
+ },
+ {
+ "frame": 0.5,
+ "value": 0
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_peng.anim.meta b/client/assets/anims/play_peng.anim.meta
new file mode 100755
index 0000000..69b8178
--- /dev/null
+++ b/client/assets/anims/play_peng.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a812d421-cef6-49b1-88ec-f64a8d3fda71",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_xiayu.anim b/client/assets/anims/play_xiayu.anim
new file mode 100755
index 0000000..55f11a8
--- /dev/null
+++ b/client/assets/anims/play_xiayu.anim
@@ -0,0 +1,97 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "play_xiayu",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1.1666666666666667,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "7498f8b2-3d65-47a5-a5dc-3f484a6e5f42"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "72f3f982-810b-4ca7-8662-602d2424e179"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "dfd021b3-5669-4e73-8a28-5e16a579e110"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "38d62777-d02a-4b17-a3f0-493cc47d334e"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "2ad8e984-fb49-4a51-ac0f-46bb27251f6e"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "667bb892-2b32-4444-9750-6c7dfa65b275"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "667bb892-2b32-4444-9750-6c7dfa65b275"
+ }
+ }
+ ]
+ }
+ },
+ "props": {
+ "opacity": [
+ {
+ "frame": 0.16666666666666666,
+ "value": 255
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": 255
+ },
+ {
+ "frame": 1,
+ "value": 0
+ }
+ ],
+ "scaleX": [
+ {
+ "frame": 0,
+ "value": 0
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 0.8
+ }
+ ],
+ "scaleY": [
+ {
+ "frame": 0,
+ "value": 0
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 0.8
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_xiayu.anim.meta b/client/assets/anims/play_xiayu.anim.meta
new file mode 100755
index 0000000..5339d30
--- /dev/null
+++ b/client/assets/anims/play_xiayu.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e4237ef8-fd32-4874-9ab0-6f94b5393b8b",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_zimo.anim b/client/assets/anims/play_zimo.anim
new file mode 100755
index 0000000..811cca5
--- /dev/null
+++ b/client/assets/anims/play_zimo.anim
@@ -0,0 +1,95 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "play_zimo",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.66,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "737ce392-0510-4d29-abc2-788dd4d02bff"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "737ce392-0510-4d29-abc2-788dd4d02bff"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "737ce392-0510-4d29-abc2-788dd4d02bff"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "737ce392-0510-4d29-abc2-788dd4d02bff"
+ }
+ }
+ ]
+ }
+ },
+ "props": {
+ "scaleX": [
+ {
+ "frame": 0,
+ "value": 0.5
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 1
+ }
+ ],
+ "scaleY": [
+ {
+ "frame": 0,
+ "value": 0.5
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 1
+ }
+ ],
+ "color": [
+ {
+ "frame": 0,
+ "value": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ }
+ }
+ ],
+ "opacity": [
+ {
+ "frame": 0,
+ "value": 255
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 255
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": 255
+ },
+ {
+ "frame": 0.5,
+ "value": 0
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/play_zimo.anim.meta b/client/assets/anims/play_zimo.anim.meta
new file mode 100755
index 0000000..7623f88
--- /dev/null
+++ b/client/assets/anims/play_zimo.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ee5ff482-e2c9-47e9-972a-ee4e4f8f2adb",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/se.anim b/client/assets/anims/se.anim
new file mode 100755
index 0000000..207e92d
--- /dev/null
+++ b/client/assets/anims/se.anim
@@ -0,0 +1,61 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "se",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1.1666666666666667,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "fb284fb4-227c-4d21-bc7c-510f804fa112"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "b1b5f887-6e69-4701-b38c-b25252c3a569"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "0742b288-ef58-49da-aa18-226ca275227f"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "721fb52f-dc4f-48e0-b583-43fb72c4b452"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "fb284fb4-227c-4d21-bc7c-510f804fa112"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "b1b5f887-6e69-4701-b38c-b25252c3a569"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "0742b288-ef58-49da-aa18-226ca275227f"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/se.anim.meta b/client/assets/anims/se.anim.meta
new file mode 100755
index 0000000..0669564
--- /dev/null
+++ b/client/assets/anims/se.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0d1d8c59-b160-4c74-8a8f-9d77877502fa",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/shaoxiang.anim b/client/assets/anims/shaoxiang.anim
new file mode 100755
index 0000000..0ea2937
--- /dev/null
+++ b/client/assets/anims/shaoxiang.anim
@@ -0,0 +1,49 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "shaoxiang",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.8333333333333334,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "d3d93b91-5ef4-40df-9456-d6915b2098a5"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "1272c881-cc49-4cca-be3f-1dfd7be3a100"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "31e651f0-4cf7-4da8-a63c-d112bfb9f786"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "f8357817-9926-4db9-a88c-9a171b5d3fea"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "1be49286-2bf6-4081-9470-97cad682f5f9"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/shaoxiang.anim.meta b/client/assets/anims/shaoxiang.anim.meta
new file mode 100755
index 0000000..2dd19b9
--- /dev/null
+++ b/client/assets/anims/shaoxiang.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "10c6b231-c25e-4eab-808c-f107e0e66dff",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/shihua.anim b/client/assets/anims/shihua.anim
new file mode 100755
index 0000000..2528696
--- /dev/null
+++ b/client/assets/anims/shihua.anim
@@ -0,0 +1,55 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "shihua",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.5,
+ "sample": 12,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "9c24b693-4be6-4fee-8fec-9614208b37fc"
+ }
+ },
+ {
+ "frame": 0.08333333333333333,
+ "value": {
+ "__uuid__": "f2666293-f619-40bd-850e-04cb601c4f23"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "ecb7074a-215e-4245-976a-5e0669c94479"
+ }
+ },
+ {
+ "frame": 0.25,
+ "value": {
+ "__uuid__": "216ecf6c-1d78-4218-a52d-9ed7712b5831"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "e0906f59-9a5b-4b4a-9406-132008e36610"
+ }
+ },
+ {
+ "frame": 0.4166666666666667,
+ "value": {
+ "__uuid__": "66b308cb-b553-47c2-a12c-21370349a729"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/shihua.anim.meta b/client/assets/anims/shihua.anim.meta
new file mode 100755
index 0000000..37dc5da
--- /dev/null
+++ b/client/assets/anims/shihua.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/sleep.anim b/client/assets/anims/sleep.anim
new file mode 100755
index 0000000..dee04e0
--- /dev/null
+++ b/client/assets/anims/sleep.anim
@@ -0,0 +1,73 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "sleep",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1.5,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 22,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "cff26fca-aca8-4f1d-9486-ddb04669788b"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "fd15829e-3860-49b5-9e85-909d58750275"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "17ad7104-10d9-418c-96cc-0af9154385d4"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "3910b006-24a5-4e8b-9c51-4592b88ad2c7"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "16228643-2a90-4cd0-b781-45f6bdc338d6"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "a8b8cff8-f7ee-405a-905d-00ee80a86c86"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "073df302-1989-4307-aba9-73f2b6364525"
+ }
+ },
+ {
+ "frame": 1.1666666666666667,
+ "value": {
+ "__uuid__": "1132394a-d9cc-4421-8e45-fec617cde021"
+ }
+ },
+ {
+ "frame": 1.3333333333333333,
+ "value": {
+ "__uuid__": "6f711013-a943-4391-a5e2-5dc5ee2c43fe"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/sleep.anim.meta b/client/assets/anims/sleep.anim.meta
new file mode 100755
index 0000000..0ae81bc
--- /dev/null
+++ b/client/assets/anims/sleep.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "336a1d18-1647-4f4d-a297-0f54688e1cfe",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/smile.anim b/client/assets/anims/smile.anim
new file mode 100755
index 0000000..e83ec22
--- /dev/null
+++ b/client/assets/anims/smile.anim
@@ -0,0 +1,73 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "smile",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 1.5,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 22,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "c0371335-9e49-4fb9-93c3-706e70fa6816"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "225cd024-e1df-4ebc-8769-ef31947d3051"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "8192a3ff-7ebf-4298-a972-68a6920c2616"
+ }
+ },
+ {
+ "frame": 0.5,
+ "value": {
+ "__uuid__": "f89760d5-2554-46f1-ab00-c302382d8f11"
+ }
+ },
+ {
+ "frame": 0.6666666666666666,
+ "value": {
+ "__uuid__": "5683f3a3-b0ef-4b92-b5a4-643a3aa10911"
+ }
+ },
+ {
+ "frame": 0.8333333333333334,
+ "value": {
+ "__uuid__": "9e65e011-14ff-48cd-935d-4cda9c43c9a3"
+ }
+ },
+ {
+ "frame": 1,
+ "value": {
+ "__uuid__": "7e91eac6-b184-45c2-82c6-92362176638e"
+ }
+ },
+ {
+ "frame": 1.1666666666666667,
+ "value": {
+ "__uuid__": "e912bdb2-f94f-4721-b384-7c9c4e6ab229"
+ }
+ },
+ {
+ "frame": 1.3333333333333333,
+ "value": {
+ "__uuid__": "b44e445a-e2fa-4326-9080-22ffacd9208e"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/smile.anim.meta b/client/assets/anims/smile.anim.meta
new file mode 100755
index 0000000..eeaa5fb
--- /dev/null
+++ b/client/assets/anims/smile.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/touxiang.anim b/client/assets/anims/touxiang.anim
new file mode 100755
index 0000000..cd3848b
--- /dev/null
+++ b/client/assets/anims/touxiang.anim
@@ -0,0 +1,43 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "touxiang",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.5,
+ "sample": 8,
+ "speed": 1,
+ "wrapMode": 22,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "50500b39-b2bb-4c1e-838b-b7874b8370a1"
+ }
+ },
+ {
+ "frame": 0.125,
+ "value": {
+ "__uuid__": "895585dc-65c0-41a6-a6c6-fff6ec95714b"
+ }
+ },
+ {
+ "frame": 0.25,
+ "value": {
+ "__uuid__": "dc1a17e2-17f0-4cae-b88f-af8176f08e24"
+ }
+ },
+ {
+ "frame": 0.375,
+ "value": {
+ "__uuid__": "b2f29176-11c6-44dd-8c7a-0638772e4ead"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/touxiang.anim.meta b/client/assets/anims/touxiang.anim.meta
new file mode 100755
index 0000000..dc2d7cb
--- /dev/null
+++ b/client/assets/anims/touxiang.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "b0a14769-d96d-4be0-b02e-fbddca936daa",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/xiayu.anim b/client/assets/anims/xiayu.anim
new file mode 100755
index 0000000..91091fe
--- /dev/null
+++ b/client/assets/anims/xiayu.anim
@@ -0,0 +1,73 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "xiayu",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.5,
+ "sample": 12,
+ "speed": 1,
+ "wrapMode": 1,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "c60480ec-5571-4301-a6d0-b7e52258aa6f"
+ }
+ },
+ {
+ "frame": 0.08333333333333333,
+ "value": {
+ "__uuid__": "17da0da6-7609-48ca-bcfd-3ac332b6d00d"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "6a8bf6e5-665f-43b3-ada0-8b141c3c25ed"
+ }
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": {
+ "__uuid__": "507f0bef-7034-40f3-8f13-2f3683ea428f"
+ }
+ },
+ {
+ "frame": 0.4166666666666667,
+ "value": {
+ "__uuid__": "5c55545a-49fb-4919-9fcf-2b8a69b98dbf"
+ }
+ }
+ ]
+ }
+ },
+ "props": {
+ "y": [
+ {
+ "frame": 0,
+ "value": 0
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": 0
+ },
+ {
+ "frame": 0.25,
+ "value": 0
+ },
+ {
+ "frame": 0.3333333333333333,
+ "value": -50
+ },
+ {
+ "frame": 0.4166666666666667,
+ "value": -50
+ }
+ ]
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/xiayu.anim.meta b/client/assets/anims/xiayu.anim.meta
new file mode 100755
index 0000000..e8a2421
--- /dev/null
+++ b/client/assets/anims/xiayu.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "be6ff400-afca-46a7-bd0d-3f9335b1be87",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/yun.anim b/client/assets/anims/yun.anim
new file mode 100755
index 0000000..c4d6aeb
--- /dev/null
+++ b/client/assets/anims/yun.anim
@@ -0,0 +1,43 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "yun",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.5,
+ "sample": 8,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "009b55b1-565e-483a-8a5c-f9195d4cfa76"
+ }
+ },
+ {
+ "frame": 0.125,
+ "value": {
+ "__uuid__": "7e7a797e-7896-4577-92a9-7c39115c97cd"
+ }
+ },
+ {
+ "frame": 0.25,
+ "value": {
+ "__uuid__": "63c63e1a-d30c-450a-8795-e60c8408f715"
+ }
+ },
+ {
+ "frame": 0.375,
+ "value": {
+ "__uuid__": "4327d1d7-afcc-49af-b6e0-f0abd482649c"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/yun.anim.meta b/client/assets/anims/yun.anim.meta
new file mode 100755
index 0000000..6501916
--- /dev/null
+++ b/client/assets/anims/yun.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4369d0a6-ab05-48f7-b182-f4da05b42051",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/anims/zhiya.anim b/client/assets/anims/zhiya.anim
new file mode 100755
index 0000000..600b4fa
--- /dev/null
+++ b/client/assets/anims/zhiya.anim
@@ -0,0 +1,31 @@
+{
+ "__type__": "cc.AnimationClip",
+ "_name": "zhiya",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "_duration": 0.3333333333333333,
+ "sample": 6,
+ "speed": 1,
+ "wrapMode": 2,
+ "curveData": {
+ "comps": {
+ "cc.Sprite": {
+ "spriteFrame": [
+ {
+ "frame": 0,
+ "value": {
+ "__uuid__": "48285984-e828-4033-8a54-dd4e5654f01e"
+ }
+ },
+ {
+ "frame": 0.16666666666666666,
+ "value": {
+ "__uuid__": "5c8f3de3-2dba-4e42-b354-d776cadfa12b"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "events": []
+}
\ No newline at end of file
diff --git a/client/assets/anims/zhiya.anim.meta b/client/assets/anims/zhiya.anim.meta
new file mode 100755
index 0000000..bd4ac14
--- /dev/null
+++ b/client/assets/anims/zhiya.anim.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/babykylin.png b/client/assets/babykylin.png
new file mode 100755
index 0000000..5479e3e
Binary files /dev/null and b/client/assets/babykylin.png differ
diff --git a/client/assets/babykylin.png.meta b/client/assets/babykylin.png.meta
new file mode 100755
index 0000000..0ea65b7
--- /dev/null
+++ b/client/assets/babykylin.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "04d79bb4-0cff-43ce-bd62-d1c46b609255",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "babykylin": {
+ "ver": "1.0.3",
+ "uuid": "85246ecf-6f60-49c6-bc6f-f18606e771b2",
+ "rawTextureUuid": "04d79bb4-0cff-43ce-bd62-d1c46b609255",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -2.5,
+ "offsetY": 2.5,
+ "trimX": 63,
+ "trimY": 53,
+ "width": 125,
+ "height": 153,
+ "rawWidth": 256,
+ "rawHeight": 264,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/prefabs.meta b/client/assets/prefabs.meta
new file mode 100755
index 0000000..48999f4
--- /dev/null
+++ b/client/assets/prefabs.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "5f41e8be-3282-4aa5-818c-70d7d8a6b0bf",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/ChuPai.prefab b/client/assets/prefabs/ChuPai.prefab
new file mode 100755
index 0000000..dfd6e20
--- /dev/null
+++ b/client/assets/prefabs/ChuPai.prefab
@@ -0,0 +1,161 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 5
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ }
+ ],
+ "_prefab": {
+ "__id__": 4
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "44f6fbrW4tN+KfvWX2OEkjj"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "b5891hnB3xPsZ8btypA8brR"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/ChuPai.prefab.meta b/client/assets/prefabs/ChuPai.prefab.meta
new file mode 100755
index 0000000..db25a72
--- /dev/null
+++ b/client/assets/prefabs/ChuPai.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/HistoryItem.prefab b/client/assets/prefabs/HistoryItem.prefab
new file mode 100755
index 0000000..7072a6f
--- /dev/null
+++ b/client/assets/prefabs/HistoryItem.prefab
@@ -0,0 +1,952 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "HistoryItem",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1210,
+ "height": 150
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 6
+ },
+ {
+ "__id__": 9
+ },
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 15
+ },
+ {
+ "__id__": 18
+ },
+ {
+ "__id__": 21
+ },
+ {
+ "__id__": 24
+ },
+ {
+ "__id__": 27
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 30
+ }
+ ],
+ "_prefab": {
+ "__id__": 31
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_opacity": 0,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1195,
+ "height": 129
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -7,
+ "y": -3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 4
+ }
+ ],
+ "_prefab": {
+ "__id__": 5
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1195,
+ "height": 129
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$padding": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "e8833FKcuZNbqmqt9SQUBzI"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 44.49,
+ "height": 240
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -461,
+ "y": 41
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 7
+ }
+ ],
+ "_prefab": {
+ "__id__": 8
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 80,
+ "_lineHeight": 80,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1\n\n",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "63914t6MRVNJpDsnG1JNRNp"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "roomNo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 284.07,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -383,
+ "y": 67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 10
+ }
+ ],
+ "_prefab": {
+ "__id__": 11
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 9
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "Room No.:571118",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "62324mdg2dL1KjRkRCw8KXm"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "time",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 325,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 93,
+ "y": 67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 13
+ }
+ ],
+ "_prefab": {
+ "__id__": 14
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "2016-09-03 17:07:19",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "62324mdg2dL1KjRkRCw8KXm"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 262.64,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -383,
+ "y": 22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ }
+ ],
+ "_prefab": {
+ "__id__": 17
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "Miss.Banana:-80",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "62324mdg2dL1KjRkRCw8KXm"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 262.64,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 93,
+ "y": 22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 19
+ }
+ ],
+ "_prefab": {
+ "__id__": 20
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 18
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "Miss.Banana:-80",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "4ea520D4zBB+5u/QJyuHv4P"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 262.64,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -383,
+ "y": -24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 22
+ }
+ ],
+ "_prefab": {
+ "__id__": 23
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 21
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "Miss.Banana:-80",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "3f4c0e5fAtAp6J+EkJpHyet"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 262.64,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 93,
+ "y": -24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 25
+ }
+ ],
+ "_prefab": {
+ "__id__": 26
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 24
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "Miss.Banana:-80",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "e4090cfXZNMK7i8GlkvqH8F"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1133,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -73
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 28
+ }
+ ],
+ "_prefab": {
+ "__id__": 29
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 27
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 1,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "9a306dXV65L85GSouYk0ZvU"
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ null
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "490eap8gSJCRJ2FiJx5dBAr"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/HistoryItem.prefab.meta b/client/assets/prefabs/HistoryItem.prefab.meta
new file mode 100755
index 0000000..df89db8
--- /dev/null
+++ b/client/assets/prefabs/HistoryItem.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/JoinGame.prefab b/client/assets/prefabs/JoinGame.prefab
new file mode 100755
index 0000000..38f874e
--- /dev/null
+++ b/client/assets/prefabs/JoinGame.prefab
@@ -0,0 +1,3777 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "JoinGame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 7
+ },
+ {
+ "__id__": 10
+ },
+ {
+ "__id__": 13
+ },
+ {
+ "__id__": 16
+ },
+ {
+ "__id__": 19
+ },
+ {
+ "__id__": 22
+ },
+ {
+ "__id__": 25
+ },
+ {
+ "__id__": 28
+ },
+ {
+ "__id__": 31
+ },
+ {
+ "__id__": 36
+ },
+ {
+ "__id__": 41
+ },
+ {
+ "__id__": 46
+ },
+ {
+ "__id__": 51
+ },
+ {
+ "__id__": 56
+ },
+ {
+ "__id__": 61
+ },
+ {
+ "__id__": 66
+ },
+ {
+ "__id__": 71
+ },
+ {
+ "__id__": 76
+ },
+ {
+ "__id__": 81
+ },
+ {
+ "__id__": 86
+ },
+ {
+ "__id__": 91
+ },
+ {
+ "__id__": 94
+ },
+ {
+ "__id__": 97
+ },
+ {
+ "__id__": 100
+ },
+ {
+ "__id__": 103
+ },
+ {
+ "__id__": 106
+ },
+ {
+ "__id__": 109
+ },
+ {
+ "__id__": 112
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 8,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 117
+ }
+ ],
+ "_prefab": {
+ "__id__": 118
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 128,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 4
+ },
+ {
+ "__id__": 5
+ }
+ ],
+ "_prefab": {
+ "__id__": 6
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$padding": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 2
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "25d00V2eCtB1IdSxeVkqQPM"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_jiaruyouxitangchuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 733,
+ "height": 562
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 8
+ }
+ ],
+ "_prefab": {
+ "__id__": 9
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 7
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "f5874d5c-9a65-4a06-880a-0043be4f2c06"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "825cdqFEKZFuboDwLaSCY8c"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 73,
+ "height": 73
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -271,
+ "y": 91
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 11
+ }
+ ],
+ "_prefab": {
+ "__id__": 12
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 10
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95d4ffb9-3393-4d7e-844e-5b1dd6f6b709"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "78f20DNTv9LVJT/WB9ZZubo"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 73,
+ "height": 73
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -179,
+ "y": 91
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 14
+ }
+ ],
+ "_prefab": {
+ "__id__": 15
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95d4ffb9-3393-4d7e-844e-5b1dd6f6b709"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "de791DEV2FIVblJEc0xbZ/h"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 73,
+ "height": 73
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -89,
+ "y": 91
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 17
+ }
+ ],
+ "_prefab": {
+ "__id__": 18
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 16
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95d4ffb9-3393-4d7e-844e-5b1dd6f6b709"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "5a8c3nZuuRCaIeWfT6spMeY"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 73,
+ "height": 73
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 2,
+ "y": 91
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 20
+ }
+ ],
+ "_prefab": {
+ "__id__": 21
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 19
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95d4ffb9-3393-4d7e-844e-5b1dd6f6b709"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "0ddeexYpz1PBLAP/LTqJTMO"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 73,
+ "height": 73
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 93,
+ "y": 91
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 23
+ }
+ ],
+ "_prefab": {
+ "__id__": 24
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 22
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95d4ffb9-3393-4d7e-844e-5b1dd6f6b709"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "1ed101swmhLNpO2wvZyf2Sb"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 73,
+ "height": 73
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 182,
+ "y": 91
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 26
+ }
+ ],
+ "_prefab": {
+ "__id__": 27
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 25
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95d4ffb9-3393-4d7e-844e-5b1dd6f6b709"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "956eea5geZF4biXj0j0WpFj"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 73,
+ "height": 73
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 273,
+ "y": 91
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 29
+ }
+ ],
+ "_prefab": {
+ "__id__": 30
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 28
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95d4ffb9-3393-4d7e-844e-5b1dd6f6b709"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "48228h+6JNC/5v/Plr/FArr"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -79,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 32
+ },
+ {
+ "__id__": 33
+ }
+ ],
+ "_prefab": {
+ "__id__": 35
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 31
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "661a7cb2-f216-4a8c-8dbd-a8242a6dd0d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 31
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "af334004-50fa-43e1-973b-a147669ee60a"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 34
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "661a7cb2-f216-4a8c-8dbd-a8242a6dd0d8"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 31
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN0Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "2c167mtG9ZEZ4ZplsZXovos"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -237,
+ "y": 2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 37
+ },
+ {
+ "__id__": 38
+ }
+ ],
+ "_prefab": {
+ "__id__": 40
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 36
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "064b5b9d-a9bf-42f1-ab9c-c52e1344020a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 36
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 121,
+ "g": 121,
+ "b": 121,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "01837e08-19f9-4659-8771-54601c5bdfa5"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 39
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "064b5b9d-a9bf-42f1-ab9c-c52e1344020a"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 36
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN1Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "f3800UeBfJOSITWhzg5OlM8"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -79,
+ "y": 2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 42
+ },
+ {
+ "__id__": 43
+ }
+ ],
+ "_prefab": {
+ "__id__": 45
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 41
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "0e1d368f-c425-4cf4-8940-fbe51871faf1"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 41
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "83799f0c-d1fd-4677-8c29-1c52dba3fa48"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 44
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "0e1d368f-c425-4cf4-8940-fbe51871faf1"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 41
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN2Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "23ea8B3UbBPjal+sirrQtfX"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 80,
+ "y": 2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 47
+ },
+ {
+ "__id__": 48
+ }
+ ],
+ "_prefab": {
+ "__id__": 50
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c9738638-07b3-43de-9af7-2f976027c1ea"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "8082cd90-cfdd-426b-a90a-79c89571e9aa"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 49
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "c9738638-07b3-43de-9af7-2f976027c1ea"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 46
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN3Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "7773c6C9lVLgpyTT5VqjqQK"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 239,
+ "y": 2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 52
+ },
+ {
+ "__id__": 53
+ }
+ ],
+ "_prefab": {
+ "__id__": 55
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 51
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c0cd928a-d91f-47bf-a403-f992be0029e2"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 51
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "784d5335-d254-4a6d-9623-7f981d368b52"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 54
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "c0cd928a-d91f-47bf-a403-f992be0029e2"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 51
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN4Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "3c269X0+5VBYbQ/xNE6YyRY"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -237,
+ "y": -87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 57
+ },
+ {
+ "__id__": 58
+ }
+ ],
+ "_prefab": {
+ "__id__": 60
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 56
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "f60d7d65-5d3f-46e5-8a4d-3fa6871a68ad"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 56
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "1e434256-876a-4b4e-a328-fe0de69dca2d"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 59
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "f60d7d65-5d3f-46e5-8a4d-3fa6871a68ad"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 56
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN5Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "3129cYVsLJBjLV7URgRudw+"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -79,
+ "y": -87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 62
+ },
+ {
+ "__id__": 63
+ }
+ ],
+ "_prefab": {
+ "__id__": 65
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 61
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d7d9a863-10b1-4120-ac8c-3d41520bf293"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 61
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "226b5110-c62a-4d73-bd1d-4b9b94193ed2"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 64
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "d7d9a863-10b1-4120-ac8c-3d41520bf293"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 61
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN6Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "b50e6xkh3BA17hXRAsPOHzH"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 80,
+ "y": -87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 67
+ },
+ {
+ "__id__": 68
+ }
+ ],
+ "_prefab": {
+ "__id__": 70
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 66
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "355e7152-f826-49ec-a420-538d29892c68"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 66
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "29d7b689-2ab9-4296-8ac7-0990a3b26cec"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 69
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "355e7152-f826-49ec-a420-538d29892c68"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 66
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN7Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "2c0bbp34QdEFp+n9bT4hHPa"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 239,
+ "y": -88
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 72
+ },
+ {
+ "__id__": 73
+ }
+ ],
+ "_prefab": {
+ "__id__": 75
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "f5edc715-8115-4589-ab36-ce07e6fcbf72"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "8cefaecf-6e05-408b-add4-f63fbafd4e8a"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 74
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "f5edc715-8115-4589-ab36-ce07e6fcbf72"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 71
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN8Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "a3f72L63TJMIpGGgcehhglJ"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -237,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 77
+ },
+ {
+ "__id__": 78
+ }
+ ],
+ "_prefab": {
+ "__id__": 80
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 76
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "04dfcd16-5d12-4d31-847e-c1b18acc4726"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 76
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "c7580807-2bed-4bac-8b59-adcd94a81b75"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 79
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "04dfcd16-5d12-4d31-847e-c1b18acc4726"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 76
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onN9Clicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "3721auLL6ZAuYCquBZP0TPV"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_Lose_weight",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 80,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 82
+ },
+ {
+ "__id__": 83
+ }
+ ],
+ "_prefab": {
+ "__id__": 85
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 81
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "966a5156-2ba8-4406-a21b-bb44485e9303"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 81
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "6dcaeae5-a151-4609-a3c9-84952da5adb4"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 84
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "966a5156-2ba8-4406-a21b-bb44485e9303"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 81
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onResetClicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "db661z9hfVCP5gdGXiWgNmz"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_del",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 239,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 87
+ },
+ {
+ "__id__": 88
+ }
+ ],
+ "_prefab": {
+ "__id__": 90
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 86
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "69c40dc5-64d6-4140-bd79-11cbbadbb00d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "795d004d-0eb0-476f-a28d-9aa6e1c4a84a"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 86
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "1535fcc4-f084-45e7-a482-10323db81e44"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 89
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "69c40dc5-64d6-4140-bd79-11cbbadbb00d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 86
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onDelClicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "c3fa30uhelN5ZjGuUnwBVdZ"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -272,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 92
+ }
+ ],
+ "_prefab": {
+ "__id__": 93
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 91
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "915ce899XhGkqaFFA1Pnemx"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -181,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 95
+ }
+ ],
+ "_prefab": {
+ "__id__": 96
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 94
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "a6f8bdtqnVIsKs3MW5cL6Qw"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -90,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 98
+ }
+ ],
+ "_prefab": {
+ "__id__": 99
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 97
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "3c0099vmrRPx5jtxdJkfzCU"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 101
+ }
+ ],
+ "_prefab": {
+ "__id__": 102
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 100
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "538dcFqX41G/LRUJpTf6WWB"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 92,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 104
+ }
+ ],
+ "_prefab": {
+ "__id__": 105
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 103
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "7944fToJUZG7pxR55fH8bSe"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 179,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 107
+ }
+ ],
+ "_prefab": {
+ "__id__": 108
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 106
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "d7005p/0WJEpL6ulCmWP7ko"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 270,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 110
+ }
+ ],
+ "_prefab": {
+ "__id__": 111
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 109
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "2defa589TlMIpyRq3+Q1IkJ"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 56
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 312,
+ "y": 238
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 113
+ },
+ {
+ "__id__": 114
+ }
+ ],
+ "_prefab": {
+ "__id__": 116
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 112
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d19d6a19-15d0-4e01-8c78-0cdd1cf140c1"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "37fddc8f-5bf6-41cf-bf17-2e403b1abe08"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 112
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": {
+ "__uuid__": "bd846dd2-64ff-4c89-b165-d959c83c0f8d"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 115
+ }
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "d19d6a19-15d0-4e01-8c78-0cdd1cf140c1"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 112
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "JoinGameInput",
+ "handler": "onCloseClicked"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "5f4e9drH6ZPhaywnudhwJ3Y"
+ },
+ {
+ "__type__": "10a1c8jz95Ju4NnpkOWUfin",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "nums": [
+ {
+ "__id__": 92
+ },
+ {
+ "__id__": 95
+ },
+ {
+ "__id__": 98
+ },
+ {
+ "__id__": 101
+ },
+ {
+ "__id__": 104
+ },
+ {
+ "__id__": 107
+ },
+ {
+ "__id__": 110
+ }
+ ],
+ "_inputIndex": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "a6f6djGb+RJRZE6TYjnaKP7"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/JoinGame.prefab.meta b/client/assets/prefabs/JoinGame.prefab.meta
new file mode 100755
index 0000000..c4123e4
--- /dev/null
+++ b/client/assets/prefabs/JoinGame.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/MyMahJong.prefab b/client/assets/prefabs/MyMahJong.prefab
new file mode 100755
index 0000000..dbf0120
--- /dev/null
+++ b/client/assets/prefabs/MyMahJong.prefab
@@ -0,0 +1,151 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -122,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 3
+ }
+ ],
+ "_prefab": {
+ "__id__": 4
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ null
+ ],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "06ac3mTs0JMrb7+IlMxbGfh"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/MyMahJong.prefab.meta b/client/assets/prefabs/MyMahJong.prefab.meta
new file mode 100755
index 0000000..f72d29d
--- /dev/null
+++ b/client/assets/prefabs/MyMahJong.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8f272adf-0dee-464e-bfc2-bd8bd6f38479",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/PengGangLeftAndRight.prefab b/client/assets/prefabs/PengGangLeftAndRight.prefab
new file mode 100755
index 0000000..039eb9b
--- /dev/null
+++ b/client/assets/prefabs/PengGangLeftAndRight.prefab
@@ -0,0 +1,455 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PengGangLeftAndRight",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 5
+ },
+ {
+ "__id__": 8
+ },
+ {
+ "__id__": 11
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 14
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_autumn",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ }
+ ],
+ "_prefab": {
+ "__id__": 4
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5a8ba0b6-f0d2-40c8-a712-8a42f323c602"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "65bb91f9-898a-4f92-a37d-fb84bed2cd5c"
+ },
+ "fileId": "c93f1ngGINAH4u4QHbLdKsw"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_autumn",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 6
+ }
+ ],
+ "_prefab": {
+ "__id__": 7
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5a8ba0b6-f0d2-40c8-a712-8a42f323c602"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "65bb91f9-898a-4f92-a37d-fb84bed2cd5c"
+ },
+ "fileId": "754f7F1OIpEnLRJ5IGpgEzn"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_autumn",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -50
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 9
+ }
+ ],
+ "_prefab": {
+ "__id__": 10
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 8
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5a8ba0b6-f0d2-40c8-a712-8a42f323c602"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "65bb91f9-898a-4f92-a37d-fb84bed2cd5c"
+ },
+ "fileId": "f3807uY6eBCfarVYW+WufLQ"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "gang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -0.4,
+ "y": -12.8
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 12
+ }
+ ],
+ "_prefab": {
+ "__id__": 13
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 11
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5a8ba0b6-f0d2-40c8-a712-8a42f323c602"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "65bb91f9-898a-4f92-a37d-fb84bed2cd5c"
+ },
+ "fileId": "76208GI8NRC5oePSXMhjQNg"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "65bb91f9-898a-4f92-a37d-fb84bed2cd5c"
+ },
+ "fileId": "7e56780qx5Hir9Oo9EerK7r"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/PengGangLeftAndRight.prefab.meta b/client/assets/prefabs/PengGangLeftAndRight.prefab.meta
new file mode 100755
index 0000000..a953405
--- /dev/null
+++ b/client/assets/prefabs/PengGangLeftAndRight.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "65bb91f9-898a-4f92-a37d-fb84bed2cd5c",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/PengGangMyself.prefab b/client/assets/prefabs/PengGangMyself.prefab
new file mode 100755
index 0000000..f59a8a8
--- /dev/null
+++ b/client/assets/prefabs/PengGangMyself.prefab
@@ -0,0 +1,447 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PengGangMyself",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 5
+ },
+ {
+ "__id__": 8
+ },
+ {
+ "__id__": 11
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 14
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ }
+ ],
+ "_prefab": {
+ "__id__": 4
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d6891d75-4cbd-44cd-88ff-7c3b6387946f"
+ },
+ "fileId": "04f32i3BjpDgLWUyijGwjLo"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 6
+ }
+ ],
+ "_prefab": {
+ "__id__": 7
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d6891d75-4cbd-44cd-88ff-7c3b6387946f"
+ },
+ "fileId": "8a861iKrTtPDYT5z89pZYQn"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 9
+ }
+ ],
+ "_prefab": {
+ "__id__": 10
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 8
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d6891d75-4cbd-44cd-88ff-7c3b6387946f"
+ },
+ "fileId": "e93406RKOpPfpFRSmRLPqt5"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "gang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 21
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 12
+ }
+ ],
+ "_prefab": {
+ "__id__": 13
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 11
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d6891d75-4cbd-44cd-88ff-7c3b6387946f"
+ },
+ "fileId": "725952118BNTLzOohG/7qGo"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d6891d75-4cbd-44cd-88ff-7c3b6387946f"
+ },
+ "fileId": "298820o7JZHfKUnKIVeutwN"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/PengGangMyself.prefab.meta b/client/assets/prefabs/PengGangMyself.prefab.meta
new file mode 100755
index 0000000..1275e41
--- /dev/null
+++ b/client/assets/prefabs/PengGangMyself.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d6891d75-4cbd-44cd-88ff-7c3b6387946f",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/WaitingConnection.prefab b/client/assets/prefabs/WaitingConnection.prefab
new file mode 100755
index 0000000..3cf9976
--- /dev/null
+++ b/client/assets/prefabs/WaitingConnection.prefab
@@ -0,0 +1,636 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "WaitingConnection",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 6
+ },
+ {
+ "__id__": 9
+ },
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 15
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 18
+ },
+ {
+ "__id__": 19
+ }
+ ],
+ "_prefab": {
+ "__id__": 20
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 63,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 4
+ }
+ ],
+ "_prefab": {
+ "__id__": 5
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$padding": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8b98bNahuFNG6hdvCi1NEQZ"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 250
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 7
+ }
+ ],
+ "_prefab": {
+ "__id__": 8
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "08edc5qMi1GNIOPT1/+Q4CE"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156.95,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 78
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 10
+ }
+ ],
+ "_prefab": {
+ "__id__": 11
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 9
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": " 正在登录游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "6ca22GIGnND4ZgWPY/knc9m"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "loading_image",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 13
+ }
+ ],
+ "_prefab": {
+ "__id__": 14
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "33a87e63-83e7-4f98-a40e-96feece06697"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "3dad14aa-1217-43e2-a654-c22ae3a85d84"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "c3fefzKTgRNL5VgfiSpLfOV"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jzshazi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 30,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ }
+ ],
+ "_prefab": {
+ "__id__": 17
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "30220141-dcea-4b2c-82ea-f6932b703abd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "3dad14aa-1217-43e2-a654-c22ae3a85d84"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "15461fSawBG87CnfB3s49cE"
+ },
+ {
+ "__type__": "10e32jDstpLhIGHWrQEq2vN",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 12
+ },
+ "_isShow": false,
+ "lblContent": {
+ "__id__": 10
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8f12cJXjThP5ILDjCfdQMUv"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/WaitingConnection.prefab.meta b/client/assets/prefabs/WaitingConnection.prefab.meta
new file mode 100755
index 0000000..7f3152a
--- /dev/null
+++ b/client/assets/prefabs/WaitingConnection.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/alert.prefab b/client/assets/prefabs/alert.prefab
new file mode 100755
index 0000000..e0e1b5a
--- /dev/null
+++ b/client/assets/prefabs/alert.prefab
@@ -0,0 +1,792 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "alert",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 6
+ },
+ {
+ "__id__": 9
+ },
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 15
+ },
+ {
+ "__id__": 19
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 23
+ }
+ ],
+ "_prefab": {
+ "__id__": 24
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 30,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 4
+ }
+ ],
+ "_prefab": {
+ "__id__": 5
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$padding": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "f11f9ITrlhJbbqZuUmjNCkT"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 650,
+ "height": 350
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 7
+ }
+ ],
+ "_prefab": {
+ "__id__": 8
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "53fe9K8U/NBkKtuKqGJLhMF"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 124
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 10
+ }
+ ],
+ "_prefab": {
+ "__id__": 11
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 9
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "提示",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "3019eV6xSVDa6PegorwuCts"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "content",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 16
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 13
+ }
+ ],
+ "_prefab": {
+ "__id__": 14
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "9b7e9yTEBhDpYqg5dnoWF7Y"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -120,
+ "y": -102
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ },
+ {
+ "__id__": 17
+ }
+ ],
+ "_prefab": {
+ "__id__": 18
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "718e98bd-522b-4ff0-b5cd-e955aa0d620b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 15
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "544aeNqBd5JbZQHsA5SbIFM"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_cancel",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 120,
+ "y": -102
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 20
+ },
+ {
+ "__id__": 21
+ }
+ ],
+ "_prefab": {
+ "__id__": 22
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 19
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5df0fb42-67cf-4df8-8ba4-539ef53a3ba7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 19
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 19
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "364dcrZY2JP0JgoFg8PvNfI"
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "28f35eafd5N9KGxdhNM33sJ"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/alert.prefab.meta b/client/assets/prefabs/alert.prefab.meta
new file mode 100755
index 0000000..96e25d6
--- /dev/null
+++ b/client/assets/prefabs/alert.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "43cab994-4ae6-4348-ba93-23bdcf03c240",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/emoji.prefab b/client/assets/prefabs/emoji.prefab
new file mode 100755
index 0000000..d489b56
--- /dev/null
+++ b/client/assets/prefabs/emoji.prefab
@@ -0,0 +1,159 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 65,
+ "y": 102
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_reorderChildDirty": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 3
+ }
+ ],
+ "_prefab": {
+ "__id__": 4
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": null,
+ "fileId": "1d2acZOoqRBx7W6H0QcRS42"
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/emoji.prefab.meta b/client/assets/prefabs/emoji.prefab.meta
new file mode 100755
index 0000000..ad2995c
--- /dev/null
+++ b/client/assets/prefabs/emoji.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "88b610e0-ae46-4547-9ba7-7f3d35a09c88",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/settings.prefab b/client/assets/prefabs/settings.prefab
new file mode 100755
index 0000000..49dcf57
--- /dev/null
+++ b/client/assets/prefabs/settings.prefab
@@ -0,0 +1,2656 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "settings",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 5
+ },
+ {
+ "__id__": 8
+ },
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 41
+ },
+ {
+ "__id__": 70
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 77
+ },
+ {
+ "__id__": 78
+ }
+ ],
+ "_prefab": {
+ "__id__": 79
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 758,
+ "height": 480
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ }
+ ],
+ "_prefab": {
+ "__id__": 4
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "8c0802iqbhHaJcTSbt+PYSS",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene16",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 116,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 194
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 6
+ }
+ ],
+ "_prefab": {
+ "__id__": 7
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "abb55ec9-187f-436e-9a1a-5ba431862e87"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "baed3co9T9NjL5lFZivFRrt",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 364,
+ "y": 215
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 9
+ },
+ {
+ "__id__": 10
+ }
+ ],
+ "_prefab": {
+ "__id__": 11
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 8
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 8
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.9,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 8
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "45a33fYxkFAsbKNmtW3OrGC",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yinxiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 13
+ },
+ {
+ "__id__": 16
+ },
+ {
+ "__id__": 32
+ },
+ {
+ "__id__": 36
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -300,
+ "y": 92
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 40
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 15,
+ "b": 15,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 14
+ }
+ ],
+ "_prefab": {
+ "__id__": 15
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "音效",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "7d436R3ASpEXJIvTKBLz7zn",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 17
+ },
+ {
+ "__id__": 20
+ },
+ {
+ "__id__": 26
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 285,
+ "y": 1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 30
+ }
+ ],
+ "_prefab": {
+ "__id__": 31
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Background",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 16
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 18
+ }
+ ],
+ "_prefab": {
+ "__id__": 19
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 17
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7f5d1ce1-ad62-48c3-891d-2feb0457a744"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "6c101PP4VtHCYulvhYmRSEe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 16
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 21
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -214,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 24
+ }
+ ],
+ "_prefab": {
+ "__id__": 25
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting12",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 20
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 22
+ }
+ ],
+ "_prefab": {
+ "__id__": 23
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 21
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9d456e8d-b4a7-492e-bc9a-bd60dff93263"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "950e0UG3ndLgLXT+gT4Rjq1",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 20
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "33061U5Mh1JOZsx4juteUvN",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Handle",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 16
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 51,
+ "height": 55
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 27
+ },
+ {
+ "__id__": 28
+ }
+ ],
+ "_prefab": {
+ "__id__": 29
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 26
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 26
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.1,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 26
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "9d032WLPx9JDq8qHl750kik",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Slider",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 16
+ },
+ "_enabled": true,
+ "direction": 0,
+ "slideEvents": [],
+ "_N$handle": {
+ "__id__": 28
+ },
+ "_N$progress": 0.5
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "281e2D1L8BH5IP/Oqd6MhrF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yx_open",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 33
+ },
+ {
+ "__id__": 34
+ }
+ ],
+ "_prefab": {
+ "__id__": 35
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 32
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c4d40921-9a54-4928-8409-ce5c5c456840"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 32
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 32
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "9f47ahL40pC274twuzs9Tgx",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yx_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 37
+ },
+ {
+ "__id__": 38
+ }
+ ],
+ "_prefab": {
+ "__id__": 39
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 36
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "66a82289-42b1-4fb6-a223-220e32129cfa"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 36
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 36
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "5f545B4LsJIm5Qap+F2GTNU",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "db30dN6Y05KiaIXm1zgDuDZ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yinyue",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 42
+ },
+ {
+ "__id__": 45
+ },
+ {
+ "__id__": 61
+ },
+ {
+ "__id__": 65
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -300,
+ "y": -13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 69
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 15,
+ "b": 15,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 41
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 43
+ }
+ ],
+ "_prefab": {
+ "__id__": 44
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 42
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "音乐",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "8bed3JDBzZBJLBV8Po3yoBt",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 41
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 46
+ },
+ {
+ "__id__": 49
+ },
+ {
+ "__id__": 55
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 285,
+ "y": 1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 59
+ }
+ ],
+ "_prefab": {
+ "__id__": 60
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Background",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 45
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 47
+ }
+ ],
+ "_prefab": {
+ "__id__": 48
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7f5d1ce1-ad62-48c3-891d-2feb0457a744"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "8b845+IKV9M4a2Izh+avNmS",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 45
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 50
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -214,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 53
+ }
+ ],
+ "_prefab": {
+ "__id__": 54
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting12",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 49
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 51
+ }
+ ],
+ "_prefab": {
+ "__id__": 52
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 50
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9d456e8d-b4a7-492e-bc9a-bd60dff93263"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "c6320RsoyRMrK+5nylfCSfk",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 49
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "675cdpQXSpDW4MdxVsMmT+Z",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Handle",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 45
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 51,
+ "height": 55
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 56
+ },
+ {
+ "__id__": 57
+ }
+ ],
+ "_prefab": {
+ "__id__": 58
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 55
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 55
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.1,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 55
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "68039e/Ta1AELsQnpvrSJMh",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Slider",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 45
+ },
+ "_enabled": true,
+ "direction": 0,
+ "slideEvents": [],
+ "_N$handle": {
+ "__id__": 57
+ },
+ "_N$progress": 0.5
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "b0c35okH09EsKY62dR8Sook",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yy_open",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 41
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 62
+ },
+ {
+ "__id__": 63
+ }
+ ],
+ "_prefab": {
+ "__id__": 64
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 61
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c4d40921-9a54-4928-8409-ce5c5c456840"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 61
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 61
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "597719YWJdOEqJahN3Nm9kD",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yy_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 41
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 66
+ },
+ {
+ "__id__": 67
+ }
+ ],
+ "_prefab": {
+ "__id__": 68
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 65
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8ee53e49-397a-4974-b996-923c19d3cf0a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 65
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 65
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "787482SEgFKgbBCoDnBSNyk",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "6bf59JERjtEX6l23jm6J6rK",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_exit",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 288,
+ "height": 77
+ },
+ "_children": [
+ {
+ "__id__": 71
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -146
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 74
+ },
+ {
+ "__id__": 75
+ }
+ ],
+ "_prefab": {
+ "__id__": 76
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting10",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 70
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 184,
+ "height": 45
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 72
+ }
+ ],
+ "_prefab": {
+ "__id__": 73
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "498383c9-347c-434f-84e3-53e4f304d72a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "38782rdbmhM8KY+gY3SV3U3",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 70
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5914f056-b6c1-4bbd-979b-92b5b721c7f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 70
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.9,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 70
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "5d80d+s6+ZHjrOPXDKHMBYj",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "4c04fyd89JAZY7qGjvubi+f",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "_btnYXOpen": null,
+ "_btnYXClose": null,
+ "_btnYYOpen": null,
+ "_btnYYClose": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "4c909j7vh5DkbfELGxXVvmm",
+ "sync": false
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/settings.prefab.meta b/client/assets/prefabs/settings.prefab.meta
new file mode 100755
index 0000000..95c1366
--- /dev/null
+++ b/client/assets/prefabs/settings.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "bb4e83c3-ec89-44bc-bd44-70431b9bd933",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/prefabs/userinfo.prefab b/client/assets/prefabs/userinfo.prefab
new file mode 100755
index 0000000..00c7bbd
--- /dev/null
+++ b/client/assets/prefabs/userinfo.prefab
@@ -0,0 +1,969 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "data": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "userinfo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 7
+ },
+ {
+ "__id__": 10
+ },
+ {
+ "__id__": 13
+ },
+ {
+ "__id__": 16
+ },
+ {
+ "__id__": 19
+ },
+ {
+ "__id__": 23
+ },
+ {
+ "__id__": 26
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 29
+ },
+ {
+ "__id__": 30
+ }
+ ],
+ "_prefab": {
+ "__id__": 31
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 30,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 4
+ },
+ {
+ "__id__": 5
+ }
+ ],
+ "_prefab": {
+ "__id__": 6
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 720
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "67824+gx8RP476ggCmbdH25",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 200
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 8
+ }
+ ],
+ "_prefab": {
+ "__id__": 9
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 7
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "1888drucLhD458pqcbrOINf",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": 46
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 11
+ }
+ ],
+ "_prefab": {
+ "__id__": 12
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 10
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "洛神科技",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "776cfxUStBDrY/eC8SPyi2y",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ip",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": -7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 14
+ }
+ ],
+ "_prefab": {
+ "__id__": 15
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "IP: 171.217.46.219",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "26cd2AA681EObEdC11m2tnI",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "id",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 17
+ }
+ ],
+ "_prefab": {
+ "__id__": 18
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 16
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "ID: 103",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "2d0c3ND2ARC/ZBlaclRtIyt",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -155,
+ "y": 13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 20
+ },
+ {
+ "__id__": 21
+ }
+ ],
+ "_prefab": {
+ "__id__": 22
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 19
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "afc96215-f657-4e45-b5e6-ff5152f52566"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 19
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "6b291hH7s9OOKktX4ML9rAe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sex_female",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -207,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 24
+ }
+ ],
+ "_prefab": {
+ "__id__": 25
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 23
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8c2e8172-65aa-4d5f-ad62-5383e3f1f939"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "b4defolLmtG0bDEBbVnOKRO",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sex_male",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -207,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 27
+ }
+ ],
+ "_prefab": {
+ "__id__": 28
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 26
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ecf2a72a-7f6b-496d-a333-45912d28efcd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "5302azh5f5F4ZMQLx9/yUpo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 720
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "361f9ipxABL1YeNo9g47lsF",
+ "sync": false
+ }
+]
\ No newline at end of file
diff --git a/client/assets/prefabs/userinfo.prefab.meta b/client/assets/prefabs/userinfo.prefab.meta
new file mode 100755
index 0000000..180f149
--- /dev/null
+++ b/client/assets/prefabs/userinfo.prefab.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "19a75185-fd4a-473e-ae42-2b5490ad13e7",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources.meta b/client/assets/resources.meta
new file mode 100755
index 0000000..fa1203f
--- /dev/null
+++ b/client/assets/resources.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "751f29e8-8146-472e-84f3-5d404293f63d",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds.meta b/client/assets/resources/sounds.meta
new file mode 100755
index 0000000..74f9457
--- /dev/null
+++ b/client/assets/resources/sounds.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "2604e275-c862-43e7-b9bf-753c68e40f53",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/bgFight.mp3 b/client/assets/resources/sounds/bgFight.mp3
new file mode 100755
index 0000000..149022b
Binary files /dev/null and b/client/assets/resources/sounds/bgFight.mp3 differ
diff --git a/client/assets/resources/sounds/bgFight.mp3.meta b/client/assets/resources/sounds/bgFight.mp3.meta
new file mode 100755
index 0000000..8a99d8a
--- /dev/null
+++ b/client/assets/resources/sounds/bgFight.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "81ac8927-5852-4c37-ba91-c9faaad18d20",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/bgMain.mp3 b/client/assets/resources/sounds/bgMain.mp3
new file mode 100755
index 0000000..df73d08
Binary files /dev/null and b/client/assets/resources/sounds/bgMain.mp3 differ
diff --git a/client/assets/resources/sounds/bgMain.mp3.meta b/client/assets/resources/sounds/bgMain.mp3.meta
new file mode 100755
index 0000000..39193ff
--- /dev/null
+++ b/client/assets/resources/sounds/bgMain.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ca3cd36e-e121-4a85-9b3f-0daa92af7d54",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/btnClick.mp3 b/client/assets/resources/sounds/btnClick.mp3
new file mode 100755
index 0000000..e6c6e66
Binary files /dev/null and b/client/assets/resources/sounds/btnClick.mp3 differ
diff --git a/client/assets/resources/sounds/btnClick.mp3.meta b/client/assets/resources/sounds/btnClick.mp3.meta
new file mode 100755
index 0000000..ae72db5
--- /dev/null
+++ b/client/assets/resources/sounds/btnClick.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8f65957d-38ab-47c5-8f52-ab42bb7e9592",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/deal.mp3 b/client/assets/resources/sounds/deal.mp3
new file mode 100755
index 0000000..7a6e590
Binary files /dev/null and b/client/assets/resources/sounds/deal.mp3 differ
diff --git a/client/assets/resources/sounds/deal.mp3.meta b/client/assets/resources/sounds/deal.mp3.meta
new file mode 100755
index 0000000..2ca36b5
--- /dev/null
+++ b/client/assets/resources/sounds/deal.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "b71386fb-c7cd-4a3c-ac2b-0ac0f43e8d73",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/dropCoin.mp3 b/client/assets/resources/sounds/dropCoin.mp3
new file mode 100755
index 0000000..03c0e08
Binary files /dev/null and b/client/assets/resources/sounds/dropCoin.mp3 differ
diff --git a/client/assets/resources/sounds/dropCoin.mp3.meta b/client/assets/resources/sounds/dropCoin.mp3.meta
new file mode 100755
index 0000000..37e90df
--- /dev/null
+++ b/client/assets/resources/sounds/dropCoin.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "cba40643-a5b7-47c5-9f55-32fd075e0e0b",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_1.mp3 b/client/assets/resources/sounds/fix_msg_1.mp3
new file mode 100755
index 0000000..3365d04
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_1.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_1.mp3.meta b/client/assets/resources/sounds/fix_msg_1.mp3.meta
new file mode 100755
index 0000000..6ab8456
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_1.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ad5300c1-35eb-448b-b629-095cf4e7411d",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_2.mp3 b/client/assets/resources/sounds/fix_msg_2.mp3
new file mode 100755
index 0000000..eac4d77
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_2.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_2.mp3.meta b/client/assets/resources/sounds/fix_msg_2.mp3.meta
new file mode 100755
index 0000000..706ddac
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_2.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "25b01ded-55d1-4ea1-a84c-401d10341444",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_3.mp3 b/client/assets/resources/sounds/fix_msg_3.mp3
new file mode 100755
index 0000000..39905b2
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_3.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_3.mp3.meta b/client/assets/resources/sounds/fix_msg_3.mp3.meta
new file mode 100755
index 0000000..67851fc
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_3.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e811c999-f2a8-4aa6-93ea-f0e14f6a71c0",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_4.mp3 b/client/assets/resources/sounds/fix_msg_4.mp3
new file mode 100755
index 0000000..f8abae1
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_4.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_4.mp3.meta b/client/assets/resources/sounds/fix_msg_4.mp3.meta
new file mode 100755
index 0000000..488ee7d
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_4.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "aa9cd25a-64c9-441b-9d24-0c27463ef557",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_5.mp3 b/client/assets/resources/sounds/fix_msg_5.mp3
new file mode 100755
index 0000000..05c54e0
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_5.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_5.mp3.meta b/client/assets/resources/sounds/fix_msg_5.mp3.meta
new file mode 100755
index 0000000..7c30d21
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_5.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "86a1f6eb-e8b7-4949-99c3-7b0dc6636b7c",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_6.mp3 b/client/assets/resources/sounds/fix_msg_6.mp3
new file mode 100755
index 0000000..9178ee8
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_6.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_6.mp3.meta b/client/assets/resources/sounds/fix_msg_6.mp3.meta
new file mode 100755
index 0000000..d4acc0a
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_6.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "163dc8fe-8ccf-4eb4-bdd5-d3c2578bb010",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_7.mp3 b/client/assets/resources/sounds/fix_msg_7.mp3
new file mode 100755
index 0000000..2a1590e
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_7.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_7.mp3.meta b/client/assets/resources/sounds/fix_msg_7.mp3.meta
new file mode 100755
index 0000000..6a3c3d1
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_7.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5a64ca79-d766-45d2-9797-8315e1c79323",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_8.mp3 b/client/assets/resources/sounds/fix_msg_8.mp3
new file mode 100755
index 0000000..212d532
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_8.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_8.mp3.meta b/client/assets/resources/sounds/fix_msg_8.mp3.meta
new file mode 100755
index 0000000..cda2864
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_8.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "41f357e0-872e-4cf4-a4e4-aa44e7a773e2",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/fix_msg_9.mp3 b/client/assets/resources/sounds/fix_msg_9.mp3
new file mode 100755
index 0000000..d95569d
Binary files /dev/null and b/client/assets/resources/sounds/fix_msg_9.mp3 differ
diff --git a/client/assets/resources/sounds/fix_msg_9.mp3.meta b/client/assets/resources/sounds/fix_msg_9.mp3.meta
new file mode 100755
index 0000000..e5d42f4
--- /dev/null
+++ b/client/assets/resources/sounds/fix_msg_9.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "fbfde31f-b206-4b60-8120-809d7c51d59b",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/give.mp3 b/client/assets/resources/sounds/give.mp3
new file mode 100755
index 0000000..12093f0
Binary files /dev/null and b/client/assets/resources/sounds/give.mp3 differ
diff --git a/client/assets/resources/sounds/give.mp3.meta b/client/assets/resources/sounds/give.mp3.meta
new file mode 100755
index 0000000..fcdf5ed
--- /dev/null
+++ b/client/assets/resources/sounds/give.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ff23e3fc-4306-4ac8-8ca6-6a6b8c60a6ba",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/guafeng.mp3 b/client/assets/resources/sounds/guafeng.mp3
new file mode 100755
index 0000000..5cf8899
Binary files /dev/null and b/client/assets/resources/sounds/guafeng.mp3 differ
diff --git a/client/assets/resources/sounds/guafeng.mp3.meta b/client/assets/resources/sounds/guafeng.mp3.meta
new file mode 100755
index 0000000..4cbd48a
--- /dev/null
+++ b/client/assets/resources/sounds/guafeng.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "539804c3-bf8c-41a1-adb8-2e8949a4746e",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/guess.meta b/client/assets/resources/sounds/guess.meta
new file mode 100755
index 0000000..c8dd3b0
--- /dev/null
+++ b/client/assets/resources/sounds/guess.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "a03b520f-431d-4283-9fae-5e86d6519973",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/guess/bgm.mp3 b/client/assets/resources/sounds/guess/bgm.mp3
new file mode 100755
index 0000000..a9a3d86
Binary files /dev/null and b/client/assets/resources/sounds/guess/bgm.mp3 differ
diff --git a/client/assets/resources/sounds/guess/bgm.mp3.meta b/client/assets/resources/sounds/guess/bgm.mp3.meta
new file mode 100755
index 0000000..ff5b13a
--- /dev/null
+++ b/client/assets/resources/sounds/guess/bgm.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3a146ece-8553-4d46-a086-3c2fa0e56d51",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/guess/lose.mp3 b/client/assets/resources/sounds/guess/lose.mp3
new file mode 100755
index 0000000..6bb3be2
Binary files /dev/null and b/client/assets/resources/sounds/guess/lose.mp3 differ
diff --git a/client/assets/resources/sounds/guess/lose.mp3.meta b/client/assets/resources/sounds/guess/lose.mp3.meta
new file mode 100755
index 0000000..b0e96af
--- /dev/null
+++ b/client/assets/resources/sounds/guess/lose.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "42c34357-0452-4ce0-95e2-faea1855e74c",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/guess/win.mp3 b/client/assets/resources/sounds/guess/win.mp3
new file mode 100755
index 0000000..e475ae6
Binary files /dev/null and b/client/assets/resources/sounds/guess/win.mp3 differ
diff --git a/client/assets/resources/sounds/guess/win.mp3.meta b/client/assets/resources/sounds/guess/win.mp3.meta
new file mode 100755
index 0000000..0a42d78
--- /dev/null
+++ b/client/assets/resources/sounds/guess/win.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d61777c9-dc91-434a-af24-e2bcadc24750",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/horse.meta b/client/assets/resources/sounds/horse.meta
new file mode 100755
index 0000000..c93c1fc
--- /dev/null
+++ b/client/assets/resources/sounds/horse.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "0addd383-503d-4080-a207-45b04f509072",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/horse/bet.mp3 b/client/assets/resources/sounds/horse/bet.mp3
new file mode 100755
index 0000000..ea7d1cf
Binary files /dev/null and b/client/assets/resources/sounds/horse/bet.mp3 differ
diff --git a/client/assets/resources/sounds/horse/bet.mp3.meta b/client/assets/resources/sounds/horse/bet.mp3.meta
new file mode 100755
index 0000000..12bf702
--- /dev/null
+++ b/client/assets/resources/sounds/horse/bet.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "203d3fc3-ed0c-4233-bf82-c7588f4b71c7",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/horse/bgBet.mp3 b/client/assets/resources/sounds/horse/bgBet.mp3
new file mode 100755
index 0000000..92df71a
Binary files /dev/null and b/client/assets/resources/sounds/horse/bgBet.mp3 differ
diff --git a/client/assets/resources/sounds/horse/bgBet.mp3.meta b/client/assets/resources/sounds/horse/bgBet.mp3.meta
new file mode 100755
index 0000000..6ec8f54
--- /dev/null
+++ b/client/assets/resources/sounds/horse/bgBet.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "6638e2d2-85b9-4412-8af4-ce5ab3301f69",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/horse/bgRace.mp3 b/client/assets/resources/sounds/horse/bgRace.mp3
new file mode 100755
index 0000000..9dbe5a7
Binary files /dev/null and b/client/assets/resources/sounds/horse/bgRace.mp3 differ
diff --git a/client/assets/resources/sounds/horse/bgRace.mp3.meta b/client/assets/resources/sounds/horse/bgRace.mp3.meta
new file mode 100755
index 0000000..55feaf1
--- /dev/null
+++ b/client/assets/resources/sounds/horse/bgRace.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "cd0f27e6-0e4d-4008-a435-e5082a00adb9",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/horse/go.mp3 b/client/assets/resources/sounds/horse/go.mp3
new file mode 100755
index 0000000..04d35f0
Binary files /dev/null and b/client/assets/resources/sounds/horse/go.mp3 differ
diff --git a/client/assets/resources/sounds/horse/go.mp3.meta b/client/assets/resources/sounds/horse/go.mp3.meta
new file mode 100755
index 0000000..e11ab20
--- /dev/null
+++ b/client/assets/resources/sounds/horse/go.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7f884842-50bd-4266-b8fd-3e45a9c9fae0",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/horse/shutter.mp3 b/client/assets/resources/sounds/horse/shutter.mp3
new file mode 100755
index 0000000..4b3711f
Binary files /dev/null and b/client/assets/resources/sounds/horse/shutter.mp3 differ
diff --git a/client/assets/resources/sounds/horse/shutter.mp3.meta b/client/assets/resources/sounds/horse/shutter.mp3.meta
new file mode 100755
index 0000000..bd8441b
--- /dev/null
+++ b/client/assets/resources/sounds/horse/shutter.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "928345a5-0da5-4d97-8163-59ad46e44302",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/lose.mp3 b/client/assets/resources/sounds/lose.mp3
new file mode 100755
index 0000000..aa477ef
Binary files /dev/null and b/client/assets/resources/sounds/lose.mp3 differ
diff --git a/client/assets/resources/sounds/lose.mp3.meta b/client/assets/resources/sounds/lose.mp3.meta
new file mode 100755
index 0000000..739b03b
--- /dev/null
+++ b/client/assets/resources/sounds/lose.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "6e8086d5-006c-4266-b4ca-048ec6b3f9bf",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv.meta b/client/assets/resources/sounds/nv.meta
new file mode 100755
index 0000000..79f939d
--- /dev/null
+++ b/client/assets/resources/sounds/nv.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "9e2e5592-da7f-424d-bfe2-7d14584a86e1",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/1.mp3 b/client/assets/resources/sounds/nv/1.mp3
new file mode 100755
index 0000000..7c8ebe9
Binary files /dev/null and b/client/assets/resources/sounds/nv/1.mp3 differ
diff --git a/client/assets/resources/sounds/nv/1.mp3.meta b/client/assets/resources/sounds/nv/1.mp3.meta
new file mode 100755
index 0000000..5c284b1
--- /dev/null
+++ b/client/assets/resources/sounds/nv/1.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "47c594e7-f9d4-407c-8a53-5baf308ceb2d",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/11.mp3 b/client/assets/resources/sounds/nv/11.mp3
new file mode 100755
index 0000000..6474eca
Binary files /dev/null and b/client/assets/resources/sounds/nv/11.mp3 differ
diff --git a/client/assets/resources/sounds/nv/11.mp3.meta b/client/assets/resources/sounds/nv/11.mp3.meta
new file mode 100755
index 0000000..82f4d4b
--- /dev/null
+++ b/client/assets/resources/sounds/nv/11.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "67ff2693-da34-4f87-9f97-3d986a209dbe",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/12.mp3 b/client/assets/resources/sounds/nv/12.mp3
new file mode 100755
index 0000000..63cb6ef
Binary files /dev/null and b/client/assets/resources/sounds/nv/12.mp3 differ
diff --git a/client/assets/resources/sounds/nv/12.mp3.meta b/client/assets/resources/sounds/nv/12.mp3.meta
new file mode 100755
index 0000000..a335ead
--- /dev/null
+++ b/client/assets/resources/sounds/nv/12.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7af0a870-0cd1-46c2-9240-1743af231fca",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/13.mp3 b/client/assets/resources/sounds/nv/13.mp3
new file mode 100755
index 0000000..30ddf9d
Binary files /dev/null and b/client/assets/resources/sounds/nv/13.mp3 differ
diff --git a/client/assets/resources/sounds/nv/13.mp3.meta b/client/assets/resources/sounds/nv/13.mp3.meta
new file mode 100755
index 0000000..b4d67ae
--- /dev/null
+++ b/client/assets/resources/sounds/nv/13.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "6492c6a4-31f6-4832-81dd-1146850fb97e",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/14.mp3 b/client/assets/resources/sounds/nv/14.mp3
new file mode 100755
index 0000000..763835d
Binary files /dev/null and b/client/assets/resources/sounds/nv/14.mp3 differ
diff --git a/client/assets/resources/sounds/nv/14.mp3.meta b/client/assets/resources/sounds/nv/14.mp3.meta
new file mode 100755
index 0000000..6d1c90c
--- /dev/null
+++ b/client/assets/resources/sounds/nv/14.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "26aba82d-8cef-45cb-948a-70673550e365",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/15.mp3 b/client/assets/resources/sounds/nv/15.mp3
new file mode 100755
index 0000000..7731c25
Binary files /dev/null and b/client/assets/resources/sounds/nv/15.mp3 differ
diff --git a/client/assets/resources/sounds/nv/15.mp3.meta b/client/assets/resources/sounds/nv/15.mp3.meta
new file mode 100755
index 0000000..9e6bfcc
--- /dev/null
+++ b/client/assets/resources/sounds/nv/15.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ee6e3fdb-39fd-49a5-a791-f2b6f68defb5",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/16.mp3 b/client/assets/resources/sounds/nv/16.mp3
new file mode 100755
index 0000000..c6ad8bc
Binary files /dev/null and b/client/assets/resources/sounds/nv/16.mp3 differ
diff --git a/client/assets/resources/sounds/nv/16.mp3.meta b/client/assets/resources/sounds/nv/16.mp3.meta
new file mode 100755
index 0000000..a4f5f8e
--- /dev/null
+++ b/client/assets/resources/sounds/nv/16.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "6b0c4811-b2c6-4992-a357-157372a3a3a6",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/17.mp3 b/client/assets/resources/sounds/nv/17.mp3
new file mode 100755
index 0000000..13533de
Binary files /dev/null and b/client/assets/resources/sounds/nv/17.mp3 differ
diff --git a/client/assets/resources/sounds/nv/17.mp3.meta b/client/assets/resources/sounds/nv/17.mp3.meta
new file mode 100755
index 0000000..30b21b7
--- /dev/null
+++ b/client/assets/resources/sounds/nv/17.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4ea5ae2f-0f9e-47b6-af10-5a78924840c5",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/18.mp3 b/client/assets/resources/sounds/nv/18.mp3
new file mode 100755
index 0000000..fef6c44
Binary files /dev/null and b/client/assets/resources/sounds/nv/18.mp3 differ
diff --git a/client/assets/resources/sounds/nv/18.mp3.meta b/client/assets/resources/sounds/nv/18.mp3.meta
new file mode 100755
index 0000000..4a600d3
--- /dev/null
+++ b/client/assets/resources/sounds/nv/18.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "39c6e070-9c82-4c49-8cd4-51e9a05d9637",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/19.mp3 b/client/assets/resources/sounds/nv/19.mp3
new file mode 100755
index 0000000..df61326
Binary files /dev/null and b/client/assets/resources/sounds/nv/19.mp3 differ
diff --git a/client/assets/resources/sounds/nv/19.mp3.meta b/client/assets/resources/sounds/nv/19.mp3.meta
new file mode 100755
index 0000000..50fe27f
--- /dev/null
+++ b/client/assets/resources/sounds/nv/19.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "85278faa-c64c-4385-81fc-7f0fb1fc2940",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/2.mp3 b/client/assets/resources/sounds/nv/2.mp3
new file mode 100755
index 0000000..d4ef8b5
Binary files /dev/null and b/client/assets/resources/sounds/nv/2.mp3 differ
diff --git a/client/assets/resources/sounds/nv/2.mp3.meta b/client/assets/resources/sounds/nv/2.mp3.meta
new file mode 100755
index 0000000..3b9896f
--- /dev/null
+++ b/client/assets/resources/sounds/nv/2.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "96490529-584d-4ef7-bc25-f52ccf7abc04",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/21.mp3 b/client/assets/resources/sounds/nv/21.mp3
new file mode 100755
index 0000000..2c28af8
Binary files /dev/null and b/client/assets/resources/sounds/nv/21.mp3 differ
diff --git a/client/assets/resources/sounds/nv/21.mp3.meta b/client/assets/resources/sounds/nv/21.mp3.meta
new file mode 100755
index 0000000..ea57c19
--- /dev/null
+++ b/client/assets/resources/sounds/nv/21.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2a090963-a3c5-41dd-95c2-62bc2b9ada79",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/22.mp3 b/client/assets/resources/sounds/nv/22.mp3
new file mode 100755
index 0000000..156e00e
Binary files /dev/null and b/client/assets/resources/sounds/nv/22.mp3 differ
diff --git a/client/assets/resources/sounds/nv/22.mp3.meta b/client/assets/resources/sounds/nv/22.mp3.meta
new file mode 100755
index 0000000..026b5cd
--- /dev/null
+++ b/client/assets/resources/sounds/nv/22.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "14630a6e-3d97-4fda-ae43-61809774e116",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/23.mp3 b/client/assets/resources/sounds/nv/23.mp3
new file mode 100755
index 0000000..26bae4b
Binary files /dev/null and b/client/assets/resources/sounds/nv/23.mp3 differ
diff --git a/client/assets/resources/sounds/nv/23.mp3.meta b/client/assets/resources/sounds/nv/23.mp3.meta
new file mode 100755
index 0000000..b7f5f5c
--- /dev/null
+++ b/client/assets/resources/sounds/nv/23.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "89f57315-fad5-4b3f-8ecf-1e932886b163",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/24.mp3 b/client/assets/resources/sounds/nv/24.mp3
new file mode 100755
index 0000000..1a773de
Binary files /dev/null and b/client/assets/resources/sounds/nv/24.mp3 differ
diff --git a/client/assets/resources/sounds/nv/24.mp3.meta b/client/assets/resources/sounds/nv/24.mp3.meta
new file mode 100755
index 0000000..e39cac6
--- /dev/null
+++ b/client/assets/resources/sounds/nv/24.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "b907c6e6-3d07-4f19-bda2-e06dc9bb0502",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/25.mp3 b/client/assets/resources/sounds/nv/25.mp3
new file mode 100755
index 0000000..534e487
Binary files /dev/null and b/client/assets/resources/sounds/nv/25.mp3 differ
diff --git a/client/assets/resources/sounds/nv/25.mp3.meta b/client/assets/resources/sounds/nv/25.mp3.meta
new file mode 100755
index 0000000..12b930f
--- /dev/null
+++ b/client/assets/resources/sounds/nv/25.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2d8d85bc-728f-4add-8508-28eb5e2cb56d",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/26.mp3 b/client/assets/resources/sounds/nv/26.mp3
new file mode 100755
index 0000000..a902a8b
Binary files /dev/null and b/client/assets/resources/sounds/nv/26.mp3 differ
diff --git a/client/assets/resources/sounds/nv/26.mp3.meta b/client/assets/resources/sounds/nv/26.mp3.meta
new file mode 100755
index 0000000..b194fe1
--- /dev/null
+++ b/client/assets/resources/sounds/nv/26.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "72385906-a05c-4c15-a964-e874c5ca9088",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/27.mp3 b/client/assets/resources/sounds/nv/27.mp3
new file mode 100755
index 0000000..a719185
Binary files /dev/null and b/client/assets/resources/sounds/nv/27.mp3 differ
diff --git a/client/assets/resources/sounds/nv/27.mp3.meta b/client/assets/resources/sounds/nv/27.mp3.meta
new file mode 100755
index 0000000..0c75bfb
--- /dev/null
+++ b/client/assets/resources/sounds/nv/27.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ef96c12a-c070-409f-b419-44632e9f1fac",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/28.mp3 b/client/assets/resources/sounds/nv/28.mp3
new file mode 100755
index 0000000..523ff1a
Binary files /dev/null and b/client/assets/resources/sounds/nv/28.mp3 differ
diff --git a/client/assets/resources/sounds/nv/28.mp3.meta b/client/assets/resources/sounds/nv/28.mp3.meta
new file mode 100755
index 0000000..94925b0
--- /dev/null
+++ b/client/assets/resources/sounds/nv/28.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "60d599d0-5883-45ea-9b73-23ee5c908ddd",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/29.mp3 b/client/assets/resources/sounds/nv/29.mp3
new file mode 100755
index 0000000..a8ec2e6
Binary files /dev/null and b/client/assets/resources/sounds/nv/29.mp3 differ
diff --git a/client/assets/resources/sounds/nv/29.mp3.meta b/client/assets/resources/sounds/nv/29.mp3.meta
new file mode 100755
index 0000000..9a84a11
--- /dev/null
+++ b/client/assets/resources/sounds/nv/29.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e6e7ab6b-5d8c-49c8-8546-a1da8a60c9f3",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/3.mp3 b/client/assets/resources/sounds/nv/3.mp3
new file mode 100755
index 0000000..88add5f
Binary files /dev/null and b/client/assets/resources/sounds/nv/3.mp3 differ
diff --git a/client/assets/resources/sounds/nv/3.mp3.meta b/client/assets/resources/sounds/nv/3.mp3.meta
new file mode 100755
index 0000000..4c86f8c
--- /dev/null
+++ b/client/assets/resources/sounds/nv/3.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "935a4e23-06b6-4669-b00f-feaa68eb7f4e",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/31.mp3 b/client/assets/resources/sounds/nv/31.mp3
new file mode 100755
index 0000000..eca5445
Binary files /dev/null and b/client/assets/resources/sounds/nv/31.mp3 differ
diff --git a/client/assets/resources/sounds/nv/31.mp3.meta b/client/assets/resources/sounds/nv/31.mp3.meta
new file mode 100755
index 0000000..30dfcc0
--- /dev/null
+++ b/client/assets/resources/sounds/nv/31.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "f24db379-9aa2-49eb-8171-b00f87915ffe",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/4.mp3 b/client/assets/resources/sounds/nv/4.mp3
new file mode 100755
index 0000000..2a111ef
Binary files /dev/null and b/client/assets/resources/sounds/nv/4.mp3 differ
diff --git a/client/assets/resources/sounds/nv/4.mp3.meta b/client/assets/resources/sounds/nv/4.mp3.meta
new file mode 100755
index 0000000..e1be0fd
--- /dev/null
+++ b/client/assets/resources/sounds/nv/4.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "9184bc96-c6d2-4eeb-83b6-11bf6a4c9dad",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/41.mp3 b/client/assets/resources/sounds/nv/41.mp3
new file mode 100755
index 0000000..401c94e
Binary files /dev/null and b/client/assets/resources/sounds/nv/41.mp3 differ
diff --git a/client/assets/resources/sounds/nv/41.mp3.meta b/client/assets/resources/sounds/nv/41.mp3.meta
new file mode 100755
index 0000000..d782e66
--- /dev/null
+++ b/client/assets/resources/sounds/nv/41.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e80565cc-cf17-4cc3-8fc9-c7a6173f053b",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/5.mp3 b/client/assets/resources/sounds/nv/5.mp3
new file mode 100755
index 0000000..860555c
Binary files /dev/null and b/client/assets/resources/sounds/nv/5.mp3 differ
diff --git a/client/assets/resources/sounds/nv/5.mp3.meta b/client/assets/resources/sounds/nv/5.mp3.meta
new file mode 100755
index 0000000..534c8e1
--- /dev/null
+++ b/client/assets/resources/sounds/nv/5.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a5ec6867-36f2-406c-b963-6c4f73e7258b",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/51.mp3 b/client/assets/resources/sounds/nv/51.mp3
new file mode 100755
index 0000000..65fc8cc
Binary files /dev/null and b/client/assets/resources/sounds/nv/51.mp3 differ
diff --git a/client/assets/resources/sounds/nv/51.mp3.meta b/client/assets/resources/sounds/nv/51.mp3.meta
new file mode 100755
index 0000000..f74113d
--- /dev/null
+++ b/client/assets/resources/sounds/nv/51.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "876bb2d1-28a8-491e-8770-21cddfe2863a",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/6.mp3 b/client/assets/resources/sounds/nv/6.mp3
new file mode 100755
index 0000000..d5a5220
Binary files /dev/null and b/client/assets/resources/sounds/nv/6.mp3 differ
diff --git a/client/assets/resources/sounds/nv/6.mp3.meta b/client/assets/resources/sounds/nv/6.mp3.meta
new file mode 100755
index 0000000..2cbe182
--- /dev/null
+++ b/client/assets/resources/sounds/nv/6.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "021dd735-2275-48c0-88be-3262e61df608",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/61.mp3 b/client/assets/resources/sounds/nv/61.mp3
new file mode 100755
index 0000000..d03b8dc
Binary files /dev/null and b/client/assets/resources/sounds/nv/61.mp3 differ
diff --git a/client/assets/resources/sounds/nv/61.mp3.meta b/client/assets/resources/sounds/nv/61.mp3.meta
new file mode 100755
index 0000000..1d4865e
--- /dev/null
+++ b/client/assets/resources/sounds/nv/61.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3484fee3-8d13-4858-9aa5-4eaf5f559510",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/7.mp3 b/client/assets/resources/sounds/nv/7.mp3
new file mode 100755
index 0000000..085686e
Binary files /dev/null and b/client/assets/resources/sounds/nv/7.mp3 differ
diff --git a/client/assets/resources/sounds/nv/7.mp3.meta b/client/assets/resources/sounds/nv/7.mp3.meta
new file mode 100755
index 0000000..5b7c392
--- /dev/null
+++ b/client/assets/resources/sounds/nv/7.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "de08319e-2c5e-4643-9b9c-3da6315eee97",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/71.mp3 b/client/assets/resources/sounds/nv/71.mp3
new file mode 100755
index 0000000..6134b3a
Binary files /dev/null and b/client/assets/resources/sounds/nv/71.mp3 differ
diff --git a/client/assets/resources/sounds/nv/71.mp3.meta b/client/assets/resources/sounds/nv/71.mp3.meta
new file mode 100755
index 0000000..d3ae1e5
--- /dev/null
+++ b/client/assets/resources/sounds/nv/71.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "aec3e5d6-af97-4fb9-ac3f-78bc5f919425",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/8.mp3 b/client/assets/resources/sounds/nv/8.mp3
new file mode 100755
index 0000000..3dc2b30
Binary files /dev/null and b/client/assets/resources/sounds/nv/8.mp3 differ
diff --git a/client/assets/resources/sounds/nv/8.mp3.meta b/client/assets/resources/sounds/nv/8.mp3.meta
new file mode 100755
index 0000000..7c5e3e3
--- /dev/null
+++ b/client/assets/resources/sounds/nv/8.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "be329ec2-31be-4910-a8c6-ffd3361c9f59",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/81.mp3 b/client/assets/resources/sounds/nv/81.mp3
new file mode 100755
index 0000000..a52848c
Binary files /dev/null and b/client/assets/resources/sounds/nv/81.mp3 differ
diff --git a/client/assets/resources/sounds/nv/81.mp3.meta b/client/assets/resources/sounds/nv/81.mp3.meta
new file mode 100755
index 0000000..10eaebb
--- /dev/null
+++ b/client/assets/resources/sounds/nv/81.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e99eaed7-5cfc-4a44-9469-4808ce7edca6",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/9.mp3 b/client/assets/resources/sounds/nv/9.mp3
new file mode 100755
index 0000000..bf2e03f
Binary files /dev/null and b/client/assets/resources/sounds/nv/9.mp3 differ
diff --git a/client/assets/resources/sounds/nv/9.mp3.meta b/client/assets/resources/sounds/nv/9.mp3.meta
new file mode 100755
index 0000000..c12553c
--- /dev/null
+++ b/client/assets/resources/sounds/nv/9.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4e416ab2-9204-4d4c-ae0d-1fc7a665a541",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/91.mp3 b/client/assets/resources/sounds/nv/91.mp3
new file mode 100755
index 0000000..6fcc1d9
Binary files /dev/null and b/client/assets/resources/sounds/nv/91.mp3 differ
diff --git a/client/assets/resources/sounds/nv/91.mp3.meta b/client/assets/resources/sounds/nv/91.mp3.meta
new file mode 100755
index 0000000..ff83b9c
--- /dev/null
+++ b/client/assets/resources/sounds/nv/91.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "64cb6e2b-51b8-4834-a908-ba158a4c2803",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/chi.mp3 b/client/assets/resources/sounds/nv/chi.mp3
new file mode 100755
index 0000000..2743a27
Binary files /dev/null and b/client/assets/resources/sounds/nv/chi.mp3 differ
diff --git a/client/assets/resources/sounds/nv/chi.mp3.meta b/client/assets/resources/sounds/nv/chi.mp3.meta
new file mode 100755
index 0000000..8d354e0
--- /dev/null
+++ b/client/assets/resources/sounds/nv/chi.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a92c6a26-e25e-44d5-bdf5-e71dadf6639d",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/gang.mp3 b/client/assets/resources/sounds/nv/gang.mp3
new file mode 100755
index 0000000..62422b9
Binary files /dev/null and b/client/assets/resources/sounds/nv/gang.mp3 differ
diff --git a/client/assets/resources/sounds/nv/gang.mp3.meta b/client/assets/resources/sounds/nv/gang.mp3.meta
new file mode 100755
index 0000000..83028b6
--- /dev/null
+++ b/client/assets/resources/sounds/nv/gang.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "bde088bf-fc4d-4b74-8b0b-3599ee306a36",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/hu.mp3 b/client/assets/resources/sounds/nv/hu.mp3
new file mode 100755
index 0000000..4c224b5
Binary files /dev/null and b/client/assets/resources/sounds/nv/hu.mp3 differ
diff --git a/client/assets/resources/sounds/nv/hu.mp3.meta b/client/assets/resources/sounds/nv/hu.mp3.meta
new file mode 100755
index 0000000..afd1efa
--- /dev/null
+++ b/client/assets/resources/sounds/nv/hu.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ecca0b6a-0bc2-4db8-a7f1-6b195c649b9e",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/nv/peng.mp3 b/client/assets/resources/sounds/nv/peng.mp3
new file mode 100755
index 0000000..d4e6d6a
Binary files /dev/null and b/client/assets/resources/sounds/nv/peng.mp3 differ
diff --git a/client/assets/resources/sounds/nv/peng.mp3.meta b/client/assets/resources/sounds/nv/peng.mp3.meta
new file mode 100755
index 0000000..78259df
--- /dev/null
+++ b/client/assets/resources/sounds/nv/peng.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "41c5f395-3f6e-4ec1-be02-88f99f4e8376",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/rain.mp3 b/client/assets/resources/sounds/rain.mp3
new file mode 100755
index 0000000..114f085
Binary files /dev/null and b/client/assets/resources/sounds/rain.mp3 differ
diff --git a/client/assets/resources/sounds/rain.mp3.meta b/client/assets/resources/sounds/rain.mp3.meta
new file mode 100755
index 0000000..e8a556a
--- /dev/null
+++ b/client/assets/resources/sounds/rain.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "92736375-1111-4844-b612-97f5f47a233c",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/select.mp3 b/client/assets/resources/sounds/select.mp3
new file mode 100755
index 0000000..68994c3
Binary files /dev/null and b/client/assets/resources/sounds/select.mp3 differ
diff --git a/client/assets/resources/sounds/select.mp3.meta b/client/assets/resources/sounds/select.mp3.meta
new file mode 100755
index 0000000..3db6df2
--- /dev/null
+++ b/client/assets/resources/sounds/select.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0ebd449f-102f-4aa2-b56d-703942ef38c8",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/shuffle.mp3 b/client/assets/resources/sounds/shuffle.mp3
new file mode 100755
index 0000000..7998544
Binary files /dev/null and b/client/assets/resources/sounds/shuffle.mp3 differ
diff --git a/client/assets/resources/sounds/shuffle.mp3.meta b/client/assets/resources/sounds/shuffle.mp3.meta
new file mode 100755
index 0000000..70a4547
--- /dev/null
+++ b/client/assets/resources/sounds/shuffle.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "dd3e1879-4f97-44d4-bfca-4eb083547f9b",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/sort.mp3 b/client/assets/resources/sounds/sort.mp3
new file mode 100755
index 0000000..91248a7
Binary files /dev/null and b/client/assets/resources/sounds/sort.mp3 differ
diff --git a/client/assets/resources/sounds/sort.mp3.meta b/client/assets/resources/sounds/sort.mp3.meta
new file mode 100755
index 0000000..1f6faeb
--- /dev/null
+++ b/client/assets/resources/sounds/sort.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "62c609ef-fa1a-4c27-bbb4-622cbe2331f7",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/timeup_alarm.mp3 b/client/assets/resources/sounds/timeup_alarm.mp3
new file mode 100755
index 0000000..ba2f0f5
Binary files /dev/null and b/client/assets/resources/sounds/timeup_alarm.mp3 differ
diff --git a/client/assets/resources/sounds/timeup_alarm.mp3.meta b/client/assets/resources/sounds/timeup_alarm.mp3.meta
new file mode 100755
index 0000000..2641515
--- /dev/null
+++ b/client/assets/resources/sounds/timeup_alarm.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "aa56f9b7-3cd1-44db-ab41-733ad9fcb235",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/ui_click.mp3 b/client/assets/resources/sounds/ui_click.mp3
new file mode 100755
index 0000000..428dbdb
Binary files /dev/null and b/client/assets/resources/sounds/ui_click.mp3 differ
diff --git a/client/assets/resources/sounds/ui_click.mp3.meta b/client/assets/resources/sounds/ui_click.mp3.meta
new file mode 100755
index 0000000..e1cd031
--- /dev/null
+++ b/client/assets/resources/sounds/ui_click.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2625c55c-353c-4953-82b7-13472755e8ca",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/sounds/win.mp3 b/client/assets/resources/sounds/win.mp3
new file mode 100755
index 0000000..af12a29
Binary files /dev/null and b/client/assets/resources/sounds/win.mp3 differ
diff --git a/client/assets/resources/sounds/win.mp3.meta b/client/assets/resources/sounds/win.mp3.meta
new file mode 100755
index 0000000..2320053
--- /dev/null
+++ b/client/assets/resources/sounds/win.mp3.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "343161f7-49fd-4509-8f56-e5fab266f275",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures.meta b/client/assets/resources/textures.meta
new file mode 100755
index 0000000..6ba347d
--- /dev/null
+++ b/client/assets/resources/textures.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "700defc7-ee0a-4150-a166-60291a50e358",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ.meta b/client/assets/resources/textures/MJ.meta
new file mode 100755
index 0000000..d4197b1
--- /dev/null
+++ b/client/assets/resources/textures/MJ.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "b3122745-ee39-4358-83d0-93bfa03e06bd",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/bottom.meta b/client/assets/resources/textures/MJ/bottom.meta
new file mode 100755
index 0000000..f8a89e6
--- /dev/null
+++ b/client/assets/resources/textures/MJ/bottom.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "c78eb4b1-033c-41b0-b0c4-ff36c198b6dd",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/bottom/B_bamboo_1.png b/client/assets/resources/textures/MJ/bottom/B_bamboo_1.png
new file mode 100755
index 0000000..0306bb0
Binary files /dev/null and b/client/assets/resources/textures/MJ/bottom/B_bamboo_1.png differ
diff --git a/client/assets/resources/textures/MJ/bottom/B_bamboo_1.png.meta b/client/assets/resources/textures/MJ/bottom/B_bamboo_1.png.meta
new file mode 100755
index 0000000..5144868
--- /dev/null
+++ b/client/assets/resources/textures/MJ/bottom/B_bamboo_1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4a171fbc-4d51-48b9-be4a-face1c24b1ca",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "B_bamboo_1": {
+ "ver": "1.0.3",
+ "uuid": "8532d2cf-5b76-4801-a64f-cf9e12a138f7",
+ "rawTextureUuid": "4a171fbc-4d51-48b9-be4a-face1c24b1ca",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/bottom/B_bamboo_5.png b/client/assets/resources/textures/MJ/bottom/B_bamboo_5.png
new file mode 100755
index 0000000..e4958b2
Binary files /dev/null and b/client/assets/resources/textures/MJ/bottom/B_bamboo_5.png differ
diff --git a/client/assets/resources/textures/MJ/bottom/B_bamboo_5.png.meta b/client/assets/resources/textures/MJ/bottom/B_bamboo_5.png.meta
new file mode 100755
index 0000000..4203db7
--- /dev/null
+++ b/client/assets/resources/textures/MJ/bottom/B_bamboo_5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "30f64244-e7a1-4ec7-a516-e23dd3455aff",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "B_bamboo_5": {
+ "ver": "1.0.3",
+ "uuid": "e52aa553-af72-440b-b7a5-fc46ce134e8b",
+ "rawTextureUuid": "30f64244-e7a1-4ec7-a516-e23dd3455aff",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/bottom/Z_bottom.plist b/client/assets/resources/textures/MJ/bottom/Z_bottom.plist
new file mode 100755
index 0000000..26ab1e0
--- /dev/null
+++ b/client/assets/resources/textures/MJ/bottom/Z_bottom.plist
@@ -0,0 +1,445 @@
+
+
+
+
+ frames
+
+ B_autumn.png
+
+ frame
+ {{0,0},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_1.png
+
+ frame
+ {{0,84},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_2.png
+
+ frame
+ {{0,168},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_3.png
+
+ frame
+ {{0,252},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_4.png
+
+ frame
+ {{0,336},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_5.png
+
+ frame
+ {{0,420},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_6.png
+
+ frame
+ {{55,0},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_7.png
+
+ frame
+ {{55,84},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_8.png
+
+ frame
+ {{55,168},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_bamboo_9.png
+
+ frame
+ {{55,252},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_1.png
+
+ frame
+ {{55,336},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_2.png
+
+ frame
+ {{55,420},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_3.png
+
+ frame
+ {{110,0},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_4.png
+
+ frame
+ {{110,84},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_5.png
+
+ frame
+ {{110,168},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_6.png
+
+ frame
+ {{110,252},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_7.png
+
+ frame
+ {{110,336},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_8.png
+
+ frame
+ {{110,420},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_character_9.png
+
+ frame
+ {{165,0},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_1.png
+
+ frame
+ {{165,84},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_2.png
+
+ frame
+ {{165,168},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_3.png
+
+ frame
+ {{165,252},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_4.png
+
+ frame
+ {{165,336},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_5.png
+
+ frame
+ {{165,420},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_6.png
+
+ frame
+ {{220,0},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_7.png
+
+ frame
+ {{220,84},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_8.png
+
+ frame
+ {{220,168},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_dot_9.png
+
+ frame
+ {{220,252},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_green.png
+
+ frame
+ {{220,336},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_plum.png
+
+ frame
+ {{220,420},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_red.png
+
+ frame
+ {{275,0},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_white.png
+
+ frame
+ {{275,84},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_wind_east.png
+
+ frame
+ {{275,168},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_wind_north.png
+
+ frame
+ {{275,252},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_wind_south.png
+
+ frame
+ {{275,336},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_wind_west.png
+
+ frame
+ {{275,420},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ B_winter.png
+
+ frame
+ {{330,0},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+ e_mj_b_up.png
+
+ frame
+ {{330,84},{55,84}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {55,84}
+
+
+ metadata
+
+ format
+ 2
+ textureFileName
+ Z_bottom.png
+ realTextureFileName
+ Z_bottom.png
+ size
+ {512,512}
+
+ texture
+
+ width
+ 512
+ height
+ 512
+
+
+
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/bottom/Z_bottom.plist.meta b/client/assets/resources/textures/MJ/bottom/Z_bottom.plist.meta
new file mode 100755
index 0000000..134bb8a
--- /dev/null
+++ b/client/assets/resources/textures/MJ/bottom/Z_bottom.plist.meta
@@ -0,0 +1,848 @@
+{
+ "ver": "1.2.4",
+ "uuid": "c80abbb2-c412-4736-96c6-734930fa9dd9",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "size": {
+ "width": 512,
+ "height": 512
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "B_autumn.png": {
+ "ver": "1.0.3",
+ "uuid": "5ea4cbbf-d3ad-469d-8488-e3b5c9e14d66",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_1.png": {
+ "ver": "1.0.3",
+ "uuid": "2a712174-365d-40a5-8c39-85860c809e56",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 84,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_2.png": {
+ "ver": "1.0.3",
+ "uuid": "3a4bc43a-320e-496b-84e3-9cd7b192cafa",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 168,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_3.png": {
+ "ver": "1.0.3",
+ "uuid": "cead5d37-33b1-4d99-a054-e64168a887f6",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 252,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_4.png": {
+ "ver": "1.0.3",
+ "uuid": "4d42ddcf-8e6c-4396-bf69-26dd2b288e2b",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 336,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_5.png": {
+ "ver": "1.0.3",
+ "uuid": "5ebc8906-0653-4bf2-9325-d4368a3d46db",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 420,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_6.png": {
+ "ver": "1.0.3",
+ "uuid": "001488ed-61c9-40a1-a7e0-9152dfe8df0e",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 55,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_7.png": {
+ "ver": "1.0.3",
+ "uuid": "836d2a01-b443-4b1a-92ca-642a907122fb",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 55,
+ "trimY": 84,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_8.png": {
+ "ver": "1.0.3",
+ "uuid": "ef0b2857-5785-46e2-b02c-63f7171098ab",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 55,
+ "trimY": 168,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_bamboo_9.png": {
+ "ver": "1.0.3",
+ "uuid": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 55,
+ "trimY": 252,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_1.png": {
+ "ver": "1.0.3",
+ "uuid": "89250d26-0fc2-447e-bf18-58c7af624cb7",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 55,
+ "trimY": 336,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_2.png": {
+ "ver": "1.0.3",
+ "uuid": "ace46e09-37ab-4607-9282-99981f565cef",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 55,
+ "trimY": 420,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_3.png": {
+ "ver": "1.0.3",
+ "uuid": "96934e02-32aa-4e99-9cbc-de01b7dff81b",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 110,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_4.png": {
+ "ver": "1.0.3",
+ "uuid": "08aa8adc-4f84-4b32-bc75-bb402d5b134b",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 110,
+ "trimY": 84,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_5.png": {
+ "ver": "1.0.3",
+ "uuid": "e37d1ee9-ac92-47c6-a2a7-66a3c524f7df",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 110,
+ "trimY": 168,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_6.png": {
+ "ver": "1.0.3",
+ "uuid": "1aecfa70-0b27-44ba-b6c5-65efb20c5948",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 110,
+ "trimY": 252,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_7.png": {
+ "ver": "1.0.3",
+ "uuid": "4226dac1-b3ec-43e0-bd22-9fe16f8c4de7",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 110,
+ "trimY": 336,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_8.png": {
+ "ver": "1.0.3",
+ "uuid": "f824f614-8f4b-4f99-b85d-4845c8039956",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 110,
+ "trimY": 420,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_character_9.png": {
+ "ver": "1.0.3",
+ "uuid": "ff112882-d1ec-4ee1-92ad-c2778e6b14e4",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 165,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_1.png": {
+ "ver": "1.0.3",
+ "uuid": "815524ef-1c74-45c5-9b08-27960b851e85",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 165,
+ "trimY": 84,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_2.png": {
+ "ver": "1.0.3",
+ "uuid": "d98016fb-e005-46b8-b1f2-b7934b265254",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 165,
+ "trimY": 168,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_3.png": {
+ "ver": "1.0.3",
+ "uuid": "8e0d9625-3f6f-46a6-861b-b5301050174c",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 165,
+ "trimY": 252,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_4.png": {
+ "ver": "1.0.3",
+ "uuid": "b191c7fe-e16c-496a-94df-6cfd5865f8f2",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 165,
+ "trimY": 336,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_5.png": {
+ "ver": "1.0.3",
+ "uuid": "be329022-a763-47b1-a16e-55e317f4464a",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 165,
+ "trimY": 420,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_6.png": {
+ "ver": "1.0.3",
+ "uuid": "20e91468-a3cc-4bcb-b150-8cc19161b1ba",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 220,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_7.png": {
+ "ver": "1.0.3",
+ "uuid": "8a7516b1-6171-4406-8413-297aa4123326",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 220,
+ "trimY": 84,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_8.png": {
+ "ver": "1.0.3",
+ "uuid": "e015c7f1-cd70-4c94-b381-5f910532e4cc",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 220,
+ "trimY": 168,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_dot_9.png": {
+ "ver": "1.0.3",
+ "uuid": "ba318dd9-5759-42a3-9d92-dd5765808651",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 220,
+ "trimY": 252,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_green.png": {
+ "ver": "1.0.3",
+ "uuid": "6ed16926-a1df-40e2-b4c0-b9c2bf4a2aeb",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 220,
+ "trimY": 336,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_plum.png": {
+ "ver": "1.0.3",
+ "uuid": "1cbd6b1a-6cd4-4f59-a49f-53005d224e95",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 220,
+ "trimY": 420,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_red.png": {
+ "ver": "1.0.3",
+ "uuid": "8a1ef75b-231d-4577-aad3-4ccce7a1cd95",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 275,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_white.png": {
+ "ver": "1.0.3",
+ "uuid": "d0dfc100-c4be-45de-8df6-1c51de881c06",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 275,
+ "trimY": 84,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_wind_east.png": {
+ "ver": "1.0.3",
+ "uuid": "4c4a9d3c-37b6-4aa6-b692-8e04c6818225",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 275,
+ "trimY": 168,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_wind_north.png": {
+ "ver": "1.0.3",
+ "uuid": "a8be677d-5057-42f3-9c45-ef5b5595b5f5",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 275,
+ "trimY": 252,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_wind_south.png": {
+ "ver": "1.0.3",
+ "uuid": "9639ea2b-ad15-48ac-9335-68c6e2f45330",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 275,
+ "trimY": 336,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_wind_west.png": {
+ "ver": "1.0.3",
+ "uuid": "5ab46b86-6642-499f-89ea-b70b7ce6752e",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 275,
+ "trimY": 420,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "B_winter.png": {
+ "ver": "1.0.3",
+ "uuid": "58189fa6-582c-4bc1-8818-d64112bed4e1",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 330,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_b_up.png": {
+ "ver": "1.0.3",
+ "uuid": "4424c05a-7f85-4e5f-8c8c-a8102270bbf1",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 330,
+ "trimY": 84,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/bottom/Z_bottom.png b/client/assets/resources/textures/MJ/bottom/Z_bottom.png
new file mode 100755
index 0000000..6751519
Binary files /dev/null and b/client/assets/resources/textures/MJ/bottom/Z_bottom.png differ
diff --git a/client/assets/resources/textures/MJ/bottom/Z_bottom.png.meta b/client/assets/resources/textures/MJ/bottom/Z_bottom.png.meta
new file mode 100755
index 0000000..288890e
--- /dev/null
+++ b/client/assets/resources/textures/MJ/bottom/Z_bottom.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_bottom": {
+ "ver": "1.0.3",
+ "uuid": "cceeb278-53dd-49a2-ad52-9aa7a73203da",
+ "rawTextureUuid": "11e1e0e7-8f29-4f20-b8c3-63a1df760681",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -63.5,
+ "offsetY": 4,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 385,
+ "height": 504,
+ "rawWidth": 512,
+ "rawHeight": 512,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/bottom/e_mj_b_up.png b/client/assets/resources/textures/MJ/bottom/e_mj_b_up.png
new file mode 100755
index 0000000..f01ba36
Binary files /dev/null and b/client/assets/resources/textures/MJ/bottom/e_mj_b_up.png differ
diff --git a/client/assets/resources/textures/MJ/bottom/e_mj_b_up.png.meta b/client/assets/resources/textures/MJ/bottom/e_mj_b_up.png.meta
new file mode 100755
index 0000000..ddf07aa
--- /dev/null
+++ b/client/assets/resources/textures/MJ/bottom/e_mj_b_up.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8affa554-e05c-4610-8ff3-a06d4e7e456b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "e_mj_b_up": {
+ "ver": "1.0.3",
+ "uuid": "3fa90332-39d7-4ef0-aa1e-289ba203421e",
+ "rawTextureUuid": "8affa554-e05c-4610-8ff3-a06d4e7e456b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 55,
+ "height": 84,
+ "rawWidth": 55,
+ "rawHeight": 84,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/left.meta b/client/assets/resources/textures/MJ/left.meta
new file mode 100755
index 0000000..17dba7c
--- /dev/null
+++ b/client/assets/resources/textures/MJ/left.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "8a5afedd-b510-4212-9834-6165725e08c9",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/left/Z_left.plist b/client/assets/resources/textures/MJ/left/Z_left.plist
new file mode 100755
index 0000000..79aef2c
--- /dev/null
+++ b/client/assets/resources/textures/MJ/left/Z_left.plist
@@ -0,0 +1,568 @@
+
+
+
+
+ frames
+
+ L_autumn.png
+
+ frame
+ {{2,461},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo.png
+
+ frame
+ {{2,410},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_1.png
+
+ frame
+ {{2,359},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_2.png
+
+ frame
+ {{206,308},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_3.png
+
+ frame
+ {{155,296},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_4.png
+
+ frame
+ {{104,296},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_5.png
+
+ frame
+ {{53,296},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_6.png
+
+ frame
+ {{2,296},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_7.png
+
+ frame
+ {{206,257},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_8.png
+
+ frame
+ {{155,254},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_bamboo_9.png
+
+ frame
+ {{104,254},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_1.png
+
+ frame
+ {{53,254},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_2.png
+
+ frame
+ {{2,254},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_3.png
+
+ frame
+ {{155,212},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_4.png
+
+ frame
+ {{104,212},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_5.png
+
+ frame
+ {{53,212},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_6.png
+
+ frame
+ {{2,212},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_7.png
+
+ frame
+ {{206,206},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_8.png
+
+ frame
+ {{155,170},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_character_9.png
+
+ frame
+ {{104,170},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_chrysanthemum.png
+
+ frame
+ {{53,170},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_1.png
+
+ frame
+ {{2,170},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_2.png
+
+ frame
+ {{206,155},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_3.png
+
+ frame
+ {{155,128},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_4.png
+
+ frame
+ {{104,128},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_5.png
+
+ frame
+ {{53,128},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_6.png
+
+ frame
+ {{2,128},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_7.png
+
+ frame
+ {{206,104},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_8.png
+
+ frame
+ {{155,86},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_dot_9.png
+
+ frame
+ {{104,86},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_green.png
+
+ frame
+ {{53,86},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_orchid.png
+
+ frame
+ {{2,86},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_plum.png
+
+ frame
+ {{206,53},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_red.png
+
+ frame
+ {{155,44},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_spring.png
+
+ frame
+ {{104,44},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_summer.png
+
+ frame
+ {{53,44},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_white.png
+
+ frame
+ {{2,44},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_wind_east.png
+
+ frame
+ {{206,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_wind_north.png
+
+ frame
+ {{155,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_wind_south.png
+
+ frame
+ {{104,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_wind_west.png
+
+ frame
+ {{53,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ L_winter.png
+
+ frame
+ {{2,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ Z_left.png
+ size
+ {256,512}
+ smartupdate
+ $TexturePacker:SmartUpdate:b9de79ca1fea8e470da797795d6ab07e:1/1$
+ textureFileName
+ Z_left.png
+
+
+
diff --git a/client/assets/resources/textures/MJ/left/Z_left.plist.meta b/client/assets/resources/textures/MJ/left/Z_left.plist.meta
new file mode 100755
index 0000000..8f3cc02
--- /dev/null
+++ b/client/assets/resources/textures/MJ/left/Z_left.plist.meta
@@ -0,0 +1,936 @@
+{
+ "ver": "1.2.4",
+ "uuid": "dc0f12a0-949b-450f-9d67-9f1054b115f8",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "size": {
+ "width": 256,
+ "height": 512
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "L_autumn.png": {
+ "ver": "1.0.3",
+ "uuid": "5a8ba0b6-f0d2-40c8-a712-8a42f323c602",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 461,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo.png": {
+ "ver": "1.0.3",
+ "uuid": "d1ea8ac0-7e17-4924-899e-1b2bd520fca6",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 410,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_1.png": {
+ "ver": "1.0.3",
+ "uuid": "87b96191-fa48-423f-b671-8b942f81b8b0",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 359,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_2.png": {
+ "ver": "1.0.3",
+ "uuid": "5703d1da-4911-4396-a82d-b6b5f0f7eab6",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 308,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_3.png": {
+ "ver": "1.0.3",
+ "uuid": "1dd2be1a-f5cb-4386-a063-625c0acd8eb6",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 296,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_4.png": {
+ "ver": "1.0.3",
+ "uuid": "e1ffb160-a2ba-4b85-9133-0616b4de100c",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 296,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_5.png": {
+ "ver": "1.0.3",
+ "uuid": "d39e5304-2526-469c-820e-9c156171542d",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 296,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_6.png": {
+ "ver": "1.0.3",
+ "uuid": "ac8be0c2-1c7f-4675-b462-dd8f52283017",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 296,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_7.png": {
+ "ver": "1.0.3",
+ "uuid": "11ac894c-3582-4768-bc25-80de5f46a0cd",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 257,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_8.png": {
+ "ver": "1.0.3",
+ "uuid": "866ccc82-41fe-4046-9c1e-4466c7933b0c",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 254,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_bamboo_9.png": {
+ "ver": "1.0.3",
+ "uuid": "daf4f6ca-498c-4dd4-91aa-89d63269eb85",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 254,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_1.png": {
+ "ver": "1.0.3",
+ "uuid": "f2edef3e-a500-4585-b39d-8dae2b4cc531",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 254,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_2.png": {
+ "ver": "1.0.3",
+ "uuid": "4c1e3125-a324-404a-a515-639653fdeb54",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 254,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_3.png": {
+ "ver": "1.0.3",
+ "uuid": "d9eb0394-4dde-4a94-a36e-040e1b6cadfa",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 212,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_4.png": {
+ "ver": "1.0.3",
+ "uuid": "5fae1714-f8c0-4683-bef2-8ad3dc5d96a8",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 212,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_5.png": {
+ "ver": "1.0.3",
+ "uuid": "37baaa16-b7be-4e0e-8c38-d471fd2bf334",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 212,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_6.png": {
+ "ver": "1.0.3",
+ "uuid": "014e2b9c-aece-45ab-a588-ec19c669546b",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 212,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_7.png": {
+ "ver": "1.0.3",
+ "uuid": "b23dea61-eec0-4d8b-8397-5148277e21ba",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 206,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_8.png": {
+ "ver": "1.0.3",
+ "uuid": "c682722e-501f-491f-83b9-6ac4cf7101e4",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 170,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_character_9.png": {
+ "ver": "1.0.3",
+ "uuid": "026b4040-ebfd-487c-a7d4-0806ea5820e1",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 170,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_chrysanthemum.png": {
+ "ver": "1.0.3",
+ "uuid": "02070caa-b061-47a3-b8fe-8be4bb252b3a",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 170,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_1.png": {
+ "ver": "1.0.3",
+ "uuid": "8b77d34d-496d-4e36-aa08-27096567bf0f",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 170,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_2.png": {
+ "ver": "1.0.3",
+ "uuid": "5322e3e8-b47b-408a-9bf0-23ec6fc1936c",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 155,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_3.png": {
+ "ver": "1.0.3",
+ "uuid": "fab8a700-71e3-415c-9af5-27398c333981",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 128,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_4.png": {
+ "ver": "1.0.3",
+ "uuid": "2f63db7a-573e-4821-89b2-35f72edf67f0",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 128,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_5.png": {
+ "ver": "1.0.3",
+ "uuid": "06357dfd-5b12-40cd-b94c-cfa0e20d2e72",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 128,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_6.png": {
+ "ver": "1.0.3",
+ "uuid": "5c27ea1c-ead5-4b7a-b7fc-60ed40a3cd94",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 128,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_7.png": {
+ "ver": "1.0.3",
+ "uuid": "329a4adb-a9ca-4d95-9e9b-85475a1d74ab",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 104,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_8.png": {
+ "ver": "1.0.3",
+ "uuid": "6cfad644-dfdd-40a9-b947-5644eb2906b4",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 86,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_dot_9.png": {
+ "ver": "1.0.3",
+ "uuid": "3fa8e33b-2a70-4bfb-8693-b1d1c6fbef6a",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 86,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_green.png": {
+ "ver": "1.0.3",
+ "uuid": "1d8873d5-1f11-43be-b233-8047bb53fa5f",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 86,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_orchid.png": {
+ "ver": "1.0.3",
+ "uuid": "b23a8d60-d314-40c1-9abb-424a335ddc26",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 86,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_plum.png": {
+ "ver": "1.0.3",
+ "uuid": "2db7b3e5-2efd-409b-b434-17bd3c764929",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 53,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_red.png": {
+ "ver": "1.0.3",
+ "uuid": "8c082abd-20ad-4fb2-b1e2-4b99e943da66",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 44,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_spring.png": {
+ "ver": "1.0.3",
+ "uuid": "c87018b3-f070-4296-89a1-b381ed5cf759",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 44,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_summer.png": {
+ "ver": "1.0.3",
+ "uuid": "fd1eb247-5106-4745-b234-94b01f2badb3",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 44,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_white.png": {
+ "ver": "1.0.3",
+ "uuid": "0e08d727-5083-4210-872c-fd5d2faddd3b",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 44,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_wind_east.png": {
+ "ver": "1.0.3",
+ "uuid": "d4ed868f-c4a4-4a75-9ae8-e8c005d9fa10",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_wind_north.png": {
+ "ver": "1.0.3",
+ "uuid": "d10d3fb4-7a2c-4698-96e9-77c8914eb137",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_wind_south.png": {
+ "ver": "1.0.3",
+ "uuid": "0b79f9c7-27bc-4cbe-b226-5cae256501c3",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_wind_west.png": {
+ "ver": "1.0.3",
+ "uuid": "6927a755-077d-4825-a595-3c4c0998d29d",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "L_winter.png": {
+ "ver": "1.0.3",
+ "uuid": "bbb5fe8c-0f31-41f3-8774-635da092fbff",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/left/Z_left.png b/client/assets/resources/textures/MJ/left/Z_left.png
new file mode 100755
index 0000000..1851e41
Binary files /dev/null and b/client/assets/resources/textures/MJ/left/Z_left.png differ
diff --git a/client/assets/resources/textures/MJ/left/Z_left.png.meta b/client/assets/resources/textures/MJ/left/Z_left.png.meta
new file mode 100755
index 0000000..ff15600
--- /dev/null
+++ b/client/assets/resources/textures/MJ/left/Z_left.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_left": {
+ "ver": "1.0.3",
+ "uuid": "d7003345-08c2-4992-8b68-31cffc31b677",
+ "rawTextureUuid": "cd29c45b-8029-40d1-82c6-592c23b7d3cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -4,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 244,
+ "height": 508,
+ "rawWidth": 256,
+ "rawHeight": 512,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/mjEmpty.plist b/client/assets/resources/textures/MJ/mjEmpty.plist
new file mode 100755
index 0000000..4f0030b
--- /dev/null
+++ b/client/assets/resources/textures/MJ/mjEmpty.plist
@@ -0,0 +1,139 @@
+
+
+
+
+ frames
+
+ e_mj_b_bottom.png
+
+ frame
+ {{87,63},{38,59}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{38,59}}
+ sourceSize
+ {38,59}
+
+ e_mj_b_left.png
+
+ frame
+ {{86,181},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ e_mj_b_right.png
+
+ frame
+ {{2,129},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ e_mj_b_up.png
+
+ frame
+ {{87,2},{38,59}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{38,59}}
+ sourceSize
+ {38,59}
+
+ e_mj_left.png
+
+ frame
+ {{28,190},{24,60}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{24,60}}
+ sourceSize
+ {24,60}
+
+ e_mj_right.png
+
+ frame
+ {{2,181},{24,60}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{24,60}}
+ sourceSize
+ {24,60}
+
+ e_mj_up.png
+
+ frame
+ {{44,129},{40,59}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{40,59}}
+ sourceSize
+ {40,59}
+
+ e_mj_v.png
+
+ frame
+ {{87,124},{36,55}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{36,55}}
+ sourceSize
+ {36,55}
+
+ e_mj_v_1.png
+
+ frame
+ {{2,2},{83,125}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{83,125}}
+ sourceSize
+ {83,125}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ mjEmpty.png
+ size
+ {128,256}
+ smartupdate
+ $TexturePacker:SmartUpdate:b073959926c476be73d0646c81785453:1/1$
+ textureFileName
+ mjEmpty.png
+
+
+
diff --git a/client/assets/resources/textures/MJ/mjEmpty.plist.meta b/client/assets/resources/textures/MJ/mjEmpty.plist.meta
new file mode 100755
index 0000000..f39dd92
--- /dev/null
+++ b/client/assets/resources/textures/MJ/mjEmpty.plist.meta
@@ -0,0 +1,210 @@
+{
+ "ver": "1.2.4",
+ "uuid": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "size": {
+ "width": 128,
+ "height": 256
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "e_mj_b_bottom.png": {
+ "ver": "1.0.3",
+ "uuid": "9b326c9e-2120-4262-9131-04cc8d824e24",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 87,
+ "trimY": 63,
+ "width": 38,
+ "height": 59,
+ "rawWidth": 38,
+ "rawHeight": 59,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_b_left.png": {
+ "ver": "1.0.3",
+ "uuid": "b9abadb1-b872-4b4e-b997-81d092746c94",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 86,
+ "trimY": 181,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_b_right.png": {
+ "ver": "1.0.3",
+ "uuid": "5fcb8009-ae70-4dcd-aea5-079bc448ac55",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 129,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_b_up.png": {
+ "ver": "1.0.3",
+ "uuid": "9289e00c-6c8c-4489-b57d-ee322cacc7d8",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 87,
+ "trimY": 2,
+ "width": 38,
+ "height": 59,
+ "rawWidth": 38,
+ "rawHeight": 59,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_left.png": {
+ "ver": "1.0.3",
+ "uuid": "bac6f5f0-d06b-41be-8122-b47ea55c8788",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 28,
+ "trimY": 190,
+ "width": 24,
+ "height": 60,
+ "rawWidth": 24,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_right.png": {
+ "ver": "1.0.3",
+ "uuid": "37481f79-c4df-464a-bf6c-a75486171fd6",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 181,
+ "width": 24,
+ "height": 60,
+ "rawWidth": 24,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_up.png": {
+ "ver": "1.0.3",
+ "uuid": "fa43d352-05ef-40df-87a8-60ddfc6532d8",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 44,
+ "trimY": 129,
+ "width": 40,
+ "height": 59,
+ "rawWidth": 40,
+ "rawHeight": 59,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_v.png": {
+ "ver": "1.0.3",
+ "uuid": "0b79c326-c0e2-4d0f-bddb-3945ee7f73cd",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 87,
+ "trimY": 124,
+ "width": 36,
+ "height": 55,
+ "rawWidth": 36,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "e_mj_v_1.png": {
+ "ver": "1.0.3",
+ "uuid": "282e64c4-424f-4d65-b265-430ae59d9fa5",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 83,
+ "height": 125,
+ "rawWidth": 83,
+ "rawHeight": 125,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/mjEmpty.png b/client/assets/resources/textures/MJ/mjEmpty.png
new file mode 100755
index 0000000..e35e610
Binary files /dev/null and b/client/assets/resources/textures/MJ/mjEmpty.png differ
diff --git a/client/assets/resources/textures/MJ/mjEmpty.png.meta b/client/assets/resources/textures/MJ/mjEmpty.png.meta
new file mode 100755
index 0000000..cc51632
--- /dev/null
+++ b/client/assets/resources/textures/MJ/mjEmpty.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "mjEmpty": {
+ "ver": "1.0.3",
+ "uuid": "07b19e0a-b505-4d93-a200-e5edc66c99b3",
+ "rawTextureUuid": "347575c5-fc00-4b99-9cca-1c89f8e39415",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 2,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 124,
+ "height": 248,
+ "rawWidth": 128,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/my.meta b/client/assets/resources/textures/MJ/my.meta
new file mode 100755
index 0000000..e912a8c
--- /dev/null
+++ b/client/assets/resources/textures/MJ/my.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "c80b7e7a-e243-44d6-9fde-f78bef49e696",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/my/M_character_3.png b/client/assets/resources/textures/MJ/my/M_character_3.png
new file mode 100755
index 0000000..9b5b975
Binary files /dev/null and b/client/assets/resources/textures/MJ/my/M_character_3.png differ
diff --git a/client/assets/resources/textures/MJ/my/M_character_3.png.meta b/client/assets/resources/textures/MJ/my/M_character_3.png.meta
new file mode 100755
index 0000000..92de352
--- /dev/null
+++ b/client/assets/resources/textures/MJ/my/M_character_3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "26069576-2594-45a0-a28a-693ee5471312",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "M_character_3": {
+ "ver": "1.0.3",
+ "uuid": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9",
+ "rawTextureUuid": "26069576-2594-45a0-a28a-693ee5471312",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/my/Z_my.plist b/client/assets/resources/textures/MJ/my/Z_my.plist
new file mode 100755
index 0000000..1fcf8e3
--- /dev/null
+++ b/client/assets/resources/textures/MJ/my/Z_my.plist
@@ -0,0 +1,568 @@
+
+
+
+
+ frames
+
+ M_autumn.png
+
+ frame
+ {{79,886},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo.png
+
+ frame
+ {{79,771},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_1.png
+
+ frame
+ {{424,656},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_2.png
+
+ frame
+ {{309,618},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_3.png
+
+ frame
+ {{194,618},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_4.png
+
+ frame
+ {{79,618},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_5.png
+
+ frame
+ {{424,541},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_6.png
+
+ frame
+ {{309,541},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_7.png
+
+ frame
+ {{194,541},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_8.png
+
+ frame
+ {{79,541},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_bamboo_9.png
+
+ frame
+ {{2,886},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_1.png
+
+ frame
+ {{2,771},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_2.png
+
+ frame
+ {{2,656},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_3.png
+
+ frame
+ {{2,541},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_4.png
+
+ frame
+ {{347,464},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_5.png
+
+ frame
+ {{232,464},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_6.png
+
+ frame
+ {{117,464},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_7.png
+
+ frame
+ {{2,464},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_8.png
+
+ frame
+ {{347,387},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_character_9.png
+
+ frame
+ {{232,387},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_chrysanthemum.png
+
+ frame
+ {{117,387},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_1.png
+
+ frame
+ {{2,387},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_2.png
+
+ frame
+ {{347,310},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_3.png
+
+ frame
+ {{232,310},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_4.png
+
+ frame
+ {{117,310},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_5.png
+
+ frame
+ {{2,310},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_6.png
+
+ frame
+ {{347,233},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_7.png
+
+ frame
+ {{232,233},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_8.png
+
+ frame
+ {{117,233},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_dot_9.png
+
+ frame
+ {{2,233},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_green.png
+
+ frame
+ {{347,156},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_orchid.png
+
+ frame
+ {{232,156},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_plum.png
+
+ frame
+ {{117,156},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_red.png
+
+ frame
+ {{2,156},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_spring.png
+
+ frame
+ {{347,79},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_summer.png
+
+ frame
+ {{232,79},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_white.png
+
+ frame
+ {{117,79},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_wind_east.png
+
+ frame
+ {{2,79},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_wind_north.png
+
+ frame
+ {{347,2},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_wind_south.png
+
+ frame
+ {{232,2},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_wind_west.png
+
+ frame
+ {{117,2},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+ M_winter.png
+
+ frame
+ {{2,2},{75,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,113}}
+ sourceSize
+ {75,113}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ Z_my.png
+ size
+ {512,1024}
+ smartupdate
+ $TexturePacker:SmartUpdate:f7ef80278e5ae8681955b79d8223d113:1/1$
+ textureFileName
+ Z_my.png
+
+
+
diff --git a/client/assets/resources/textures/MJ/my/Z_my.plist.meta b/client/assets/resources/textures/MJ/my/Z_my.plist.meta
new file mode 100755
index 0000000..aa8ffa2
--- /dev/null
+++ b/client/assets/resources/textures/MJ/my/Z_my.plist.meta
@@ -0,0 +1,936 @@
+{
+ "ver": "1.2.4",
+ "uuid": "ab2500fa-9ff8-4489-a1c7-5febd50136b7",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "size": {
+ "width": 512,
+ "height": 1024
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "M_autumn.png": {
+ "ver": "1.0.3",
+ "uuid": "b2bde301-3bb6-4d07-a5b0-99cafcbec717",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 79,
+ "trimY": 886,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo.png": {
+ "ver": "1.0.3",
+ "uuid": "8f63fcfb-d714-44db-b840-2cde17648738",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 79,
+ "trimY": 771,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_1.png": {
+ "ver": "1.0.3",
+ "uuid": "bb5e640f-7f9f-48c5-8695-deb1e57f0a91",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 424,
+ "trimY": 656,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_2.png": {
+ "ver": "1.0.3",
+ "uuid": "eda9a42a-6b21-4792-bcde-1916f1f76d2c",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 309,
+ "trimY": 618,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_3.png": {
+ "ver": "1.0.3",
+ "uuid": "dbe2b062-0b7c-424c-b928-84658f4324e4",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 194,
+ "trimY": 618,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_4.png": {
+ "ver": "1.0.3",
+ "uuid": "8350eb62-c416-4e8a-bb91-30762b045da6",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 79,
+ "trimY": 618,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_5.png": {
+ "ver": "1.0.3",
+ "uuid": "fcb826b8-dcca-4795-b94d-ffea6eb25350",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 424,
+ "trimY": 541,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_6.png": {
+ "ver": "1.0.3",
+ "uuid": "6120fc28-be94-496c-9a0b-e636a54ef049",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 309,
+ "trimY": 541,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_7.png": {
+ "ver": "1.0.3",
+ "uuid": "1a96991d-0fec-46e8-a593-768de4e1d105",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 194,
+ "trimY": 541,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_8.png": {
+ "ver": "1.0.3",
+ "uuid": "360eb57b-9704-40f6-9284-c2593ebbc324",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 79,
+ "trimY": 541,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_bamboo_9.png": {
+ "ver": "1.0.3",
+ "uuid": "e1b15a33-b97d-4e1a-b851-6fd562170671",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 886,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_1.png": {
+ "ver": "1.0.3",
+ "uuid": "b0ba2ebe-a39f-473f-8de1-4b49c8690940",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 771,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_2.png": {
+ "ver": "1.0.3",
+ "uuid": "8ccc7c83-6ae1-4396-b287-d7cdf5dd87cc",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 656,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_3.png": {
+ "ver": "1.0.3",
+ "uuid": "2c9aa949-8b8e-4dc3-a42e-88939ee2e84d",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 541,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_4.png": {
+ "ver": "1.0.3",
+ "uuid": "59409a24-303b-4212-b2c3-d3ae09c28d7f",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 347,
+ "trimY": 464,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_5.png": {
+ "ver": "1.0.3",
+ "uuid": "fbcbc31f-1c06-473c-bbc1-0d39efdd7445",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 232,
+ "trimY": 464,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_6.png": {
+ "ver": "1.0.3",
+ "uuid": "af1c4afa-6fe9-433e-a9eb-5fb2e7086fd6",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 117,
+ "trimY": 464,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_7.png": {
+ "ver": "1.0.3",
+ "uuid": "8976316c-cae9-43b9-8fa0-36532ccced65",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 464,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_8.png": {
+ "ver": "1.0.3",
+ "uuid": "0e1a1779-cd6d-466b-880c-fd89275274fa",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 347,
+ "trimY": 387,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_character_9.png": {
+ "ver": "1.0.3",
+ "uuid": "516faa4e-cd1e-4501-b5e3-6f83650549c4",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 232,
+ "trimY": 387,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_chrysanthemum.png": {
+ "ver": "1.0.3",
+ "uuid": "088725d4-b66d-40d0-a3fe-aeeec07307b5",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 117,
+ "trimY": 387,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_1.png": {
+ "ver": "1.0.3",
+ "uuid": "a1aca5ef-b367-4b65-ab8e-e567e039e9c3",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 387,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_2.png": {
+ "ver": "1.0.3",
+ "uuid": "17c15905-21e5-4911-b272-afa575f1d9c2",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 347,
+ "trimY": 310,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_3.png": {
+ "ver": "1.0.3",
+ "uuid": "4ac30c8e-023a-4e83-aa95-9022172c9bee",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 232,
+ "trimY": 310,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_4.png": {
+ "ver": "1.0.3",
+ "uuid": "24bd55f3-2acf-46f4-99b5-7e32b4127773",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 117,
+ "trimY": 310,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_5.png": {
+ "ver": "1.0.3",
+ "uuid": "893d538d-23fc-4e55-8669-b717cb905636",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 310,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_6.png": {
+ "ver": "1.0.3",
+ "uuid": "62ce077e-9af1-4617-ab01-50d67a3b457a",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 347,
+ "trimY": 233,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_7.png": {
+ "ver": "1.0.3",
+ "uuid": "ec4501d1-8b58-467e-994a-8ecb4a0006e1",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 232,
+ "trimY": 233,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_8.png": {
+ "ver": "1.0.3",
+ "uuid": "83a3e8f0-e9d7-4eab-a67a-cf9bc5ae69a5",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 117,
+ "trimY": 233,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_dot_9.png": {
+ "ver": "1.0.3",
+ "uuid": "40a7ce28-a17d-4952-8d33-6853ee0d060c",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 233,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_green.png": {
+ "ver": "1.0.3",
+ "uuid": "bfab0cb0-774f-4c38-8263-4ed7c6c763f2",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 347,
+ "trimY": 156,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_orchid.png": {
+ "ver": "1.0.3",
+ "uuid": "fc248c7f-23ff-4019-bfb9-08be4c5722de",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 232,
+ "trimY": 156,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_plum.png": {
+ "ver": "1.0.3",
+ "uuid": "caeb40a8-4f48-4fcc-b20e-2406ff408450",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 117,
+ "trimY": 156,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_red.png": {
+ "ver": "1.0.3",
+ "uuid": "74b83ad5-4e4d-46db-8222-cc98a66cddef",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 156,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_spring.png": {
+ "ver": "1.0.3",
+ "uuid": "9c8e2f45-a85d-4b5a-9347-5868f3e355bc",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 347,
+ "trimY": 79,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_summer.png": {
+ "ver": "1.0.3",
+ "uuid": "d968d96e-fe8e-4332-9646-a558343b20ee",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 232,
+ "trimY": 79,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_white.png": {
+ "ver": "1.0.3",
+ "uuid": "dfc88041-d607-409f-bc18-d65dc7226af1",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 117,
+ "trimY": 79,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_wind_east.png": {
+ "ver": "1.0.3",
+ "uuid": "cba1400b-4e40-44d4-a288-1d74f6757332",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 79,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_wind_north.png": {
+ "ver": "1.0.3",
+ "uuid": "d53f742d-e434-4147-ae95-498fda6957bb",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 347,
+ "trimY": 2,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_wind_south.png": {
+ "ver": "1.0.3",
+ "uuid": "9cc2dc4e-e55c-498b-83b1-ce01f3804123",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 232,
+ "trimY": 2,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_wind_west.png": {
+ "ver": "1.0.3",
+ "uuid": "61749169-1f57-43e2-91d0-e473992efe49",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 117,
+ "trimY": 2,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "M_winter.png": {
+ "ver": "1.0.3",
+ "uuid": "78e898c8-ab73-4740-912b-74f95a405d93",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 75,
+ "height": 113,
+ "rawWidth": 75,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/my/Z_my.png b/client/assets/resources/textures/MJ/my/Z_my.png
new file mode 100755
index 0000000..10d67e0
Binary files /dev/null and b/client/assets/resources/textures/MJ/my/Z_my.png differ
diff --git a/client/assets/resources/textures/MJ/my/Z_my.png.meta b/client/assets/resources/textures/MJ/my/Z_my.png.meta
new file mode 100755
index 0000000..2bd7104
--- /dev/null
+++ b/client/assets/resources/textures/MJ/my/Z_my.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_my": {
+ "ver": "1.0.3",
+ "uuid": "c20fd7f7-187e-4c40-8183-f6a896a2aed7",
+ "rawTextureUuid": "eaf07895-ebbe-4eb1-88e4-c7aa675d15b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -5.5,
+ "offsetY": 11.5,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 497,
+ "height": 997,
+ "rawWidth": 512,
+ "rawHeight": 1024,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/right.meta b/client/assets/resources/textures/MJ/right.meta
new file mode 100755
index 0000000..ae5b79a
--- /dev/null
+++ b/client/assets/resources/textures/MJ/right.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "10712ce0-d470-446f-8cc9-5e3d55734cb4",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/right/R_character_1.png b/client/assets/resources/textures/MJ/right/R_character_1.png
new file mode 100755
index 0000000..c087171
Binary files /dev/null and b/client/assets/resources/textures/MJ/right/R_character_1.png differ
diff --git a/client/assets/resources/textures/MJ/right/R_character_1.png.meta b/client/assets/resources/textures/MJ/right/R_character_1.png.meta
new file mode 100755
index 0000000..c47e7a5
--- /dev/null
+++ b/client/assets/resources/textures/MJ/right/R_character_1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2133eb49-bb89-480b-b451-43becbb3cef2",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "R_character_1": {
+ "ver": "1.0.3",
+ "uuid": "67368907-8fe6-493f-be21-083e0ed0306b",
+ "rawTextureUuid": "2133eb49-bb89-480b-b451-43becbb3cef2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/right/Z_right.plist b/client/assets/resources/textures/MJ/right/Z_right.plist
new file mode 100755
index 0000000..2858d62
--- /dev/null
+++ b/client/assets/resources/textures/MJ/right/Z_right.plist
@@ -0,0 +1,568 @@
+
+
+
+
+ frames
+
+ R_autumn.png
+
+ frame
+ {{2,461},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo.png
+
+ frame
+ {{2,410},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_1.png
+
+ frame
+ {{2,359},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_2.png
+
+ frame
+ {{206,308},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_3.png
+
+ frame
+ {{155,296},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_4.png
+
+ frame
+ {{104,296},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_5.png
+
+ frame
+ {{53,296},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_6.png
+
+ frame
+ {{2,296},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_7.png
+
+ frame
+ {{206,257},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_8.png
+
+ frame
+ {{155,254},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_bamboo_9.png
+
+ frame
+ {{104,254},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_1.png
+
+ frame
+ {{53,254},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_2.png
+
+ frame
+ {{2,254},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_3.png
+
+ frame
+ {{155,212},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_4.png
+
+ frame
+ {{104,212},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_5.png
+
+ frame
+ {{53,212},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_6.png
+
+ frame
+ {{2,212},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_7.png
+
+ frame
+ {{206,206},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_8.png
+
+ frame
+ {{155,170},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_character_9.png
+
+ frame
+ {{104,170},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_chrysanthemum.png
+
+ frame
+ {{53,170},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_1.png
+
+ frame
+ {{2,170},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_2.png
+
+ frame
+ {{206,155},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_3.png
+
+ frame
+ {{155,128},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_4.png
+
+ frame
+ {{104,128},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_5.png
+
+ frame
+ {{53,128},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_6.png
+
+ frame
+ {{2,128},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_7.png
+
+ frame
+ {{206,104},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_8.png
+
+ frame
+ {{155,86},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_dot_9.png
+
+ frame
+ {{104,86},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_green.png
+
+ frame
+ {{53,86},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_orchid.png
+
+ frame
+ {{2,86},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_plum.png
+
+ frame
+ {{206,53},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_red.png
+
+ frame
+ {{155,44},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_spring.png
+
+ frame
+ {{104,44},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_summer.png
+
+ frame
+ {{53,44},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_white.png
+
+ frame
+ {{2,44},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_wind_east.png
+
+ frame
+ {{206,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_wind_north.png
+
+ frame
+ {{155,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_wind_south.png
+
+ frame
+ {{104,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_wind_west.png
+
+ frame
+ {{53,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+ R_winter.png
+
+ frame
+ {{2,2},{49,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{49,40}}
+ sourceSize
+ {49,40}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ Z_right.png
+ size
+ {256,512}
+ smartupdate
+ $TexturePacker:SmartUpdate:1041c485ae118acfb52d75b0da060262:1/1$
+ textureFileName
+ Z_right.png
+
+
+
diff --git a/client/assets/resources/textures/MJ/right/Z_right.plist.meta b/client/assets/resources/textures/MJ/right/Z_right.plist.meta
new file mode 100755
index 0000000..9a39e83
--- /dev/null
+++ b/client/assets/resources/textures/MJ/right/Z_right.plist.meta
@@ -0,0 +1,936 @@
+{
+ "ver": "1.2.4",
+ "uuid": "48bbc34e-d304-4947-a0fc-bba08f27205b",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "size": {
+ "width": 256,
+ "height": 512
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "R_autumn.png": {
+ "ver": "1.0.3",
+ "uuid": "3836d8d3-441e-4db9-a771-3d17e1233842",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 461,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo.png": {
+ "ver": "1.0.3",
+ "uuid": "80236eb7-5080-4170-96ee-a8c4f8a016cb",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 410,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_1.png": {
+ "ver": "1.0.3",
+ "uuid": "1b59695e-5540-424c-9039-1f104391aeda",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 359,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_2.png": {
+ "ver": "1.0.3",
+ "uuid": "cd8f59ff-9bdc-4b86-8bd8-2ed99cc3da9a",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 308,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_3.png": {
+ "ver": "1.0.3",
+ "uuid": "0fb27d8f-8360-4c08-92c5-2d18eb854610",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 296,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_4.png": {
+ "ver": "1.0.3",
+ "uuid": "ac2f73dd-07af-497f-9af1-a6c12260d106",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 296,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_5.png": {
+ "ver": "1.0.3",
+ "uuid": "9c49f08b-f821-4a09-9f66-c1711f0330e0",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 296,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_6.png": {
+ "ver": "1.0.3",
+ "uuid": "835db317-51f5-4689-9dc8-71442c726ab4",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 296,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_7.png": {
+ "ver": "1.0.3",
+ "uuid": "11241202-69c2-49ac-a07d-56a8f172c4d5",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 257,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_8.png": {
+ "ver": "1.0.3",
+ "uuid": "0d6a1d80-5319-4829-861a-5d28bbff3782",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 254,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_bamboo_9.png": {
+ "ver": "1.0.3",
+ "uuid": "d4f25282-d9d0-4d30-8b2d-0b93e761e717",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 254,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_1.png": {
+ "ver": "1.0.3",
+ "uuid": "c3c044c5-9bab-4f50-8fe9-38982a5a648e",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 254,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_2.png": {
+ "ver": "1.0.3",
+ "uuid": "caeffa32-dd50-48ec-9df4-2ad873d8535c",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 254,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_3.png": {
+ "ver": "1.0.3",
+ "uuid": "e1c391b9-3c69-4637-8876-9a1bbd585e97",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 212,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_4.png": {
+ "ver": "1.0.3",
+ "uuid": "a5490aed-a2bf-48f8-bfdf-5f48327a061f",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 212,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_5.png": {
+ "ver": "1.0.3",
+ "uuid": "1d09396e-f87c-4ba0-8b4b-6b1473ff279b",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 212,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_6.png": {
+ "ver": "1.0.3",
+ "uuid": "7c2ce215-1bd6-499a-a441-a242784bfe85",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 212,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_7.png": {
+ "ver": "1.0.3",
+ "uuid": "b2a05403-3e08-4089-852f-d5b90261ade2",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 206,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_8.png": {
+ "ver": "1.0.3",
+ "uuid": "af421aaf-6a5b-4663-a033-8ed750ca5a54",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 170,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_character_9.png": {
+ "ver": "1.0.3",
+ "uuid": "9f844e2e-44df-45d4-bc1f-9cdef2d8d1cc",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 170,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_chrysanthemum.png": {
+ "ver": "1.0.3",
+ "uuid": "7e4b0329-9455-4d54-8daa-8e36668a4a34",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 170,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_1.png": {
+ "ver": "1.0.3",
+ "uuid": "d5da5754-a91d-4204-8aca-5e648a4da1c8",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 170,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_2.png": {
+ "ver": "1.0.3",
+ "uuid": "19800559-9d4f-4615-a91f-83b6e82daed6",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 155,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_3.png": {
+ "ver": "1.0.3",
+ "uuid": "537e486e-8ef6-48ce-8094-32aa50d9410e",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 128,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_4.png": {
+ "ver": "1.0.3",
+ "uuid": "d7ee5835-6b15-4294-a79d-72574036cd3f",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 128,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_5.png": {
+ "ver": "1.0.3",
+ "uuid": "5cac63a0-5716-436d-9066-8ade4e05d6a6",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 128,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_6.png": {
+ "ver": "1.0.3",
+ "uuid": "bc866d92-d324-4d6b-91bd-5b26df85577f",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 128,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_7.png": {
+ "ver": "1.0.3",
+ "uuid": "870c289f-6778-4a0e-b7a7-788a831eba65",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 104,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_8.png": {
+ "ver": "1.0.3",
+ "uuid": "7a56407b-28b3-447f-9a20-d16c0a7c03a3",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 86,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_dot_9.png": {
+ "ver": "1.0.3",
+ "uuid": "4afc8a40-c557-4507-9998-1eecb96c46e6",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 86,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_green.png": {
+ "ver": "1.0.3",
+ "uuid": "75a98499-2f66-4c05-a7c3-6efdbf2becb5",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 86,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_orchid.png": {
+ "ver": "1.0.3",
+ "uuid": "e8dd3c7f-2177-4c87-8ce7-9f08bc34d8bc",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 86,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_plum.png": {
+ "ver": "1.0.3",
+ "uuid": "539d920f-2dd2-40d2-ae1c-41f880f07042",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 53,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_red.png": {
+ "ver": "1.0.3",
+ "uuid": "393f1987-dda3-4e38-8936-1aa059f8ee7a",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 44,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_spring.png": {
+ "ver": "1.0.3",
+ "uuid": "f78391f5-138d-44c1-9755-3a9b027b0f28",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 44,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_summer.png": {
+ "ver": "1.0.3",
+ "uuid": "73551241-ffce-43ee-9e14-9159c4954e57",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 44,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_white.png": {
+ "ver": "1.0.3",
+ "uuid": "ecd8d18c-8b8d-45a0-b0aa-0acc029f7fce",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 44,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_wind_east.png": {
+ "ver": "1.0.3",
+ "uuid": "fdb663a5-8b5d-46dd-81b8-f03217e77e3a",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 206,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_wind_north.png": {
+ "ver": "1.0.3",
+ "uuid": "7d691697-7e83-4729-a1b2-8f7ad43304da",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 155,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_wind_south.png": {
+ "ver": "1.0.3",
+ "uuid": "1d96874b-13bf-4d95-be33-7d45957d435a",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_wind_west.png": {
+ "ver": "1.0.3",
+ "uuid": "d98c0735-3f6a-45a2-862d-db432518af85",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 53,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "R_winter.png": {
+ "ver": "1.0.3",
+ "uuid": "e97f8db4-4c2b-43c9-8b16-2a064aa4c200",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 49,
+ "height": 40,
+ "rawWidth": 49,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJ/right/Z_right.png b/client/assets/resources/textures/MJ/right/Z_right.png
new file mode 100755
index 0000000..4a7d3b8
Binary files /dev/null and b/client/assets/resources/textures/MJ/right/Z_right.png differ
diff --git a/client/assets/resources/textures/MJ/right/Z_right.png.meta b/client/assets/resources/textures/MJ/right/Z_right.png.meta
new file mode 100755
index 0000000..0dc0eb4
--- /dev/null
+++ b/client/assets/resources/textures/MJ/right/Z_right.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_right": {
+ "ver": "1.0.3",
+ "uuid": "8d9a2026-aae8-4db2-b6e1-1d89eed524cf",
+ "rawTextureUuid": "059ebe81-c575-49ff-8a71-3d899278040c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -4,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 244,
+ "height": 508,
+ "rawWidth": 256,
+ "rawHeight": 512,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom.meta b/client/assets/resources/textures/MJRoom.meta
new file mode 100755
index 0000000..410d788
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "a3d4b553-7679-4e39-9b66-2a6b49752c5c",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_arrow.png b/client/assets/resources/textures/MJRoom/Z_arrow.png
new file mode 100755
index 0000000..8d0e1a5
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_arrow.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_arrow.png.meta b/client/assets/resources/textures/MJRoom/Z_arrow.png.meta
new file mode 100755
index 0000000..ed3dddd
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_arrow.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "9ef3b925-1469-46be-8f24-6f8cf6529777",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_arrow": {
+ "ver": "1.0.3",
+ "uuid": "7824e0e7-a8d6-4bed-b56d-de6cede5973b",
+ "rawTextureUuid": "9ef3b925-1469-46be-8f24-6f8cf6529777",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 26,
+ "height": 34,
+ "rawWidth": 26,
+ "rawHeight": 34,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_arrow_frame.png b/client/assets/resources/textures/MJRoom/Z_arrow_frame.png
new file mode 100755
index 0000000..6e72a0f
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_arrow_frame.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_arrow_frame.png.meta b/client/assets/resources/textures/MJRoom/Z_arrow_frame.png.meta
new file mode 100755
index 0000000..61bc13e
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_arrow_frame.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5b7ee4c3-c6c1-4578-a34b-f2d1308b39ea",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_arrow_frame": {
+ "ver": "1.0.3",
+ "uuid": "08616609-bfbf-459c-a8af-cf9ea29e453d",
+ "rawTextureUuid": "5b7ee4c3-c6c1-4578-a34b-f2d1308b39ea",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 106,
+ "height": 106,
+ "rawWidth": 106,
+ "rawHeight": 106,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_arrow_top.png b/client/assets/resources/textures/MJRoom/Z_arrow_top.png
new file mode 100755
index 0000000..48d533b
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_arrow_top.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_arrow_top.png.meta b/client/assets/resources/textures/MJRoom/Z_arrow_top.png.meta
new file mode 100755
index 0000000..ce91fb2
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_arrow_top.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a6e70db1-0583-49ee-98c3-0a93bba8726c",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_arrow_top": {
+ "ver": "1.0.3",
+ "uuid": "b2c1781b-17c0-4385-ae58-5ca7a67b741d",
+ "rawTextureUuid": "a6e70db1-0583-49ee-98c3-0a93bba8726c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0.5,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 50,
+ "height": 50,
+ "rawWidth": 50,
+ "rawHeight": 51,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_bg_bottom.png b/client/assets/resources/textures/MJRoom/Z_bg_bottom.png
new file mode 100755
index 0000000..d0b59a0
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_bg_bottom.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_bg_bottom.png.meta b/client/assets/resources/textures/MJRoom/Z_bg_bottom.png.meta
new file mode 100755
index 0000000..e125797
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_bg_bottom.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "86e4599b-a34b-42b2-9648-d70e023c27ec",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_bg_bottom": {
+ "ver": "1.0.3",
+ "uuid": "23d25b30-e11b-4057-ad29-758f259c1c40",
+ "rawTextureUuid": "86e4599b-a34b-42b2-9648-d70e023c27ec",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 1112,
+ "height": 20,
+ "rawWidth": 1112,
+ "rawHeight": 21,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 50,
+ "borderRight": 50,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_bg_lAr.png b/client/assets/resources/textures/MJRoom/Z_bg_lAr.png
new file mode 100755
index 0000000..b193940
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_bg_lAr.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_bg_lAr.png.meta b/client/assets/resources/textures/MJRoom/Z_bg_lAr.png.meta
new file mode 100755
index 0000000..55fe6cd
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_bg_lAr.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "c133eeb7-b095-4b0d-b52a-f6e62e25b8c6",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_bg_lAr": {
+ "ver": "1.0.3",
+ "uuid": "73e9da26-3bde-42ef-9905-9b080302bf85",
+ "rawTextureUuid": "c133eeb7-b095-4b0d-b52a-f6e62e25b8c6",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0.5,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 17,
+ "height": 550,
+ "rawWidth": 17,
+ "rawHeight": 551,
+ "borderTop": 50,
+ "borderBottom": 50,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_corner_lbottom.png b/client/assets/resources/textures/MJRoom/Z_corner_lbottom.png
new file mode 100755
index 0000000..55d4b67
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_corner_lbottom.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_corner_lbottom.png.meta b/client/assets/resources/textures/MJRoom/Z_corner_lbottom.png.meta
new file mode 100755
index 0000000..d3b195d
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_corner_lbottom.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a45ebdea-ea32-4df4-800a-c0ce41779a36",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_corner_lbottom": {
+ "ver": "1.0.3",
+ "uuid": "e86727d5-028b-4b5c-8806-8d5098c5128b",
+ "rawTextureUuid": "a45ebdea-ea32-4df4-800a-c0ce41779a36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 84,
+ "height": 85,
+ "rawWidth": 84,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_corner_ltop.png b/client/assets/resources/textures/MJRoom/Z_corner_ltop.png
new file mode 100755
index 0000000..2b8420c
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_corner_ltop.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_corner_ltop.png.meta b/client/assets/resources/textures/MJRoom/Z_corner_ltop.png.meta
new file mode 100755
index 0000000..56e442f
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_corner_ltop.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "349b548a-27e6-4a14-b849-98a681d0eb22",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_corner_ltop": {
+ "ver": "1.0.3",
+ "uuid": "6a16e48b-b85c-47eb-a246-dbde91b1ceae",
+ "rawTextureUuid": "349b548a-27e6-4a14-b849-98a681d0eb22",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 84,
+ "height": 85,
+ "rawWidth": 84,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_corner_rbottom.png b/client/assets/resources/textures/MJRoom/Z_corner_rbottom.png
new file mode 100755
index 0000000..90f0bcf
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_corner_rbottom.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_corner_rbottom.png.meta b/client/assets/resources/textures/MJRoom/Z_corner_rbottom.png.meta
new file mode 100755
index 0000000..72ba23a
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_corner_rbottom.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "f94a44c9-6fb5-471d-a3e3-39fbaba360e0",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_corner_rbottom": {
+ "ver": "1.0.3",
+ "uuid": "19cf2c64-10c2-42eb-b6a4-a3d60b17dd68",
+ "rawTextureUuid": "f94a44c9-6fb5-471d-a3e3-39fbaba360e0",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 84,
+ "height": 85,
+ "rawWidth": 84,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_corner_rtop.png b/client/assets/resources/textures/MJRoom/Z_corner_rtop.png
new file mode 100755
index 0000000..0caff05
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_corner_rtop.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_corner_rtop.png.meta b/client/assets/resources/textures/MJRoom/Z_corner_rtop.png.meta
new file mode 100755
index 0000000..8c326cd
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_corner_rtop.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "6854b8d9-094d-4d26-afc9-be83f3fd6307",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_corner_rtop": {
+ "ver": "1.0.3",
+ "uuid": "6e3f06a1-7edb-4a86-bfbf-2cd12d45c41e",
+ "rawTextureUuid": "6854b8d9-094d-4d26-afc9-be83f3fd6307",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 84,
+ "height": 85,
+ "rawWidth": 84,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_count_down_num.png b/client/assets/resources/textures/MJRoom/Z_count_down_num.png
new file mode 100755
index 0000000..e18db08
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_count_down_num.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_count_down_num.png.meta b/client/assets/resources/textures/MJRoom/Z_count_down_num.png.meta
new file mode 100755
index 0000000..17c1f09
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_count_down_num.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "9b303182-c61c-4e2b-b67a-8c97ffbebbac",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_count_down_num": {
+ "ver": "1.0.3",
+ "uuid": "56a65ee0-9ed8-4a88-a573-0594dcbb16b9",
+ "rawTextureUuid": "9b303182-c61c-4e2b-b67a-8c97ffbebbac",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 238,
+ "height": 32,
+ "rawWidth": 240,
+ "rawHeight": 32,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_help.png b/client/assets/resources/textures/MJRoom/Z_help.png
new file mode 100755
index 0000000..0f79b1c
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_help.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_help.png.meta b/client/assets/resources/textures/MJRoom/Z_help.png.meta
new file mode 100755
index 0000000..72b3db1
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_help.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ccbd262d-9b47-4e96-a498-fe30e0ffe58f",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_help": {
+ "ver": "1.0.3",
+ "uuid": "a046059e-0c94-4865-a6c6-be200f23181f",
+ "rawTextureUuid": "ccbd262d-9b47-4e96-a498-fe30e0ffe58f",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 38,
+ "height": 40,
+ "rawWidth": 38,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_money_frame.png b/client/assets/resources/textures/MJRoom/Z_money_frame.png
new file mode 100755
index 0000000..f96cad0
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_money_frame.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_money_frame.png.meta b/client/assets/resources/textures/MJRoom/Z_money_frame.png.meta
new file mode 100755
index 0000000..70e9c1e
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_money_frame.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7aaea111-105d-4f25-9a0a-7fdef510bf69",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_money_frame": {
+ "ver": "1.0.3",
+ "uuid": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb",
+ "rawTextureUuid": "7aaea111-105d-4f25-9a0a-7fdef510bf69",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 86,
+ "height": 27,
+ "rawWidth": 86,
+ "rawHeight": 27,
+ "borderTop": 13,
+ "borderBottom": 13,
+ "borderLeft": 20,
+ "borderRight": 20,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_nobody.png b/client/assets/resources/textures/MJRoom/Z_nobody.png
new file mode 100755
index 0000000..cb26b0e
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_nobody.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_nobody.png.meta b/client/assets/resources/textures/MJRoom/Z_nobody.png.meta
new file mode 100755
index 0000000..c97efbe
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_nobody.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e8e2ee02-19dc-4e3b-a16f-02c482589aeb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_nobody": {
+ "ver": "1.0.3",
+ "uuid": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b",
+ "rawTextureUuid": "e8e2ee02-19dc-4e3b-a16f-02c482589aeb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0.5,
+ "trimX": 10,
+ "trimY": 5,
+ "width": 46,
+ "height": 54,
+ "rawWidth": 65,
+ "rawHeight": 65,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_offline.png b/client/assets/resources/textures/MJRoom/Z_offline.png
new file mode 100755
index 0000000..fd8760f
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_offline.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_offline.png.meta b/client/assets/resources/textures/MJRoom/Z_offline.png.meta
new file mode 100755
index 0000000..79f0408
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_offline.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "b43b1e6b-9b2e-4ca7-9a02-4e23633fb112",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_offline": {
+ "ver": "1.0.3",
+ "uuid": "e1a3a475-5518-47c8-a3dd-0d00a6ec9eb5",
+ "rawTextureUuid": "b43b1e6b-9b2e-4ca7-9a02-4e23633fb112",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 42,
+ "height": 16,
+ "rawWidth": 44,
+ "rawHeight": 16,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_power.png b/client/assets/resources/textures/MJRoom/Z_power.png
new file mode 100755
index 0000000..e507676
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_power.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_power.png.meta b/client/assets/resources/textures/MJRoom/Z_power.png.meta
new file mode 100755
index 0000000..386a816
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_power.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7aa67722-5e92-4a79-b123-0c1e485229a4",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_power": {
+ "ver": "1.0.3",
+ "uuid": "521b4858-11da-45d5-95ac-5a9577f59e2c",
+ "rawTextureUuid": "7aa67722-5e92-4a79-b123-0c1e485229a4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 56,
+ "height": 29,
+ "rawWidth": 56,
+ "rawHeight": 31,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_user.png b/client/assets/resources/textures/MJRoom/Z_user.png
new file mode 100755
index 0000000..70da7cf
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/Z_user.png differ
diff --git a/client/assets/resources/textures/MJRoom/Z_user.png.meta b/client/assets/resources/textures/MJRoom/Z_user.png.meta
new file mode 100755
index 0000000..6c8a46b
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_user.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "36947334-3056-435d-8888-387f5fa53d54",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_user": {
+ "ver": "1.0.3",
+ "uuid": "48c1d635-cb9e-4f2a-96ec-07c30130e107",
+ "rawTextureUuid": "36947334-3056-435d-8888-387f5fa53d54",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 96,
+ "height": 97,
+ "rawWidth": 96,
+ "rawHeight": 97,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/Z_wifi.plist b/client/assets/resources/textures/MJRoom/Z_wifi.plist
new file mode 100755
index 0000000..5e4d6c2
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_wifi.plist
@@ -0,0 +1,74 @@
+
+
+
+
+ frames
+
+ Z_wifi_1.png
+
+ frame
+ {{2,2},{48,38}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{48,38}}
+ sourceSize
+ {48,38}
+
+ Z_wifi_2.png
+
+ frame
+ {{2,42},{42,30}}
+ offset
+ {-3,-4}
+ rotated
+
+ sourceColorRect
+ {{0,8},{42,30}}
+ sourceSize
+ {48,38}
+
+ Z_wifi_3.png
+
+ frame
+ {{2,74},{26,22}}
+ offset
+ {0,-8}
+ rotated
+
+ sourceColorRect
+ {{11,16},{26,22}}
+ sourceSize
+ {48,38}
+
+ Z_wifi_4.png
+
+ frame
+ {{46,42},{16,14}}
+ offset
+ {0,-12}
+ rotated
+
+ sourceColorRect
+ {{16,24},{16,14}}
+ sourceSize
+ {48,38}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ Z_wifi.png
+ size
+ {64,128}
+ smartupdate
+ $TexturePacker:SmartUpdate:7d494a8c9244eafa8a7054f3465a5f03:1/1$
+ textureFileName
+ Z_wifi.png
+
+
+
diff --git a/client/assets/resources/textures/MJRoom/Z_wifi.plist.meta b/client/assets/resources/textures/MJRoom/Z_wifi.plist.meta
new file mode 100755
index 0000000..277b180
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/Z_wifi.plist.meta
@@ -0,0 +1,95 @@
+{
+ "ver": "1.2.4",
+ "uuid": "d1ec606d-1a3a-4ebf-a9f1-5391b946cd31",
+ "size": {
+ "width": 64,
+ "height": 128
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "Z_wifi_1.png": {
+ "ver": "1.0.3",
+ "uuid": "a5c2bb3a-45eb-41d7-ac46-f2823c669104",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 48,
+ "height": 38,
+ "rawWidth": 48,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Z_wifi_2.png": {
+ "ver": "1.0.3",
+ "uuid": "9c8dd523-f857-44ba-ba67-77eb5c258e76",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -3,
+ "offsetY": -4,
+ "trimX": 2,
+ "trimY": 42,
+ "width": 42,
+ "height": 30,
+ "rawWidth": 48,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Z_wifi_3.png": {
+ "ver": "1.0.3",
+ "uuid": "8b018912-da14-4c07-a104-b7f00b41e9a9",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": -8,
+ "trimX": 2,
+ "trimY": 74,
+ "width": 26,
+ "height": 22,
+ "rawWidth": 48,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Z_wifi_4.png": {
+ "ver": "1.0.3",
+ "uuid": "f9560c03-fff5-4eed-9035-0ec5e547e19c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -12,
+ "trimX": 46,
+ "trimY": 42,
+ "width": 16,
+ "height": 14,
+ "rawWidth": 48,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/powerG.PNG b/client/assets/resources/textures/MJRoom/powerG.PNG
new file mode 100755
index 0000000..8f4cca6
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/powerG.PNG differ
diff --git a/client/assets/resources/textures/MJRoom/powerG.PNG.meta b/client/assets/resources/textures/MJRoom/powerG.PNG.meta
new file mode 100755
index 0000000..a1020f2
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/powerG.PNG.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d184fd48-1327-4dcd-b226-2f322843dd36",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "powerG": {
+ "ver": "1.0.3",
+ "uuid": "16d3afa4-d1c5-45c6-9448-e56b37b91224",
+ "rawTextureUuid": "d184fd48-1327-4dcd-b226-2f322843dd36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 34,
+ "height": 17,
+ "rawWidth": 34,
+ "rawHeight": 17,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/MJRoom/roundnumbg.png b/client/assets/resources/textures/MJRoom/roundnumbg.png
new file mode 100755
index 0000000..7a1f5a1
Binary files /dev/null and b/client/assets/resources/textures/MJRoom/roundnumbg.png differ
diff --git a/client/assets/resources/textures/MJRoom/roundnumbg.png.meta b/client/assets/resources/textures/MJRoom/roundnumbg.png.meta
new file mode 100755
index 0000000..df630b6
--- /dev/null
+++ b/client/assets/resources/textures/MJRoom/roundnumbg.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8f63e355-627e-4c36-84dd-582117d7a1f0",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "roundnumbg": {
+ "ver": "1.0.3",
+ "uuid": "96053a47-4c56-4e4c-b7f6-1d11becf13a6",
+ "rawTextureUuid": "8f63e355-627e-4c36-84dd-582117d7a1f0",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 110,
+ "height": 27,
+ "rawWidth": 110,
+ "rawHeight": 27,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk.meta b/client/assets/resources/textures/bk.meta
new file mode 100755
index 0000000..a3245ba
--- /dev/null
+++ b/client/assets/resources/textures/bk.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "de65654d-1a28-4867-853d-8c6deea4eeab",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/LOGO.png b/client/assets/resources/textures/bk/LOGO.png
new file mode 100755
index 0000000..1904f6f
Binary files /dev/null and b/client/assets/resources/textures/bk/LOGO.png differ
diff --git a/client/assets/resources/textures/bk/LOGO.png.meta b/client/assets/resources/textures/bk/LOGO.png.meta
new file mode 100755
index 0000000..24d38e3
--- /dev/null
+++ b/client/assets/resources/textures/bk/LOGO.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "fa744098-e9fa-426a-81b6-1ee710a2ba9c",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "LOGO": {
+ "ver": "1.0.3",
+ "uuid": "9fde12b5-e35e-4de7-8014-b96690ef1ff0",
+ "rawTextureUuid": "fa744098-e9fa-426a-81b6-1ee710a2ba9c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 883,
+ "height": 228,
+ "rawWidth": 883,
+ "rawHeight": 228,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/LOGO_mini.png b/client/assets/resources/textures/bk/LOGO_mini.png
new file mode 100755
index 0000000..16010f1
Binary files /dev/null and b/client/assets/resources/textures/bk/LOGO_mini.png differ
diff --git a/client/assets/resources/textures/bk/LOGO_mini.png.meta b/client/assets/resources/textures/bk/LOGO_mini.png.meta
new file mode 100755
index 0000000..aba6990
--- /dev/null
+++ b/client/assets/resources/textures/bk/LOGO_mini.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "44ec75a5-e20f-47ea-bf4e-da03f9b4c806",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "LOGO_mini": {
+ "ver": "1.0.3",
+ "uuid": "de83c74a-5db9-4fb2-a445-f8ee6aa5ed45",
+ "rawTextureUuid": "44ec75a5-e20f-47ea-bf4e-da03f9b4c806",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 384,
+ "height": 99,
+ "rawWidth": 384,
+ "rawHeight": 99,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/bg1.png b/client/assets/resources/textures/bk/bg1.png
new file mode 100755
index 0000000..12e8eea
Binary files /dev/null and b/client/assets/resources/textures/bk/bg1.png differ
diff --git a/client/assets/resources/textures/bk/bg1.png.meta b/client/assets/resources/textures/bk/bg1.png.meta
new file mode 100755
index 0000000..f869692
--- /dev/null
+++ b/client/assets/resources/textures/bk/bg1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a18925f7-e1ba-4121-8654-7273aaa87412",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "bg1": {
+ "ver": "1.0.3",
+ "uuid": "dc18bcef-c6d8-46b3-81a0-d91ce3ed83ea",
+ "rawTextureUuid": "a18925f7-e1ba-4121-8654-7273aaa87412",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/bg2.png b/client/assets/resources/textures/bk/bg2.png
new file mode 100755
index 0000000..9fd36b6
Binary files /dev/null and b/client/assets/resources/textures/bk/bg2.png differ
diff --git a/client/assets/resources/textures/bk/bg2.png.meta b/client/assets/resources/textures/bk/bg2.png.meta
new file mode 100755
index 0000000..cfd3921
--- /dev/null
+++ b/client/assets/resources/textures/bk/bg2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e463b89c-e7f1-4ad2-a8cb-eacc9507ca91",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "bg2": {
+ "ver": "1.0.3",
+ "uuid": "693b96ce-a4f6-4ace-a54e-d1cecfb93d6d",
+ "rawTextureUuid": "e463b89c-e7f1-4ad2-a8cb-eacc9507ca91",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/btn_create_room.png b/client/assets/resources/textures/bk/btn_create_room.png
new file mode 100755
index 0000000..14aad69
Binary files /dev/null and b/client/assets/resources/textures/bk/btn_create_room.png differ
diff --git a/client/assets/resources/textures/bk/btn_create_room.png.meta b/client/assets/resources/textures/bk/btn_create_room.png.meta
new file mode 100755
index 0000000..d59511e
--- /dev/null
+++ b/client/assets/resources/textures/bk/btn_create_room.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "38a4e733-ec1d-43a7-b0e5-df7e0c9a7ae0",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "btn_create_room": {
+ "ver": "1.0.3",
+ "uuid": "124287eb-7819-4f20-91da-50759cb16063",
+ "rawTextureUuid": "38a4e733-ec1d-43a7-b0e5-df7e0c9a7ae0",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 383,
+ "height": 159,
+ "rawWidth": 383,
+ "rawHeight": 159,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/btn_enter_room.png b/client/assets/resources/textures/bk/btn_enter_room.png
new file mode 100755
index 0000000..b7732a3
Binary files /dev/null and b/client/assets/resources/textures/bk/btn_enter_room.png differ
diff --git a/client/assets/resources/textures/bk/btn_enter_room.png.meta b/client/assets/resources/textures/bk/btn_enter_room.png.meta
new file mode 100755
index 0000000..eafc179
--- /dev/null
+++ b/client/assets/resources/textures/bk/btn_enter_room.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "cfe8c1d9-1810-4839-b265-8a54f53682aa",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "btn_enter_room": {
+ "ver": "1.0.3",
+ "uuid": "5cdf3758-4cce-4dcf-9321-a257a408269c",
+ "rawTextureUuid": "cfe8c1d9-1810-4839-b265-8a54f53682aa",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 383,
+ "height": 159,
+ "rawWidth": 383,
+ "rawHeight": 159,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/btn_return_room.png b/client/assets/resources/textures/bk/btn_return_room.png
new file mode 100755
index 0000000..2078119
Binary files /dev/null and b/client/assets/resources/textures/bk/btn_return_room.png differ
diff --git a/client/assets/resources/textures/bk/btn_return_room.png.meta b/client/assets/resources/textures/bk/btn_return_room.png.meta
new file mode 100755
index 0000000..de5a934
--- /dev/null
+++ b/client/assets/resources/textures/bk/btn_return_room.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4c5cf5d7-ffd6-4d8d-bcb5-4b469e689850",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "btn_return_room": {
+ "ver": "1.0.3",
+ "uuid": "f6c224f1-be43-4b53-a56b-a75f5001c952",
+ "rawTextureUuid": "4c5cf5d7-ffd6-4d8d-bcb5-4b469e689850",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 383,
+ "height": 159,
+ "rawWidth": 383,
+ "rawHeight": 159,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/btn_weixin_login.png b/client/assets/resources/textures/bk/btn_weixin_login.png
new file mode 100755
index 0000000..32c3077
Binary files /dev/null and b/client/assets/resources/textures/bk/btn_weixin_login.png differ
diff --git a/client/assets/resources/textures/bk/btn_weixin_login.png.meta b/client/assets/resources/textures/bk/btn_weixin_login.png.meta
new file mode 100755
index 0000000..c317ecc
--- /dev/null
+++ b/client/assets/resources/textures/bk/btn_weixin_login.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "87679a64-f1ce-4fc5-b9fb-780e770d485d",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "btn_weixin_login": {
+ "ver": "1.0.3",
+ "uuid": "3040cec3-8b19-4c7a-929c-9bff1cd882ed",
+ "rawTextureUuid": "87679a64-f1ce-4fc5-b9fb-780e770d485d",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 406,
+ "height": 156,
+ "rawWidth": 406,
+ "rawHeight": 156,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/notice.png b/client/assets/resources/textures/bk/notice.png
new file mode 100755
index 0000000..2ae0a92
Binary files /dev/null and b/client/assets/resources/textures/bk/notice.png differ
diff --git a/client/assets/resources/textures/bk/notice.png.meta b/client/assets/resources/textures/bk/notice.png.meta
new file mode 100755
index 0000000..cab8240
--- /dev/null
+++ b/client/assets/resources/textures/bk/notice.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5c283df5-b6fb-4d01-ba2c-5ea3f6853175",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "notice": {
+ "ver": "1.0.3",
+ "uuid": "3d08e1eb-e155-4540-a4cd-8575dddb2be9",
+ "rawTextureUuid": "5c283df5-b6fb-4d01-ba2c-5ea3f6853175",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 390,
+ "height": 450,
+ "rawWidth": 390,
+ "rawHeight": 450,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/nv.png b/client/assets/resources/textures/bk/nv.png
new file mode 100755
index 0000000..4534a09
Binary files /dev/null and b/client/assets/resources/textures/bk/nv.png differ
diff --git a/client/assets/resources/textures/bk/nv.png.meta b/client/assets/resources/textures/bk/nv.png.meta
new file mode 100755
index 0000000..2e5c306
--- /dev/null
+++ b/client/assets/resources/textures/bk/nv.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "170ec580-0453-48cf-932f-20798e6ef1ad",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "nv": {
+ "ver": "1.0.3",
+ "uuid": "7d3576c9-40cc-4924-b6af-f2d0f611dd6b",
+ "rawTextureUuid": "170ec580-0453-48cf-932f-20798e6ef1ad",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 554,
+ "height": 606,
+ "rawWidth": 554,
+ "rawHeight": 606,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/bk/top_bar.png b/client/assets/resources/textures/bk/top_bar.png
new file mode 100755
index 0000000..dbfccdb
Binary files /dev/null and b/client/assets/resources/textures/bk/top_bar.png differ
diff --git a/client/assets/resources/textures/bk/top_bar.png.meta b/client/assets/resources/textures/bk/top_bar.png.meta
new file mode 100755
index 0000000..9f72cb9
--- /dev/null
+++ b/client/assets/resources/textures/bk/top_bar.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "763f2268-7cd9-4d6a-9df0-9e65f6b7f5f5",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "top_bar": {
+ "ver": "1.0.3",
+ "uuid": "01ce6d04-c3f8-4fb2-90a0-063813b8fd9b",
+ "rawTextureUuid": "763f2268-7cd9-4d6a-9df0-9e65f6b7f5f5",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 113,
+ "rawWidth": 1280,
+ "rawHeight": 113,
+ "borderTop": 50,
+ "borderBottom": 50,
+ "borderLeft": 50,
+ "borderRight": 50,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat.meta b/client/assets/resources/textures/chat.meta
new file mode 100755
index 0000000..e6a4396
--- /dev/null
+++ b/client/assets/resources/textures/chat.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "7b88c7db-6bfd-42e8-90c2-9aa29efa616f",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/Z_chat_bottom_1.png b/client/assets/resources/textures/chat/Z_chat_bottom_1.png
new file mode 100755
index 0000000..eeb69e6
Binary files /dev/null and b/client/assets/resources/textures/chat/Z_chat_bottom_1.png differ
diff --git a/client/assets/resources/textures/chat/Z_chat_bottom_1.png.meta b/client/assets/resources/textures/chat/Z_chat_bottom_1.png.meta
new file mode 100755
index 0000000..f47b25f
--- /dev/null
+++ b/client/assets/resources/textures/chat/Z_chat_bottom_1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e7180329-ad86-43c4-871e-6d337895df56",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_chat_bottom_1": {
+ "ver": "1.0.3",
+ "uuid": "bce1c001-43f5-4e94-b2ca-8460d5a1960c",
+ "rawTextureUuid": "e7180329-ad86-43c4-871e-6d337895df56",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 77,
+ "height": 78,
+ "rawWidth": 77,
+ "rawHeight": 79,
+ "borderTop": 20,
+ "borderBottom": 20,
+ "borderLeft": 20,
+ "borderRight": 20,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chat_backbg.png b/client/assets/resources/textures/chat/chat_backbg.png
new file mode 100755
index 0000000..9b95e37
Binary files /dev/null and b/client/assets/resources/textures/chat/chat_backbg.png differ
diff --git a/client/assets/resources/textures/chat/chat_backbg.png.meta b/client/assets/resources/textures/chat/chat_backbg.png.meta
new file mode 100755
index 0000000..6318968
--- /dev/null
+++ b/client/assets/resources/textures/chat/chat_backbg.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8a52eb2f-380a-41b1-aa60-9bd65060d595",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat_backbg": {
+ "ver": "1.0.3",
+ "uuid": "db886f00-0ada-4183-b6d9-f339a7d16dd4",
+ "rawTextureUuid": "8a52eb2f-380a-41b1-aa60-9bd65060d595",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 850,
+ "height": 531,
+ "rawWidth": 850,
+ "rawHeight": 531,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chat_chick.png b/client/assets/resources/textures/chat/chat_chick.png
new file mode 100755
index 0000000..dd4e032
Binary files /dev/null and b/client/assets/resources/textures/chat/chat_chick.png differ
diff --git a/client/assets/resources/textures/chat/chat_chick.png.meta b/client/assets/resources/textures/chat/chat_chick.png.meta
new file mode 100755
index 0000000..e8e4860
--- /dev/null
+++ b/client/assets/resources/textures/chat/chat_chick.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ba0c28cf-ca39-44a5-bccc-e27c418e829c",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat_chick": {
+ "ver": "1.0.3",
+ "uuid": "9ea541bf-5c7d-4910-8330-31e7f474c8b0",
+ "rawTextureUuid": "ba0c28cf-ca39-44a5-bccc-e27c418e829c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 399,
+ "height": 55,
+ "rawWidth": 399,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chat_easychat.png b/client/assets/resources/textures/chat/chat_easychat.png
new file mode 100755
index 0000000..a625379
Binary files /dev/null and b/client/assets/resources/textures/chat/chat_easychat.png differ
diff --git a/client/assets/resources/textures/chat/chat_easychat.png.meta b/client/assets/resources/textures/chat/chat_easychat.png.meta
new file mode 100755
index 0000000..a86f3c8
--- /dev/null
+++ b/client/assets/resources/textures/chat/chat_easychat.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "eef02d27-5721-44e9-8461-3de54269fc3a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat_easychat": {
+ "ver": "1.0.3",
+ "uuid": "8a68b8fa-1bcb-4c9a-92cb-bd47c4bd5df8",
+ "rawTextureUuid": "eef02d27-5721-44e9-8461-3de54269fc3a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 419,
+ "height": 52,
+ "rawWidth": 419,
+ "rawHeight": 52,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chat_easychat1.png b/client/assets/resources/textures/chat/chat_easychat1.png
new file mode 100755
index 0000000..9026c10
Binary files /dev/null and b/client/assets/resources/textures/chat/chat_easychat1.png differ
diff --git a/client/assets/resources/textures/chat/chat_easychat1.png.meta b/client/assets/resources/textures/chat/chat_easychat1.png.meta
new file mode 100755
index 0000000..0ba25c9
--- /dev/null
+++ b/client/assets/resources/textures/chat/chat_easychat1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7448101a-99aa-4163-821d-8e1d74df23bd",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat_easychat1": {
+ "ver": "1.0.3",
+ "uuid": "325e47b0-3fb8-4cc1-b6eb-45891fd122de",
+ "rawTextureUuid": "7448101a-99aa-4163-821d-8e1d74df23bd",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 419,
+ "height": 60,
+ "rawWidth": 419,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chat_emoji.png b/client/assets/resources/textures/chat/chat_emoji.png
new file mode 100755
index 0000000..dc82dc0
Binary files /dev/null and b/client/assets/resources/textures/chat/chat_emoji.png differ
diff --git a/client/assets/resources/textures/chat/chat_emoji.png.meta b/client/assets/resources/textures/chat/chat_emoji.png.meta
new file mode 100755
index 0000000..cb10219
--- /dev/null
+++ b/client/assets/resources/textures/chat/chat_emoji.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "75b22bef-022a-48b7-8c28-5a6c6d00016e",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat_emoji": {
+ "ver": "1.0.3",
+ "uuid": "c7289abd-1844-47d5-87b2-aabd502393c7",
+ "rawTextureUuid": "75b22bef-022a-48b7-8c28-5a6c6d00016e",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 419,
+ "height": 52,
+ "rawWidth": 419,
+ "rawHeight": 52,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chat_emoji1.png b/client/assets/resources/textures/chat/chat_emoji1.png
new file mode 100755
index 0000000..d2a2252
Binary files /dev/null and b/client/assets/resources/textures/chat/chat_emoji1.png differ
diff --git a/client/assets/resources/textures/chat/chat_emoji1.png.meta b/client/assets/resources/textures/chat/chat_emoji1.png.meta
new file mode 100755
index 0000000..451e9c7
--- /dev/null
+++ b/client/assets/resources/textures/chat/chat_emoji1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2fd6b9fd-6fc7-4e08-abc6-8a1f3482d57c",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat_emoji1": {
+ "ver": "1.0.3",
+ "uuid": "680b9fb5-f40f-4b5f-8a1f-6dd65a0c5b94",
+ "rawTextureUuid": "2fd6b9fd-6fc7-4e08-abc6-8a1f3482d57c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 419,
+ "height": 60,
+ "rawWidth": 419,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chat_emojibg.png b/client/assets/resources/textures/chat/chat_emojibg.png
new file mode 100755
index 0000000..86b8265
Binary files /dev/null and b/client/assets/resources/textures/chat/chat_emojibg.png differ
diff --git a/client/assets/resources/textures/chat/chat_emojibg.png.meta b/client/assets/resources/textures/chat/chat_emojibg.png.meta
new file mode 100755
index 0000000..e347d0d
--- /dev/null
+++ b/client/assets/resources/textures/chat/chat_emojibg.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7b9b7f4f-c00c-40c8-8a27-4b92d9e20eb6",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat_emojibg": {
+ "ver": "1.0.3",
+ "uuid": "8ae39b2a-9963-42f5-8988-e5152803f870",
+ "rawTextureUuid": "7b9b7f4f-c00c-40c8-8a27-4b92d9e20eb6",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 798,
+ "height": 343,
+ "rawWidth": 798,
+ "rawHeight": 343,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chat_normol.png b/client/assets/resources/textures/chat/chat_normol.png
new file mode 100755
index 0000000..7a16fbd
Binary files /dev/null and b/client/assets/resources/textures/chat/chat_normol.png differ
diff --git a/client/assets/resources/textures/chat/chat_normol.png.meta b/client/assets/resources/textures/chat/chat_normol.png.meta
new file mode 100755
index 0000000..e7c2393
--- /dev/null
+++ b/client/assets/resources/textures/chat/chat_normol.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "1c41d745-c430-43f1-a4eb-7041f9084524",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat_normol": {
+ "ver": "1.0.3",
+ "uuid": "d0d50645-30a9-4207-9f58-ae6e0d360649",
+ "rawTextureUuid": "1c41d745-c430-43f1-a4eb-7041f9084524",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 399,
+ "height": 57,
+ "rawWidth": 399,
+ "rawHeight": 57,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chatbg_ld.png b/client/assets/resources/textures/chat/chatbg_ld.png
new file mode 100755
index 0000000..51cbbd4
Binary files /dev/null and b/client/assets/resources/textures/chat/chatbg_ld.png differ
diff --git a/client/assets/resources/textures/chat/chatbg_ld.png.meta b/client/assets/resources/textures/chat/chatbg_ld.png.meta
new file mode 100755
index 0000000..79540e2
--- /dev/null
+++ b/client/assets/resources/textures/chat/chatbg_ld.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "757141a1-2d34-4805-9151-2799f99b6ba8",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chatbg_ld": {
+ "ver": "1.0.3",
+ "uuid": "10b2f590-dd13-4057-9ea3-ac53c1487106",
+ "rawTextureUuid": "757141a1-2d34-4805-9151-2799f99b6ba8",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 120,
+ "height": 66,
+ "rawWidth": 120,
+ "rawHeight": 66,
+ "borderTop": 15,
+ "borderBottom": 30,
+ "borderLeft": 45,
+ "borderRight": 15,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chatbg_lt.png b/client/assets/resources/textures/chat/chatbg_lt.png
new file mode 100755
index 0000000..afa2d64
Binary files /dev/null and b/client/assets/resources/textures/chat/chatbg_lt.png differ
diff --git a/client/assets/resources/textures/chat/chatbg_lt.png.meta b/client/assets/resources/textures/chat/chatbg_lt.png.meta
new file mode 100755
index 0000000..6797687
--- /dev/null
+++ b/client/assets/resources/textures/chat/chatbg_lt.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "53ca47b4-0893-427c-8f32-af077874b300",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chatbg_lt": {
+ "ver": "1.0.3",
+ "uuid": "db2e469d-64f7-4fb2-b62d-bf54447a517e",
+ "rawTextureUuid": "53ca47b4-0893-427c-8f32-af077874b300",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 138,
+ "height": 66,
+ "rawWidth": 138,
+ "rawHeight": 66,
+ "borderTop": 30,
+ "borderBottom": 15,
+ "borderLeft": 45,
+ "borderRight": 15,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/chatbg_rd.png b/client/assets/resources/textures/chat/chatbg_rd.png
new file mode 100755
index 0000000..6e6c091
Binary files /dev/null and b/client/assets/resources/textures/chat/chatbg_rd.png differ
diff --git a/client/assets/resources/textures/chat/chatbg_rd.png.meta b/client/assets/resources/textures/chat/chatbg_rd.png.meta
new file mode 100755
index 0000000..4459fb3
--- /dev/null
+++ b/client/assets/resources/textures/chat/chatbg_rd.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "19e480fd-213d-4896-bf1c-c355851d83b4",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chatbg_rd": {
+ "ver": "1.0.3",
+ "uuid": "8d68fedf-6682-4a51-8977-b860121d0b71",
+ "rawTextureUuid": "19e480fd-213d-4896-bf1c-c355851d83b4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 156,
+ "height": 66,
+ "rawWidth": 156,
+ "rawHeight": 66,
+ "borderTop": 15,
+ "borderBottom": 30,
+ "borderLeft": 15,
+ "borderRight": 45,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/emoji_action_texture.plist b/client/assets/resources/textures/chat/emoji_action_texture.plist
new file mode 100755
index 0000000..1ea880c
--- /dev/null
+++ b/client/assets/resources/textures/chat/emoji_action_texture.plist
@@ -0,0 +1,973 @@
+
+
+
+
+ frames
+
+ angry0.png
+
+ frame
+ {{1232,331},{112,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,116}
+
+ angry1.png
+
+ frame
+ {{1265,152},{112,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,116}
+
+ angry2.png
+
+ frame
+ {{1284,0},{112,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,116}
+
+ angry3.png
+
+ frame
+ {{1151,804},{112,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,116}
+
+ angry4.png
+
+ frame
+ {{1163,650},{112,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,116}
+
+ angry5.png
+
+ frame
+ {{1252,447},{112,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,116}
+
+ angry6.png
+
+ frame
+ {{1344,268},{112,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,116}
+
+ angry7.png
+
+ frame
+ {{1377,116},{112,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,116}
+
+ fennu0.png
+
+ frame
+ {{757,0},{108,140}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {108,140}
+
+ fennu1.png
+
+ frame
+ {{556,758},{108,140}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {108,140}
+
+ fennu2.png
+
+ frame
+ {{641,633},{108,140}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {108,140}
+
+ han0.png
+
+ frame
+ {{556,898},{115,129}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {115,129}
+
+ han1.png
+
+ frame
+ {{664,741},{115,129}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {115,129}
+
+ happy0.png
+
+ frame
+ {{1052,683},{111,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {111,121}
+
+ happy1.png
+
+ frame
+ {{1141,529},{111,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {111,121}
+
+ huaixiao0.png
+
+ frame
+ {{384,258},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ huaixiao1.png
+
+ frame
+ {{401,383},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ huaixiao2.png
+
+ frame
+ {{508,258},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ huaixiao3.png
+
+ frame
+ {{401,508},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ huaixiao4.png
+
+ frame
+ {{517,633},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ huaixiao5.png
+
+ frame
+ {{525,383},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ huaixiao6.png
+
+ frame
+ {{525,508},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ huaixiao7.png
+
+ frame
+ {{512,0},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ huaixiao8.png
+
+ frame
+ {{512,125},{125,124}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {125,124}
+
+ jiong0.png
+
+ frame
+ {{0,0},{147,135}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {147,135}
+
+ jiong1.png
+
+ frame
+ {{0,147},{147,135}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {147,135}
+
+ jiong2.png
+
+ frame
+ {{0,294},{147,135}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {147,135}
+
+ jiong3.png
+
+ frame
+ {{0,441},{147,135}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {147,135}
+
+ jiong4.png
+
+ frame
+ {{0,588},{147,135}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {147,135}
+
+ jiong5.png
+
+ frame
+ {{0,735},{147,135}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {147,135}
+
+ lihai0.png
+
+ frame
+ {{995,197},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai1.png
+
+ frame
+ {{1042,89},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai10.png
+
+ frame
+ {{781,581},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai11.png
+
+ frame
+ {{871,581},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai12.png
+
+ frame
+ {{900,733},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai2.png
+
+ frame
+ {{928,441},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai3.png
+
+ frame
+ {{1049,349},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai4.png
+
+ frame
+ {{1085,179},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai5.png
+
+ frame
+ {{1175,179},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai6.png
+
+ frame
+ {{1194,0},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai7.png
+
+ frame
+ {{961,531},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai8.png
+
+ frame
+ {{1051,531},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ lihai9.png
+
+ frame
+ {{1080,439},{90,152}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {90,152}
+
+ se0.png
+
+ frame
+ {{884,108},{89,158}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {89,158}
+
+ se1.png
+
+ frame
+ {{897,0},{89,158}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {89,158}
+
+ se2.png
+
+ frame
+ {{770,492},{89,158}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {89,158}
+
+ se3.png
+
+ frame
+ {{891,352},{89,158}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {89,158}
+
+ shaoxiang0.png
+
+ frame
+ {{135,760},{121,127}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {121,127}
+
+ shaoxiang1.png
+
+ frame
+ {{262,760},{121,127}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {121,127}
+
+ shaoxiang2.png
+
+ frame
+ {{632,250},{121,127}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {121,127}
+
+ shaoxiang3.png
+
+ frame
+ {{636,0},{121,127}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {121,127}
+
+ shaoxiang4.png
+
+ frame
+ {{636,127},{121,127}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {121,127}
+
+ shihua0.png
+
+ frame
+ {{1396,0},{109,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {109,116}
+
+ shihua1.png
+
+ frame
+ {{1263,766},{109,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {109,116}
+
+ shihua2.png
+
+ frame
+ {{1263,882},{109,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {109,116}
+
+ shihua3.png
+
+ frame
+ {{1275,563},{109,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {109,116}
+
+ shihua4.png
+
+ frame
+ {{1364,384},{109,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {109,116}
+
+ shihua5.png
+
+ frame
+ {{1456,232},{109,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {109,116}
+
+ sleep0.png
+
+ frame
+ {{135,486},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ sleep1.png
+
+ frame
+ {{135,623},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ sleep2.png
+
+ frame
+ {{162,881},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ sleep3.png
+
+ frame
+ {{295,881},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ sleep4.png
+
+ frame
+ {{251,0},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ sleep5.png
+
+ frame
+ {{251,137},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ sleep6.png
+
+ frame
+ {{251,274},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ sleep7.png
+
+ frame
+ {{268,411},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ sleep8.png
+
+ frame
+ {{268,548},{133,137}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {133,137}
+
+ smaile0.png
+
+ frame
+ {{685,870},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ smaile1.png
+
+ frame
+ {{779,741},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ smaile2.png
+
+ frame
+ {{806,863},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ smaile3.png
+
+ frame
+ {{649,377},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ smaile4.png
+
+ frame
+ {{753,248},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ smaile5.png
+
+ frame
+ {{763,108},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ smaile6.png
+
+ frame
+ {{649,499},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ smaile7.png
+
+ frame
+ {{770,370},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ smaile8.png
+
+ frame
+ {{874,230},{122,121}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {122,121}
+
+ touxiang0.png
+
+ frame
+ {{0,882},{162,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {162,116}
+
+ touxiang1.png
+
+ frame
+ {{135,0},{162,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {162,116}
+
+ touxiang2.png
+
+ frame
+ {{135,162},{162,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {162,116}
+
+ touxiang3.png
+
+ frame
+ {{135,324},{162,116}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {162,116}
+
+ yun0.png
+
+ frame
+ {{389,685},{128,129}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {128,129}
+
+ yun1.png
+
+ frame
+ {{428,814},{128,129}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {128,129}
+
+ yun2.png
+
+ frame
+ {{384,0},{128,129}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {128,129}
+
+ yun3.png
+
+ frame
+ {{384,129},{128,129}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {128,129}
+
+ zhiya0.png
+
+ frame
+ {{927,823},{112,120}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,120}
+
+ zhiya1.png
+
+ frame
+ {{1039,823},{112,120}}
+ offset
+ {0,0}
+ rotated
+
+ sourceSize
+ {112,120}
+
+
+ metadata
+
+ format
+ 2
+ textureFileName
+ emoji_action_texture.png
+ realTextureFileName
+ emoji_action_texture.png
+ size
+ {2048,1024}
+
+ texture
+
+ width
+ 2048
+ height
+ 1024
+
+
+
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/emoji_action_texture.plist.meta b/client/assets/resources/textures/chat/emoji_action_texture.plist.meta
new file mode 100755
index 0000000..f955306
--- /dev/null
+++ b/client/assets/resources/textures/chat/emoji_action_texture.plist.meta
@@ -0,0 +1,1904 @@
+{
+ "ver": "1.2.4",
+ "uuid": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "size": {
+ "width": 2048,
+ "height": 1024
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "angry0.png": {
+ "ver": "1.0.3",
+ "uuid": "8fe224e5-640d-4a87-99b6-fa1e261713bf",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1232,
+ "trimY": 331,
+ "width": 112,
+ "height": 116,
+ "rawWidth": 112,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "angry1.png": {
+ "ver": "1.0.3",
+ "uuid": "e88648aa-c921-4c4c-a071-9ef8ea95a262",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1265,
+ "trimY": 152,
+ "width": 112,
+ "height": 116,
+ "rawWidth": 112,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "angry2.png": {
+ "ver": "1.0.3",
+ "uuid": "f4a71a07-1bc0-459d-8e9a-07a7ee56485a",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1284,
+ "trimY": 0,
+ "width": 112,
+ "height": 116,
+ "rawWidth": 112,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "angry3.png": {
+ "ver": "1.0.3",
+ "uuid": "43cf194b-951f-41d2-abf8-4b00596fc99c",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1151,
+ "trimY": 804,
+ "width": 112,
+ "height": 116,
+ "rawWidth": 112,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "angry4.png": {
+ "ver": "1.0.3",
+ "uuid": "0c68b464-2b10-4d64-a025-e93952845161",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1163,
+ "trimY": 650,
+ "width": 112,
+ "height": 116,
+ "rawWidth": 112,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "angry5.png": {
+ "ver": "1.0.3",
+ "uuid": "7411c09d-2f89-4202-9d7a-1101493513d4",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1252,
+ "trimY": 447,
+ "width": 112,
+ "height": 116,
+ "rawWidth": 112,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "angry6.png": {
+ "ver": "1.0.3",
+ "uuid": "1c88086c-8bdc-4480-b651-82a71273f079",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1344,
+ "trimY": 268,
+ "width": 112,
+ "height": 116,
+ "rawWidth": 112,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "angry7.png": {
+ "ver": "1.0.3",
+ "uuid": "574a6b87-40f5-467f-9bd4-5decd2e86138",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1377,
+ "trimY": 116,
+ "width": 112,
+ "height": 116,
+ "rawWidth": 112,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "fennu0.png": {
+ "ver": "1.0.3",
+ "uuid": "74885e9d-0ba7-4c31-ad8a-2f5a2b4fc6e7",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 757,
+ "trimY": 0,
+ "width": 108,
+ "height": 140,
+ "rawWidth": 108,
+ "rawHeight": 140,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "fennu1.png": {
+ "ver": "1.0.3",
+ "uuid": "443c94c6-7c19-47d2-afea-91a6c097f7a6",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 556,
+ "trimY": 758,
+ "width": 108,
+ "height": 140,
+ "rawWidth": 108,
+ "rawHeight": 140,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "fennu2.png": {
+ "ver": "1.0.3",
+ "uuid": "ec7d16ec-e9ab-4bde-aded-feb81e933c40",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 641,
+ "trimY": 633,
+ "width": 108,
+ "height": 140,
+ "rawWidth": 108,
+ "rawHeight": 140,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "han0.png": {
+ "ver": "1.0.3",
+ "uuid": "cc85a55a-6a5f-4376-a1e7-9def6d14f73b",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 556,
+ "trimY": 898,
+ "width": 115,
+ "height": 129,
+ "rawWidth": 115,
+ "rawHeight": 129,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "han1.png": {
+ "ver": "1.0.3",
+ "uuid": "37d4ee65-bd1a-47ae-be4d-eddc881e8ff0",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 664,
+ "trimY": 741,
+ "width": 115,
+ "height": 129,
+ "rawWidth": 115,
+ "rawHeight": 129,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "happy0.png": {
+ "ver": "1.0.3",
+ "uuid": "092833c8-627a-4f92-9774-83e743083685",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1052,
+ "trimY": 683,
+ "width": 111,
+ "height": 121,
+ "rawWidth": 111,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "happy1.png": {
+ "ver": "1.0.3",
+ "uuid": "5c72c12b-d37a-47aa-8a04-faa20f4d8be0",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1141,
+ "trimY": 529,
+ "width": 111,
+ "height": 121,
+ "rawWidth": 111,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao0.png": {
+ "ver": "1.0.3",
+ "uuid": "59bbd743-7bfd-42bc-84d3-d0bb0898bea5",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 384,
+ "trimY": 258,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao1.png": {
+ "ver": "1.0.3",
+ "uuid": "7fd48fa0-f426-4a16-8ffa-35093afdef59",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 401,
+ "trimY": 383,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao2.png": {
+ "ver": "1.0.3",
+ "uuid": "b412c14f-56c7-4725-8896-d342425609bd",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 508,
+ "trimY": 258,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao3.png": {
+ "ver": "1.0.3",
+ "uuid": "73c15f0e-7dc2-4002-b206-11fef2951af3",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 401,
+ "trimY": 508,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao4.png": {
+ "ver": "1.0.3",
+ "uuid": "02fb2d75-6aff-4e2f-b971-ecc8a65de7a5",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 517,
+ "trimY": 633,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao5.png": {
+ "ver": "1.0.3",
+ "uuid": "b460ae13-6304-4916-a065-092f5544ae00",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 525,
+ "trimY": 383,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao6.png": {
+ "ver": "1.0.3",
+ "uuid": "caae3f7d-5afc-40df-b058-2c229216895e",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 525,
+ "trimY": 508,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao7.png": {
+ "ver": "1.0.3",
+ "uuid": "ebe3fd18-d11e-449e-a9d7-f90daacfb94b",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 512,
+ "trimY": 0,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huaixiao8.png": {
+ "ver": "1.0.3",
+ "uuid": "ecec0041-4528-48f0-8b08-49f5358014b8",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 512,
+ "trimY": 125,
+ "width": 125,
+ "height": 124,
+ "rawWidth": 125,
+ "rawHeight": 124,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jiong0.png": {
+ "ver": "1.0.3",
+ "uuid": "3d241371-739e-4441-963c-b0159a01a19e",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 147,
+ "height": 135,
+ "rawWidth": 147,
+ "rawHeight": 135,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jiong1.png": {
+ "ver": "1.0.3",
+ "uuid": "5dec5a15-1c35-46ca-94a1-df6f0d024e29",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 147,
+ "width": 147,
+ "height": 135,
+ "rawWidth": 147,
+ "rawHeight": 135,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jiong2.png": {
+ "ver": "1.0.3",
+ "uuid": "dee9b327-1443-40c8-ab14-76110c4bae92",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 294,
+ "width": 147,
+ "height": 135,
+ "rawWidth": 147,
+ "rawHeight": 135,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jiong3.png": {
+ "ver": "1.0.3",
+ "uuid": "04ddd588-57c3-4d45-8322-0bb2eb8e0dd1",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 441,
+ "width": 147,
+ "height": 135,
+ "rawWidth": 147,
+ "rawHeight": 135,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jiong4.png": {
+ "ver": "1.0.3",
+ "uuid": "7635d991-faef-4770-bd40-3a3eebb3b281",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 588,
+ "width": 147,
+ "height": 135,
+ "rawWidth": 147,
+ "rawHeight": 135,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jiong5.png": {
+ "ver": "1.0.3",
+ "uuid": "4cf4ed66-5b23-4410-ad0e-ddeac313e067",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 735,
+ "width": 147,
+ "height": 135,
+ "rawWidth": 147,
+ "rawHeight": 135,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai0.png": {
+ "ver": "1.0.3",
+ "uuid": "d79c5202-76c4-4caa-938e-36a9452f100b",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 995,
+ "trimY": 197,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai1.png": {
+ "ver": "1.0.3",
+ "uuid": "de0c43c2-ba63-44a8-b2e8-ace6b0d571ab",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1042,
+ "trimY": 89,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai10.png": {
+ "ver": "1.0.3",
+ "uuid": "54a6caf2-73d4-4f69-a6dd-507e00f7539f",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 781,
+ "trimY": 581,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai11.png": {
+ "ver": "1.0.3",
+ "uuid": "006c6abe-45c5-421e-be27-44d827370cc9",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 871,
+ "trimY": 581,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai12.png": {
+ "ver": "1.0.3",
+ "uuid": "7ecd578f-9f4e-4b1b-aa7f-ca8ca0e2e7c0",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 900,
+ "trimY": 733,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai2.png": {
+ "ver": "1.0.3",
+ "uuid": "07ef7eba-7d2c-416f-8dc5-80b50fea62e3",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 928,
+ "trimY": 441,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai3.png": {
+ "ver": "1.0.3",
+ "uuid": "789d279c-3505-47f1-aff4-62d2cd22ad66",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1049,
+ "trimY": 349,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai4.png": {
+ "ver": "1.0.3",
+ "uuid": "c247a0e4-43d3-4d92-a51a-6ed4c7a8c040",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1085,
+ "trimY": 179,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai5.png": {
+ "ver": "1.0.3",
+ "uuid": "e8eda776-a770-42ff-bd4b-1ddaa5aac8d8",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1175,
+ "trimY": 179,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai6.png": {
+ "ver": "1.0.3",
+ "uuid": "cdb95d9b-b7ae-4d5d-bd67-fa757a4c282d",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1194,
+ "trimY": 0,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai7.png": {
+ "ver": "1.0.3",
+ "uuid": "cf1eac64-de9c-4dd6-9a26-a417abeb55e1",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 961,
+ "trimY": 531,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai8.png": {
+ "ver": "1.0.3",
+ "uuid": "1ca0ad3c-f918-44f8-b146-9c3afd14da18",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1051,
+ "trimY": 531,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "lihai9.png": {
+ "ver": "1.0.3",
+ "uuid": "f185a906-ccba-4a6e-9f1d-fd84839c25e8",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1080,
+ "trimY": 439,
+ "width": 90,
+ "height": 152,
+ "rawWidth": 90,
+ "rawHeight": 152,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "se0.png": {
+ "ver": "1.0.3",
+ "uuid": "fb284fb4-227c-4d21-bc7c-510f804fa112",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 884,
+ "trimY": 108,
+ "width": 89,
+ "height": 158,
+ "rawWidth": 89,
+ "rawHeight": 158,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "se1.png": {
+ "ver": "1.0.3",
+ "uuid": "b1b5f887-6e69-4701-b38c-b25252c3a569",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 897,
+ "trimY": 0,
+ "width": 89,
+ "height": 158,
+ "rawWidth": 89,
+ "rawHeight": 158,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "se2.png": {
+ "ver": "1.0.3",
+ "uuid": "0742b288-ef58-49da-aa18-226ca275227f",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 770,
+ "trimY": 492,
+ "width": 89,
+ "height": 158,
+ "rawWidth": 89,
+ "rawHeight": 158,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "se3.png": {
+ "ver": "1.0.3",
+ "uuid": "721fb52f-dc4f-48e0-b583-43fb72c4b452",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 891,
+ "trimY": 352,
+ "width": 89,
+ "height": 158,
+ "rawWidth": 89,
+ "rawHeight": 158,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shaoxiang0.png": {
+ "ver": "1.0.3",
+ "uuid": "d3d93b91-5ef4-40df-9456-d6915b2098a5",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 135,
+ "trimY": 760,
+ "width": 121,
+ "height": 127,
+ "rawWidth": 121,
+ "rawHeight": 127,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shaoxiang1.png": {
+ "ver": "1.0.3",
+ "uuid": "1272c881-cc49-4cca-be3f-1dfd7be3a100",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 262,
+ "trimY": 760,
+ "width": 121,
+ "height": 127,
+ "rawWidth": 121,
+ "rawHeight": 127,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shaoxiang2.png": {
+ "ver": "1.0.3",
+ "uuid": "31e651f0-4cf7-4da8-a63c-d112bfb9f786",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 632,
+ "trimY": 250,
+ "width": 121,
+ "height": 127,
+ "rawWidth": 121,
+ "rawHeight": 127,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shaoxiang3.png": {
+ "ver": "1.0.3",
+ "uuid": "f8357817-9926-4db9-a88c-9a171b5d3fea",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 636,
+ "trimY": 0,
+ "width": 121,
+ "height": 127,
+ "rawWidth": 121,
+ "rawHeight": 127,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shaoxiang4.png": {
+ "ver": "1.0.3",
+ "uuid": "1be49286-2bf6-4081-9470-97cad682f5f9",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 636,
+ "trimY": 127,
+ "width": 121,
+ "height": 127,
+ "rawWidth": 121,
+ "rawHeight": 127,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shihua0.png": {
+ "ver": "1.0.3",
+ "uuid": "9c24b693-4be6-4fee-8fec-9614208b37fc",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1396,
+ "trimY": 0,
+ "width": 109,
+ "height": 116,
+ "rawWidth": 109,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shihua1.png": {
+ "ver": "1.0.3",
+ "uuid": "f2666293-f619-40bd-850e-04cb601c4f23",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1263,
+ "trimY": 766,
+ "width": 109,
+ "height": 116,
+ "rawWidth": 109,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shihua2.png": {
+ "ver": "1.0.3",
+ "uuid": "ecb7074a-215e-4245-976a-5e0669c94479",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1263,
+ "trimY": 882,
+ "width": 109,
+ "height": 116,
+ "rawWidth": 109,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shihua3.png": {
+ "ver": "1.0.3",
+ "uuid": "216ecf6c-1d78-4218-a52d-9ed7712b5831",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1275,
+ "trimY": 563,
+ "width": 109,
+ "height": 116,
+ "rawWidth": 109,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shihua4.png": {
+ "ver": "1.0.3",
+ "uuid": "e0906f59-9a5b-4b4a-9406-132008e36610",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1364,
+ "trimY": 384,
+ "width": 109,
+ "height": 116,
+ "rawWidth": 109,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shihua5.png": {
+ "ver": "1.0.3",
+ "uuid": "66b308cb-b553-47c2-a12c-21370349a729",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1456,
+ "trimY": 232,
+ "width": 109,
+ "height": 116,
+ "rawWidth": 109,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep0.png": {
+ "ver": "1.0.3",
+ "uuid": "cff26fca-aca8-4f1d-9486-ddb04669788b",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 135,
+ "trimY": 486,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep1.png": {
+ "ver": "1.0.3",
+ "uuid": "fd15829e-3860-49b5-9e85-909d58750275",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 135,
+ "trimY": 623,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep2.png": {
+ "ver": "1.0.3",
+ "uuid": "17ad7104-10d9-418c-96cc-0af9154385d4",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 162,
+ "trimY": 881,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep3.png": {
+ "ver": "1.0.3",
+ "uuid": "3910b006-24a5-4e8b-9c51-4592b88ad2c7",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 295,
+ "trimY": 881,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep4.png": {
+ "ver": "1.0.3",
+ "uuid": "16228643-2a90-4cd0-b781-45f6bdc338d6",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 251,
+ "trimY": 0,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep5.png": {
+ "ver": "1.0.3",
+ "uuid": "a8b8cff8-f7ee-405a-905d-00ee80a86c86",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 251,
+ "trimY": 137,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep6.png": {
+ "ver": "1.0.3",
+ "uuid": "073df302-1989-4307-aba9-73f2b6364525",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 251,
+ "trimY": 274,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep7.png": {
+ "ver": "1.0.3",
+ "uuid": "1132394a-d9cc-4421-8e45-fec617cde021",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 268,
+ "trimY": 411,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sleep8.png": {
+ "ver": "1.0.3",
+ "uuid": "6f711013-a943-4391-a5e2-5dc5ee2c43fe",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 268,
+ "trimY": 548,
+ "width": 133,
+ "height": 137,
+ "rawWidth": 133,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile0.png": {
+ "ver": "1.0.3",
+ "uuid": "c0371335-9e49-4fb9-93c3-706e70fa6816",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 685,
+ "trimY": 870,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile1.png": {
+ "ver": "1.0.3",
+ "uuid": "225cd024-e1df-4ebc-8769-ef31947d3051",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 779,
+ "trimY": 741,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile2.png": {
+ "ver": "1.0.3",
+ "uuid": "8192a3ff-7ebf-4298-a972-68a6920c2616",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 806,
+ "trimY": 863,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile3.png": {
+ "ver": "1.0.3",
+ "uuid": "f89760d5-2554-46f1-ab00-c302382d8f11",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 649,
+ "trimY": 377,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile4.png": {
+ "ver": "1.0.3",
+ "uuid": "5683f3a3-b0ef-4b92-b5a4-643a3aa10911",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 753,
+ "trimY": 248,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile5.png": {
+ "ver": "1.0.3",
+ "uuid": "9e65e011-14ff-48cd-935d-4cda9c43c9a3",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 763,
+ "trimY": 108,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile6.png": {
+ "ver": "1.0.3",
+ "uuid": "7e91eac6-b184-45c2-82c6-92362176638e",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 649,
+ "trimY": 499,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile7.png": {
+ "ver": "1.0.3",
+ "uuid": "e912bdb2-f94f-4721-b384-7c9c4e6ab229",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 770,
+ "trimY": 370,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "smaile8.png": {
+ "ver": "1.0.3",
+ "uuid": "b44e445a-e2fa-4326-9080-22ffacd9208e",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 874,
+ "trimY": 230,
+ "width": 122,
+ "height": 121,
+ "rawWidth": 122,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "touxiang0.png": {
+ "ver": "1.0.3",
+ "uuid": "50500b39-b2bb-4c1e-838b-b7874b8370a1",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 882,
+ "width": 162,
+ "height": 116,
+ "rawWidth": 162,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "touxiang1.png": {
+ "ver": "1.0.3",
+ "uuid": "895585dc-65c0-41a6-a6c6-fff6ec95714b",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 135,
+ "trimY": 0,
+ "width": 162,
+ "height": 116,
+ "rawWidth": 162,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "touxiang2.png": {
+ "ver": "1.0.3",
+ "uuid": "dc1a17e2-17f0-4cae-b88f-af8176f08e24",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 135,
+ "trimY": 162,
+ "width": 162,
+ "height": 116,
+ "rawWidth": 162,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "touxiang3.png": {
+ "ver": "1.0.3",
+ "uuid": "b2f29176-11c6-44dd-8c7a-0638772e4ead",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 135,
+ "trimY": 324,
+ "width": 162,
+ "height": 116,
+ "rawWidth": 162,
+ "rawHeight": 116,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "yun0.png": {
+ "ver": "1.0.3",
+ "uuid": "009b55b1-565e-483a-8a5c-f9195d4cfa76",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 389,
+ "trimY": 685,
+ "width": 128,
+ "height": 129,
+ "rawWidth": 128,
+ "rawHeight": 129,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "yun1.png": {
+ "ver": "1.0.3",
+ "uuid": "7e7a797e-7896-4577-92a9-7c39115c97cd",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 428,
+ "trimY": 814,
+ "width": 128,
+ "height": 129,
+ "rawWidth": 128,
+ "rawHeight": 129,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "yun2.png": {
+ "ver": "1.0.3",
+ "uuid": "63c63e1a-d30c-450a-8795-e60c8408f715",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 384,
+ "trimY": 0,
+ "width": 128,
+ "height": 129,
+ "rawWidth": 128,
+ "rawHeight": 129,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "yun3.png": {
+ "ver": "1.0.3",
+ "uuid": "4327d1d7-afcc-49af-b6e0-f0abd482649c",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 384,
+ "trimY": 129,
+ "width": 128,
+ "height": 129,
+ "rawWidth": 128,
+ "rawHeight": 129,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "zhiya0.png": {
+ "ver": "1.0.3",
+ "uuid": "48285984-e828-4033-8a54-dd4e5654f01e",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 927,
+ "trimY": 823,
+ "width": 112,
+ "height": 120,
+ "rawWidth": 112,
+ "rawHeight": 120,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "zhiya1.png": {
+ "ver": "1.0.3",
+ "uuid": "5c8f3de3-2dba-4e42-b354-d776cadfa12b",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1039,
+ "trimY": 823,
+ "width": 112,
+ "height": 120,
+ "rawWidth": 112,
+ "rawHeight": 120,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/emoji_action_texture.png b/client/assets/resources/textures/chat/emoji_action_texture.png
new file mode 100755
index 0000000..bcbba79
Binary files /dev/null and b/client/assets/resources/textures/chat/emoji_action_texture.png differ
diff --git a/client/assets/resources/textures/chat/emoji_action_texture.png.meta b/client/assets/resources/textures/chat/emoji_action_texture.png.meta
new file mode 100755
index 0000000..e94ac4e
--- /dev/null
+++ b/client/assets/resources/textures/chat/emoji_action_texture.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "emoji_action_texture": {
+ "ver": "1.0.3",
+ "uuid": "cdffd874-3c5c-4b12-9512-b08a00b6b00c",
+ "rawTextureUuid": "2b6ea8a8-0ec2-4eb9-8013-1badbd3fbed2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -241.5,
+ "offsetY": 3,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1565,
+ "height": 1018,
+ "rawWidth": 2048,
+ "rawHeight": 1024,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/input.png b/client/assets/resources/textures/chat/input.png
new file mode 100755
index 0000000..9d45f07
Binary files /dev/null and b/client/assets/resources/textures/chat/input.png differ
diff --git a/client/assets/resources/textures/chat/input.png.meta b/client/assets/resources/textures/chat/input.png.meta
new file mode 100755
index 0000000..42ffec9
--- /dev/null
+++ b/client/assets/resources/textures/chat/input.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4d07ed2e-7095-48cb-b70b-cd3c6f5919af",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "input": {
+ "ver": "1.0.3",
+ "uuid": "3d29250c-190a-49f1-9ca5-21b78b2f378a",
+ "rawTextureUuid": "4d07ed2e-7095-48cb-b70b-cd3c6f5919af",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 660,
+ "height": 60,
+ "rawWidth": 660,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/playerinfoline.png b/client/assets/resources/textures/chat/playerinfoline.png
new file mode 100755
index 0000000..8bff128
Binary files /dev/null and b/client/assets/resources/textures/chat/playerinfoline.png differ
diff --git a/client/assets/resources/textures/chat/playerinfoline.png.meta b/client/assets/resources/textures/chat/playerinfoline.png.meta
new file mode 100755
index 0000000..98a964b
--- /dev/null
+++ b/client/assets/resources/textures/chat/playerinfoline.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "9966f61d-2bdf-497a-94d3-e3988487d269",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "playerinfoline": {
+ "ver": "1.0.3",
+ "uuid": "feeb6b81-8498-4125-94ce-1528510279c3",
+ "rawTextureUuid": "9966f61d-2bdf-497a-94d3-e3988487d269",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1133,
+ "height": 3,
+ "rawWidth": 1133,
+ "rawHeight": 3,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 300,
+ "borderRight": 300,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/send.png b/client/assets/resources/textures/chat/send.png
new file mode 100755
index 0000000..b386e0b
Binary files /dev/null and b/client/assets/resources/textures/chat/send.png differ
diff --git a/client/assets/resources/textures/chat/send.png.meta b/client/assets/resources/textures/chat/send.png.meta
new file mode 100755
index 0000000..70c0ce0
--- /dev/null
+++ b/client/assets/resources/textures/chat/send.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a71de07d-edc1-4176-96cc-2ddb445b522d",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "send": {
+ "ver": "1.0.3",
+ "uuid": "a42cfa3a-43b6-49f1-be9b-8839596e9976",
+ "rawTextureUuid": "a71de07d-edc1-4176-96cc-2ddb445b522d",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 1,
+ "trimY": 1,
+ "width": 100,
+ "height": 50,
+ "rawWidth": 102,
+ "rawHeight": 51,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/send_h.png b/client/assets/resources/textures/chat/send_h.png
new file mode 100755
index 0000000..4dfc011
Binary files /dev/null and b/client/assets/resources/textures/chat/send_h.png differ
diff --git a/client/assets/resources/textures/chat/send_h.png.meta b/client/assets/resources/textures/chat/send_h.png.meta
new file mode 100755
index 0000000..a918a67
--- /dev/null
+++ b/client/assets/resources/textures/chat/send_h.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "36d8be20-9137-46d0-8274-dfe1473f90af",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "send_h": {
+ "ver": "1.0.3",
+ "uuid": "1a69f4e8-766e-4685-bb19-a37cd1138f67",
+ "rawTextureUuid": "36d8be20-9137-46d0-8274-dfe1473f90af",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 100,
+ "height": 51,
+ "rawWidth": 102,
+ "rawHeight": 51,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/chat/yellowBg.png b/client/assets/resources/textures/chat/yellowBg.png
new file mode 100755
index 0000000..7032d60
Binary files /dev/null and b/client/assets/resources/textures/chat/yellowBg.png differ
diff --git a/client/assets/resources/textures/chat/yellowBg.png.meta b/client/assets/resources/textures/chat/yellowBg.png.meta
new file mode 100755
index 0000000..09054f0
--- /dev/null
+++ b/client/assets/resources/textures/chat/yellowBg.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "cadcb5af-c7f1-4815-b57e-52289bafc0e8",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "yellowBg": {
+ "ver": "1.0.3",
+ "uuid": "c0e07b21-f5c5-4c49-ba3b-2240d9bde094",
+ "rawTextureUuid": "cadcb5af-c7f1-4815-b57e-52289bafc0e8",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 640,
+ "height": 569,
+ "rawWidth": 640,
+ "rawHeight": 569,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/hall.meta b/client/assets/resources/textures/hall.meta
new file mode 100755
index 0000000..1994ed0
--- /dev/null
+++ b/client/assets/resources/textures/hall.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "724d46da-53ce-4447-bab5-5f2ef9e75702",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/hall/fangkaxiaobeijing.png b/client/assets/resources/textures/hall/fangkaxiaobeijing.png
new file mode 100755
index 0000000..45971c0
Binary files /dev/null and b/client/assets/resources/textures/hall/fangkaxiaobeijing.png differ
diff --git a/client/assets/resources/textures/hall/fangkaxiaobeijing.png.meta b/client/assets/resources/textures/hall/fangkaxiaobeijing.png.meta
new file mode 100755
index 0000000..1ba2f63
--- /dev/null
+++ b/client/assets/resources/textures/hall/fangkaxiaobeijing.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5eec799d-19eb-4553-9382-2ac0e65e63be",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "fangkaxiaobeijing": {
+ "ver": "1.0.3",
+ "uuid": "56be11b4-9c6a-4350-b4ab-d660a127e72e",
+ "rawTextureUuid": "5eec799d-19eb-4553-9382-2ac0e65e63be",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 255,
+ "height": 45,
+ "rawWidth": 255,
+ "rawHeight": 45,
+ "borderTop": 20,
+ "borderBottom": 20,
+ "borderLeft": 25,
+ "borderRight": 25,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/hall/z_datingtouxiang.png b/client/assets/resources/textures/hall/z_datingtouxiang.png
new file mode 100755
index 0000000..5b21896
Binary files /dev/null and b/client/assets/resources/textures/hall/z_datingtouxiang.png differ
diff --git a/client/assets/resources/textures/hall/z_datingtouxiang.png.meta b/client/assets/resources/textures/hall/z_datingtouxiang.png.meta
new file mode 100755
index 0000000..e073a79
--- /dev/null
+++ b/client/assets/resources/textures/hall/z_datingtouxiang.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d4b0d222-3ed9-4e3c-b4ac-e26e001af5d1",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "z_datingtouxiang": {
+ "ver": "1.0.3",
+ "uuid": "43554c84-ff61-4bb6-aa29-ed8bbc83b320",
+ "rawTextureUuid": "d4b0d222-3ed9-4e3c-b4ac-e26e001af5d1",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 83,
+ "height": 85,
+ "rawWidth": 83,
+ "rawHeight": 85,
+ "borderTop": 30,
+ "borderBottom": 30,
+ "borderLeft": 30,
+ "borderRight": 30,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images.meta b/client/assets/resources/textures/images.meta
new file mode 100755
index 0000000..ed905af
--- /dev/null
+++ b/client/assets/resources/textures/images.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "16d6efd0-000d-4669-8504-01d4a03b9cfc",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd.meta b/client/assets/resources/textures/images/GameEnd.meta
new file mode 100755
index 0000000..d50b034
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "2f4197dc-da64-4a36-9782-3c92d0de282d",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd1.png b/client/assets/resources/textures/images/GameEnd/GameEnd1.png
new file mode 100755
index 0000000..1502933
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd1.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd1.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd1.png.meta
new file mode 100755
index 0000000..cf68444
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "32edec6d-10ab-4b19-b78c-b07af6a8d309",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd1": {
+ "ver": "1.0.3",
+ "uuid": "58c53b75-bfa3-4b1a-b430-9eda7a788ee7",
+ "rawTextureUuid": "32edec6d-10ab-4b19-b78c-b07af6a8d309",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 78,
+ "height": 31,
+ "rawWidth": 78,
+ "rawHeight": 31,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd10.png b/client/assets/resources/textures/images/GameEnd/GameEnd10.png
new file mode 100755
index 0000000..63f82ca
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd10.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd10.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd10.png.meta
new file mode 100755
index 0000000..c8a0260
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd10.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "eade92b5-ca98-4158-be48-b64beb663745",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd10": {
+ "ver": "1.0.3",
+ "uuid": "ba272c1b-eb47-4939-9878-2971c91fa764",
+ "rawTextureUuid": "eade92b5-ca98-4158-be48-b64beb663745",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 102,
+ "height": 102,
+ "rawWidth": 102,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd11.png b/client/assets/resources/textures/images/GameEnd/GameEnd11.png
new file mode 100755
index 0000000..3ae5738
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd11.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd11.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd11.png.meta
new file mode 100755
index 0000000..8b3ca09
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd11.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "511f6292-b652-44ea-9a7f-37e3f501f558",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd11": {
+ "ver": "1.0.3",
+ "uuid": "db2e51a5-9511-4d64-ac51-951d80da0101",
+ "rawTextureUuid": "511f6292-b652-44ea-9a7f-37e3f501f558",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 135,
+ "height": 72,
+ "rawWidth": 135,
+ "rawHeight": 72,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd12.png b/client/assets/resources/textures/images/GameEnd/GameEnd12.png
new file mode 100755
index 0000000..57a8050
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd12.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd12.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd12.png.meta
new file mode 100755
index 0000000..11fa372
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd12.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "06882731-d0c2-4094-8309-1a95ee3f770b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd12": {
+ "ver": "1.0.3",
+ "uuid": "fe25f3b3-ab7c-48a6-ad17-56de32613c54",
+ "rawTextureUuid": "06882731-d0c2-4094-8309-1a95ee3f770b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 141,
+ "height": 77,
+ "rawWidth": 141,
+ "rawHeight": 77,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd13.png b/client/assets/resources/textures/images/GameEnd/GameEnd13.png
new file mode 100755
index 0000000..0368637
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd13.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd13.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd13.png.meta
new file mode 100755
index 0000000..256fb44
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd13.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "73b8f9f6-ac01-4db2-b9f8-25094db2ca37",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd13": {
+ "ver": "1.0.3",
+ "uuid": "a3b4e04d-1fbb-487e-9a70-18596c2a2239",
+ "rawTextureUuid": "73b8f9f6-ac01-4db2-b9f8-25094db2ca37",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 141,
+ "height": 71,
+ "rawWidth": 141,
+ "rawHeight": 71,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd14.png b/client/assets/resources/textures/images/GameEnd/GameEnd14.png
new file mode 100755
index 0000000..c7e000b
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd14.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd14.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd14.png.meta
new file mode 100755
index 0000000..eaff90b
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd14.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8c79a06a-a5d5-49d9-91f4-f77ac0ead2d2",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd14": {
+ "ver": "1.0.3",
+ "uuid": "5f2ac589-4aa8-49e4-b05e-250966238126",
+ "rawTextureUuid": "8c79a06a-a5d5-49d9-91f4-f77ac0ead2d2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 139,
+ "height": 72,
+ "rawWidth": 139,
+ "rawHeight": 72,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd15.png b/client/assets/resources/textures/images/GameEnd/GameEnd15.png
new file mode 100755
index 0000000..2b57478
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd15.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd15.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd15.png.meta
new file mode 100755
index 0000000..07b25f2
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd15.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0779fc13-7da0-47b5-8a18-ebbdad107f68",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd15": {
+ "ver": "1.0.3",
+ "uuid": "680dba2f-6219-495f-b96a-6b93e5bfc6be",
+ "rawTextureUuid": "0779fc13-7da0-47b5-8a18-ebbdad107f68",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 58,
+ "height": 44,
+ "rawWidth": 58,
+ "rawHeight": 44,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd16.png b/client/assets/resources/textures/images/GameEnd/GameEnd16.png
new file mode 100755
index 0000000..3e7d5a0
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd16.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd16.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd16.png.meta
new file mode 100755
index 0000000..10d67c3
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd16.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "b98dbea2-b71d-47ff-a447-8b94caef4c0f",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd16": {
+ "ver": "1.0.3",
+ "uuid": "03a988d2-a7c8-4c62-b205-5e38971143f4",
+ "rawTextureUuid": "b98dbea2-b71d-47ff-a447-8b94caef4c0f",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 65,
+ "height": 44,
+ "rawWidth": 65,
+ "rawHeight": 44,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd17.png b/client/assets/resources/textures/images/GameEnd/GameEnd17.png
new file mode 100755
index 0000000..8c5b20b
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd17.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd17.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd17.png.meta
new file mode 100755
index 0000000..58aa53c
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd17.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "82b137ab-75f8-44ab-b59a-a3e4082a3b96",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd17": {
+ "ver": "1.0.3",
+ "uuid": "97642bab-67c3-4371-aa43-b4c666583d36",
+ "rawTextureUuid": "82b137ab-75f8-44ab-b59a-a3e4082a3b96",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 64,
+ "height": 44,
+ "rawWidth": 64,
+ "rawHeight": 44,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd18.png b/client/assets/resources/textures/images/GameEnd/GameEnd18.png
new file mode 100755
index 0000000..e3b9d40
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd18.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd18.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd18.png.meta
new file mode 100755
index 0000000..5411a59
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd18.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "bf5b7d86-5a26-4ffd-9388-afbf458ed3b8",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd18": {
+ "ver": "1.0.3",
+ "uuid": "3dd40bbb-4cfc-430c-8f46-e9ea95313447",
+ "rawTextureUuid": "bf5b7d86-5a26-4ffd-9388-afbf458ed3b8",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 34,
+ "height": 34,
+ "rawWidth": 34,
+ "rawHeight": 34,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd19.jpg b/client/assets/resources/textures/images/GameEnd/GameEnd19.jpg
new file mode 100755
index 0000000..dc19a1a
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd19.jpg differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd19.jpg.meta b/client/assets/resources/textures/images/GameEnd/GameEnd19.jpg.meta
new file mode 100755
index 0000000..1883806
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd19.jpg.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "45035b82-8e37-4e81-b6bd-850bbcc12bff",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd19": {
+ "ver": "1.0.3",
+ "uuid": "5c16d753-6196-48e1-9f33-bba0dd6ed13d",
+ "rawTextureUuid": "45035b82-8e37-4e81-b6bd-850bbcc12bff",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd2.png b/client/assets/resources/textures/images/GameEnd/GameEnd2.png
new file mode 100755
index 0000000..66522ef
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd2.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd2.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd2.png.meta
new file mode 100755
index 0000000..c83f2fe
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4fc9dd40-3aff-41be-8ed8-c0ec66d3b912",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd2": {
+ "ver": "1.0.3",
+ "uuid": "b72b5f69-e7e2-4eb0-ae43-d668c5b4609a",
+ "rawTextureUuid": "4fc9dd40-3aff-41be-8ed8-c0ec66d3b912",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 265,
+ "height": 513,
+ "rawWidth": 265,
+ "rawHeight": 513,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd20.png b/client/assets/resources/textures/images/GameEnd/GameEnd20.png
new file mode 100755
index 0000000..6d9d245
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd20.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd20.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd20.png.meta
new file mode 100755
index 0000000..c2e5aa6
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd20.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "59606dc9-cba7-456d-b160-3ab40f13bc64",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd20": {
+ "ver": "1.0.3",
+ "uuid": "b092af06-2d62-4a4f-ae7c-103926cb8a53",
+ "rawTextureUuid": "59606dc9-cba7-456d-b160-3ab40f13bc64",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 97,
+ "height": 29,
+ "rawWidth": 97,
+ "rawHeight": 29,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd21.png b/client/assets/resources/textures/images/GameEnd/GameEnd21.png
new file mode 100755
index 0000000..4315e3e
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd21.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd21.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd21.png.meta
new file mode 100755
index 0000000..91d5a45
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd21.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3684adf2-1ddb-447f-8e3e-c01d6a5ab7a6",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd21": {
+ "ver": "1.0.3",
+ "uuid": "89f3e2ac-26c4-4ad2-8039-c54a4aede48f",
+ "rawTextureUuid": "3684adf2-1ddb-447f-8e3e-c01d6a5ab7a6",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 6,
+ "trimY": 1,
+ "width": 1269,
+ "height": 718,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd22.png b/client/assets/resources/textures/images/GameEnd/GameEnd22.png
new file mode 100755
index 0000000..5c140c6
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd22.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd22.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd22.png.meta
new file mode 100755
index 0000000..024c347
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd22.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "87cdd984-f534-476b-8234-fe302fe27acf",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd22": {
+ "ver": "1.0.3",
+ "uuid": "3eb6e700-3535-49a7-9513-008c83bf5452",
+ "rawTextureUuid": "87cdd984-f534-476b-8234-fe302fe27acf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 86,
+ "height": 86,
+ "rawWidth": 86,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd3.png b/client/assets/resources/textures/images/GameEnd/GameEnd3.png
new file mode 100755
index 0000000..de7d449
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd3.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd3.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd3.png.meta
new file mode 100755
index 0000000..db9601a
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "15f9d9e5-b7e6-4c46-a86e-0243d1db86e4",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd3": {
+ "ver": "1.0.3",
+ "uuid": "e252d253-751b-4c11-ac0d-879a48159947",
+ "rawTextureUuid": "15f9d9e5-b7e6-4c46-a86e-0243d1db86e4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 86,
+ "height": 85,
+ "rawWidth": 86,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd4.jpg b/client/assets/resources/textures/images/GameEnd/GameEnd4.jpg
new file mode 100755
index 0000000..15a702e
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd4.jpg differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd4.jpg.meta b/client/assets/resources/textures/images/GameEnd/GameEnd4.jpg.meta
new file mode 100755
index 0000000..0d2df52
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd4.jpg.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e9e283ed-db3a-4a45-926e-561c35529e91",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd4": {
+ "ver": "1.0.3",
+ "uuid": "61f45545-f8cb-461e-a7a4-0dc551d1d004",
+ "rawTextureUuid": "e9e283ed-db3a-4a45-926e-561c35529e91",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd5.png b/client/assets/resources/textures/images/GameEnd/GameEnd5.png
new file mode 100755
index 0000000..26d2836
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd5.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd5.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd5.png.meta
new file mode 100755
index 0000000..3773eb2
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4bd241ee-d125-4bf9-af53-6a5b734a07ae",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd5": {
+ "ver": "1.0.3",
+ "uuid": "cf878df7-9ee1-43b4-b87a-d6a457e4f8f6",
+ "rawTextureUuid": "4bd241ee-d125-4bf9-af53-6a5b734a07ae",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 64,
+ "height": 130,
+ "rawWidth": 64,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd6.png b/client/assets/resources/textures/images/GameEnd/GameEnd6.png
new file mode 100755
index 0000000..06e3df1
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd6.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd6.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd6.png.meta
new file mode 100755
index 0000000..d8d59bc
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "fd379b81-c82c-419c-b55a-7acd43dfbbf7",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd6": {
+ "ver": "1.0.3",
+ "uuid": "1517fd6b-e1d5-41e2-9ca6-c0e716735a4f",
+ "rawTextureUuid": "fd379b81-c82c-419c-b55a-7acd43dfbbf7",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 97,
+ "height": 29,
+ "rawWidth": 97,
+ "rawHeight": 29,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd7.png b/client/assets/resources/textures/images/GameEnd/GameEnd7.png
new file mode 100755
index 0000000..266011c
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd7.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd7.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd7.png.meta
new file mode 100755
index 0000000..cfeae32
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd7.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "1be0a452-6cb3-45ca-b8b7-a03aa0420e1e",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd7": {
+ "ver": "1.0.3",
+ "uuid": "4574e3dc-ca58-4a31-b973-9acfe4ef04f0",
+ "rawTextureUuid": "1be0a452-6cb3-45ca-b8b7-a03aa0420e1e",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 369,
+ "height": 68,
+ "rawWidth": 369,
+ "rawHeight": 68,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd8.png b/client/assets/resources/textures/images/GameEnd/GameEnd8.png
new file mode 100755
index 0000000..2618382
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd8.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd8.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd8.png.meta
new file mode 100755
index 0000000..a36b63f
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd8.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "17aea674-35a1-45fc-a43b-c0e84019cce8",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd8": {
+ "ver": "1.0.3",
+ "uuid": "cccb9d35-4492-48ef-87e1-e550adfca1c6",
+ "rawTextureUuid": "17aea674-35a1-45fc-a43b-c0e84019cce8",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 2,
+ "width": 292,
+ "height": 76,
+ "rawWidth": 292,
+ "rawHeight": 79,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd9.png b/client/assets/resources/textures/images/GameEnd/GameEnd9.png
new file mode 100755
index 0000000..3b2829f
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEnd9.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEnd9.png.meta b/client/assets/resources/textures/images/GameEnd/GameEnd9.png.meta
new file mode 100755
index 0000000..b5f550d
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEnd9.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "401e8fd9-514d-4deb-af53-8b98a8305867",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEnd9": {
+ "ver": "1.0.3",
+ "uuid": "d793451a-9795-447f-b8e6-00a2e2a17218",
+ "rawTextureUuid": "401e8fd9-514d-4deb-af53-8b98a8305867",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 102,
+ "height": 102,
+ "rawWidth": 102,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/GameEnd/GameEndHu.png b/client/assets/resources/textures/images/GameEnd/GameEndHu.png
new file mode 100755
index 0000000..1663fad
Binary files /dev/null and b/client/assets/resources/textures/images/GameEnd/GameEndHu.png differ
diff --git a/client/assets/resources/textures/images/GameEnd/GameEndHu.png.meta b/client/assets/resources/textures/images/GameEnd/GameEndHu.png.meta
new file mode 100755
index 0000000..1242f53
--- /dev/null
+++ b/client/assets/resources/textures/images/GameEnd/GameEndHu.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e01efad3-b4bb-4d7b-a66b-bb0ddb307fee",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "GameEndHu": {
+ "ver": "1.0.3",
+ "uuid": "86a5d0fd-9685-43d7-8d52-13c20033db5d",
+ "rawTextureUuid": "e01efad3-b4bb-4d7b-a66b-bb0ddb307fee",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -1,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 38,
+ "height": 44,
+ "rawWidth": 42,
+ "rawHeight": 44,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom.meta b/client/assets/resources/textures/images/JoinRoom.meta
new file mode 100755
index 0000000..12c1506
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "de4e092f-8a3e-45e0-9fae-6c2090367f10",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom.plist b/client/assets/resources/textures/images/JoinRoom.plist
new file mode 100755
index 0000000..14bb0a4
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom.plist
@@ -0,0 +1,347 @@
+
+
+
+
+ frames
+
+ Num1.png
+
+ frame
+ {{2,951},{257,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{257,87}}
+ sourceSize
+ {257,87}
+
+ Num10.png
+
+ frame
+ {{781,846},{248,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{248,87}}
+ sourceSize
+ {248,87}
+
+ Num11.png
+
+ frame
+ {{2,862},{257,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{257,87}}
+ sourceSize
+ {257,87}
+
+ Num12.png
+
+ frame
+ {{263,596},{259,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{259,87}}
+ sourceSize
+ {259,87}
+
+ Num13.png
+
+ frame
+ {{524,596},{257,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{257,87}}
+ sourceSize
+ {257,87}
+
+ Num14.png
+
+ frame
+ {{513,1037},{248,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{248,87}}
+ sourceSize
+ {248,87}
+
+ Num15.png
+
+ frame
+ {{2,685},{259,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{259,87}}
+ sourceSize
+ {259,87}
+
+ Num16.png
+
+ frame
+ {{522,772},{257,86}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{257,86}}
+ sourceSize
+ {257,86}
+
+ Num17.png
+
+ frame
+ {{870,524},{248,86}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{248,86}}
+ sourceSize
+ {248,86}
+
+ Num18.png
+
+ frame
+ {{2,774},{259,86}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{259,86}}
+ sourceSize
+ {259,86}
+
+ Num19.png
+
+ frame
+ {{261,949},{257,85}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{257,85}}
+ sourceSize
+ {257,85}
+
+ Num2.png
+
+ frame
+ {{522,860},{248,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{248,87}}
+ sourceSize
+ {248,87}
+
+ Num20.png
+
+ frame
+ {{870,774},{248,85}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{248,85}}
+ sourceSize
+ {248,85}
+
+ Num21.png
+
+ frame
+ {{2,1040},{259,85}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{259,85}}
+ sourceSize
+ {259,85}
+
+ Num22.png
+
+ frame
+ {{263,1036},{248,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{248,87}}
+ sourceSize
+ {248,87}
+
+ Num23.png
+
+ frame
+ {{263,685},{257,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{257,87}}
+ sourceSize
+ {257,87}
+
+ Num24.png
+
+ frame
+ {{849,2},{259,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{259,87}}
+ sourceSize
+ {259,87}
+
+ Num25.png
+
+ frame
+ {{2,2},{845,592}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{845,592}}
+ sourceSize
+ {845,592}
+
+ Num3.png
+
+ frame
+ {{2,596},{259,87}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{259,87}}
+ sourceSize
+ {259,87}
+
+ Num4.png
+
+ frame
+ {{263,774},{257,86}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{257,86}}
+ sourceSize
+ {257,86}
+
+ Num5.png
+
+ frame
+ {{520,949},{248,86}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{248,86}}
+ sourceSize
+ {248,86}
+
+ Num6.png
+
+ frame
+ {{849,263},{259,86}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{259,86}}
+ sourceSize
+ {259,86}
+
+ Num7.png
+
+ frame
+ {{261,862},{257,85}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{257,85}}
+ sourceSize
+ {257,85}
+
+ Num8.png
+
+ frame
+ {{783,596},{248,85}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{248,85}}
+ sourceSize
+ {248,85}
+
+ Num9.png
+
+ frame
+ {{522,685},{259,85}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{259,85}}
+ sourceSize
+ {259,85}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ JoinRoom.png
+ size
+ {958,1127}
+ smartupdate
+ $TexturePacker:SmartUpdate:bf98b9912b8fcb909d74e2ef5b8d94ea:1/1$
+ textureFileName
+ JoinRoom.png
+
+
+
diff --git a/client/assets/resources/textures/images/JoinRoom.plist.meta b/client/assets/resources/textures/images/JoinRoom.plist.meta
new file mode 100755
index 0000000..1469783
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom.plist.meta
@@ -0,0 +1,562 @@
+{
+ "ver": "1.2.4",
+ "uuid": "e34ab6be-5473-4435-94e5-e6c24b404352",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "size": {
+ "width": 958,
+ "height": 1127
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "Num1.png": {
+ "ver": "1.0.3",
+ "uuid": "9a015ff4-f39b-41a5-bc1f-fff72dafcdb6",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 951,
+ "width": 257,
+ "height": 87,
+ "rawWidth": 257,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num10.png": {
+ "ver": "1.0.3",
+ "uuid": "a856e807-c132-4e91-bda1-b95a0593291b",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 781,
+ "trimY": 846,
+ "width": 248,
+ "height": 87,
+ "rawWidth": 248,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num11.png": {
+ "ver": "1.0.3",
+ "uuid": "59788439-5d0c-4124-842b-44d03e21f1bd",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 862,
+ "width": 257,
+ "height": 87,
+ "rawWidth": 257,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num12.png": {
+ "ver": "1.0.3",
+ "uuid": "61b4cc23-12d5-45ee-a302-b15d54acaf4c",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 263,
+ "trimY": 596,
+ "width": 259,
+ "height": 87,
+ "rawWidth": 259,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num13.png": {
+ "ver": "1.0.3",
+ "uuid": "272b1e58-0469-43a4-97ad-12c0ba28aa77",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 524,
+ "trimY": 596,
+ "width": 257,
+ "height": 87,
+ "rawWidth": 257,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num14.png": {
+ "ver": "1.0.3",
+ "uuid": "67a4a21e-ebe7-4f16-993d-a8f9c2549e7d",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 513,
+ "trimY": 1037,
+ "width": 248,
+ "height": 87,
+ "rawWidth": 248,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num15.png": {
+ "ver": "1.0.3",
+ "uuid": "c9b8641e-3063-4634-b242-cb58a6a1215e",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 685,
+ "width": 259,
+ "height": 87,
+ "rawWidth": 259,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num16.png": {
+ "ver": "1.0.3",
+ "uuid": "1b8853f2-29c4-4c1e-a04d-3976d4fca30e",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 522,
+ "trimY": 772,
+ "width": 257,
+ "height": 86,
+ "rawWidth": 257,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num17.png": {
+ "ver": "1.0.3",
+ "uuid": "4de83bb7-b70d-4463-991d-171370d155ec",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 870,
+ "trimY": 524,
+ "width": 248,
+ "height": 86,
+ "rawWidth": 248,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num18.png": {
+ "ver": "1.0.3",
+ "uuid": "563d622c-fc5b-4733-adfe-9c3c3706b09c",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 774,
+ "width": 259,
+ "height": 86,
+ "rawWidth": 259,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num19.png": {
+ "ver": "1.0.3",
+ "uuid": "d99d4b2b-e612-48ee-a29d-f65d513fec3d",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 261,
+ "trimY": 949,
+ "width": 257,
+ "height": 85,
+ "rawWidth": 257,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num2.png": {
+ "ver": "1.0.3",
+ "uuid": "aa33de03-9b55-459d-b5b0-8e7c6fb20b00",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 522,
+ "trimY": 860,
+ "width": 248,
+ "height": 87,
+ "rawWidth": 248,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num20.png": {
+ "ver": "1.0.3",
+ "uuid": "583f998b-da82-4a5f-ab27-12109f495fa6",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 870,
+ "trimY": 774,
+ "width": 248,
+ "height": 85,
+ "rawWidth": 248,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num21.png": {
+ "ver": "1.0.3",
+ "uuid": "ac66e690-86e7-4aee-9368-fa9e02643e0b",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 1040,
+ "width": 259,
+ "height": 85,
+ "rawWidth": 259,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num22.png": {
+ "ver": "1.0.3",
+ "uuid": "bb6c6ad0-5e36-473d-a41f-370dfcdfcce5",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 263,
+ "trimY": 1036,
+ "width": 248,
+ "height": 87,
+ "rawWidth": 248,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num23.png": {
+ "ver": "1.0.3",
+ "uuid": "6e6ccb6f-b30e-4cb3-9f91-ed6d59001410",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 263,
+ "trimY": 685,
+ "width": 257,
+ "height": 87,
+ "rawWidth": 257,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num24.png": {
+ "ver": "1.0.3",
+ "uuid": "ff4e6d82-2644-4e4b-9fe3-2ed10ec4429f",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 849,
+ "trimY": 2,
+ "width": 259,
+ "height": 87,
+ "rawWidth": 259,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num25.png": {
+ "ver": "1.0.3",
+ "uuid": "03a6660a-ee76-4896-8673-0f9b9e65a1c0",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 845,
+ "height": 592,
+ "rawWidth": 845,
+ "rawHeight": 592,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num3.png": {
+ "ver": "1.0.3",
+ "uuid": "cf7639d5-3f54-4160-94e6-01298d35fd02",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 596,
+ "width": 259,
+ "height": 87,
+ "rawWidth": 259,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num4.png": {
+ "ver": "1.0.3",
+ "uuid": "cb10cfc4-0088-4bc5-8f3b-a2af00fb88b1",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 263,
+ "trimY": 774,
+ "width": 257,
+ "height": 86,
+ "rawWidth": 257,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num5.png": {
+ "ver": "1.0.3",
+ "uuid": "aa52ef21-75a9-45ac-9725-afbf473df0b7",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 520,
+ "trimY": 949,
+ "width": 248,
+ "height": 86,
+ "rawWidth": 248,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num6.png": {
+ "ver": "1.0.3",
+ "uuid": "d5119d67-5224-4403-8130-5a1b50128280",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 849,
+ "trimY": 263,
+ "width": 259,
+ "height": 86,
+ "rawWidth": 259,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num7.png": {
+ "ver": "1.0.3",
+ "uuid": "fbd4f585-4b9f-483f-82ab-02085b92b38e",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 261,
+ "trimY": 862,
+ "width": 257,
+ "height": 85,
+ "rawWidth": 257,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num8.png": {
+ "ver": "1.0.3",
+ "uuid": "0d530de2-7c69-407b-a81e-58f8aa35e92a",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 783,
+ "trimY": 596,
+ "width": 248,
+ "height": 85,
+ "rawWidth": 248,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "Num9.png": {
+ "ver": "1.0.3",
+ "uuid": "b1851886-6654-48f8-bbda-22f762d3e3b3",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 522,
+ "trimY": 685,
+ "width": 259,
+ "height": 85,
+ "rawWidth": 259,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom.png b/client/assets/resources/textures/images/JoinRoom.png
new file mode 100755
index 0000000..3ffe14d
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom.png.meta b/client/assets/resources/textures/images/JoinRoom.png.meta
new file mode 100755
index 0000000..1d8e777
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "JoinRoom": {
+ "ver": "1.0.3",
+ "uuid": "1f128bdb-6db3-4548-a3e1-217520f26245",
+ "rawTextureUuid": "85db6c99-5092-45a3-a8c0-98fb181aa327",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 954,
+ "height": 1123,
+ "rawWidth": 958,
+ "rawHeight": 1127,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num1.png b/client/assets/resources/textures/images/JoinRoom/Num1.png
new file mode 100755
index 0000000..a789688
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num1.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num1.png.meta b/client/assets/resources/textures/images/JoinRoom/Num1.png.meta
new file mode 100755
index 0000000..a947447
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "dd919080-c9bd-4369-b1a4-a01b0f91cf99",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num1": {
+ "ver": "1.0.3",
+ "uuid": "0d17a5da-4ce4-468c-ae7c-560d6d04f746",
+ "rawTextureUuid": "dd919080-c9bd-4369-b1a4-a01b0f91cf99",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 257,
+ "height": 87,
+ "rawWidth": 257,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num10.png b/client/assets/resources/textures/images/JoinRoom/Num10.png
new file mode 100755
index 0000000..462843e
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num10.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num10.png.meta b/client/assets/resources/textures/images/JoinRoom/Num10.png.meta
new file mode 100755
index 0000000..23dc4d1
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num10.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "fdc47372-07a8-4b03-8fe9-d2d9cf215b98",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num10": {
+ "ver": "1.0.3",
+ "uuid": "10284596-4ce7-4153-a4b3-d35f9cccd59e",
+ "rawTextureUuid": "fdc47372-07a8-4b03-8fe9-d2d9cf215b98",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 248,
+ "height": 87,
+ "rawWidth": 248,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num11.png b/client/assets/resources/textures/images/JoinRoom/Num11.png
new file mode 100755
index 0000000..2b5772a
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num11.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num11.png.meta b/client/assets/resources/textures/images/JoinRoom/Num11.png.meta
new file mode 100755
index 0000000..34ca7eb
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num11.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "70697a08-1f19-452b-a2db-deae8faf4452",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num11": {
+ "ver": "1.0.3",
+ "uuid": "51e95a41-1b45-4638-8bf3-65625a7420cc",
+ "rawTextureUuid": "70697a08-1f19-452b-a2db-deae8faf4452",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 257,
+ "height": 87,
+ "rawWidth": 257,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num12.png b/client/assets/resources/textures/images/JoinRoom/Num12.png
new file mode 100755
index 0000000..27eaa66
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num12.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num12.png.meta b/client/assets/resources/textures/images/JoinRoom/Num12.png.meta
new file mode 100755
index 0000000..549d7c9
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num12.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "bd28da36-5101-41f2-bcd2-d9ed5772e67d",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num12": {
+ "ver": "1.0.3",
+ "uuid": "b050ef26-485f-4db6-95f0-34d0555a6c42",
+ "rawTextureUuid": "bd28da36-5101-41f2-bcd2-d9ed5772e67d",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 259,
+ "height": 87,
+ "rawWidth": 259,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num13.png b/client/assets/resources/textures/images/JoinRoom/Num13.png
new file mode 100755
index 0000000..4517496
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num13.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num13.png.meta b/client/assets/resources/textures/images/JoinRoom/Num13.png.meta
new file mode 100755
index 0000000..af55710
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num13.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "1283923b-7ba2-47a6-b45b-5d26c746e0c8",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num13": {
+ "ver": "1.0.3",
+ "uuid": "774ff8ea-e351-46b9-b697-8ae47bc191be",
+ "rawTextureUuid": "1283923b-7ba2-47a6-b45b-5d26c746e0c8",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 257,
+ "height": 87,
+ "rawWidth": 257,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num14.png b/client/assets/resources/textures/images/JoinRoom/Num14.png
new file mode 100755
index 0000000..3e62769
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num14.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num14.png.meta b/client/assets/resources/textures/images/JoinRoom/Num14.png.meta
new file mode 100755
index 0000000..db542c7
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num14.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "332056c9-c90e-4ead-bb17-07e935a35469",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num14": {
+ "ver": "1.0.3",
+ "uuid": "96f0cabb-87f8-455c-b2aa-710934d4e5b8",
+ "rawTextureUuid": "332056c9-c90e-4ead-bb17-07e935a35469",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 248,
+ "height": 87,
+ "rawWidth": 248,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num15.png b/client/assets/resources/textures/images/JoinRoom/Num15.png
new file mode 100755
index 0000000..d973729
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num15.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num15.png.meta b/client/assets/resources/textures/images/JoinRoom/Num15.png.meta
new file mode 100755
index 0000000..dbed119
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num15.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0033eba7-d47b-4de7-9f80-b6c29c71e066",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num15": {
+ "ver": "1.0.3",
+ "uuid": "d59ae64d-0860-428b-87a0-dcc69c4e3979",
+ "rawTextureUuid": "0033eba7-d47b-4de7-9f80-b6c29c71e066",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 259,
+ "height": 87,
+ "rawWidth": 259,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num16.png b/client/assets/resources/textures/images/JoinRoom/Num16.png
new file mode 100755
index 0000000..388d4e6
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num16.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num16.png.meta b/client/assets/resources/textures/images/JoinRoom/Num16.png.meta
new file mode 100755
index 0000000..f25314e
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num16.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3541c4d1-54f5-4ffc-a35b-75b83b5f3042",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num16": {
+ "ver": "1.0.3",
+ "uuid": "048575bf-b56f-427b-b472-3dc419c883e2",
+ "rawTextureUuid": "3541c4d1-54f5-4ffc-a35b-75b83b5f3042",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 257,
+ "height": 86,
+ "rawWidth": 257,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num17.png b/client/assets/resources/textures/images/JoinRoom/Num17.png
new file mode 100755
index 0000000..45bc06a
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num17.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num17.png.meta b/client/assets/resources/textures/images/JoinRoom/Num17.png.meta
new file mode 100755
index 0000000..c745459
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num17.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5673fe3d-3130-4ae0-b7e8-9b1340c25bdf",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num17": {
+ "ver": "1.0.3",
+ "uuid": "1ef330bd-dece-4e22-98a9-cb5125059222",
+ "rawTextureUuid": "5673fe3d-3130-4ae0-b7e8-9b1340c25bdf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 248,
+ "height": 86,
+ "rawWidth": 248,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num18.png b/client/assets/resources/textures/images/JoinRoom/Num18.png
new file mode 100755
index 0000000..082d08c
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num18.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num18.png.meta b/client/assets/resources/textures/images/JoinRoom/Num18.png.meta
new file mode 100755
index 0000000..4154b27
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num18.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2811571c-9228-48f8-9663-69f4bb7daf00",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num18": {
+ "ver": "1.0.3",
+ "uuid": "6772c21d-ce73-439b-8765-1b45509b9d09",
+ "rawTextureUuid": "2811571c-9228-48f8-9663-69f4bb7daf00",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 259,
+ "height": 86,
+ "rawWidth": 259,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num19.png b/client/assets/resources/textures/images/JoinRoom/Num19.png
new file mode 100755
index 0000000..adde1de
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num19.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num19.png.meta b/client/assets/resources/textures/images/JoinRoom/Num19.png.meta
new file mode 100755
index 0000000..d5a1a2a
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num19.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "56c808ef-299b-4049-b58b-6e0ccc79cd5b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num19": {
+ "ver": "1.0.3",
+ "uuid": "e4c949c5-bf1d-428a-9321-0eb16afc28b8",
+ "rawTextureUuid": "56c808ef-299b-4049-b58b-6e0ccc79cd5b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 257,
+ "height": 85,
+ "rawWidth": 257,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num2.png b/client/assets/resources/textures/images/JoinRoom/Num2.png
new file mode 100755
index 0000000..d6e0b1f
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num2.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num2.png.meta b/client/assets/resources/textures/images/JoinRoom/Num2.png.meta
new file mode 100755
index 0000000..5966b13
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "b687ff8b-33dc-4229-9c6b-bd4d70d9324f",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num2": {
+ "ver": "1.0.3",
+ "uuid": "e900576e-fc46-4e43-879d-716b08c3a544",
+ "rawTextureUuid": "b687ff8b-33dc-4229-9c6b-bd4d70d9324f",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 248,
+ "height": 87,
+ "rawWidth": 248,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num20.png b/client/assets/resources/textures/images/JoinRoom/Num20.png
new file mode 100755
index 0000000..0143e12
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num20.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num20.png.meta b/client/assets/resources/textures/images/JoinRoom/Num20.png.meta
new file mode 100755
index 0000000..8b826ff
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num20.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "86706b36-dde2-4a75-bef2-4012b7c34bf1",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num20": {
+ "ver": "1.0.3",
+ "uuid": "1f83093f-b3ca-4781-86fc-7de76ababa40",
+ "rawTextureUuid": "86706b36-dde2-4a75-bef2-4012b7c34bf1",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 248,
+ "height": 85,
+ "rawWidth": 248,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num21.png b/client/assets/resources/textures/images/JoinRoom/Num21.png
new file mode 100755
index 0000000..6acd76d
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num21.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num21.png.meta b/client/assets/resources/textures/images/JoinRoom/Num21.png.meta
new file mode 100755
index 0000000..42ab283
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num21.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "23c1df4f-05f6-4beb-8171-4d323697ebe3",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num21": {
+ "ver": "1.0.3",
+ "uuid": "85b04990-3bcf-4fa9-a889-20eeb66d7436",
+ "rawTextureUuid": "23c1df4f-05f6-4beb-8171-4d323697ebe3",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 259,
+ "height": 85,
+ "rawWidth": 259,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num22.png b/client/assets/resources/textures/images/JoinRoom/Num22.png
new file mode 100755
index 0000000..fa8eb21
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num22.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num22.png.meta b/client/assets/resources/textures/images/JoinRoom/Num22.png.meta
new file mode 100755
index 0000000..b76992f
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num22.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3b63b1ac-0e9d-4550-ac53-afb9364490bc",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num22": {
+ "ver": "1.0.3",
+ "uuid": "17e73135-88d1-4d85-a528-afd721f44dbe",
+ "rawTextureUuid": "3b63b1ac-0e9d-4550-ac53-afb9364490bc",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 248,
+ "height": 87,
+ "rawWidth": 248,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num23.png b/client/assets/resources/textures/images/JoinRoom/Num23.png
new file mode 100755
index 0000000..61c9c01
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num23.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num23.png.meta b/client/assets/resources/textures/images/JoinRoom/Num23.png.meta
new file mode 100755
index 0000000..c648dad
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num23.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5307d8d6-69aa-4ac7-9b67-8be5d16759e2",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num23": {
+ "ver": "1.0.3",
+ "uuid": "9c6916a3-7a73-42b4-87c6-d67475c43f9e",
+ "rawTextureUuid": "5307d8d6-69aa-4ac7-9b67-8be5d16759e2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 257,
+ "height": 87,
+ "rawWidth": 257,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num24.png b/client/assets/resources/textures/images/JoinRoom/Num24.png
new file mode 100755
index 0000000..c4d9eba
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num24.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num24.png.meta b/client/assets/resources/textures/images/JoinRoom/Num24.png.meta
new file mode 100755
index 0000000..8b1f971
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num24.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "bd90e422-9c22-4589-b810-204124de8953",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num24": {
+ "ver": "1.0.3",
+ "uuid": "16472ed8-a860-4006-ae0d-670cc57dc98b",
+ "rawTextureUuid": "bd90e422-9c22-4589-b810-204124de8953",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 259,
+ "height": 87,
+ "rawWidth": 259,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num25.png b/client/assets/resources/textures/images/JoinRoom/Num25.png
new file mode 100755
index 0000000..d7e553f
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num25.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num25.png.meta b/client/assets/resources/textures/images/JoinRoom/Num25.png.meta
new file mode 100755
index 0000000..2ac9694
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num25.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "604314cf-cc26-4f75-8571-74f21e691d5a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num25": {
+ "ver": "1.0.3",
+ "uuid": "6493dc20-8fd1-48a3-9d50-8b7b2a360b27",
+ "rawTextureUuid": "604314cf-cc26-4f75-8571-74f21e691d5a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 845,
+ "height": 591,
+ "rawWidth": 845,
+ "rawHeight": 592,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num3.png b/client/assets/resources/textures/images/JoinRoom/Num3.png
new file mode 100755
index 0000000..7bf58c3
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num3.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num3.png.meta b/client/assets/resources/textures/images/JoinRoom/Num3.png.meta
new file mode 100755
index 0000000..378bf1e
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "6aaf96bf-145c-422f-9003-6cee3f87088a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num3": {
+ "ver": "1.0.3",
+ "uuid": "39b1a5ab-8b10-49f5-9b68-dc69e3fbea1c",
+ "rawTextureUuid": "6aaf96bf-145c-422f-9003-6cee3f87088a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 259,
+ "height": 87,
+ "rawWidth": 259,
+ "rawHeight": 87,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num4.png b/client/assets/resources/textures/images/JoinRoom/Num4.png
new file mode 100755
index 0000000..c7d5faf
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num4.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num4.png.meta b/client/assets/resources/textures/images/JoinRoom/Num4.png.meta
new file mode 100755
index 0000000..e75c7f4
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "afeef784-06d3-469a-8785-280c82a91ab9",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num4": {
+ "ver": "1.0.3",
+ "uuid": "0bd87732-bbd7-4533-88dc-afa996a8b29f",
+ "rawTextureUuid": "afeef784-06d3-469a-8785-280c82a91ab9",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 257,
+ "height": 86,
+ "rawWidth": 257,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num5.png b/client/assets/resources/textures/images/JoinRoom/Num5.png
new file mode 100755
index 0000000..dcd4e9e
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num5.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num5.png.meta b/client/assets/resources/textures/images/JoinRoom/Num5.png.meta
new file mode 100755
index 0000000..5a31aa0
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "6b68a1dc-11c3-4802-be3c-910740a299a1",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num5": {
+ "ver": "1.0.3",
+ "uuid": "7ba9a631-88e3-43cb-8408-0814fe2370a5",
+ "rawTextureUuid": "6b68a1dc-11c3-4802-be3c-910740a299a1",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 248,
+ "height": 86,
+ "rawWidth": 248,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num6.png b/client/assets/resources/textures/images/JoinRoom/Num6.png
new file mode 100755
index 0000000..b95acca
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num6.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num6.png.meta b/client/assets/resources/textures/images/JoinRoom/Num6.png.meta
new file mode 100755
index 0000000..c7e66b4
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4fda1e95-ce60-43fc-808e-46a9dabc0d48",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num6": {
+ "ver": "1.0.3",
+ "uuid": "68ea7b7d-b08d-4364-912e-64dd29f36786",
+ "rawTextureUuid": "4fda1e95-ce60-43fc-808e-46a9dabc0d48",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 259,
+ "height": 86,
+ "rawWidth": 259,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num7.png b/client/assets/resources/textures/images/JoinRoom/Num7.png
new file mode 100755
index 0000000..0ba1a2e
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num7.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num7.png.meta b/client/assets/resources/textures/images/JoinRoom/Num7.png.meta
new file mode 100755
index 0000000..28f9e70
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num7.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "308baae5-265e-43a0-b972-edc36c70d76d",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num7": {
+ "ver": "1.0.3",
+ "uuid": "3418814d-97a1-458e-b336-d1db30a70643",
+ "rawTextureUuid": "308baae5-265e-43a0-b972-edc36c70d76d",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 257,
+ "height": 85,
+ "rawWidth": 257,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num8.png b/client/assets/resources/textures/images/JoinRoom/Num8.png
new file mode 100755
index 0000000..9058d53
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num8.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num8.png.meta b/client/assets/resources/textures/images/JoinRoom/Num8.png.meta
new file mode 100755
index 0000000..3c4b9ed
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num8.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "16f00a20-3ae0-4865-ad20-5374205e3ff3",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num8": {
+ "ver": "1.0.3",
+ "uuid": "283bfa19-e361-49b5-82b8-51defce612f1",
+ "rawTextureUuid": "16f00a20-3ae0-4865-ad20-5374205e3ff3",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 248,
+ "height": 85,
+ "rawWidth": 248,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/JoinRoom/Num9.png b/client/assets/resources/textures/images/JoinRoom/Num9.png
new file mode 100755
index 0000000..4ff8f6c
Binary files /dev/null and b/client/assets/resources/textures/images/JoinRoom/Num9.png differ
diff --git a/client/assets/resources/textures/images/JoinRoom/Num9.png.meta b/client/assets/resources/textures/images/JoinRoom/Num9.png.meta
new file mode 100755
index 0000000..649f74e
--- /dev/null
+++ b/client/assets/resources/textures/images/JoinRoom/Num9.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5ed6842a-1d33-46a3-bf05-b8925f427775",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Num9": {
+ "ver": "1.0.3",
+ "uuid": "71449cab-5635-445f-b311-3cdd42115c62",
+ "rawTextureUuid": "5ed6842a-1d33-46a3-bf05-b8925f427775",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 259,
+ "height": 85,
+ "rawWidth": 259,
+ "rawHeight": 85,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/Login.meta b/client/assets/resources/textures/images/Login.meta
new file mode 100755
index 0000000..9d5399f
--- /dev/null
+++ b/client/assets/resources/textures/images/Login.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "8ef50f39-a422-4106-b3db-752100f6fcac",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/Login/bg.jpg b/client/assets/resources/textures/images/Login/bg.jpg
new file mode 100755
index 0000000..068d4c1
Binary files /dev/null and b/client/assets/resources/textures/images/Login/bg.jpg differ
diff --git a/client/assets/resources/textures/images/Login/bg.jpg.meta b/client/assets/resources/textures/images/Login/bg.jpg.meta
new file mode 100755
index 0000000..2c93dbf
--- /dev/null
+++ b/client/assets/resources/textures/images/Login/bg.jpg.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0b06e653-7f69-42a1-9892-7b265f6e2a44",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "bg": {
+ "ver": "1.0.3",
+ "uuid": "e9ecb267-78f5-49b7-be14-60cc9116abe1",
+ "rawTextureUuid": "0b06e653-7f69-42a1-9892-7b265f6e2a44",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/Login/btn_ traveler.png b/client/assets/resources/textures/images/Login/btn_ traveler.png
new file mode 100755
index 0000000..497a2a9
Binary files /dev/null and b/client/assets/resources/textures/images/Login/btn_ traveler.png differ
diff --git a/client/assets/resources/textures/images/Login/btn_ traveler.png.meta b/client/assets/resources/textures/images/Login/btn_ traveler.png.meta
new file mode 100755
index 0000000..02b9d9b
--- /dev/null
+++ b/client/assets/resources/textures/images/Login/btn_ traveler.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "49d66b6a-f5c0-46e1-9410-00b119ee9850",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "btn_ traveler": {
+ "ver": "1.0.3",
+ "uuid": "e35d2605-6a6c-4e32-8086-530b841a53a8",
+ "rawTextureUuid": "49d66b6a-f5c0-46e1-9410-00b119ee9850",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 397,
+ "height": 137,
+ "rawWidth": 397,
+ "rawHeight": 137,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/Login/btn_checkbox.png b/client/assets/resources/textures/images/Login/btn_checkbox.png
new file mode 100755
index 0000000..96d9360
Binary files /dev/null and b/client/assets/resources/textures/images/Login/btn_checkbox.png differ
diff --git a/client/assets/resources/textures/images/Login/btn_checkbox.png.meta b/client/assets/resources/textures/images/Login/btn_checkbox.png.meta
new file mode 100755
index 0000000..109295d
--- /dev/null
+++ b/client/assets/resources/textures/images/Login/btn_checkbox.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "1aa1eae2-22a6-4a46-985a-071d51439651",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "btn_checkbox": {
+ "ver": "1.0.3",
+ "uuid": "f2fd3b02-16b0-4352-90fd-894cb73eb272",
+ "rawTextureUuid": "1aa1eae2-22a6-4a46-985a-071d51439651",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 47,
+ "height": 48,
+ "rawWidth": 47,
+ "rawHeight": 48,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/Login/btn_weixin.png b/client/assets/resources/textures/images/Login/btn_weixin.png
new file mode 100755
index 0000000..71c3dd2
Binary files /dev/null and b/client/assets/resources/textures/images/Login/btn_weixin.png differ
diff --git a/client/assets/resources/textures/images/Login/btn_weixin.png.meta b/client/assets/resources/textures/images/Login/btn_weixin.png.meta
new file mode 100755
index 0000000..6c2ebcb
--- /dev/null
+++ b/client/assets/resources/textures/images/Login/btn_weixin.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "77751ff8-aec3-4571-af26-6c098d3c6b7a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "btn_weixin": {
+ "ver": "1.0.3",
+ "uuid": "07b178b4-e554-430a-8d6f-732fcac35b6b",
+ "rawTextureUuid": "77751ff8-aec3-4571-af26-6c098d3c6b7a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 333,
+ "height": 92,
+ "rawWidth": 333,
+ "rawHeight": 93,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/Login/check_mark.png b/client/assets/resources/textures/images/Login/check_mark.png
new file mode 100755
index 0000000..500f3cc
Binary files /dev/null and b/client/assets/resources/textures/images/Login/check_mark.png differ
diff --git a/client/assets/resources/textures/images/Login/check_mark.png.meta b/client/assets/resources/textures/images/Login/check_mark.png.meta
new file mode 100755
index 0000000..939d552
--- /dev/null
+++ b/client/assets/resources/textures/images/Login/check_mark.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "53dd92a5-1fbd-4640-894d-e0beefe3e5b1",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "check_mark": {
+ "ver": "1.0.3",
+ "uuid": "1b484497-3bab-434f-986d-2f12c762a3ba",
+ "rawTextureUuid": "53dd92a5-1fbd-4640-894d-e0beefe3e5b1",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 59,
+ "height": 48,
+ "rawWidth": 59,
+ "rawHeight": 48,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/Login/yonghuxieyi.png b/client/assets/resources/textures/images/Login/yonghuxieyi.png
new file mode 100755
index 0000000..3556afc
Binary files /dev/null and b/client/assets/resources/textures/images/Login/yonghuxieyi.png differ
diff --git a/client/assets/resources/textures/images/Login/yonghuxieyi.png.meta b/client/assets/resources/textures/images/Login/yonghuxieyi.png.meta
new file mode 100755
index 0000000..b9439cb
--- /dev/null
+++ b/client/assets/resources/textures/images/Login/yonghuxieyi.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "10f8ab8e-1ff0-4f29-9629-6123d7a217f9",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "yonghuxieyi": {
+ "ver": "1.0.3",
+ "uuid": "b83a3ad2-17dd-4c8f-9c20-30dba9f80f99",
+ "rawTextureUuid": "10f8ab8e-1ff0-4f29-9629-6123d7a217f9",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 579,
+ "height": 43,
+ "rawWidth": 579,
+ "rawHeight": 43,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene.meta b/client/assets/resources/textures/images/PopupScene.meta
new file mode 100755
index 0000000..5cff6a9
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "857cd1c1-1a04-42df-a914-bb58338b156c",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene.plist b/client/assets/resources/textures/images/PopupScene.plist
new file mode 100755
index 0000000..7795142
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene.plist
@@ -0,0 +1,243 @@
+
+
+
+
+ frames
+
+ PopupScene1.png
+
+ frame
+ {{1185,801},{75,76}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{75,76}}
+ sourceSize
+ {75,76}
+
+ PopupScene14.png
+
+ frame
+ {{953,857},{228,54}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{228,54}}
+ sourceSize
+ {228,54}
+
+ PopupScene15.png
+
+ frame
+ {{1181,945},{226,54}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{226,54}}
+ sourceSize
+ {226,54}
+
+ PopupScene16.png
+
+ frame
+ {{802,722},{116,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{116,46}}
+ sourceSize
+ {116,46}
+
+ PopupScene17.png
+
+ frame
+ {{802,826},{108,52}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{108,52}}
+ sourceSize
+ {108,52}
+
+ PopupScene18.png
+
+ frame
+ {{953,1024},{196,54}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{196,54}}
+ sourceSize
+ {196,54}
+
+ PopupScene19.png
+
+ frame
+ {{2,722},{1280,720}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1280,720}}
+ sourceSize
+ {1280,720}
+
+ PopupScene2.png
+
+ frame
+ {{953,722},{288,77}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{288,77}}
+ sourceSize
+ {288,77}
+
+ PopupScene20.png
+
+ frame
+ {{724,1942},{227,56}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{227,56}}
+ sourceSize
+ {227,56}
+
+ PopupScene21.png
+
+ frame
+ {{953,913},{226,55}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{226,55}}
+ sourceSize
+ {226,55}
+
+ PopupScene22.png
+
+ frame
+ {{802,880},{98,47}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{98,47}}
+ sourceSize
+ {98,47}
+
+ PopupScene23.png
+
+ frame
+ {{953,970},{224,52}}
+ offset
+ {1,-1}
+ rotated
+
+ sourceColorRect
+ {{4,2},{224,52}}
+ sourceSize
+ {230,54}
+
+ PopupScene3.png
+
+ frame
+ {{2,2},{1270,718}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1270,718}}
+ sourceSize
+ {1270,718}
+
+ PopupScene5.png
+
+ frame
+ {{1183,878},{65,65}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{65,65}}
+ sourceSize
+ {65,65}
+
+ PopupScene6.png
+
+ frame
+ {{724,722},{1218,76}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1218,76}}
+ sourceSize
+ {1218,76}
+
+ PopupScene7.png
+
+ frame
+ {{802,770},{110,54}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{110,54}}
+ sourceSize
+ {110,54}
+
+ PopupScene8.png
+
+ frame
+ {{953,801},{230,54}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{230,54}}
+ sourceSize
+ {230,54}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ PopupScene.png
+ size
+ {1274,2004}
+ smartupdate
+ $TexturePacker:SmartUpdate:24fcdf2d80ac59ef1c17c0fef3c2bd96:1/1$
+ textureFileName
+ PopupScene.png
+
+
+
diff --git a/client/assets/resources/textures/images/PopupScene.plist.meta b/client/assets/resources/textures/images/PopupScene.plist.meta
new file mode 100755
index 0000000..8781e70
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene.plist.meta
@@ -0,0 +1,386 @@
+{
+ "ver": "1.2.4",
+ "uuid": "f71d47b7-0979-48b1-ac1a-206076b00220",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "size": {
+ "width": 1274,
+ "height": 2004
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "PopupScene1.png": {
+ "ver": "1.0.3",
+ "uuid": "2d167769-a80b-4b3d-89f1-b150fa64008e",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1185,
+ "trimY": 801,
+ "width": 75,
+ "height": 76,
+ "rawWidth": 75,
+ "rawHeight": 76,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene14.png": {
+ "ver": "1.0.3",
+ "uuid": "b526316a-0879-4b6e-8b03-63cf91505eff",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 953,
+ "trimY": 857,
+ "width": 228,
+ "height": 54,
+ "rawWidth": 228,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene15.png": {
+ "ver": "1.0.3",
+ "uuid": "999350d5-eb8e-4a6e-9ac3-f1690a3ea842",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1181,
+ "trimY": 945,
+ "width": 226,
+ "height": 54,
+ "rawWidth": 226,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene16.png": {
+ "ver": "1.0.3",
+ "uuid": "abb55ec9-187f-436e-9a1a-5ba431862e87",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 802,
+ "trimY": 722,
+ "width": 116,
+ "height": 46,
+ "rawWidth": 116,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene17.png": {
+ "ver": "1.0.3",
+ "uuid": "9ca3657f-6216-4cb9-bc0b-f6972a05ae86",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 802,
+ "trimY": 826,
+ "width": 108,
+ "height": 52,
+ "rawWidth": 108,
+ "rawHeight": 52,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene18.png": {
+ "ver": "1.0.3",
+ "uuid": "350940fd-9691-4aaf-8685-7764627333ad",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 953,
+ "trimY": 1024,
+ "width": 196,
+ "height": 54,
+ "rawWidth": 196,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene19.png": {
+ "ver": "1.0.3",
+ "uuid": "b421470e-abca-4b84-9e4c-eab8b6b7806e",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 722,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene2.png": {
+ "ver": "1.0.3",
+ "uuid": "5914f056-b6c1-4bbd-979b-92b5b721c7f4",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 953,
+ "trimY": 722,
+ "width": 288,
+ "height": 77,
+ "rawWidth": 288,
+ "rawHeight": 77,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 140,
+ "borderRight": 140,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene20.png": {
+ "ver": "1.0.3",
+ "uuid": "38744dcf-8d01-40b5-868b-e74014d78dcd",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 724,
+ "trimY": 1942,
+ "width": 227,
+ "height": 56,
+ "rawWidth": 227,
+ "rawHeight": 56,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene21.png": {
+ "ver": "1.0.3",
+ "uuid": "47e441c3-81cc-4916-bf1c-fa13f1359c8f",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 953,
+ "trimY": 913,
+ "width": 226,
+ "height": 55,
+ "rawWidth": 226,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene22.png": {
+ "ver": "1.0.3",
+ "uuid": "93c93965-d3d4-4483-a96e-497e1b243dbc",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 802,
+ "trimY": 880,
+ "width": 98,
+ "height": 47,
+ "rawWidth": 98,
+ "rawHeight": 47,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene23.png": {
+ "ver": "1.0.3",
+ "uuid": "dcfd81f9-c553-44c7-b21a-6e485107dd8c",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 1,
+ "offsetY": -1,
+ "trimX": 953,
+ "trimY": 970,
+ "width": 224,
+ "height": 52,
+ "rawWidth": 230,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene3.png": {
+ "ver": "1.0.3",
+ "uuid": "6fb8913c-4002-42c2-9c10-e9db64c2b2a3",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 1270,
+ "height": 718,
+ "rawWidth": 1270,
+ "rawHeight": 718,
+ "borderTop": 200,
+ "borderBottom": 200,
+ "borderLeft": 200,
+ "borderRight": 200,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene5.png": {
+ "ver": "1.0.3",
+ "uuid": "306a0d16-09f5-4c00-9bdb-0dc53c00990c",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1183,
+ "trimY": 878,
+ "width": 65,
+ "height": 65,
+ "rawWidth": 65,
+ "rawHeight": 65,
+ "borderTop": 25,
+ "borderBottom": 25,
+ "borderLeft": 25,
+ "borderRight": 25,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene6.png": {
+ "ver": "1.0.3",
+ "uuid": "a8880732-446c-4797-a83e-7b1376458309",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 724,
+ "trimY": 722,
+ "width": 1218,
+ "height": 76,
+ "rawWidth": 1218,
+ "rawHeight": 76,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene7.png": {
+ "ver": "1.0.3",
+ "uuid": "8fa76a26-7936-4bc0-af9b-c81d5f39cb0b",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 802,
+ "trimY": 770,
+ "width": 110,
+ "height": 54,
+ "rawWidth": 110,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "PopupScene8.png": {
+ "ver": "1.0.3",
+ "uuid": "bf6861d5-7745-42f4-a6a7-82278bb6d583",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 953,
+ "trimY": 801,
+ "width": 230,
+ "height": 54,
+ "rawWidth": 230,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene.png b/client/assets/resources/textures/images/PopupScene.png
new file mode 100755
index 0000000..5684b76
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene.png differ
diff --git a/client/assets/resources/textures/images/PopupScene.png.meta b/client/assets/resources/textures/images/PopupScene.png.meta
new file mode 100755
index 0000000..b132813
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene": {
+ "ver": "1.0.3",
+ "uuid": "ebb98c10-ffe5-4691-8e14-7a12d8c9d98e",
+ "rawTextureUuid": "2f2ceb8c-9676-47de-8bdc-aaeec566600c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 1270,
+ "height": 2000,
+ "rawWidth": 1274,
+ "rawHeight": 2004,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene1.png b/client/assets/resources/textures/images/PopupScene/PopupScene1.png
new file mode 100755
index 0000000..eac3d67
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene1.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene1.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene1.png.meta
new file mode 100755
index 0000000..96922fa
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "f1dd26da-9d37-4f33-9643-9053183bd76e",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene1": {
+ "ver": "1.0.3",
+ "uuid": "0fa69643-22ea-47ac-8307-db3104f214b4",
+ "rawTextureUuid": "f1dd26da-9d37-4f33-9643-9053183bd76e",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 75,
+ "height": 76,
+ "rawWidth": 75,
+ "rawHeight": 76,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene14.png b/client/assets/resources/textures/images/PopupScene/PopupScene14.png
new file mode 100755
index 0000000..b903ebc
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene14.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene14.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene14.png.meta
new file mode 100755
index 0000000..49d9694
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene14.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7772cddc-0884-4e30-bffe-2992ecb56622",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene14": {
+ "ver": "1.0.3",
+ "uuid": "5a9a8a8d-ac75-4332-9d59-d336f73624ca",
+ "rawTextureUuid": "7772cddc-0884-4e30-bffe-2992ecb56622",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 227,
+ "height": 54,
+ "rawWidth": 228,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene15.png b/client/assets/resources/textures/images/PopupScene/PopupScene15.png
new file mode 100755
index 0000000..96752a1
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene15.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene15.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene15.png.meta
new file mode 100755
index 0000000..4e16f26
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene15.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "72d783e1-1331-449d-b7c5-4e7fb98520c7",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene15": {
+ "ver": "1.0.3",
+ "uuid": "58006717-8ef1-4cfb-b652-84fe661f34bb",
+ "rawTextureUuid": "72d783e1-1331-449d-b7c5-4e7fb98520c7",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 226,
+ "height": 54,
+ "rawWidth": 226,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene16.png b/client/assets/resources/textures/images/PopupScene/PopupScene16.png
new file mode 100755
index 0000000..306ce55
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene16.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene16.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene16.png.meta
new file mode 100755
index 0000000..4969753
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene16.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8f13da7d-738a-457f-8a32-baf66badb27a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene16": {
+ "ver": "1.0.3",
+ "uuid": "0a565548-302e-41ff-904a-2f3100925510",
+ "rawTextureUuid": "8f13da7d-738a-457f-8a32-baf66badb27a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 115,
+ "height": 46,
+ "rawWidth": 116,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene17.png b/client/assets/resources/textures/images/PopupScene/PopupScene17.png
new file mode 100755
index 0000000..91cd581
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene17.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene17.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene17.png.meta
new file mode 100755
index 0000000..f741afc
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene17.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "1c92c59b-294b-4cb2-b023-d0961ced7701",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene17": {
+ "ver": "1.0.3",
+ "uuid": "b4b0b6da-6023-40a4-8f51-6892e0c00f8f",
+ "rawTextureUuid": "1c92c59b-294b-4cb2-b023-d0961ced7701",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 108,
+ "height": 51,
+ "rawWidth": 108,
+ "rawHeight": 52,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene18.png b/client/assets/resources/textures/images/PopupScene/PopupScene18.png
new file mode 100755
index 0000000..b1bf0c6
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene18.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene18.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene18.png.meta
new file mode 100755
index 0000000..a641c49
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene18.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "6226f9b7-9e94-4bef-b8be-a40b916a3a8b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene18": {
+ "ver": "1.0.3",
+ "uuid": "253e4e20-3e81-456d-af80-ec25c31590da",
+ "rawTextureUuid": "6226f9b7-9e94-4bef-b8be-a40b916a3a8b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 196,
+ "height": 54,
+ "rawWidth": 196,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene19.png b/client/assets/resources/textures/images/PopupScene/PopupScene19.png
new file mode 100755
index 0000000..61f65df
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene19.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene19.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene19.png.meta
new file mode 100755
index 0000000..958abfc
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene19.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "bea93804-0272-4d44-a12f-f88972e359cb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene19": {
+ "ver": "1.0.3",
+ "uuid": "9568065c-b8ec-40a9-b65b-40dc1ed8ea43",
+ "rawTextureUuid": "bea93804-0272-4d44-a12f-f88972e359cb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene2.png b/client/assets/resources/textures/images/PopupScene/PopupScene2.png
new file mode 100755
index 0000000..c32f41b
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene2.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene2.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene2.png.meta
new file mode 100755
index 0000000..18b876b
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0f9ab8eb-446c-416f-9eac-87fafe193b9e",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene2": {
+ "ver": "1.0.3",
+ "uuid": "2e3f21b1-37d3-418a-b3e5-2f4080201d4d",
+ "rawTextureUuid": "0f9ab8eb-446c-416f-9eac-87fafe193b9e",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 288,
+ "height": 76,
+ "rawWidth": 288,
+ "rawHeight": 77,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene20.png b/client/assets/resources/textures/images/PopupScene/PopupScene20.png
new file mode 100755
index 0000000..aaf09b9
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene20.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene20.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene20.png.meta
new file mode 100755
index 0000000..b973657
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene20.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "86bebce9-f6f9-465f-a3d1-392c4d8e7d7e",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene20": {
+ "ver": "1.0.3",
+ "uuid": "5a8d2b0a-d4c0-4c42-8892-2fc3cb163b17",
+ "rawTextureUuid": "86bebce9-f6f9-465f-a3d1-392c4d8e7d7e",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 227,
+ "height": 56,
+ "rawWidth": 227,
+ "rawHeight": 56,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene21.png b/client/assets/resources/textures/images/PopupScene/PopupScene21.png
new file mode 100755
index 0000000..ac3c65e
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene21.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene21.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene21.png.meta
new file mode 100755
index 0000000..b3e8bac
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene21.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "31a0eb37-d5b5-4984-9821-b6d2633a3e61",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene21": {
+ "ver": "1.0.3",
+ "uuid": "85ce8829-9c69-425d-84ed-bfdbbe70e6c0",
+ "rawTextureUuid": "31a0eb37-d5b5-4984-9821-b6d2633a3e61",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 226,
+ "height": 55,
+ "rawWidth": 226,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene22.png b/client/assets/resources/textures/images/PopupScene/PopupScene22.png
new file mode 100755
index 0000000..12e6ef9
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene22.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene22.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene22.png.meta
new file mode 100755
index 0000000..4d44eda
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene22.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "477c958b-96bd-4ad6-9492-918003feb0ab",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene22": {
+ "ver": "1.0.3",
+ "uuid": "971ef20e-b148-4ed4-85bf-76b3ead47a4f",
+ "rawTextureUuid": "477c958b-96bd-4ad6-9492-918003feb0ab",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 98,
+ "height": 47,
+ "rawWidth": 98,
+ "rawHeight": 47,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene23.png b/client/assets/resources/textures/images/PopupScene/PopupScene23.png
new file mode 100755
index 0000000..4b12117
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene23.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene23.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene23.png.meta
new file mode 100755
index 0000000..e4e469c
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene23.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7e8fcd13-f7f8-4ddd-8641-bd69e0c41bcb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene23": {
+ "ver": "1.0.3",
+ "uuid": "dee58ff1-5bec-46cf-855a-76c892fdb14f",
+ "rawTextureUuid": "7e8fcd13-f7f8-4ddd-8641-bd69e0c41bcb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 4,
+ "trimY": 1,
+ "width": 223,
+ "height": 52,
+ "rawWidth": 230,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene3.png b/client/assets/resources/textures/images/PopupScene/PopupScene3.png
new file mode 100755
index 0000000..84bc096
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene3.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene3.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene3.png.meta
new file mode 100755
index 0000000..aaa50e8
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ce26aaba-deda-4f72-a768-ab9633a787d8",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene3": {
+ "ver": "1.0.3",
+ "uuid": "9f1b5def-96ee-451a-93af-0a83f789a689",
+ "rawTextureUuid": "ce26aaba-deda-4f72-a768-ab9633a787d8",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 1269,
+ "height": 718,
+ "rawWidth": 1270,
+ "rawHeight": 718,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene5.png b/client/assets/resources/textures/images/PopupScene/PopupScene5.png
new file mode 100755
index 0000000..02ff7f0
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene5.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene5.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene5.png.meta
new file mode 100755
index 0000000..8df4d71
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8c0b35ca-019a-46e7-a9b7-b4f37727c640",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene5": {
+ "ver": "1.0.3",
+ "uuid": "e32af17a-0ddc-4a4e-bfe2-ebe6ae9f936b",
+ "rawTextureUuid": "8c0b35ca-019a-46e7-a9b7-b4f37727c640",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 65,
+ "height": 65,
+ "rawWidth": 65,
+ "rawHeight": 65,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene6.png b/client/assets/resources/textures/images/PopupScene/PopupScene6.png
new file mode 100755
index 0000000..ddd2bdf
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene6.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene6.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene6.png.meta
new file mode 100755
index 0000000..8a6c87d
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0e1adc87-2354-43b0-a597-ce80d5fe6172",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene6": {
+ "ver": "1.0.3",
+ "uuid": "6ef410ef-72e7-4a52-9d9b-1e3a965b607e",
+ "rawTextureUuid": "0e1adc87-2354-43b0-a597-ce80d5fe6172",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1218,
+ "height": 76,
+ "rawWidth": 1218,
+ "rawHeight": 76,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene7.png b/client/assets/resources/textures/images/PopupScene/PopupScene7.png
new file mode 100755
index 0000000..9962b6b
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene7.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene7.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene7.png.meta
new file mode 100755
index 0000000..2f79a5e
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene7.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "df3d826b-8800-4316-8780-e9ecc0a37972",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene7": {
+ "ver": "1.0.3",
+ "uuid": "6b74d71f-23b6-4ece-a4ce-904ca7e82a8c",
+ "rawTextureUuid": "df3d826b-8800-4316-8780-e9ecc0a37972",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 109,
+ "height": 54,
+ "rawWidth": 110,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene8.png b/client/assets/resources/textures/images/PopupScene/PopupScene8.png
new file mode 100755
index 0000000..2cd26e7
Binary files /dev/null and b/client/assets/resources/textures/images/PopupScene/PopupScene8.png differ
diff --git a/client/assets/resources/textures/images/PopupScene/PopupScene8.png.meta b/client/assets/resources/textures/images/PopupScene/PopupScene8.png.meta
new file mode 100755
index 0000000..97e6f12
--- /dev/null
+++ b/client/assets/resources/textures/images/PopupScene/PopupScene8.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5fb95305-8a53-4075-b8d2-e0d916a1a6a9",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "PopupScene8": {
+ "ver": "1.0.3",
+ "uuid": "50f73b03-a2a5-4455-b19e-83ba562fd173",
+ "rawTextureUuid": "5fb95305-8a53-4075-b8d2-e0d916a1a6a9",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 230,
+ "height": 54,
+ "rawWidth": 230,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/chat.plist b/client/assets/resources/textures/images/chat.plist
new file mode 100755
index 0000000..ec68f7d
--- /dev/null
+++ b/client/assets/resources/textures/images/chat.plist
@@ -0,0 +1,178 @@
+
+
+
+
+ frames
+
+ chat_bg.png
+
+ frame
+ {{2,2},{530,492}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{530,492}}
+ sourceSize
+ {530,492}
+
+ chat_btn_normal.png
+
+ frame
+ {{644,2},{266,50}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{266,50}}
+ sourceSize
+ {266,50}
+
+ chat_btn_select.png
+
+ frame
+ {{748,2},{263,50}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{263,50}}
+ sourceSize
+ {263,50}
+
+ chat_btn_send.png
+
+ frame
+ {{540,338},{125,55}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{125,55}}
+ sourceSize
+ {125,55}
+
+ chat_input_bg.png
+
+ frame
+ {{540,2},{334,50}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{334,50}}
+ sourceSize
+ {334,50}
+
+ chat_list_line.png
+
+ frame
+ {{534,2},{465,4}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{465,4}}
+ sourceSize
+ {465,4}
+
+ chat_text_normal.png
+
+ frame
+ {{597,315},{114,43}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{114,43}}
+ sourceSize
+ {114,43}
+
+ chat_text_select.png
+
+ frame
+ {{592,270},{114,43}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{114,43}}
+ sourceSize
+ {114,43}
+
+ emoji_btn_normal.png
+
+ frame
+ {{592,2},{266,50}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{266,50}}
+ sourceSize
+ {266,50}
+
+ emoji_btn_select.png
+
+ frame
+ {{696,2},{263,50}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{263,50}}
+ sourceSize
+ {263,50}
+
+ emoji_text_normal.png
+
+ frame
+ {{686,315},{100,42}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{100,42}}
+ sourceSize
+ {100,42}
+
+ emoji_text_select.png
+
+ frame
+ {{642,315},{100,42}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{100,42}}
+ sourceSize
+ {100,42}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ chat.png
+ size
+ {800,496}
+ smartupdate
+ $TexturePacker:SmartUpdate:8b4371f7db34b178b5914cd2d8fa6863:1/1$
+ textureFileName
+ chat.png
+
+
+
diff --git a/client/assets/resources/textures/images/chat.plist.meta b/client/assets/resources/textures/images/chat.plist.meta
new file mode 100755
index 0000000..87c156a
--- /dev/null
+++ b/client/assets/resources/textures/images/chat.plist.meta
@@ -0,0 +1,276 @@
+{
+ "ver": "1.2.4",
+ "uuid": "daa887d9-e85c-4396-b8e3-03bce53ab4a1",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "size": {
+ "width": 800,
+ "height": 496
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "chat_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "0127a5c8-3692-46f9-8bfb-ab869d931ca3",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 530,
+ "height": 492,
+ "rawWidth": 530,
+ "rawHeight": 492,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chat_btn_normal.png": {
+ "ver": "1.0.3",
+ "uuid": "54981393-3c96-41e0-8694-b871cf7564d9",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 644,
+ "trimY": 2,
+ "width": 266,
+ "height": 50,
+ "rawWidth": 266,
+ "rawHeight": 50,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chat_btn_select.png": {
+ "ver": "1.0.3",
+ "uuid": "87b90ce4-92f1-4888-ad52-77f4164d6af0",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 748,
+ "trimY": 2,
+ "width": 263,
+ "height": 50,
+ "rawWidth": 263,
+ "rawHeight": 50,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chat_btn_send.png": {
+ "ver": "1.0.3",
+ "uuid": "7edc1f0f-2db2-45ba-8d93-2215736b67e5",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 540,
+ "trimY": 338,
+ "width": 125,
+ "height": 55,
+ "rawWidth": 125,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chat_input_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "0a0a734f-3633-4b7e-8480-e01c52cb9b6f",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 540,
+ "trimY": 2,
+ "width": 334,
+ "height": 50,
+ "rawWidth": 334,
+ "rawHeight": 50,
+ "borderTop": 20,
+ "borderBottom": 20,
+ "borderLeft": 50,
+ "borderRight": 50,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chat_list_line.png": {
+ "ver": "1.0.3",
+ "uuid": "42d1a30b-c8ec-40b2-a673-12f6440ad588",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 534,
+ "trimY": 2,
+ "width": 465,
+ "height": 4,
+ "rawWidth": 465,
+ "rawHeight": 4,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chat_text_normal.png": {
+ "ver": "1.0.3",
+ "uuid": "0c503f66-4348-4934-9ced-33b9e5b76e72",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 597,
+ "trimY": 315,
+ "width": 114,
+ "height": 43,
+ "rawWidth": 114,
+ "rawHeight": 43,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chat_text_select.png": {
+ "ver": "1.0.3",
+ "uuid": "6756aeaf-a941-47e1-b050-40340620e637",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 592,
+ "trimY": 270,
+ "width": 114,
+ "height": 43,
+ "rawWidth": 114,
+ "rawHeight": 43,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "emoji_btn_normal.png": {
+ "ver": "1.0.3",
+ "uuid": "60a385cf-e2f4-49ae-b1d0-071e77ded151",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 592,
+ "trimY": 2,
+ "width": 266,
+ "height": 50,
+ "rawWidth": 266,
+ "rawHeight": 50,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "emoji_btn_select.png": {
+ "ver": "1.0.3",
+ "uuid": "af984eb9-3ddc-4c57-aacd-82887f7a19ee",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 696,
+ "trimY": 2,
+ "width": 263,
+ "height": 50,
+ "rawWidth": 263,
+ "rawHeight": 50,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "emoji_text_normal.png": {
+ "ver": "1.0.3",
+ "uuid": "0fa4979d-58c8-40d4-b4d7-b40a2b24fae1",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 686,
+ "trimY": 315,
+ "width": 100,
+ "height": 42,
+ "rawWidth": 100,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "emoji_text_select.png": {
+ "ver": "1.0.3",
+ "uuid": "48b4c355-d155-4d8f-8e2e-a25ac45dbefe",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 642,
+ "trimY": 315,
+ "width": 100,
+ "height": 42,
+ "rawWidth": 100,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/chat.png b/client/assets/resources/textures/images/chat.png
new file mode 100755
index 0000000..c53974a
Binary files /dev/null and b/client/assets/resources/textures/images/chat.png differ
diff --git a/client/assets/resources/textures/images/chat.png.meta b/client/assets/resources/textures/images/chat.png.meta
new file mode 100755
index 0000000..9522613
--- /dev/null
+++ b/client/assets/resources/textures/images/chat.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "chat": {
+ "ver": "1.0.3",
+ "uuid": "fb9a2d3b-1b7d-40da-8aaa-007dc3ff5910",
+ "rawTextureUuid": "d9a5c7ff-3978-4dd1-a86c-22a18c33ef01",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 796,
+ "height": 492,
+ "rawWidth": 800,
+ "rawHeight": 496,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom.meta b/client/assets/resources/textures/images/createroom.meta
new file mode 100755
index 0000000..79bf324
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "5119b920-221b-4421-90e1-94e08383cabb",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom.plist b/client/assets/resources/textures/images/createroom.plist
new file mode 100755
index 0000000..90be53f
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom.plist
@@ -0,0 +1,269 @@
+
+
+
+
+ frames
+
+ creatroom1.png
+
+ frame
+ {{196,10},{192,68}}
+ offset
+ {0,9}
+ rotated
+
+ sourceColorRect
+ {{0,0},{192,68}}
+ sourceSize
+ {192,86}
+
+ creatroom10.png
+
+ frame
+ {{891,10},{165,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{165,46}}
+ sourceSize
+ {165,46}
+
+ creatroom11.png
+
+ frame
+ {{1016,58},{82,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{82,40}}
+ sourceSize
+ {82,40}
+
+ creatroom12.png
+
+ frame
+ {{932,58},{82,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{82,40}}
+ sourceSize
+ {82,40}
+
+ creatroom13.png
+
+ frame
+ {{724,10},{165,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{165,46}}
+ sourceSize
+ {165,46}
+
+ creatroom14.png
+
+ frame
+ {{390,58},{163,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{163,46}}
+ sourceSize
+ {163,46}
+
+ creatroom15.png
+
+ frame
+ {{848,58},{82,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{82,40}}
+ sourceSize
+ {82,40}
+
+ creatroom16.png
+
+ frame
+ {{557,10},{165,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{165,46}}
+ sourceSize
+ {165,46}
+
+ creatroom17.png
+
+ frame
+ {{390,10},{165,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{165,46}}
+ sourceSize
+ {165,46}
+
+ creatroom18.png
+
+ frame
+ {{2,2},{1129,6}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1129,6}}
+ sourceSize
+ {1129,6}
+
+ creatroom19.png
+
+ frame
+ {{196,80},{82,38}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{82,38}}
+ sourceSize
+ {82,38}
+
+ creatroom2.png
+
+ frame
+ {{2,10},{192,86}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{192,86}}
+ sourceSize
+ {192,86}
+
+ creatroom3.png
+
+ frame
+ {{1058,10},{43,43}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{43,43}}
+ sourceSize
+ {43,43}
+
+ creatroom4.png
+
+ frame
+ {{280,80},{39,39}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{39,39}}
+ sourceSize
+ {39,39}
+
+ creatroom5.png
+
+ frame
+ {{321,80},{35,35}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{35,35}}
+ sourceSize
+ {35,35}
+
+ creatroom6.png
+
+ frame
+ {{358,80},{37,30}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{37,30}}
+ sourceSize
+ {37,30}
+
+ creatroom7.png
+
+ frame
+ {{555,58},{123,42}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{123,42}}
+ sourceSize
+ {123,42}
+
+ creatroom8.png
+
+ frame
+ {{764,58},{82,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{82,40}}
+ sourceSize
+ {82,40}
+
+ creatroom9.png
+
+ frame
+ {{680,58},{82,40}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{82,40}}
+ sourceSize
+ {82,40}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ createroom.png
+ size
+ {1133,121}
+ smartupdate
+ $TexturePacker:SmartUpdate:40cc9360b61f37d195edcaf735eab404:1/1$
+ textureFileName
+ createroom.png
+
+
+
diff --git a/client/assets/resources/textures/images/createroom.plist.meta b/client/assets/resources/textures/images/createroom.plist.meta
new file mode 100755
index 0000000..d4d2919
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom.plist.meta
@@ -0,0 +1,430 @@
+{
+ "ver": "1.2.4",
+ "uuid": "65f60710-5e7a-420b-8be7-50f81c38f9c6",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "size": {
+ "width": 1133,
+ "height": 121
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "creatroom1.png": {
+ "ver": "1.0.3",
+ "uuid": "6656bc3b-58ee-4b27-b058-13208d96e148",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 9,
+ "trimX": 196,
+ "trimY": 10,
+ "width": 192,
+ "height": 68,
+ "rawWidth": 192,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom10.png": {
+ "ver": "1.0.3",
+ "uuid": "79a3cddf-5aee-4cf6-b4bf-6a33c1fc99a3",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 891,
+ "trimY": 10,
+ "width": 165,
+ "height": 46,
+ "rawWidth": 165,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom11.png": {
+ "ver": "1.0.3",
+ "uuid": "e4f8042d-0ace-43c9-b944-929028c7e47b",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1016,
+ "trimY": 58,
+ "width": 82,
+ "height": 40,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom12.png": {
+ "ver": "1.0.3",
+ "uuid": "c600d178-02b7-4c68-920c-c79cf0f74790",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 932,
+ "trimY": 58,
+ "width": 82,
+ "height": 40,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom13.png": {
+ "ver": "1.0.3",
+ "uuid": "7f224e05-a30c-4e02-afcb-4985914b24c8",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 724,
+ "trimY": 10,
+ "width": 165,
+ "height": 46,
+ "rawWidth": 165,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom14.png": {
+ "ver": "1.0.3",
+ "uuid": "abf21e13-82d4-4347-b135-b547dfbbe254",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 390,
+ "trimY": 58,
+ "width": 163,
+ "height": 46,
+ "rawWidth": 163,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom15.png": {
+ "ver": "1.0.3",
+ "uuid": "b043e12f-af52-49e5-ab0e-17f848fbd3ec",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 848,
+ "trimY": 58,
+ "width": 82,
+ "height": 40,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom16.png": {
+ "ver": "1.0.3",
+ "uuid": "cf4f1ee6-e71c-44a5-adf4-d71d7d33530e",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 557,
+ "trimY": 10,
+ "width": 165,
+ "height": 46,
+ "rawWidth": 165,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom17.png": {
+ "ver": "1.0.3",
+ "uuid": "7f83d309-ba3c-4869-8942-2d727697a3c3",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 390,
+ "trimY": 10,
+ "width": 165,
+ "height": 46,
+ "rawWidth": 165,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom18.png": {
+ "ver": "1.0.3",
+ "uuid": "36839b7e-2d75-4b5c-9e36-9c4005ac8be0",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 1129,
+ "height": 6,
+ "rawWidth": 1129,
+ "rawHeight": 6,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom19.png": {
+ "ver": "1.0.3",
+ "uuid": "ceb4144f-fb9b-4869-ac37-cbcff0a0bef7",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 196,
+ "trimY": 80,
+ "width": 82,
+ "height": 38,
+ "rawWidth": 82,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom2.png": {
+ "ver": "1.0.3",
+ "uuid": "59821a17-576c-458a-9bbc-9930b55e0690",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 10,
+ "width": 192,
+ "height": 86,
+ "rawWidth": 192,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom3.png": {
+ "ver": "1.0.3",
+ "uuid": "1efbc606-874d-4c6c-b5e9-1799a28ad426",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1058,
+ "trimY": 10,
+ "width": 43,
+ "height": 43,
+ "rawWidth": 43,
+ "rawHeight": 43,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom4.png": {
+ "ver": "1.0.3",
+ "uuid": "225cf3da-f4d4-463d-ad5a-6db4211fec6f",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 280,
+ "trimY": 80,
+ "width": 39,
+ "height": 39,
+ "rawWidth": 39,
+ "rawHeight": 39,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom5.png": {
+ "ver": "1.0.3",
+ "uuid": "0eb58ac1-9097-4322-8878-b0c4ffeead29",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 321,
+ "trimY": 80,
+ "width": 35,
+ "height": 35,
+ "rawWidth": 35,
+ "rawHeight": 35,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom6.png": {
+ "ver": "1.0.3",
+ "uuid": "7c4bcc81-506d-4d5d-80b4-b13b9c4694a4",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 358,
+ "trimY": 80,
+ "width": 37,
+ "height": 30,
+ "rawWidth": 37,
+ "rawHeight": 30,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom7.png": {
+ "ver": "1.0.3",
+ "uuid": "03082215-5162-43c9-87df-e1a275d40258",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 555,
+ "trimY": 58,
+ "width": 123,
+ "height": 42,
+ "rawWidth": 123,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom8.png": {
+ "ver": "1.0.3",
+ "uuid": "94195fae-fcaf-440c-95d9-46b8dfa27914",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 764,
+ "trimY": 58,
+ "width": 82,
+ "height": 40,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "creatroom9.png": {
+ "ver": "1.0.3",
+ "uuid": "31aa3b0f-133e-4fe4-9daf-f5c267d8c8d1",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 680,
+ "trimY": 58,
+ "width": 82,
+ "height": 40,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom.png b/client/assets/resources/textures/images/createroom.png
new file mode 100755
index 0000000..11094ed
Binary files /dev/null and b/client/assets/resources/textures/images/createroom.png differ
diff --git a/client/assets/resources/textures/images/createroom.png.meta b/client/assets/resources/textures/images/createroom.png.meta
new file mode 100755
index 0000000..61834e5
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "createroom": {
+ "ver": "1.0.3",
+ "uuid": "c09b72bf-c8e1-428a-b444-a476a552f590",
+ "rawTextureUuid": "3cd441e4-716b-47db-bade-dca42f5a7568",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 1129,
+ "height": 117,
+ "rawWidth": 1133,
+ "rawHeight": 121,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom1.png b/client/assets/resources/textures/images/createroom/creatroom1.png
new file mode 100755
index 0000000..0583b9e
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom1.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom1.png.meta b/client/assets/resources/textures/images/createroom/creatroom1.png.meta
new file mode 100755
index 0000000..7b735d2
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "bb1116c6-b418-4c7c-9f65-873d0e7bbceb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom1": {
+ "ver": "1.0.3",
+ "uuid": "55b197ac-35a8-4f86-b416-5e312c7d478f",
+ "rawTextureUuid": "bb1116c6-b418-4c7c-9f65-873d0e7bbceb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0.5,
+ "trimX": 0,
+ "trimY": 9,
+ "width": 192,
+ "height": 67,
+ "rawWidth": 192,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom10.png b/client/assets/resources/textures/images/createroom/creatroom10.png
new file mode 100755
index 0000000..46bde4e
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom10.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom10.png.meta b/client/assets/resources/textures/images/createroom/creatroom10.png.meta
new file mode 100755
index 0000000..10d3966
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom10.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0ae56550-08e9-4444-9b8a-ef356408029b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom10": {
+ "ver": "1.0.3",
+ "uuid": "af4c27fb-c781-4f56-9006-4b78f7749122",
+ "rawTextureUuid": "0ae56550-08e9-4444-9b8a-ef356408029b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 165,
+ "height": 46,
+ "rawWidth": 165,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom11.png b/client/assets/resources/textures/images/createroom/creatroom11.png
new file mode 100755
index 0000000..649c44b
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom11.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom11.png.meta b/client/assets/resources/textures/images/createroom/creatroom11.png.meta
new file mode 100755
index 0000000..3ed655a
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom11.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "235c04a8-e57f-4d4f-860c-7eaaed62a1ed",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom11": {
+ "ver": "1.0.3",
+ "uuid": "55820244-86f9-49f2-b729-7a988c9789eb",
+ "rawTextureUuid": "235c04a8-e57f-4d4f-860c-7eaaed62a1ed",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 82,
+ "height": 39,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom12.png b/client/assets/resources/textures/images/createroom/creatroom12.png
new file mode 100755
index 0000000..cbee4b4
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom12.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom12.png.meta b/client/assets/resources/textures/images/createroom/creatroom12.png.meta
new file mode 100755
index 0000000..391e30b
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom12.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3e178941-3ab2-47a1-b601-71189f2f41f6",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom12": {
+ "ver": "1.0.3",
+ "uuid": "67cd47b4-d618-4c22-b67a-cec10bac9e01",
+ "rawTextureUuid": "3e178941-3ab2-47a1-b601-71189f2f41f6",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 82,
+ "height": 39,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom13.png b/client/assets/resources/textures/images/createroom/creatroom13.png
new file mode 100755
index 0000000..86a04a6
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom13.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom13.png.meta b/client/assets/resources/textures/images/createroom/creatroom13.png.meta
new file mode 100755
index 0000000..081e579
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom13.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "cb301ca5-df49-484a-9cfb-6192288b56ef",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom13": {
+ "ver": "1.0.3",
+ "uuid": "12e8bd3b-0771-43fb-a746-193612cbd975",
+ "rawTextureUuid": "cb301ca5-df49-484a-9cfb-6192288b56ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 164,
+ "height": 46,
+ "rawWidth": 165,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom14.png b/client/assets/resources/textures/images/createroom/creatroom14.png
new file mode 100755
index 0000000..ec2606a
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom14.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom14.png.meta b/client/assets/resources/textures/images/createroom/creatroom14.png.meta
new file mode 100755
index 0000000..6b74bd5
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom14.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d161e7c9-9600-44f0-8860-05bbde58c97f",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom14": {
+ "ver": "1.0.3",
+ "uuid": "13aed263-d9f2-4bb9-8c32-14e98079d987",
+ "rawTextureUuid": "d161e7c9-9600-44f0-8860-05bbde58c97f",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 162,
+ "height": 46,
+ "rawWidth": 163,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom15.png b/client/assets/resources/textures/images/createroom/creatroom15.png
new file mode 100755
index 0000000..aa2a7e5
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom15.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom15.png.meta b/client/assets/resources/textures/images/createroom/creatroom15.png.meta
new file mode 100755
index 0000000..ec76b1b
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom15.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2bc2dd60-cc80-4ede-a6e1-3bb0a701d56e",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom15": {
+ "ver": "1.0.3",
+ "uuid": "222a745c-276f-4315-951d-e9a9a7f64a92",
+ "rawTextureUuid": "2bc2dd60-cc80-4ede-a6e1-3bb0a701d56e",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 82,
+ "height": 39,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom16.png b/client/assets/resources/textures/images/createroom/creatroom16.png
new file mode 100755
index 0000000..00330b8
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom16.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom16.png.meta b/client/assets/resources/textures/images/createroom/creatroom16.png.meta
new file mode 100755
index 0000000..acc7c63
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom16.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5eabeb79-1ca0-4e66-b570-0c196485aad1",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom16": {
+ "ver": "1.0.3",
+ "uuid": "be38b769-8c5b-4993-8adf-89a1030fd1c7",
+ "rawTextureUuid": "5eabeb79-1ca0-4e66-b570-0c196485aad1",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -0.5,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 164,
+ "height": 46,
+ "rawWidth": 165,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom17.png b/client/assets/resources/textures/images/createroom/creatroom17.png
new file mode 100755
index 0000000..5e127e4
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom17.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom17.png.meta b/client/assets/resources/textures/images/createroom/creatroom17.png.meta
new file mode 100755
index 0000000..86793f2
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom17.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d533f107-b48c-458b-bbdd-97af6dcf0247",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom17": {
+ "ver": "1.0.3",
+ "uuid": "fef69d00-9cf6-4d00-b7ae-bebb21662a8e",
+ "rawTextureUuid": "d533f107-b48c-458b-bbdd-97af6dcf0247",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 164,
+ "height": 46,
+ "rawWidth": 165,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom18.png b/client/assets/resources/textures/images/createroom/creatroom18.png
new file mode 100755
index 0000000..1867cf6
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom18.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom18.png.meta b/client/assets/resources/textures/images/createroom/creatroom18.png.meta
new file mode 100755
index 0000000..e7e7289
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom18.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "630de832-9583-4210-9e7f-e25f6d28fd45",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom18": {
+ "ver": "1.0.3",
+ "uuid": "73d4b149-36e7-4f03-b402-977640431a63",
+ "rawTextureUuid": "630de832-9583-4210-9e7f-e25f6d28fd45",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1129,
+ "height": 6,
+ "rawWidth": 1129,
+ "rawHeight": 6,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom19.png b/client/assets/resources/textures/images/createroom/creatroom19.png
new file mode 100755
index 0000000..0c1116e
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom19.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom19.png.meta b/client/assets/resources/textures/images/createroom/creatroom19.png.meta
new file mode 100755
index 0000000..378a271
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom19.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "c839b3b9-85a0-4d72-8154-19018837fa8b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom19": {
+ "ver": "1.0.3",
+ "uuid": "c2100b7f-8046-4bb3-bd52-cc4508178e06",
+ "rawTextureUuid": "c839b3b9-85a0-4d72-8154-19018837fa8b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 81,
+ "height": 38,
+ "rawWidth": 82,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom2.png b/client/assets/resources/textures/images/createroom/creatroom2.png
new file mode 100755
index 0000000..4ccc8ec
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom2.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom2.png.meta b/client/assets/resources/textures/images/createroom/creatroom2.png.meta
new file mode 100755
index 0000000..fdd314d
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "35231195-44c0-4a75-8697-0a15a54b7bdd",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom2": {
+ "ver": "1.0.3",
+ "uuid": "3dfc3ead-35d3-45f5-a6be-32c076d1288a",
+ "rawTextureUuid": "35231195-44c0-4a75-8697-0a15a54b7bdd",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 192,
+ "height": 86,
+ "rawWidth": 192,
+ "rawHeight": 86,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom3.png b/client/assets/resources/textures/images/createroom/creatroom3.png
new file mode 100755
index 0000000..f5c21f7
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom3.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom3.png.meta b/client/assets/resources/textures/images/createroom/creatroom3.png.meta
new file mode 100755
index 0000000..06915dc
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7491ebaf-d0f3-406e-8ebf-b0b540c62917",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom3": {
+ "ver": "1.0.3",
+ "uuid": "22080299-d7f9-4918-a7d9-cccefd0e8dc5",
+ "rawTextureUuid": "7491ebaf-d0f3-406e-8ebf-b0b540c62917",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 43,
+ "height": 43,
+ "rawWidth": 43,
+ "rawHeight": 43,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom4.png b/client/assets/resources/textures/images/createroom/creatroom4.png
new file mode 100755
index 0000000..b349c58
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom4.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom4.png.meta b/client/assets/resources/textures/images/createroom/creatroom4.png.meta
new file mode 100755
index 0000000..47d5aae
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "16ccf94f-85ee-49a4-80ce-24859253da29",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom4": {
+ "ver": "1.0.3",
+ "uuid": "770fb40d-90f1-4f30-bf62-6fb71709822a",
+ "rawTextureUuid": "16ccf94f-85ee-49a4-80ce-24859253da29",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 39,
+ "height": 39,
+ "rawWidth": 39,
+ "rawHeight": 39,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom5.png b/client/assets/resources/textures/images/createroom/creatroom5.png
new file mode 100755
index 0000000..d1f826e
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom5.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom5.png.meta b/client/assets/resources/textures/images/createroom/creatroom5.png.meta
new file mode 100755
index 0000000..5f4679a
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "f134d6f5-5f2c-4d67-b979-52b459394449",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom5": {
+ "ver": "1.0.3",
+ "uuid": "0b9cf141-3b97-4465-a5bd-fe04e8f6628c",
+ "rawTextureUuid": "f134d6f5-5f2c-4d67-b979-52b459394449",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 35,
+ "height": 35,
+ "rawWidth": 35,
+ "rawHeight": 35,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom6.png b/client/assets/resources/textures/images/createroom/creatroom6.png
new file mode 100755
index 0000000..720ec8e
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom6.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom6.png.meta b/client/assets/resources/textures/images/createroom/creatroom6.png.meta
new file mode 100755
index 0000000..dffa9ea
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a1b6f0f2-5105-4910-adac-905068590909",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom6": {
+ "ver": "1.0.3",
+ "uuid": "9bb8d4cf-dc27-48e6-bdef-26088408c9fb",
+ "rawTextureUuid": "a1b6f0f2-5105-4910-adac-905068590909",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 37,
+ "height": 30,
+ "rawWidth": 37,
+ "rawHeight": 30,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom7.png b/client/assets/resources/textures/images/createroom/creatroom7.png
new file mode 100755
index 0000000..78d079f
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom7.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom7.png.meta b/client/assets/resources/textures/images/createroom/creatroom7.png.meta
new file mode 100755
index 0000000..6802825
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom7.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5cb2b418-e4c5-4d82-af36-d7b61a612d42",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom7": {
+ "ver": "1.0.3",
+ "uuid": "b7b0dff4-defb-47eb-90fe-b8b232c946a0",
+ "rawTextureUuid": "5cb2b418-e4c5-4d82-af36-d7b61a612d42",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 122,
+ "height": 42,
+ "rawWidth": 123,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom8.png b/client/assets/resources/textures/images/createroom/creatroom8.png
new file mode 100755
index 0000000..a4ddd1d
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom8.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom8.png.meta b/client/assets/resources/textures/images/createroom/creatroom8.png.meta
new file mode 100755
index 0000000..3c90e82
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom8.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4016d2d2-bcb1-4c8d-a473-42fb7a0b8de0",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom8": {
+ "ver": "1.0.3",
+ "uuid": "513fe529-e749-4dcb-af5a-344702ea6f05",
+ "rawTextureUuid": "4016d2d2-bcb1-4c8d-a473-42fb7a0b8de0",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": -0.5,
+ "trimX": 1,
+ "trimY": 1,
+ "width": 81,
+ "height": 39,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/createroom/creatroom9.png b/client/assets/resources/textures/images/createroom/creatroom9.png
new file mode 100755
index 0000000..df81495
Binary files /dev/null and b/client/assets/resources/textures/images/createroom/creatroom9.png differ
diff --git a/client/assets/resources/textures/images/createroom/creatroom9.png.meta b/client/assets/resources/textures/images/createroom/creatroom9.png.meta
new file mode 100755
index 0000000..5dcbe86
--- /dev/null
+++ b/client/assets/resources/textures/images/createroom/creatroom9.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "49023c3c-26b3-42a9-bbf5-061387e6bfaf",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "creatroom9": {
+ "ver": "1.0.3",
+ "uuid": "bc230405-a547-46fd-8382-a88fe1de1a91",
+ "rawTextureUuid": "49023c3c-26b3-42a9-bbf5-061387e6bfaf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 82,
+ "height": 39,
+ "rawWidth": 82,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/dingque.plist b/client/assets/resources/textures/images/dingque.plist
new file mode 100755
index 0000000..6fbdea8
--- /dev/null
+++ b/client/assets/resources/textures/images/dingque.plist
@@ -0,0 +1,100 @@
+
+
+
+
+ frames
+
+ dingtiao.png
+
+ frame
+ {{2,2},{77,79}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{77,79}}
+ sourceSize
+ {77,79}
+
+ dingtong.png
+
+ frame
+ {{81,2},{75,79}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{1,0},{75,79}}
+ sourceSize
+ {77,79}
+
+ dingwan.png
+
+ frame
+ {{158,2},{77,75}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,2},{77,75}}
+ sourceSize
+ {77,79}
+
+ tiaojiaobiao.png
+
+ frame
+ {{82,83},{38,38}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{38,38}}
+ sourceSize
+ {38,38}
+
+ tongjiaobiao.png
+
+ frame
+ {{42,83},{38,38}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{38,38}}
+ sourceSize
+ {38,38}
+
+ wanjiaobiao.png
+
+ frame
+ {{2,83},{38,38}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{38,38}}
+ sourceSize
+ {38,38}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ dingque.png
+ size
+ {235,123}
+ smartupdate
+ $TexturePacker:SmartUpdate:b568586f1321f363802776be1ee3a452:1/1$
+ textureFileName
+ dingque.png
+
+
+
diff --git a/client/assets/resources/textures/images/dingque.plist.meta b/client/assets/resources/textures/images/dingque.plist.meta
new file mode 100755
index 0000000..0cad197
--- /dev/null
+++ b/client/assets/resources/textures/images/dingque.plist.meta
@@ -0,0 +1,144 @@
+{
+ "ver": "1.2.4",
+ "uuid": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8",
+ "rawTextureUuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "size": {
+ "width": 235,
+ "height": 123
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "dingtiao.png": {
+ "ver": "1.0.3",
+ "uuid": "b336e47e-89fc-40d9-9048-d4bfa232739c",
+ "rawTextureUuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 77,
+ "height": 79,
+ "rawWidth": 77,
+ "rawHeight": 79,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "dingtong.png": {
+ "ver": "1.0.3",
+ "uuid": "3776c26b-553b-419d-b952-a2e0db712436",
+ "rawTextureUuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 81,
+ "trimY": 2,
+ "width": 75,
+ "height": 79,
+ "rawWidth": 77,
+ "rawHeight": 79,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "dingwan.png": {
+ "ver": "1.0.3",
+ "uuid": "1f337ec9-dafc-41c7-9f98-213d943efcb9",
+ "rawTextureUuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 158,
+ "trimY": 2,
+ "width": 77,
+ "height": 75,
+ "rawWidth": 77,
+ "rawHeight": 79,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "tiaojiaobiao.png": {
+ "ver": "1.0.3",
+ "uuid": "70e14a7e-9eac-46a0-9aab-6e6584e120ab",
+ "rawTextureUuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 82,
+ "trimY": 83,
+ "width": 38,
+ "height": 38,
+ "rawWidth": 38,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "tongjiaobiao.png": {
+ "ver": "1.0.3",
+ "uuid": "5814d418-f75c-49fa-b3ff-910c85c9c9ba",
+ "rawTextureUuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 42,
+ "trimY": 83,
+ "width": 38,
+ "height": 38,
+ "rawWidth": 38,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "wanjiaobiao.png": {
+ "ver": "1.0.3",
+ "uuid": "d0c01627-4d4d-4e0f-a8cf-872b3965b082",
+ "rawTextureUuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 83,
+ "width": 38,
+ "height": 38,
+ "rawWidth": 38,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/dingque.png b/client/assets/resources/textures/images/dingque.png
new file mode 100755
index 0000000..dc0d5ff
Binary files /dev/null and b/client/assets/resources/textures/images/dingque.png differ
diff --git a/client/assets/resources/textures/images/dingque.png.meta b/client/assets/resources/textures/images/dingque.png.meta
new file mode 100755
index 0000000..e65de9d
--- /dev/null
+++ b/client/assets/resources/textures/images/dingque.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "dingque": {
+ "ver": "1.0.3",
+ "uuid": "b46b6ea1-67da-4949-a2af-45e76463796c",
+ "rawTextureUuid": "453df665-6bdf-4990-a57e-4dd754766c93",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 231,
+ "height": 119,
+ "rawWidth": 235,
+ "rawHeight": 123,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx.meta b/client/assets/resources/textures/images/efx.meta
new file mode 100755
index 0000000..d17ec09
--- /dev/null
+++ b/client/assets/resources/textures/images/efx.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "078cc4bf-a7e8-493a-97ad-a32be4481c95",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/gang_glow.png b/client/assets/resources/textures/images/efx/gang_glow.png
new file mode 100755
index 0000000..3009e07
Binary files /dev/null and b/client/assets/resources/textures/images/efx/gang_glow.png differ
diff --git a/client/assets/resources/textures/images/efx/gang_glow.png.meta b/client/assets/resources/textures/images/efx/gang_glow.png.meta
new file mode 100755
index 0000000..c75e046
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/gang_glow.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "774dbbab-fb44-4d2b-b054-a1d7dff16e12",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "gang_glow": {
+ "ver": "1.0.3",
+ "uuid": "76bddb0f-eec5-4801-b527-5df333134dd5",
+ "rawTextureUuid": "774dbbab-fb44-4d2b-b054-a1d7dff16e12",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 14,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 256,
+ "height": 228,
+ "rawWidth": 256,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/gang_glow2.png b/client/assets/resources/textures/images/efx/gang_glow2.png
new file mode 100755
index 0000000..71524ba
Binary files /dev/null and b/client/assets/resources/textures/images/efx/gang_glow2.png differ
diff --git a/client/assets/resources/textures/images/efx/gang_glow2.png.meta b/client/assets/resources/textures/images/efx/gang_glow2.png.meta
new file mode 100755
index 0000000..0eabff8
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/gang_glow2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "60d88d29-5aa4-436b-bbb0-a58bdf178633",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "gang_glow2": {
+ "ver": "1.0.3",
+ "uuid": "99eaf0ec-4201-4fb5-9edb-389538ff8e43",
+ "rawTextureUuid": "60d88d29-5aa4-436b-bbb0-a58bdf178633",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 11,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 256,
+ "height": 234,
+ "rawWidth": 256,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/guafeng1.png b/client/assets/resources/textures/images/efx/guafeng1.png
new file mode 100755
index 0000000..80b8de5
Binary files /dev/null and b/client/assets/resources/textures/images/efx/guafeng1.png differ
diff --git a/client/assets/resources/textures/images/efx/guafeng1.png.meta b/client/assets/resources/textures/images/efx/guafeng1.png.meta
new file mode 100755
index 0000000..273e44e
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/guafeng1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "96639528-0d53-4f89-978e-d559c3f35c24",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "guafeng1": {
+ "ver": "1.0.3",
+ "uuid": "d4b7c258-db82-4cee-99c3-cbdd4c71b941",
+ "rawTextureUuid": "96639528-0d53-4f89-978e-d559c3f35c24",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -2,
+ "trimX": 1,
+ "trimY": 4,
+ "width": 228,
+ "height": 126,
+ "rawWidth": 230,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/guafeng2.png b/client/assets/resources/textures/images/efx/guafeng2.png
new file mode 100755
index 0000000..90852d0
Binary files /dev/null and b/client/assets/resources/textures/images/efx/guafeng2.png differ
diff --git a/client/assets/resources/textures/images/efx/guafeng2.png.meta b/client/assets/resources/textures/images/efx/guafeng2.png.meta
new file mode 100755
index 0000000..2881c0c
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/guafeng2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4cd3e754-eed7-4544-adbe-9a1936b7d13a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "guafeng2": {
+ "ver": "1.0.3",
+ "uuid": "fd62cb57-e79b-4fb0-865a-bce7bf226a16",
+ "rawTextureUuid": "4cd3e754-eed7-4544-adbe-9a1936b7d13a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -2,
+ "trimX": 8,
+ "trimY": 11,
+ "width": 214,
+ "height": 112,
+ "rawWidth": 230,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/guafeng3.png b/client/assets/resources/textures/images/efx/guafeng3.png
new file mode 100755
index 0000000..aafb528
Binary files /dev/null and b/client/assets/resources/textures/images/efx/guafeng3.png differ
diff --git a/client/assets/resources/textures/images/efx/guafeng3.png.meta b/client/assets/resources/textures/images/efx/guafeng3.png.meta
new file mode 100755
index 0000000..9cf88b6
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/guafeng3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e6dc53ae-d721-4b5d-be8d-9bf3a914f557",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "guafeng3": {
+ "ver": "1.0.3",
+ "uuid": "09de0d73-53fe-44c3-8fd5-f02d3dfe80bb",
+ "rawTextureUuid": "e6dc53ae-d721-4b5d-be8d-9bf3a914f557",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -2,
+ "trimX": 12,
+ "trimY": 15,
+ "width": 206,
+ "height": 104,
+ "rawWidth": 230,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/guafeng4.png b/client/assets/resources/textures/images/efx/guafeng4.png
new file mode 100755
index 0000000..5bdbae5
Binary files /dev/null and b/client/assets/resources/textures/images/efx/guafeng4.png differ
diff --git a/client/assets/resources/textures/images/efx/guafeng4.png.meta b/client/assets/resources/textures/images/efx/guafeng4.png.meta
new file mode 100755
index 0000000..54fa243
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/guafeng4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e1c75566-4120-4dc7-8623-d75450c1813b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "guafeng4": {
+ "ver": "1.0.3",
+ "uuid": "7d776ae8-340f-4a13-ba9e-8c05afa9ac30",
+ "rawTextureUuid": "e1c75566-4120-4dc7-8623-d75450c1813b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -2,
+ "trimX": 12,
+ "trimY": 15,
+ "width": 206,
+ "height": 104,
+ "rawWidth": 230,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/guafeng5.png b/client/assets/resources/textures/images/efx/guafeng5.png
new file mode 100755
index 0000000..d8cd430
Binary files /dev/null and b/client/assets/resources/textures/images/efx/guafeng5.png differ
diff --git a/client/assets/resources/textures/images/efx/guafeng5.png.meta b/client/assets/resources/textures/images/efx/guafeng5.png.meta
new file mode 100755
index 0000000..6e3d780
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/guafeng5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "99f8c790-c97a-4173-b22c-536b6f728cc3",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "guafeng5": {
+ "ver": "1.0.3",
+ "uuid": "5bd44f21-8a1b-413d-8d64-08e3c4b67f90",
+ "rawTextureUuid": "99f8c790-c97a-4173-b22c-536b6f728cc3",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -2,
+ "trimX": 12,
+ "trimY": 15,
+ "width": 206,
+ "height": 104,
+ "rawWidth": 230,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/guafeng6.png b/client/assets/resources/textures/images/efx/guafeng6.png
new file mode 100755
index 0000000..aaa355d
Binary files /dev/null and b/client/assets/resources/textures/images/efx/guafeng6.png differ
diff --git a/client/assets/resources/textures/images/efx/guafeng6.png.meta b/client/assets/resources/textures/images/efx/guafeng6.png.meta
new file mode 100755
index 0000000..ece1574
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/guafeng6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "09868de4-287c-4845-89f3-89579f51d784",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "guafeng6": {
+ "ver": "1.0.3",
+ "uuid": "a0fc3f61-d6aa-459a-acce-8203cea59a66",
+ "rawTextureUuid": "09868de4-287c-4845-89f3-89579f51d784",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -2,
+ "trimX": 12,
+ "trimY": 15,
+ "width": 206,
+ "height": 104,
+ "rawWidth": 230,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/guafeng7.png b/client/assets/resources/textures/images/efx/guafeng7.png
new file mode 100755
index 0000000..57550c9
Binary files /dev/null and b/client/assets/resources/textures/images/efx/guafeng7.png differ
diff --git a/client/assets/resources/textures/images/efx/guafeng7.png.meta b/client/assets/resources/textures/images/efx/guafeng7.png.meta
new file mode 100755
index 0000000..1366674
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/guafeng7.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "32fc197c-7bbc-4591-9625-2baf648da5ef",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "guafeng7": {
+ "ver": "1.0.3",
+ "uuid": "00d442fc-5cf0-417a-bb75-566f8d97b3b4",
+ "rawTextureUuid": "32fc197c-7bbc-4591-9625-2baf648da5ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 3,
+ "offsetY": -2,
+ "trimX": 12,
+ "trimY": 15,
+ "width": 212,
+ "height": 104,
+ "rawWidth": 230,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/hu_glow.png b/client/assets/resources/textures/images/efx/hu_glow.png
new file mode 100755
index 0000000..8e2e8c3
Binary files /dev/null and b/client/assets/resources/textures/images/efx/hu_glow.png differ
diff --git a/client/assets/resources/textures/images/efx/hu_glow.png.meta b/client/assets/resources/textures/images/efx/hu_glow.png.meta
new file mode 100755
index 0000000..485bd58
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/hu_glow.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "b88dd24d-1603-464f-994e-1924e26fe26b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "hu_glow": {
+ "ver": "1.0.3",
+ "uuid": "9726de75-0100-4e08-b0ff-e1b563661cc3",
+ "rawTextureUuid": "b88dd24d-1603-464f-994e-1924e26fe26b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 256,
+ "height": 256,
+ "rawWidth": 256,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/hu_glow3.png b/client/assets/resources/textures/images/efx/hu_glow3.png
new file mode 100755
index 0000000..4da8daa
Binary files /dev/null and b/client/assets/resources/textures/images/efx/hu_glow3.png differ
diff --git a/client/assets/resources/textures/images/efx/hu_glow3.png.meta b/client/assets/resources/textures/images/efx/hu_glow3.png.meta
new file mode 100755
index 0000000..dfb9b59
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/hu_glow3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3970706b-b147-461d-82cb-497fa72c3cef",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "hu_glow3": {
+ "ver": "1.0.3",
+ "uuid": "0a7d1bf3-6a53-4ebf-ac44-ceda9ca52a24",
+ "rawTextureUuid": "3970706b-b147-461d-82cb-497fa72c3cef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -8,
+ "offsetY": 2,
+ "trimX": 0,
+ "trimY": 11,
+ "width": 240,
+ "height": 230,
+ "rawWidth": 256,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/hu_glow4.png b/client/assets/resources/textures/images/efx/hu_glow4.png
new file mode 100755
index 0000000..c9a8846
Binary files /dev/null and b/client/assets/resources/textures/images/efx/hu_glow4.png differ
diff --git a/client/assets/resources/textures/images/efx/hu_glow4.png.meta b/client/assets/resources/textures/images/efx/hu_glow4.png.meta
new file mode 100755
index 0000000..4cb60e0
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/hu_glow4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "9b1c5535-dfb0-4b57-9a2a-b82d66a5fbf0",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "hu_glow4": {
+ "ver": "1.0.3",
+ "uuid": "1504fb27-c4c3-4d10-9781-fd527df30a19",
+ "rawTextureUuid": "9b1c5535-dfb0-4b57-9a2a-b82d66a5fbf0",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 256,
+ "height": 256,
+ "rawWidth": 256,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/peng_glow.png b/client/assets/resources/textures/images/efx/peng_glow.png
new file mode 100755
index 0000000..bb42574
Binary files /dev/null and b/client/assets/resources/textures/images/efx/peng_glow.png differ
diff --git a/client/assets/resources/textures/images/efx/peng_glow.png.meta b/client/assets/resources/textures/images/efx/peng_glow.png.meta
new file mode 100755
index 0000000..44b66c0
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/peng_glow.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "26db4da3-a1a1-4145-99b8-dc05d712d1c4",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "peng_glow": {
+ "ver": "1.0.3",
+ "uuid": "0af3806a-fc3e-4554-ae11-72122fc2a87d",
+ "rawTextureUuid": "26db4da3-a1a1-4145-99b8-dc05d712d1c4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 256,
+ "height": 256,
+ "rawWidth": 256,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/peng_glow2.png b/client/assets/resources/textures/images/efx/peng_glow2.png
new file mode 100755
index 0000000..b5dc779
Binary files /dev/null and b/client/assets/resources/textures/images/efx/peng_glow2.png differ
diff --git a/client/assets/resources/textures/images/efx/peng_glow2.png.meta b/client/assets/resources/textures/images/efx/peng_glow2.png.meta
new file mode 100755
index 0000000..1b91571
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/peng_glow2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "47fbfae0-fa36-477f-877a-99af225cf9fb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "peng_glow2": {
+ "ver": "1.0.3",
+ "uuid": "fb70909f-8fd7-45c3-9a8a-409e63c6d6e5",
+ "rawTextureUuid": "47fbfae0-fa36-477f-877a-99af225cf9fb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 3.5,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 256,
+ "height": 249,
+ "rawWidth": 256,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/rain1.png b/client/assets/resources/textures/images/efx/rain1.png
new file mode 100755
index 0000000..d891bbc
Binary files /dev/null and b/client/assets/resources/textures/images/efx/rain1.png differ
diff --git a/client/assets/resources/textures/images/efx/rain1.png.meta b/client/assets/resources/textures/images/efx/rain1.png.meta
new file mode 100755
index 0000000..48e9a1d
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/rain1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d460b616-f613-4799-ac5e-ca927f08f7ed",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "rain1": {
+ "ver": "1.0.3",
+ "uuid": "7498f8b2-3d65-47a5-a5dc-3f484a6e5f42",
+ "rawTextureUuid": "d460b616-f613-4799-ac5e-ca927f08f7ed",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 2,
+ "offsetY": 33,
+ "trimX": 41,
+ "trimY": 27,
+ "width": 132,
+ "height": 130,
+ "rawWidth": 210,
+ "rawHeight": 250,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/rain2.png b/client/assets/resources/textures/images/efx/rain2.png
new file mode 100755
index 0000000..ffb0594
Binary files /dev/null and b/client/assets/resources/textures/images/efx/rain2.png differ
diff --git a/client/assets/resources/textures/images/efx/rain2.png.meta b/client/assets/resources/textures/images/efx/rain2.png.meta
new file mode 100755
index 0000000..496e406
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/rain2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "464602ca-c348-455f-9709-8774e50132d4",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "rain2": {
+ "ver": "1.0.3",
+ "uuid": "72f3f982-810b-4ca7-8662-602d2424e179",
+ "rawTextureUuid": "464602ca-c348-455f-9709-8774e50132d4",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 2,
+ "offsetY": 11.5,
+ "trimX": 9,
+ "trimY": 23,
+ "width": 196,
+ "height": 181,
+ "rawWidth": 210,
+ "rawHeight": 250,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/rain3.png b/client/assets/resources/textures/images/efx/rain3.png
new file mode 100755
index 0000000..b388f0d
Binary files /dev/null and b/client/assets/resources/textures/images/efx/rain3.png differ
diff --git a/client/assets/resources/textures/images/efx/rain3.png.meta b/client/assets/resources/textures/images/efx/rain3.png.meta
new file mode 100755
index 0000000..d51f9c4
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/rain3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0bc3e47f-8eef-4913-83cd-f1bea2e789a6",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "rain3": {
+ "ver": "1.0.3",
+ "uuid": "dfd021b3-5669-4e73-8a28-5e16a579e110",
+ "rawTextureUuid": "0bc3e47f-8eef-4913-83cd-f1bea2e789a6",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 1,
+ "offsetY": 16.5,
+ "trimX": 20,
+ "trimY": 24,
+ "width": 172,
+ "height": 169,
+ "rawWidth": 210,
+ "rawHeight": 250,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/rain4.png b/client/assets/resources/textures/images/efx/rain4.png
new file mode 100755
index 0000000..3ee982a
Binary files /dev/null and b/client/assets/resources/textures/images/efx/rain4.png differ
diff --git a/client/assets/resources/textures/images/efx/rain4.png.meta b/client/assets/resources/textures/images/efx/rain4.png.meta
new file mode 100755
index 0000000..0dc4f1b
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/rain4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "9b266e8b-c0ce-4fb6-af3a-e38758e00c66",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "rain4": {
+ "ver": "1.0.3",
+ "uuid": "38d62777-d02a-4b17-a3f0-493cc47d334e",
+ "rawTextureUuid": "9b266e8b-c0ce-4fb6-af3a-e38758e00c66",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 2,
+ "offsetY": 21,
+ "trimX": 22,
+ "trimY": 24,
+ "width": 170,
+ "height": 160,
+ "rawWidth": 210,
+ "rawHeight": 250,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/rain5.png b/client/assets/resources/textures/images/efx/rain5.png
new file mode 100755
index 0000000..a2936f6
Binary files /dev/null and b/client/assets/resources/textures/images/efx/rain5.png differ
diff --git a/client/assets/resources/textures/images/efx/rain5.png.meta b/client/assets/resources/textures/images/efx/rain5.png.meta
new file mode 100755
index 0000000..a390cbe
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/rain5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a71be873-76dd-46f4-8bea-8418aac6ecb3",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "rain5": {
+ "ver": "1.0.3",
+ "uuid": "2ad8e984-fb49-4a51-ac0f-46bb27251f6e",
+ "rawTextureUuid": "a71be873-76dd-46f4-8bea-8418aac6ecb3",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 1,
+ "offsetY": 23,
+ "trimX": 20,
+ "trimY": 24,
+ "width": 172,
+ "height": 156,
+ "rawWidth": 210,
+ "rawHeight": 250,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/rain6.png b/client/assets/resources/textures/images/efx/rain6.png
new file mode 100755
index 0000000..9061438
Binary files /dev/null and b/client/assets/resources/textures/images/efx/rain6.png differ
diff --git a/client/assets/resources/textures/images/efx/rain6.png.meta b/client/assets/resources/textures/images/efx/rain6.png.meta
new file mode 100755
index 0000000..ccbdd40
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/rain6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0b44d615-3d30-4e0e-8536-428e9a1baaf7",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "rain6": {
+ "ver": "1.0.3",
+ "uuid": "667bb892-2b32-4444-9750-6c7dfa65b275",
+ "rawTextureUuid": "0b44d615-3d30-4e0e-8536-428e9a1baaf7",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 1.5,
+ "offsetY": 16.5,
+ "trimX": 21,
+ "trimY": 24,
+ "width": 171,
+ "height": 169,
+ "rawWidth": 210,
+ "rawHeight": 250,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/efx/zimo_glow2.png b/client/assets/resources/textures/images/efx/zimo_glow2.png
new file mode 100755
index 0000000..64991d2
Binary files /dev/null and b/client/assets/resources/textures/images/efx/zimo_glow2.png differ
diff --git a/client/assets/resources/textures/images/efx/zimo_glow2.png.meta b/client/assets/resources/textures/images/efx/zimo_glow2.png.meta
new file mode 100755
index 0000000..fdf90d1
--- /dev/null
+++ b/client/assets/resources/textures/images/efx/zimo_glow2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "f273fe57-f086-4c03-bf25-d4e68cc567fe",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "zimo_glow2": {
+ "ver": "1.0.3",
+ "uuid": "737ce392-0510-4d29-abc2-788dd4d02bff",
+ "rawTextureUuid": "f273fe57-f086-4c03-bf25-d4e68cc567fe",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -6,
+ "offsetY": 5,
+ "trimX": 35,
+ "trimY": 0,
+ "width": 430,
+ "height": 246,
+ "rawWidth": 512,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/history_record.plist b/client/assets/resources/textures/images/history_record.plist
new file mode 100755
index 0000000..f1a2967
--- /dev/null
+++ b/client/assets/resources/textures/images/history_record.plist
@@ -0,0 +1,243 @@
+
+
+
+
+ frames
+
+ hist_detail_list_cell_bg.png
+
+ frame
+ {{2,2},{1081,155}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1081,155}}
+ sourceSize
+ {1081,155}
+
+ hist_rec_backward.png
+
+ frame
+ {{578,159},{50,41}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{50,41}}
+ sourceSize
+ {50,41}
+
+ hist_rec_bar.png
+
+ frame
+ {{208,203},{114,4}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{114,4}}
+ sourceSize
+ {114,4}
+
+ hist_rec_bg.png
+
+ frame
+ {{1889,2},{139,129}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{139,129}}
+ sourceSize
+ {139,129}
+
+ hist_rec_di1.png
+
+ frame
+ {{666,183},{22,22}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{22,22}}
+ sourceSize
+ {22,22}
+
+ hist_rec_di2.png
+
+ frame
+ {{666,159},{22,22}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{22,22}}
+ sourceSize
+ {22,22}
+
+ hist_rec_exit.png
+
+ frame
+ {{365,159},{54,50}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{54,50}}
+ sourceSize
+ {54,50}
+
+ hist_rec_forward.png
+
+ frame
+ {{535,159},{50,41}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{50,41}}
+ sourceSize
+ {50,41}
+
+ hist_rec_frame.png
+
+ frame
+ {{1707,2},{180,180}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{180,180}}
+ sourceSize
+ {180,180}
+
+ hist_rec_pause.png
+
+ frame
+ {{421,159},{48,56}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{48,56}}
+ sourceSize
+ {48,56}
+
+ hist_rec_play.png
+
+ frame
+ {{479,159},{48,54}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{48,54}}
+ sourceSize
+ {48,54}
+
+ hist_rec_play_bg.png
+
+ frame
+ {{1085,2},{470,106}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{470,106}}
+ sourceSize
+ {470,106}
+
+ hist_rec_replay.png
+
+ frame
+ {{621,159},{43,43}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{43,43}}
+ sourceSize
+ {43,43}
+
+ hist_rec_title_1.png
+
+ frame
+ {{208,159},{155,42}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{155,42}}
+ sourceSize
+ {155,42}
+
+ hist_rec_title_2.png
+
+ frame
+ {{2,159},{204,48}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{204,48}}
+ sourceSize
+ {204,48}
+
+ hist_rec_title_bg_1.png
+
+ frame
+ {{1501,110},{204,102}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{204,102}}
+ sourceSize
+ {204,102}
+
+ hist_rec_title_bg_2.png
+
+ frame
+ {{1085,110},{414,102}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{414,102}}
+ sourceSize
+ {414,102}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ history_record.png
+ size
+ {2020,214}
+ smartupdate
+ $TexturePacker:SmartUpdate:59f4b4f33957e53fec656541d79abf11:1/1$
+ textureFileName
+ history_record.png
+
+
+
diff --git a/client/assets/resources/textures/images/history_record.plist.meta b/client/assets/resources/textures/images/history_record.plist.meta
new file mode 100755
index 0000000..c390799
--- /dev/null
+++ b/client/assets/resources/textures/images/history_record.plist.meta
@@ -0,0 +1,386 @@
+{
+ "ver": "1.2.4",
+ "uuid": "35246e42-2c3d-44d1-b9f1-9dd63d38e6ea",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "size": {
+ "width": 2020,
+ "height": 214
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "hist_detail_list_cell_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "9283cd92-ac83-457a-b2e0-acaf8c7c46e7",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 1081,
+ "height": 155,
+ "rawWidth": 1081,
+ "rawHeight": 155,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_backward.png": {
+ "ver": "1.0.3",
+ "uuid": "2799b8e3-7e4a-4963-a626-dedf9f936481",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 578,
+ "trimY": 159,
+ "width": 50,
+ "height": 41,
+ "rawWidth": 50,
+ "rawHeight": 41,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_bar.png": {
+ "ver": "1.0.3",
+ "uuid": "b9e6033e-3d63-439a-bbcb-ef77a7574dcb",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 208,
+ "trimY": 203,
+ "width": 114,
+ "height": 4,
+ "rawWidth": 114,
+ "rawHeight": 4,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "6d985fdd-4d46-4216-8f13-4a214f0c0977",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1889,
+ "trimY": 2,
+ "width": 139,
+ "height": 129,
+ "rawWidth": 139,
+ "rawHeight": 129,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_di1.png": {
+ "ver": "1.0.3",
+ "uuid": "abe298a3-71f9-4e37-908d-007aa727983c",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 666,
+ "trimY": 183,
+ "width": 22,
+ "height": 22,
+ "rawWidth": 22,
+ "rawHeight": 22,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_di2.png": {
+ "ver": "1.0.3",
+ "uuid": "229ca516-c90e-4092-9f73-2f758b46b2fb",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 666,
+ "trimY": 159,
+ "width": 22,
+ "height": 22,
+ "rawWidth": 22,
+ "rawHeight": 22,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_exit.png": {
+ "ver": "1.0.3",
+ "uuid": "ceddd85f-1240-4cce-81d8-d3cb25c13b31",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 365,
+ "trimY": 159,
+ "width": 54,
+ "height": 50,
+ "rawWidth": 54,
+ "rawHeight": 50,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_forward.png": {
+ "ver": "1.0.3",
+ "uuid": "0a32c3c0-32d3-4c09-9d87-2bc46021a29b",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 535,
+ "trimY": 159,
+ "width": 50,
+ "height": 41,
+ "rawWidth": 50,
+ "rawHeight": 41,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_frame.png": {
+ "ver": "1.0.3",
+ "uuid": "cba31817-ea68-42a5-a400-1b979dd6e434",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1707,
+ "trimY": 2,
+ "width": 180,
+ "height": 180,
+ "rawWidth": 180,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_pause.png": {
+ "ver": "1.0.3",
+ "uuid": "1fdd675c-f41b-4fdf-9ff2-8f848772a92a",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 421,
+ "trimY": 159,
+ "width": 48,
+ "height": 56,
+ "rawWidth": 48,
+ "rawHeight": 56,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_play.png": {
+ "ver": "1.0.3",
+ "uuid": "fa12fbe4-a9f9-45ed-9abb-f44fd8887906",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 479,
+ "trimY": 159,
+ "width": 48,
+ "height": 54,
+ "rawWidth": 48,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_play_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "9935d202-1938-4b59-98b7-ba8383303d8c",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1085,
+ "trimY": 2,
+ "width": 470,
+ "height": 106,
+ "rawWidth": 470,
+ "rawHeight": 106,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_replay.png": {
+ "ver": "1.0.3",
+ "uuid": "c35aecc1-b59d-4b7b-a4c9-96ae664695f0",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 621,
+ "trimY": 159,
+ "width": 43,
+ "height": 43,
+ "rawWidth": 43,
+ "rawHeight": 43,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_title_1.png": {
+ "ver": "1.0.3",
+ "uuid": "6d733fad-01cd-404f-bc0f-a2e262378be4",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 208,
+ "trimY": 159,
+ "width": 155,
+ "height": 42,
+ "rawWidth": 155,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_title_2.png": {
+ "ver": "1.0.3",
+ "uuid": "2a5d1317-547d-40b3-9360-1b876afa8189",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 159,
+ "width": 204,
+ "height": 48,
+ "rawWidth": 204,
+ "rawHeight": 48,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_title_bg_1.png": {
+ "ver": "1.0.3",
+ "uuid": "31f437f7-7887-42e3-8ed5-a251209d690c",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1501,
+ "trimY": 110,
+ "width": 204,
+ "height": 102,
+ "rawWidth": 204,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "hist_rec_title_bg_2.png": {
+ "ver": "1.0.3",
+ "uuid": "0406e813-de32-4d34-8de8-c2774ac54fb7",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1085,
+ "trimY": 110,
+ "width": 414,
+ "height": 102,
+ "rawWidth": 414,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/history_record.png b/client/assets/resources/textures/images/history_record.png
new file mode 100755
index 0000000..3792734
Binary files /dev/null and b/client/assets/resources/textures/images/history_record.png differ
diff --git a/client/assets/resources/textures/images/history_record.png.meta b/client/assets/resources/textures/images/history_record.png.meta
new file mode 100755
index 0000000..0189266
--- /dev/null
+++ b/client/assets/resources/textures/images/history_record.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "history_record": {
+ "ver": "1.0.3",
+ "uuid": "7a80f347-8790-49a9-b48c-0538a505ae09",
+ "rawTextureUuid": "74d44adb-7b0a-4799-95a2-1812ba98e8cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 2016,
+ "height": 210,
+ "rawWidth": 2020,
+ "rawHeight": 214,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/loading.plist b/client/assets/resources/textures/images/loading.plist
new file mode 100755
index 0000000..faee488
--- /dev/null
+++ b/client/assets/resources/textures/images/loading.plist
@@ -0,0 +1,48 @@
+
+
+
+
+ frames
+
+ jzcycle.png
+
+ frame
+ {{2,2},{102,102}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{102,102}}
+ sourceSize
+ {102,102}
+
+ jzshazi.png
+
+ frame
+ {{106,2},{30,31}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{30,31}}
+ sourceSize
+ {30,31}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ loading.png
+ size
+ {138,106}
+ smartupdate
+ $TexturePacker:SmartUpdate:4e97bf48f2fc03f1fbf52c7031e96d7e:1/1$
+ textureFileName
+ loading.png
+
+
+
diff --git a/client/assets/resources/textures/images/loading.plist.meta b/client/assets/resources/textures/images/loading.plist.meta
new file mode 100755
index 0000000..28a9fc6
--- /dev/null
+++ b/client/assets/resources/textures/images/loading.plist.meta
@@ -0,0 +1,56 @@
+{
+ "ver": "1.2.4",
+ "uuid": "3dad14aa-1217-43e2-a654-c22ae3a85d84",
+ "rawTextureUuid": "d34dfa25-ad7e-4bc8-8fd3-c1a0f7b7fe45",
+ "size": {
+ "width": 138,
+ "height": 106
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "jzcycle.png": {
+ "ver": "1.0.3",
+ "uuid": "33a87e63-83e7-4f98-a40e-96feece06697",
+ "rawTextureUuid": "d34dfa25-ad7e-4bc8-8fd3-c1a0f7b7fe45",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 102,
+ "height": 102,
+ "rawWidth": 102,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jzshazi.png": {
+ "ver": "1.0.3",
+ "uuid": "30220141-dcea-4b2c-82ea-f6932b703abd",
+ "rawTextureUuid": "d34dfa25-ad7e-4bc8-8fd3-c1a0f7b7fe45",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 106,
+ "trimY": 2,
+ "width": 30,
+ "height": 31,
+ "rawWidth": 30,
+ "rawHeight": 31,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/loading.png b/client/assets/resources/textures/images/loading.png
new file mode 100755
index 0000000..5cf4066
Binary files /dev/null and b/client/assets/resources/textures/images/loading.png differ
diff --git a/client/assets/resources/textures/images/loading.png.meta b/client/assets/resources/textures/images/loading.png.meta
new file mode 100755
index 0000000..096e2b1
--- /dev/null
+++ b/client/assets/resources/textures/images/loading.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d34dfa25-ad7e-4bc8-8fd3-c1a0f7b7fe45",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "loading": {
+ "ver": "1.0.3",
+ "uuid": "cc642103-5997-4603-a5ba-d01acd173437",
+ "rawTextureUuid": "d34dfa25-ad7e-4bc8-8fd3-c1a0f7b7fe45",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 134,
+ "height": 102,
+ "rawWidth": 138,
+ "rawHeight": 106,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/mahjong_table.jpg b/client/assets/resources/textures/images/mahjong_table.jpg
new file mode 100755
index 0000000..d7da9ad
Binary files /dev/null and b/client/assets/resources/textures/images/mahjong_table.jpg differ
diff --git a/client/assets/resources/textures/images/mahjong_table.jpg.meta b/client/assets/resources/textures/images/mahjong_table.jpg.meta
new file mode 100755
index 0000000..68ca8ed
--- /dev/null
+++ b/client/assets/resources/textures/images/mahjong_table.jpg.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5a6264d0-c33b-46d3-b38f-d526335be99f",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "mahjong_table": {
+ "ver": "1.0.3",
+ "uuid": "71c366f0-00c9-4e34-8b8e-29c1f6a5d93a",
+ "rawTextureUuid": "5a6264d0-c33b-46d3-b38f-d526335be99f",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/main_scene.plist b/client/assets/resources/textures/images/main_scene.plist
new file mode 100755
index 0000000..09edbc1
--- /dev/null
+++ b/client/assets/resources/textures/images/main_scene.plist
@@ -0,0 +1,321 @@
+
+
+
+
+ frames
+
+ bangzhu.png
+
+ frame
+ {{638,1200},{67,79}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{67,79}}
+ sourceSize
+ {67,79}
+
+ card.png
+
+ frame
+ {{168,1245},{60,32}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{60,32}}
+ sourceSize
+ {60,32}
+
+ chuangjianfang.png
+
+ frame
+ {{168,1077},{446,115}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{446,115}}
+ sourceSize
+ {446,115}
+
+ chuangjianfangjianxiaochangjing.png
+
+ frame
+ {{168,2},{502,439}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{502,439}}
+ sourceSize
+ {502,439}
+
+ dingbuuibantoumingdi.png
+
+ frame
+ {{2,2},{1280,100}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1280,100}}
+ sourceSize
+ {1280,100}
+
+ fangkaxiaobeijing.png
+
+ frame
+ {{616,843},{241,42}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{241,42}}
+ sourceSize
+ {241,42}
+
+ feedback.png
+
+ frame
+ {{660,1065},{145,133}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{145,133}}
+ sourceSize
+ {145,133}
+
+ ffanghuifangj.png
+
+ frame
+ {{168,960},{446,115}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{446,115}}
+ sourceSize
+ {446,115}
+
+ goumaixiaojiahao.png
+
+ frame
+ {{801,742},{31,32}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{31,32}}
+ sourceSize
+ {31,32}
+
+ huodong.png
+
+ frame
+ {{710,363},{122,126}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{122,126}}
+ sourceSize
+ {122,126}
+
+ jiaruyouxi.png
+
+ frame
+ {{168,843},{446,115}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{446,115}}
+ sourceSize
+ {446,115}
+
+ jiaruyouxixiaochangjing.png
+
+ frame
+ {{168,443},{485,398}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{485,398}}
+ sourceSize
+ {485,398}
+
+ paomadengbeijing.png
+
+ frame
+ {{672,2},{716,36}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{716,36}}
+ sourceSize
+ {716,36}
+
+ share.png
+
+ frame
+ {{710,491},{117,133}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{117,133}}
+ sourceSize
+ {117,133}
+
+ shezhi.png
+
+ frame
+ {{569,1194},{67,79}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{67,79}}
+ sourceSize
+ {67,79}
+
+ touxing001.png
+
+ frame
+ {{660,917},{145,146}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{145,146}}
+ sourceSize
+ {145,146}
+
+ touxingbg001.png
+
+ frame
+ {{710,626},{114,114}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{114,114}}
+ sourceSize
+ {114,114}
+
+ wuhanmajiangtitle.png
+
+ frame
+ {{168,1194},{318,49}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{318,49}}
+ sourceSize
+ {318,49}
+
+ xiao'xi.png
+
+ frame
+ {{488,1194},{67,79}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{67,79}}
+ sourceSize
+ {67,79}
+
+ xiaolaba.png
+
+ frame
+ {{616,1086},{39,34}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{39,34}}
+ sourceSize
+ {39,34}
+
+ xixia001.png
+
+ frame
+ {{104,2},{1280,62}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1280,62}}
+ sourceSize
+ {1280,62}
+
+ zhanji.png
+
+ frame
+ {{660,742},{173,139}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{173,139}}
+ sourceSize
+ {173,139}
+
+ zhuziyou.png
+
+ frame
+ {{710,2},{106,359}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{106,359}}
+ sourceSize
+ {106,359}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ main_scene.png
+ size
+ {834,1284}
+ smartupdate
+ $TexturePacker:SmartUpdate:d941043ecfdc400728befbebc33dcd07:1/1$
+ textureFileName
+ main_scene.png
+
+
+
diff --git a/client/assets/resources/textures/images/main_scene.plist.meta b/client/assets/resources/textures/images/main_scene.plist.meta
new file mode 100755
index 0000000..5a2cf02
--- /dev/null
+++ b/client/assets/resources/textures/images/main_scene.plist.meta
@@ -0,0 +1,518 @@
+{
+ "ver": "1.2.4",
+ "uuid": "79ca1461-bcce-4e92-a148-bbd4884778f1",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "size": {
+ "width": 834,
+ "height": 1284
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "bangzhu.png": {
+ "ver": "1.0.3",
+ "uuid": "147fe42f-7640-4b8a-adf2-b4097e0c7e65",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 638,
+ "trimY": 1200,
+ "width": 67,
+ "height": 79,
+ "rawWidth": 67,
+ "rawHeight": 79,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "card.png": {
+ "ver": "1.0.3",
+ "uuid": "c35d6dfe-70ee-4bc0-8bc8-38b9ec4618f2",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 168,
+ "trimY": 1245,
+ "width": 60,
+ "height": 32,
+ "rawWidth": 60,
+ "rawHeight": 32,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chuangjianfang.png": {
+ "ver": "1.0.3",
+ "uuid": "23790826-1d37-4f95-8765-1a77abc15c3f",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 168,
+ "trimY": 1077,
+ "width": 446,
+ "height": 115,
+ "rawWidth": 446,
+ "rawHeight": 115,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "chuangjianfangjianxiaochangjing.png": {
+ "ver": "1.0.3",
+ "uuid": "118e175e-deaa-47da-8f22-aa3b92233165",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 168,
+ "trimY": 2,
+ "width": 502,
+ "height": 439,
+ "rawWidth": 502,
+ "rawHeight": 439,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "dingbuuibantoumingdi.png": {
+ "ver": "1.0.3",
+ "uuid": "c2236cae-cdc3-41d4-a58f-b5b4e18fb6e2",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 1280,
+ "height": 100,
+ "rawWidth": 1280,
+ "rawHeight": 100,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "fangkaxiaobeijing.png": {
+ "ver": "1.0.3",
+ "uuid": "792edbfd-c7c3-4fbc-af11-abc267ab9d7d",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 616,
+ "trimY": 843,
+ "width": 241,
+ "height": 42,
+ "rawWidth": 241,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "feedback.png": {
+ "ver": "1.0.3",
+ "uuid": "52a1abf5-8762-4bb7-82dd-c6c7afc88610",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 660,
+ "trimY": 1065,
+ "width": 145,
+ "height": 133,
+ "rawWidth": 145,
+ "rawHeight": 133,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "ffanghuifangj.png": {
+ "ver": "1.0.3",
+ "uuid": "9b5079b4-d62b-4dcb-95c2-27e71c3d757d",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 168,
+ "trimY": 960,
+ "width": 446,
+ "height": 115,
+ "rawWidth": 446,
+ "rawHeight": 115,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "goumaixiaojiahao.png": {
+ "ver": "1.0.3",
+ "uuid": "b874b9e3-55b7-46b5-911e-46d8e00ae34d",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 801,
+ "trimY": 742,
+ "width": 31,
+ "height": 32,
+ "rawWidth": 31,
+ "rawHeight": 32,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "huodong.png": {
+ "ver": "1.0.3",
+ "uuid": "d2bf07d6-cbaa-485a-9e05-b9409bf16b62",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 710,
+ "trimY": 363,
+ "width": 122,
+ "height": 126,
+ "rawWidth": 122,
+ "rawHeight": 126,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jiaruyouxi.png": {
+ "ver": "1.0.3",
+ "uuid": "b824bcbe-b02d-4032-9eee-253b4368c088",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 168,
+ "trimY": 843,
+ "width": 446,
+ "height": 115,
+ "rawWidth": 446,
+ "rawHeight": 115,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "jiaruyouxixiaochangjing.png": {
+ "ver": "1.0.3",
+ "uuid": "02491912-f027-4dce-88b9-9296333c8dee",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 168,
+ "trimY": 443,
+ "width": 485,
+ "height": 398,
+ "rawWidth": 485,
+ "rawHeight": 398,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "paomadengbeijing.png": {
+ "ver": "1.0.3",
+ "uuid": "cf017ebf-8a52-4b86-b6b8-e84ad1dd9ff0",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 672,
+ "trimY": 2,
+ "width": 716,
+ "height": 36,
+ "rawWidth": 716,
+ "rawHeight": 36,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "share.png": {
+ "ver": "1.0.3",
+ "uuid": "653c33e2-391d-4d4b-b922-e48e6b9f3a42",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 710,
+ "trimY": 491,
+ "width": 117,
+ "height": 133,
+ "rawWidth": 117,
+ "rawHeight": 133,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "shezhi.png": {
+ "ver": "1.0.3",
+ "uuid": "b0737cf8-25e7-4122-a577-66181b3ffbb8",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 569,
+ "trimY": 1194,
+ "width": 67,
+ "height": 79,
+ "rawWidth": 67,
+ "rawHeight": 79,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "touxing001.png": {
+ "ver": "1.0.3",
+ "uuid": "4db720d9-b5ed-47db-b457-e7dff65d0c6f",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 660,
+ "trimY": 917,
+ "width": 145,
+ "height": 146,
+ "rawWidth": 145,
+ "rawHeight": 146,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "touxingbg001.png": {
+ "ver": "1.0.3",
+ "uuid": "9ff38dc8-149e-464e-b574-d093ce5967d5",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 710,
+ "trimY": 626,
+ "width": 114,
+ "height": 114,
+ "rawWidth": 114,
+ "rawHeight": 114,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "wuhanmajiangtitle.png": {
+ "ver": "1.0.3",
+ "uuid": "3e2ce021-e723-452d-94ed-bb743dfdc7ee",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 168,
+ "trimY": 1194,
+ "width": 318,
+ "height": 49,
+ "rawWidth": 318,
+ "rawHeight": 49,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "xiao'xi.png": {
+ "ver": "1.0.3",
+ "uuid": "24670f05-f6d6-42a2-b7a4-ef9e463011f7",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 488,
+ "trimY": 1194,
+ "width": 67,
+ "height": 79,
+ "rawWidth": 67,
+ "rawHeight": 79,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "xiaolaba.png": {
+ "ver": "1.0.3",
+ "uuid": "9fe76483-1a41-4ec8-9779-147f104cf4f7",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 616,
+ "trimY": 1086,
+ "width": 39,
+ "height": 34,
+ "rawWidth": 39,
+ "rawHeight": 34,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "xixia001.png": {
+ "ver": "1.0.3",
+ "uuid": "9ef235e3-46fd-45ef-8e0a-d6531e7f1ffb",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 104,
+ "trimY": 2,
+ "width": 1280,
+ "height": 62,
+ "rawWidth": 1280,
+ "rawHeight": 62,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "zhanji.png": {
+ "ver": "1.0.3",
+ "uuid": "b03dc8dc-0c47-41b0-96e5-e638457d4fa4",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 660,
+ "trimY": 742,
+ "width": 173,
+ "height": 139,
+ "rawWidth": 173,
+ "rawHeight": 139,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "zhuziyou.png": {
+ "ver": "1.0.3",
+ "uuid": "3c83a88f-ffc9-4db5-8925-323eba63cccb",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 710,
+ "trimY": 2,
+ "width": 106,
+ "height": 359,
+ "rawWidth": 106,
+ "rawHeight": 359,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/main_scene.png b/client/assets/resources/textures/images/main_scene.png
new file mode 100755
index 0000000..349a8c2
Binary files /dev/null and b/client/assets/resources/textures/images/main_scene.png differ
diff --git a/client/assets/resources/textures/images/main_scene.png.meta b/client/assets/resources/textures/images/main_scene.png.meta
new file mode 100755
index 0000000..488f2df
--- /dev/null
+++ b/client/assets/resources/textures/images/main_scene.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "main_scene": {
+ "ver": "1.0.3",
+ "uuid": "c618bb0c-1c9d-4c1e-aab8-1cb593fbdf59",
+ "rawTextureUuid": "331ab7b5-5be2-42dd-8ea1-a40274fdfe36",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 830,
+ "height": 1280,
+ "rawWidth": 834,
+ "rawHeight": 1284,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc.meta b/client/assets/resources/textures/images/playScenesc.meta
new file mode 100755
index 0000000..f34b8e1
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "ca520c85-770d-43b9-a4c0-461b9dab3346",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/nvxiongmao001.png b/client/assets/resources/textures/images/playScenesc/nvxiongmao001.png
new file mode 100755
index 0000000..a7e6578
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/nvxiongmao001.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/nvxiongmao001.png.meta b/client/assets/resources/textures/images/playScenesc/nvxiongmao001.png.meta
new file mode 100755
index 0000000..1f9401a
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/nvxiongmao001.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "67e7e9b0-c5c7-43b0-a0cf-690104c0465b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "nvxiongmao001": {
+ "ver": "1.0.3",
+ "uuid": "3b7ae76c-3b0a-4bc0-a6d6-66b44595c03d",
+ "rawTextureUuid": "67e7e9b0-c5c7-43b0-a0cf-690104c0465b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 485,
+ "height": 398,
+ "rawWidth": 485,
+ "rawHeight": 398,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/play_scene_4.png b/client/assets/resources/textures/images/playScenesc/play_scene_4.png
new file mode 100755
index 0000000..ef09268
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/play_scene_4.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/play_scene_4.png.meta b/client/assets/resources/textures/images/playScenesc/play_scene_4.png.meta
new file mode 100755
index 0000000..f30f243
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/play_scene_4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "65adbe7d-ad01-4e89-9727-5fc0edc24c22",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "play_scene_4": {
+ "ver": "1.0.3",
+ "uuid": "c6317a07-e5db-4930-a7d5-bd6fe7ef7b5e",
+ "rawTextureUuid": "65adbe7d-ad01-4e89-9727-5fc0edc24c22",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -1,
+ "offsetY": 1,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 112,
+ "height": 34,
+ "rawWidth": 114,
+ "rawHeight": 36,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/play_scene_5.png b/client/assets/resources/textures/images/playScenesc/play_scene_5.png
new file mode 100755
index 0000000..cebcda6
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/play_scene_5.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/play_scene_5.png.meta b/client/assets/resources/textures/images/playScenesc/play_scene_5.png.meta
new file mode 100755
index 0000000..ada4d3f
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/play_scene_5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "63ab6212-db3c-4a56-850b-cb3f970e038c",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "play_scene_5": {
+ "ver": "1.0.3",
+ "uuid": "a87ec412-9067-4265-a7f4-a8054f7a1c46",
+ "rawTextureUuid": "63ab6212-db3c-4a56-850b-cb3f970e038c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0.5,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 114,
+ "height": 35,
+ "rawWidth": 114,
+ "rawHeight": 36,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/play_scene_6.png b/client/assets/resources/textures/images/playScenesc/play_scene_6.png
new file mode 100755
index 0000000..db718f9
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/play_scene_6.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/play_scene_6.png.meta b/client/assets/resources/textures/images/playScenesc/play_scene_6.png.meta
new file mode 100755
index 0000000..65d1c02
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/play_scene_6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "89867af9-edba-4bb8-9a4a-fb974d3e8588",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "play_scene_6": {
+ "ver": "1.0.3",
+ "uuid": "ceb6e600-b231-4f3e-9528-4131277712b7",
+ "rawTextureUuid": "89867af9-edba-4bb8-9a4a-fb974d3e8588",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -0.5,
+ "offsetY": 0.5,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 26,
+ "height": 31,
+ "rawWidth": 27,
+ "rawHeight": 32,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang.png
new file mode 100755
index 0000000..47e6781
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang.png.meta
new file mode 100755
index 0000000..8592bc9
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "285825b5-c3e3-49a8-b9c8-eea6d3581dc1",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang": {
+ "ver": "1.0.3",
+ "uuid": "4d53c7ba-0950-4e59-833e-2d2cb816a110",
+ "rawTextureUuid": "285825b5-c3e3-49a8-b9c8-eea6d3581dc1",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 104,
+ "height": 104,
+ "rawWidth": 104,
+ "rawHeight": 104,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001.png
new file mode 100755
index 0000000..ab6428b
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001.png.meta
new file mode 100755
index 0000000..a8e6a97
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5e05589d-9849-456f-8479-a682a456fe29",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang_001": {
+ "ver": "1.0.3",
+ "uuid": "ffd781e3-3d89-49a1-99af-45446e138558",
+ "rawTextureUuid": "5e05589d-9849-456f-8479-a682a456fe29",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 21,
+ "height": 92,
+ "rawWidth": 21,
+ "rawHeight": 92,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001_01.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001_01.png
new file mode 100755
index 0000000..69e302f
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001_01.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001_01.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001_01.png.meta
new file mode 100755
index 0000000..8a088dd
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001_01.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "59c0485e-2f80-4164-8aea-3aee2b2e94b6",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang_001_01": {
+ "ver": "1.0.3",
+ "uuid": "77169e70-22e0-4a25-9fea-a1123dd035c9",
+ "rawTextureUuid": "59c0485e-2f80-4164-8aea-3aee2b2e94b6",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 21,
+ "height": 93,
+ "rawWidth": 21,
+ "rawHeight": 93,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002.png
new file mode 100755
index 0000000..435d936
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002.png.meta
new file mode 100755
index 0000000..4a51759
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "38fecf5f-94eb-4586-aabe-3bc2ae184d0f",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang_002": {
+ "ver": "1.0.3",
+ "uuid": "e780b529-e5dd-47f4-89b9-085eb0c305ff",
+ "rawTextureUuid": "38fecf5f-94eb-4586-aabe-3bc2ae184d0f",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 93,
+ "height": 21,
+ "rawWidth": 93,
+ "rawHeight": 21,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002_01.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002_01.png
new file mode 100755
index 0000000..588bba5
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002_01.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002_01.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002_01.png.meta
new file mode 100755
index 0000000..7ceea2d
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002_01.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "8f57596d-cd4a-480b-bd57-611464f493aa",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang_002_01": {
+ "ver": "1.0.3",
+ "uuid": "422fdf7d-1ed4-43b6-8a3a-ed379c08210d",
+ "rawTextureUuid": "8f57596d-cd4a-480b-bd57-611464f493aa",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 93,
+ "height": 21,
+ "rawWidth": 93,
+ "rawHeight": 21,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003.png
new file mode 100755
index 0000000..d1cc6e0
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003.png.meta
new file mode 100755
index 0000000..ce29daa
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2bd00ccf-20e1-44af-b8d8-94bb85a65b50",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang_003": {
+ "ver": "1.0.3",
+ "uuid": "d278cab0-d89b-4fca-b312-e5a5279015fa",
+ "rawTextureUuid": "2bd00ccf-20e1-44af-b8d8-94bb85a65b50",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 93,
+ "height": 21,
+ "rawWidth": 93,
+ "rawHeight": 21,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003_01.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003_01.png
new file mode 100755
index 0000000..b6e69e7
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003_01.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003_01.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003_01.png.meta
new file mode 100755
index 0000000..0cdf323
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003_01.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "dd853401-f06b-4c5f-a68b-3b5e58978189",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang_003_01": {
+ "ver": "1.0.3",
+ "uuid": "e1714551-b433-4d23-8991-52e100dde094",
+ "rawTextureUuid": "dd853401-f06b-4c5f-a68b-3b5e58978189",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 93,
+ "height": 21,
+ "rawWidth": 93,
+ "rawHeight": 21,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004.png
new file mode 100755
index 0000000..6e8abdc
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004.png.meta
new file mode 100755
index 0000000..fc23574
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "c0f12e80-6caf-464c-94f4-6e22969b4ee7",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang_004": {
+ "ver": "1.0.3",
+ "uuid": "90e4b45c-8044-49b6-a842-5bd38dafe909",
+ "rawTextureUuid": "c0f12e80-6caf-464c-94f4-6e22969b4ee7",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 21,
+ "height": 93,
+ "rawWidth": 21,
+ "rawHeight": 93,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004_01.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004_01.png
new file mode 100755
index 0000000..509c87f
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004_01.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004_01.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004_01.png.meta
new file mode 100755
index 0000000..70f03ad
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004_01.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a0a28378-093e-471f-bb55-173c1b062ada",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_fangxiang_004_01": {
+ "ver": "1.0.3",
+ "uuid": "1b650047-9873-4e70-a87e-f5355261f7aa",
+ "rawTextureUuid": "a0a28378-093e-471f-bb55-173c1b062ada",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 21,
+ "height": 93,
+ "rawWidth": 21,
+ "rawHeight": 93,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_001.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_001.png
new file mode 100755
index 0000000..0b45e3a
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_001.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_001.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_001.png.meta
new file mode 100755
index 0000000..cca656f
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_001.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "1e1d77d8-78e5-48f1-8bb5-f78e08379d38",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_huatong_001": {
+ "ver": "1.0.3",
+ "uuid": "676a445d-bb91-4c54-aa79-f748cd862233",
+ "rawTextureUuid": "1e1d77d8-78e5-48f1-8bb5-f78e08379d38",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 54,
+ "height": 55,
+ "rawWidth": 54,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_002.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_002.png
new file mode 100755
index 0000000..b4a11c2
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_002.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_002.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_002.png.meta
new file mode 100755
index 0000000..a5870dd
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_huatong_002.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "06d0634d-85bc-4c3a-a92f-980420d06dbb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_huatong_002": {
+ "ver": "1.0.3",
+ "uuid": "410d62af-0c20-4e18-ba68-17cc2c1f798d",
+ "rawTextureUuid": "06d0634d-85bc-4c3a-a92f-980420d06dbb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 54,
+ "height": 55,
+ "rawWidth": 54,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_001.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_001.png
new file mode 100755
index 0000000..49e15ca
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_001.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_001.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_001.png.meta
new file mode 100755
index 0000000..b5d65bd
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_001.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "71a22b2b-287f-4480-b4ae-7c745bfa5424",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_shezhi_001": {
+ "ver": "1.0.3",
+ "uuid": "606775c9-8727-482f-8013-5ba083282842",
+ "rawTextureUuid": "71a22b2b-287f-4480-b4ae-7c745bfa5424",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 54,
+ "height": 55,
+ "rawWidth": 54,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_002.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_002.png
new file mode 100755
index 0000000..b21d45b
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_002.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_002.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_002.png.meta
new file mode 100755
index 0000000..18da72d
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_shezhi_002.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "78d29fec-e016-4e0c-992b-c82383c53be2",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_shezhi_002": {
+ "ver": "1.0.3",
+ "uuid": "761858de-4717-457e-aea5-cc8e500b9961",
+ "rawTextureUuid": "78d29fec-e016-4e0c-992b-c82383c53be2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 54,
+ "height": 55,
+ "rawWidth": 54,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_001.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_001.png
new file mode 100755
index 0000000..6b4d1e1
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_001.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_001.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_001.png.meta
new file mode 100755
index 0000000..09e3252
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_001.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "9d47a58c-ee9f-4845-af0d-19981d15a302",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_xiaoxi_001": {
+ "ver": "1.0.3",
+ "uuid": "3db313d3-a167-451f-8d0a-ab4346493ee9",
+ "rawTextureUuid": "9d47a58c-ee9f-4845-af0d-19981d15a302",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 54,
+ "height": 55,
+ "rawWidth": 54,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_002.png b/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_002.png
new file mode 100755
index 0000000..2151b09
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_002.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_002.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_002.png.meta
new file mode 100755
index 0000000..ff16141
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_002.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "f6e00b41-4095-441b-b760-3fac8e8379df",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_room_xiaoxi_002": {
+ "ver": "1.0.3",
+ "uuid": "752034e8-e2df-4b80-8dd5-e14b719d5e1b",
+ "rawTextureUuid": "f6e00b41-4095-441b-b760-3fac8e8379df",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 54,
+ "height": 55,
+ "rawWidth": 54,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_zhuang.png b/client/assets/resources/textures/images/playScenesc/sichuan_zhuang.png
new file mode 100755
index 0000000..1f37ffb
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuan_zhuang.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuan_zhuang.png.meta b/client/assets/resources/textures/images/playScenesc/sichuan_zhuang.png.meta
new file mode 100755
index 0000000..c3c221a
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuan_zhuang.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a3289e63-c09e-4a4c-ad6f-22910a14a40e",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuan_zhuang": {
+ "ver": "1.0.3",
+ "uuid": "a7b08c37-ea5d-4c04-85ae-ec901991e574",
+ "rawTextureUuid": "a3289e63-c09e-4a4c-ad6f-22910a14a40e",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 36,
+ "height": 37,
+ "rawWidth": 36,
+ "rawHeight": 37,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/sichuantouxiang002.png b/client/assets/resources/textures/images/playScenesc/sichuantouxiang002.png
new file mode 100755
index 0000000..0031793
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/sichuantouxiang002.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/sichuantouxiang002.png.meta b/client/assets/resources/textures/images/playScenesc/sichuantouxiang002.png.meta
new file mode 100755
index 0000000..1eafff8
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/sichuantouxiang002.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "40781aa3-2fcd-42d4-832e-e000ce60f51a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "sichuantouxiang002": {
+ "ver": "1.0.3",
+ "uuid": "f7a90881-3cc3-4e4a-a5cd-4e0892e94a2d",
+ "rawTextureUuid": "40781aa3-2fcd-42d4-832e-e000ce60f51a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 97,
+ "height": 96,
+ "rawWidth": 98,
+ "rawHeight": 96,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi001.png b/client/assets/resources/textures/images/playScenesc/wenzi001.png
new file mode 100755
index 0000000..d4f9363
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/wenzi001.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi001.png.meta b/client/assets/resources/textures/images/playScenesc/wenzi001.png.meta
new file mode 100755
index 0000000..5b90d09
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/wenzi001.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "37af60aa-dadb-479c-8d5c-85e0a8e1e669",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "wenzi001": {
+ "ver": "1.0.3",
+ "uuid": "630d3be3-d850-489c-94d3-bc52be73e5aa",
+ "rawTextureUuid": "37af60aa-dadb-479c-8d5c-85e0a8e1e669",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 331,
+ "height": 23,
+ "rawWidth": 331,
+ "rawHeight": 23,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi002.png b/client/assets/resources/textures/images/playScenesc/wenzi002.png
new file mode 100755
index 0000000..fa74cea
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/wenzi002.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi002.png.meta b/client/assets/resources/textures/images/playScenesc/wenzi002.png.meta
new file mode 100755
index 0000000..cf8f09a
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/wenzi002.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3c2e7a36-6cdd-44bf-ba08-25ffa70f95ec",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "wenzi002": {
+ "ver": "1.0.3",
+ "uuid": "2822bb44-286f-40a1-9398-35a3bb0bd761",
+ "rawTextureUuid": "3c2e7a36-6cdd-44bf-ba08-25ffa70f95ec",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 331,
+ "height": 23,
+ "rawWidth": 331,
+ "rawHeight": 23,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi003.png b/client/assets/resources/textures/images/playScenesc/wenzi003.png
new file mode 100755
index 0000000..bba9205
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/wenzi003.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi003.png.meta b/client/assets/resources/textures/images/playScenesc/wenzi003.png.meta
new file mode 100755
index 0000000..3bc29ab
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/wenzi003.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d63b4a9e-dc2b-4084-8664-8331e0c904a7",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "wenzi003": {
+ "ver": "1.0.3",
+ "uuid": "c61b13c5-2120-409a-a83c-ad8a3d6fdc2a",
+ "rawTextureUuid": "d63b4a9e-dc2b-4084-8664-8331e0c904a7",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 331,
+ "height": 23,
+ "rawWidth": 331,
+ "rawHeight": 23,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi004.png b/client/assets/resources/textures/images/playScenesc/wenzi004.png
new file mode 100755
index 0000000..ca7247c
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/wenzi004.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi004.png.meta b/client/assets/resources/textures/images/playScenesc/wenzi004.png.meta
new file mode 100755
index 0000000..efd9f0d
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/wenzi004.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2ee28dff-bc0a-4535-a492-d13828cd2326",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "wenzi004": {
+ "ver": "1.0.3",
+ "uuid": "df2accea-10ef-49a2-83d4-be88e35e48d7",
+ "rawTextureUuid": "2ee28dff-bc0a-4535-a492-d13828cd2326",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 331,
+ "height": 23,
+ "rawWidth": 331,
+ "rawHeight": 23,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi005.png b/client/assets/resources/textures/images/playScenesc/wenzi005.png
new file mode 100755
index 0000000..26bd912
Binary files /dev/null and b/client/assets/resources/textures/images/playScenesc/wenzi005.png differ
diff --git a/client/assets/resources/textures/images/playScenesc/wenzi005.png.meta b/client/assets/resources/textures/images/playScenesc/wenzi005.png.meta
new file mode 100755
index 0000000..c3bd636
--- /dev/null
+++ b/client/assets/resources/textures/images/playScenesc/wenzi005.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "b2dbb3a6-5177-40b4-8c24-ec2aabe2c4cf",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "wenzi005": {
+ "ver": "1.0.3",
+ "uuid": "f2855192-6250-41a5-8b9f-fe2b02040bba",
+ "rawTextureUuid": "b2dbb3a6-5177-40b4-8c24-ec2aabe2c4cf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 331,
+ "height": 23,
+ "rawWidth": 331,
+ "rawHeight": 23,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/play_scene.plist b/client/assets/resources/textures/images/play_scene.plist
new file mode 100755
index 0000000..c6dee13
--- /dev/null
+++ b/client/assets/resources/textures/images/play_scene.plist
@@ -0,0 +1,542 @@
+
+
+
+
+ frames
+
+ alarm_clock.png
+
+ frame
+ {{1141,2},{79,82}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{79,82}}
+ sourceSize
+ {79,82}
+
+ banker_sign.png
+
+ frame
+ {{1619,137},{56,56}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{56,56}}
+ sourceSize
+ {56,56}
+
+ btn_agree.png
+
+ frame
+ {{334,2},{208,69}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{208,69}}
+ sourceSize
+ {208,69}
+
+ btn_back_sala.png
+
+ frame
+ {{263,2},{208,69}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{208,69}}
+ sourceSize
+ {208,69}
+
+ btn_dismiss_room.png
+
+ frame
+ {{192,2},{208,69}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{208,69}}
+ sourceSize
+ {208,69}
+
+ btn_gang.png
+
+ frame
+ {{881,2},{130,130}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{130,130}}
+ sourceSize
+ {130,130}
+
+ btn_message.png
+
+ frame
+ {{1565,203},{57,51}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{57,51}}
+ sourceSize
+ {57,51}
+
+ btn_pass.png
+
+ frame
+ {{1013,2},{130,126}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{130,126}}
+ sourceSize
+ {130,126}
+
+ btn_peng.png
+
+ frame
+ {{749,2},{130,134}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{130,134}}
+ sourceSize
+ {130,134}
+
+ btn_ready.png
+
+ frame
+ {{121,2},{208,69}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{208,69}}
+ sourceSize
+ {208,69}
+
+ btn_refuse.png
+
+ frame
+ {{50,2},{208,69}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{208,69}}
+ sourceSize
+ {208,69}
+
+ btn_setting.png
+
+ frame
+ {{1624,195},{54,55}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{54,55}}
+ sourceSize
+ {54,55}
+
+ btn_weixin_invite.png
+
+ frame
+ {{1222,48},{304,70}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{304,70}}
+ sourceSize
+ {304,70}
+
+ btn_win.png
+
+ frame
+ {{1348,120},{126,128}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{126,128}}
+ sourceSize
+ {126,128}
+
+ decision_sign_1.png
+
+ frame
+ {{658,143},{110,122}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{110,122}}
+ sourceSize
+ {110,122}
+
+ decision_sign_2.png
+
+ frame
+ {{1224,120},{122,130}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{122,130}}
+ sourceSize
+ {122,130}
+
+ decision_sign_3.png
+
+ frame
+ {{976,134},{124,120}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{124,120}}
+ sourceSize
+ {124,120}
+
+ decision_sign_4.png
+
+ frame
+ {{405,2},{184,126}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{184,126}}
+ sourceSize
+ {184,126}
+
+ dismiss_room_title.png
+
+ frame
+ {{2,2},{233,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{233,46}}
+ sourceSize
+ {233,46}
+
+ fan_pao_bg.png
+
+ frame
+ {{221,212},{87,38}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{87,38}}
+ sourceSize
+ {87,38}
+
+ headallbk.png
+
+ frame
+ {{872,138},{102,103}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{102,103}}
+ sourceSize
+ {102,103}
+
+ headbk.png
+
+ frame
+ {{1102,134},{120,120}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{120,120}}
+ sourceSize
+ {120,120}
+
+ laizi_bg.png
+
+ frame
+ {{1594,48},{87,88}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{87,88}}
+ sourceSize
+ {87,88}
+
+ mahjong_title.png
+
+ frame
+ {{1224,2},{484,44}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{484,44}}
+ sourceSize
+ {484,44}
+
+ msg_bubble_btm.png
+
+ frame
+ {{469,188},{69,64}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{69,64}}
+ sourceSize
+ {69,64}
+
+ msg_bubble_left.png
+
+ frame
+ {{1565,137},{64,52}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{64,52}}
+ sourceSize
+ {64,52}
+
+ msg_bubble_right.png
+
+ frame
+ {{604,179},{71,52}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{71,52}}
+ sourceSize
+ {71,52}
+
+ msg_bubble_top.png
+
+ frame
+ {{1528,48},{68,64}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{68,64}}
+ sourceSize
+ {68,64}
+
+ msg_set_bg.png
+
+ frame
+ {{533,2},{175,73}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{175,73}}
+ sourceSize
+ {175,73}
+
+ off_line_sign.png
+
+ frame
+ {{50,212},{63,41}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{63,41}}
+ sourceSize
+ {63,41}
+
+ outmjtile_sign.png
+
+ frame
+ {{310,212},{34,45}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{34,45}}
+ sourceSize
+ {34,45}
+
+ ready_sign.png
+
+ frame
+ {{540,179},{62,75}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{62,75}}
+ sourceSize
+ {62,75}
+
+ speaker1.png
+
+ frame
+ {{2,237},{6,8}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{6,8}}
+ sourceSize
+ {6,8}
+
+ timebk.png
+
+ frame
+ {{115,212},{104,38}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{104,38}}
+ sourceSize
+ {104,38}
+
+ turn_pos_0.png
+
+ frame
+ {{812,138},{28,110}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{28,110}}
+ sourceSize
+ {28,110}
+
+ turn_pos_1.png
+
+ frame
+ {{842,138},{110,28}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{110,28}}
+ sourceSize
+ {110,28}
+
+ turn_pos_2.png
+
+ frame
+ {{782,138},{28,110}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{28,110}}
+ sourceSize
+ {28,110}
+
+ turn_pos_3.png
+
+ frame
+ {{357,212},{110,28}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{110,28}}
+ sourceSize
+ {110,28}
+
+ turn_pos_bg.png
+
+ frame
+ {{608,2},{139,139}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{139,139}}
+ sourceSize
+ {139,139}
+
+ voice_btn.png
+
+ frame
+ {{1476,120},{87,88}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{87,88}}
+ sourceSize
+ {87,88}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ play_scene.png
+ size
+ {1710,256}
+ smartupdate
+ $TexturePacker:SmartUpdate:f3966f72e1768cd4227d618068da6b6c:1/1$
+ textureFileName
+ play_scene.png
+
+
+
diff --git a/client/assets/resources/textures/images/play_scene.plist.meta b/client/assets/resources/textures/images/play_scene.plist.meta
new file mode 100755
index 0000000..0d64f31
--- /dev/null
+++ b/client/assets/resources/textures/images/play_scene.plist.meta
@@ -0,0 +1,892 @@
+{
+ "ver": "1.2.4",
+ "uuid": "4201ef1f-4abc-4af0-8e84-e9e776943900",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "size": {
+ "width": 1710,
+ "height": 256
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "alarm_clock.png": {
+ "ver": "1.0.3",
+ "uuid": "3e01c30e-044d-4d20-9cb9-05c97a4bee7a",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1141,
+ "trimY": 2,
+ "width": 79,
+ "height": 82,
+ "rawWidth": 79,
+ "rawHeight": 82,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "banker_sign.png": {
+ "ver": "1.0.3",
+ "uuid": "49b48549-9276-4962-bce2-5c6733965a79",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1619,
+ "trimY": 137,
+ "width": 56,
+ "height": 56,
+ "rawWidth": 56,
+ "rawHeight": 56,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_agree.png": {
+ "ver": "1.0.3",
+ "uuid": "4338b286-ca55-4eec-877f-ca22150bc313",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 334,
+ "trimY": 2,
+ "width": 208,
+ "height": 69,
+ "rawWidth": 208,
+ "rawHeight": 69,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_back_sala.png": {
+ "ver": "1.0.3",
+ "uuid": "ea7d8d70-11a2-48fd-8f20-82bd49ffce05",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 263,
+ "trimY": 2,
+ "width": 208,
+ "height": 69,
+ "rawWidth": 208,
+ "rawHeight": 69,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_dismiss_room.png": {
+ "ver": "1.0.3",
+ "uuid": "150829b1-d3a8-4b43-a7d2-b894c15fb133",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 192,
+ "trimY": 2,
+ "width": 208,
+ "height": 69,
+ "rawWidth": 208,
+ "rawHeight": 69,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_gang.png": {
+ "ver": "1.0.3",
+ "uuid": "3479e792-95f8-4d4d-b196-2f8c6a125cd4",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 881,
+ "trimY": 2,
+ "width": 130,
+ "height": 130,
+ "rawWidth": 130,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_message.png": {
+ "ver": "1.0.3",
+ "uuid": "56958185-085b-40b3-8c94-6e58181b7ca5",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1565,
+ "trimY": 203,
+ "width": 57,
+ "height": 51,
+ "rawWidth": 57,
+ "rawHeight": 51,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_pass.png": {
+ "ver": "1.0.3",
+ "uuid": "28cd14db-6ba3-458d-bcb3-ea53a7adddc3",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1013,
+ "trimY": 2,
+ "width": 130,
+ "height": 126,
+ "rawWidth": 130,
+ "rawHeight": 126,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_peng.png": {
+ "ver": "1.0.3",
+ "uuid": "234dedb0-678d-4893-9486-2e471a0f0a17",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 749,
+ "trimY": 2,
+ "width": 130,
+ "height": 134,
+ "rawWidth": 130,
+ "rawHeight": 134,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_ready.png": {
+ "ver": "1.0.3",
+ "uuid": "cedd15d4-6953-4ab8-b2c3-db44e1d961f6",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 121,
+ "trimY": 2,
+ "width": 208,
+ "height": 69,
+ "rawWidth": 208,
+ "rawHeight": 69,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_refuse.png": {
+ "ver": "1.0.3",
+ "uuid": "7ce05240-d123-4f98-9258-7c67fee072b5",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 50,
+ "trimY": 2,
+ "width": 208,
+ "height": 69,
+ "rawWidth": 208,
+ "rawHeight": 69,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_setting.png": {
+ "ver": "1.0.3",
+ "uuid": "ddc89083-5194-4822-a109-4a65e07411d2",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1624,
+ "trimY": 195,
+ "width": 54,
+ "height": 55,
+ "rawWidth": 54,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_weixin_invite.png": {
+ "ver": "1.0.3",
+ "uuid": "249efc01-de45-4d92-8851-12b8e612751d",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1222,
+ "trimY": 48,
+ "width": 304,
+ "height": 70,
+ "rawWidth": 304,
+ "rawHeight": 70,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "btn_win.png": {
+ "ver": "1.0.3",
+ "uuid": "7a731f97-f192-4f9b-ba2f-a5f7e6fa9b7a",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1348,
+ "trimY": 120,
+ "width": 126,
+ "height": 128,
+ "rawWidth": 126,
+ "rawHeight": 128,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "decision_sign_1.png": {
+ "ver": "1.0.3",
+ "uuid": "dc8aaac9-73a5-48aa-b04c-6679debab83f",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 658,
+ "trimY": 143,
+ "width": 110,
+ "height": 122,
+ "rawWidth": 110,
+ "rawHeight": 122,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "decision_sign_2.png": {
+ "ver": "1.0.3",
+ "uuid": "8d09e976-25a0-4c78-81cd-65fac8505830",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1224,
+ "trimY": 120,
+ "width": 122,
+ "height": 130,
+ "rawWidth": 122,
+ "rawHeight": 130,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "decision_sign_3.png": {
+ "ver": "1.0.3",
+ "uuid": "40070852-dace-4de0-976c-f37aa482b996",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 976,
+ "trimY": 134,
+ "width": 124,
+ "height": 120,
+ "rawWidth": 124,
+ "rawHeight": 120,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "decision_sign_4.png": {
+ "ver": "1.0.3",
+ "uuid": "ecb830a8-95c6-4528-bb97-771d7cd13dc4",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 405,
+ "trimY": 2,
+ "width": 184,
+ "height": 126,
+ "rawWidth": 184,
+ "rawHeight": 126,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "dismiss_room_title.png": {
+ "ver": "1.0.3",
+ "uuid": "38be1123-65ab-4374-9b79-5ba993c9e089",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 233,
+ "height": 46,
+ "rawWidth": 233,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "fan_pao_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "237032f8-9668-4bdc-bc99-960e5c53bd9f",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 221,
+ "trimY": 212,
+ "width": 87,
+ "height": 38,
+ "rawWidth": 87,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "headallbk.png": {
+ "ver": "1.0.3",
+ "uuid": "69d89393-64d9-47ff-8411-f7147b162086",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 872,
+ "trimY": 138,
+ "width": 102,
+ "height": 103,
+ "rawWidth": 102,
+ "rawHeight": 103,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "headbk.png": {
+ "ver": "1.0.3",
+ "uuid": "87349c4b-caa4-428d-ae53-549b97438ce4",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1102,
+ "trimY": 134,
+ "width": 120,
+ "height": 120,
+ "rawWidth": 120,
+ "rawHeight": 120,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "laizi_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "d4ee4a99-35be-459e-8221-3d7064ad0051",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1594,
+ "trimY": 48,
+ "width": 87,
+ "height": 88,
+ "rawWidth": 87,
+ "rawHeight": 88,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "mahjong_title.png": {
+ "ver": "1.0.3",
+ "uuid": "3329caac-ff7b-4e43-815f-ae3ce3d83c7a",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1224,
+ "trimY": 2,
+ "width": 484,
+ "height": 44,
+ "rawWidth": 484,
+ "rawHeight": 44,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "msg_bubble_btm.png": {
+ "ver": "1.0.3",
+ "uuid": "b35a9d33-5790-459f-950c-eee12b27056c",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 469,
+ "trimY": 188,
+ "width": 69,
+ "height": 64,
+ "rawWidth": 69,
+ "rawHeight": 64,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "msg_bubble_left.png": {
+ "ver": "1.0.3",
+ "uuid": "23fdb5af-9999-464a-9131-bcf186d31075",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1565,
+ "trimY": 137,
+ "width": 64,
+ "height": 52,
+ "rawWidth": 64,
+ "rawHeight": 52,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "msg_bubble_right.png": {
+ "ver": "1.0.3",
+ "uuid": "b8bed57c-7c55-41cc-8f87-b746d4bf0c73",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 604,
+ "trimY": 179,
+ "width": 71,
+ "height": 52,
+ "rawWidth": 71,
+ "rawHeight": 52,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "msg_bubble_top.png": {
+ "ver": "1.0.3",
+ "uuid": "535753f9-162b-4819-969d-6726b942ab53",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1528,
+ "trimY": 48,
+ "width": 68,
+ "height": 64,
+ "rawWidth": 68,
+ "rawHeight": 64,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "msg_set_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "5e5d01f9-5a85-4abc-9330-a89e7f44dbbb",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 533,
+ "trimY": 2,
+ "width": 175,
+ "height": 73,
+ "rawWidth": 175,
+ "rawHeight": 73,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "off_line_sign.png": {
+ "ver": "1.0.3",
+ "uuid": "a230e2f8-3203-4f06-8299-6a187f59b5eb",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 50,
+ "trimY": 212,
+ "width": 63,
+ "height": 41,
+ "rawWidth": 63,
+ "rawHeight": 41,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "outmjtile_sign.png": {
+ "ver": "1.0.3",
+ "uuid": "b3daa091-3e8e-4358-8255-7543c401efd7",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 310,
+ "trimY": 212,
+ "width": 34,
+ "height": 45,
+ "rawWidth": 34,
+ "rawHeight": 45,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "ready_sign.png": {
+ "ver": "1.0.3",
+ "uuid": "c310366e-416a-4166-ba90-9b5a589f1dd6",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 540,
+ "trimY": 179,
+ "width": 62,
+ "height": 75,
+ "rawWidth": 62,
+ "rawHeight": 75,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "speaker1.png": {
+ "ver": "1.0.3",
+ "uuid": "3a3a48a1-be45-46c4-b82b-1b5d10a7132e",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 237,
+ "width": 6,
+ "height": 8,
+ "rawWidth": 6,
+ "rawHeight": 8,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "timebk.png": {
+ "ver": "1.0.3",
+ "uuid": "c3fde634-7152-4408-813e-581c2ca09f45",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 115,
+ "trimY": 212,
+ "width": 104,
+ "height": 38,
+ "rawWidth": 104,
+ "rawHeight": 38,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "turn_pos_0.png": {
+ "ver": "1.0.3",
+ "uuid": "c6792fab-a883-4d0f-8ec5-ad4d738671cd",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 812,
+ "trimY": 138,
+ "width": 28,
+ "height": 110,
+ "rawWidth": 28,
+ "rawHeight": 110,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "turn_pos_1.png": {
+ "ver": "1.0.3",
+ "uuid": "bd840aff-153b-4609-9f4e-c203d8d31d2e",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 842,
+ "trimY": 138,
+ "width": 110,
+ "height": 28,
+ "rawWidth": 110,
+ "rawHeight": 28,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "turn_pos_2.png": {
+ "ver": "1.0.3",
+ "uuid": "9fdbad27-6226-4502-a818-f93f2d543cf8",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 782,
+ "trimY": 138,
+ "width": 28,
+ "height": 110,
+ "rawWidth": 28,
+ "rawHeight": 110,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "turn_pos_3.png": {
+ "ver": "1.0.3",
+ "uuid": "b4cd8eb2-b901-43e6-85c2-8791641cecaa",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 357,
+ "trimY": 212,
+ "width": 110,
+ "height": 28,
+ "rawWidth": 110,
+ "rawHeight": 28,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "turn_pos_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "8c3ba05e-1fbf-4af6-934e-40020fa8a371",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 608,
+ "trimY": 2,
+ "width": 139,
+ "height": 139,
+ "rawWidth": 139,
+ "rawHeight": 139,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "voice_btn.png": {
+ "ver": "1.0.3",
+ "uuid": "ff360503-52f4-4bcb-9760-21032e85ef6f",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1476,
+ "trimY": 120,
+ "width": 87,
+ "height": 88,
+ "rawWidth": 87,
+ "rawHeight": 88,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/play_scene.png b/client/assets/resources/textures/images/play_scene.png
new file mode 100755
index 0000000..32312d5
Binary files /dev/null and b/client/assets/resources/textures/images/play_scene.png differ
diff --git a/client/assets/resources/textures/images/play_scene.png.meta b/client/assets/resources/textures/images/play_scene.png.meta
new file mode 100755
index 0000000..cd8f980
--- /dev/null
+++ b/client/assets/resources/textures/images/play_scene.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "play_scene": {
+ "ver": "1.0.3",
+ "uuid": "ae66c8ea-bf8d-4490-805d-e9d07577e36b",
+ "rawTextureUuid": "a8cce54f-961c-49b5-b3e1-4d293547f05b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 1706,
+ "height": 252,
+ "rawWidth": 1710,
+ "rawHeight": 256,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/public_ui.plist b/client/assets/resources/textures/images/public_ui.plist
new file mode 100755
index 0000000..7a599ff
--- /dev/null
+++ b/client/assets/resources/textures/images/public_ui.plist
@@ -0,0 +1,217 @@
+
+
+
+
+ frames
+
+ head_img_female.png
+
+ frame
+ {{642,117},{102,102}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{102,102}}
+ sourceSize
+ {102,102}
+
+ head_img_male.png
+
+ frame
+ {{538,117},{102,102}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{102,102}}
+ sourceSize
+ {102,102}
+
+ head_mask.png
+
+ frame
+ {{746,155},{64,64}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{64,64}}
+ sourceSize
+ {64,64}
+
+ player_info_bg.png
+
+ frame
+ {{146,2},{208,209}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{208,209}}
+ sourceSize
+ {208,209}
+
+ public_bar_btm.png
+
+ frame
+ {{746,105},{1274,48}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1274,48}}
+ sourceSize
+ {1274,48}
+
+ public_bar_top.png
+
+ frame
+ {{746,2},{1280,101}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{1280,101}}
+ sourceSize
+ {1280,101}
+
+ public_btn_back.png
+
+ frame
+ {{812,155},{78,56}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{78,56}}
+ sourceSize
+ {78,56}
+
+ public_btn_cancel.png
+
+ frame
+ {{74,2},{221,70}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{221,70}}
+ sourceSize
+ {221,70}
+
+ public_btn_close.png
+
+ frame
+ {{653,2},{78,78}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{78,78}}
+ sourceSize
+ {78,78}
+
+ public_btn_ok.png
+
+ frame
+ {{2,2},{221,70}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{221,70}}
+ sourceSize
+ {221,70}
+
+ public_frame_a.png
+
+ frame
+ {{146,2},{208,209}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{208,209}}
+ sourceSize
+ {208,209}
+
+ public_frame_b.png
+
+ frame
+ {{356,2},{180,180}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{180,180}}
+ sourceSize
+ {180,180}
+
+ public_frame_head.png
+
+ frame
+ {{538,2},{113,113}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{113,113}}
+ sourceSize
+ {113,113}
+
+ sex_female.png
+
+ frame
+ {{939,155},{45,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{45,46}}
+ sourceSize
+ {45,46}
+
+ sex_male.png
+
+ frame
+ {{892,155},{45,46}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{45,46}}
+ sourceSize
+ {45,46}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ public_ui.png
+ size
+ {2028,225}
+ smartupdate
+ $TexturePacker:SmartUpdate:aa848dcfde04174972b1051b88a6043a:1/1$
+ textureFileName
+ public_ui.png
+
+
+
diff --git a/client/assets/resources/textures/images/public_ui.plist.meta b/client/assets/resources/textures/images/public_ui.plist.meta
new file mode 100755
index 0000000..b7c5549
--- /dev/null
+++ b/client/assets/resources/textures/images/public_ui.plist.meta
@@ -0,0 +1,342 @@
+{
+ "ver": "1.2.4",
+ "uuid": "0a6fef68-87a0-430b-abe7-82b0526bb5bc",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "size": {
+ "width": 2028,
+ "height": 225
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "head_img_female.png": {
+ "ver": "1.0.3",
+ "uuid": "d2d631ae-5272-47d1-9604-e3ec6d209b9f",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 642,
+ "trimY": 117,
+ "width": 102,
+ "height": 102,
+ "rawWidth": 102,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "head_img_male.png": {
+ "ver": "1.0.3",
+ "uuid": "afc96215-f657-4e45-b5e6-ff5152f52566",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 538,
+ "trimY": 117,
+ "width": 102,
+ "height": 102,
+ "rawWidth": 102,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "head_mask.png": {
+ "ver": "1.0.3",
+ "uuid": "99590587-bbe2-476a-8f41-0ee43fb6e872",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 746,
+ "trimY": 155,
+ "width": 64,
+ "height": 64,
+ "rawWidth": 64,
+ "rawHeight": 64,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "player_info_bg.png": {
+ "ver": "1.0.3",
+ "uuid": "7c699688-794b-436c-92aa-8044ae3896f0",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 146,
+ "trimY": 2,
+ "width": 208,
+ "height": 209,
+ "rawWidth": 208,
+ "rawHeight": 209,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_bar_btm.png": {
+ "ver": "1.0.3",
+ "uuid": "dd067b6a-d750-478c-b239-a845ef554ef7",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 746,
+ "trimY": 105,
+ "width": 1274,
+ "height": 48,
+ "rawWidth": 1274,
+ "rawHeight": 48,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_bar_top.png": {
+ "ver": "1.0.3",
+ "uuid": "e8d9f695-ac2f-43dc-b9a0-b51e9531a700",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 746,
+ "trimY": 2,
+ "width": 1280,
+ "height": 101,
+ "rawWidth": 1280,
+ "rawHeight": 101,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_btn_back.png": {
+ "ver": "1.0.3",
+ "uuid": "312c5295-8210-4203-b06e-c72d765f0928",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 812,
+ "trimY": 155,
+ "width": 78,
+ "height": 56,
+ "rawWidth": 78,
+ "rawHeight": 56,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_btn_cancel.png": {
+ "ver": "1.0.3",
+ "uuid": "5df0fb42-67cf-4df8-8ba4-539ef53a3ba7",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 74,
+ "trimY": 2,
+ "width": 221,
+ "height": 70,
+ "rawWidth": 221,
+ "rawHeight": 70,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_btn_close.png": {
+ "ver": "1.0.3",
+ "uuid": "05b80eb8-2054-4f28-9be0-36044421240d",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 653,
+ "trimY": 2,
+ "width": 78,
+ "height": 78,
+ "rawWidth": 78,
+ "rawHeight": 78,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_btn_ok.png": {
+ "ver": "1.0.3",
+ "uuid": "718e98bd-522b-4ff0-b5cd-e955aa0d620b",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 221,
+ "height": 70,
+ "rawWidth": 221,
+ "rawHeight": 70,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_frame_a.png": {
+ "ver": "1.0.3",
+ "uuid": "397f7028-2225-43bd-9c38-80f857a464cb",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 146,
+ "trimY": 2,
+ "width": 208,
+ "height": 209,
+ "rawWidth": 208,
+ "rawHeight": 209,
+ "borderTop": 50,
+ "borderBottom": 50,
+ "borderLeft": 50,
+ "borderRight": 50,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_frame_b.png": {
+ "ver": "1.0.3",
+ "uuid": "fc8d435b-7d57-43bf-80b1-b0e1d77eeafd",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 356,
+ "trimY": 2,
+ "width": 180,
+ "height": 180,
+ "rawWidth": 180,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "public_frame_head.png": {
+ "ver": "1.0.3",
+ "uuid": "50e77c44-284c-44b7-8797-2a246a7b60fd",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 538,
+ "trimY": 2,
+ "width": 113,
+ "height": 113,
+ "rawWidth": 113,
+ "rawHeight": 113,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sex_female.png": {
+ "ver": "1.0.3",
+ "uuid": "8c2e8172-65aa-4d5f-ad62-5383e3f1f939",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 939,
+ "trimY": 155,
+ "width": 45,
+ "height": 46,
+ "rawWidth": 45,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "sex_male.png": {
+ "ver": "1.0.3",
+ "uuid": "ecf2a72a-7f6b-496d-a333-45912d28efcd",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 892,
+ "trimY": 155,
+ "width": 45,
+ "height": 46,
+ "rawWidth": 45,
+ "rawHeight": 46,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/public_ui.png b/client/assets/resources/textures/images/public_ui.png
new file mode 100755
index 0000000..0686ff1
Binary files /dev/null and b/client/assets/resources/textures/images/public_ui.png differ
diff --git a/client/assets/resources/textures/images/public_ui.png.meta b/client/assets/resources/textures/images/public_ui.png.meta
new file mode 100755
index 0000000..46139f6
--- /dev/null
+++ b/client/assets/resources/textures/images/public_ui.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "public_ui": {
+ "ver": "1.0.3",
+ "uuid": "5e14cc7f-5ec7-40ca-810e-8c1786eed0f8",
+ "rawTextureUuid": "0a21888f-598b-4849-9561-700a22e42454",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 2024,
+ "height": 221,
+ "rawWidth": 2028,
+ "rawHeight": 225,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/replayBtn.plist b/client/assets/resources/textures/images/replayBtn.plist
new file mode 100755
index 0000000..a9ee173
--- /dev/null
+++ b/client/assets/resources/textures/images/replayBtn.plist
@@ -0,0 +1,87 @@
+
+
+
+
+ frames
+
+ replayExit.png
+
+ frame
+ {{2,2},{54,54}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{54,54}}
+ sourceSize
+ {54,54}
+
+ replayFast.png
+
+ frame
+ {{153,2},{53,49}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{53,49}}
+ sourceSize
+ {53,49}
+
+ replayPause.png
+
+ frame
+ {{58,2},{42,54}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{42,54}}
+ sourceSize
+ {42,54}
+
+ replayPlay.png
+
+ frame
+ {{204,2},{45,53}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{45,53}}
+ sourceSize
+ {45,53}
+
+ replayRewind.png
+
+ frame
+ {{102,2},{53,49}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{53,49}}
+ sourceSize
+ {53,49}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ replayBtn.png
+ size
+ {251,58}
+ smartupdate
+ $TexturePacker:SmartUpdate:23568dd7e60d5fa1cab3e506d580ee24:1/1$
+ textureFileName
+ replayBtn.png
+
+
+
diff --git a/client/assets/resources/textures/images/replayBtn.plist.meta b/client/assets/resources/textures/images/replayBtn.plist.meta
new file mode 100755
index 0000000..077c578
--- /dev/null
+++ b/client/assets/resources/textures/images/replayBtn.plist.meta
@@ -0,0 +1,122 @@
+{
+ "ver": "1.2.4",
+ "uuid": "24697d0f-0baa-431b-82e8-d74c1124a91c",
+ "rawTextureUuid": "739834dc-489b-4290-97ca-158d637f9dd2",
+ "size": {
+ "width": 251,
+ "height": 58
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "replayExit.png": {
+ "ver": "1.0.3",
+ "uuid": "5a4b139c-cf52-4e01-b03c-eea87102060a",
+ "rawTextureUuid": "739834dc-489b-4290-97ca-158d637f9dd2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 54,
+ "height": 54,
+ "rawWidth": 54,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "replayFast.png": {
+ "ver": "1.0.3",
+ "uuid": "ca63a0ab-a2bd-4ec1-8ec3-a72e34ed2499",
+ "rawTextureUuid": "739834dc-489b-4290-97ca-158d637f9dd2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 153,
+ "trimY": 2,
+ "width": 53,
+ "height": 49,
+ "rawWidth": 53,
+ "rawHeight": 49,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "replayPause.png": {
+ "ver": "1.0.3",
+ "uuid": "4b48cbcd-ecdf-418a-83d1-a109e527bcf1",
+ "rawTextureUuid": "739834dc-489b-4290-97ca-158d637f9dd2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 58,
+ "trimY": 2,
+ "width": 42,
+ "height": 54,
+ "rawWidth": 42,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "replayPlay.png": {
+ "ver": "1.0.3",
+ "uuid": "926fad4d-58f9-4703-9298-300293e852cc",
+ "rawTextureUuid": "739834dc-489b-4290-97ca-158d637f9dd2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 204,
+ "trimY": 2,
+ "width": 45,
+ "height": 53,
+ "rawWidth": 45,
+ "rawHeight": 53,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "replayRewind.png": {
+ "ver": "1.0.3",
+ "uuid": "6fbdf7d9-eeba-4a7d-b7b4-bba89d411657",
+ "rawTextureUuid": "739834dc-489b-4290-97ca-158d637f9dd2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 102,
+ "trimY": 2,
+ "width": 53,
+ "height": 49,
+ "rawWidth": 53,
+ "rawHeight": 49,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/replayBtn.png b/client/assets/resources/textures/images/replayBtn.png
new file mode 100755
index 0000000..862491d
Binary files /dev/null and b/client/assets/resources/textures/images/replayBtn.png differ
diff --git a/client/assets/resources/textures/images/replayBtn.png.meta b/client/assets/resources/textures/images/replayBtn.png.meta
new file mode 100755
index 0000000..23034ed
--- /dev/null
+++ b/client/assets/resources/textures/images/replayBtn.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "739834dc-489b-4290-97ca-158d637f9dd2",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "replayBtn": {
+ "ver": "1.0.3",
+ "uuid": "94879ab8-1f28-4dd4-9e75-4cbe27246ccf",
+ "rawTextureUuid": "739834dc-489b-4290-97ca-158d637f9dd2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 247,
+ "height": 54,
+ "rawWidth": 251,
+ "rawHeight": 58,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/setting.plist b/client/assets/resources/textures/images/setting.plist
new file mode 100755
index 0000000..63fd35b
--- /dev/null
+++ b/client/assets/resources/textures/images/setting.plist
@@ -0,0 +1,165 @@
+
+
+
+
+ frames
+
+ setting1.png
+
+ frame
+ {{822,49},{102,102}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{102,102}}
+ sourceSize
+ {102,102}
+
+ setting10.png
+
+ frame
+ {{762,2},{184,45}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{184,45}}
+ sourceSize
+ {184,45}
+
+ setting11.png
+
+ frame
+ {{762,49},{430,32}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{430,32}}
+ sourceSize
+ {430,32}
+
+ setting12.png
+
+ frame
+ {{796,49},{424,24}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{424,24}}
+ sourceSize
+ {424,24}
+
+ setting2.png
+
+ frame
+ {{890,153},{51,55}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{51,55}}
+ sourceSize
+ {51,55}
+
+ setting3.png
+
+ frame
+ {{822,357},{66,66}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{66,66}}
+ sourceSize
+ {66,66}
+
+ setting4.png
+
+ frame
+ {{822,289},{66,66}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{66,66}}
+ sourceSize
+ {66,66}
+
+ setting5.png
+
+ frame
+ {{822,221},{66,66}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{66,66}}
+ sourceSize
+ {66,66}
+
+ setting6.png
+
+ frame
+ {{822,153},{66,66}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{66,66}}
+ sourceSize
+ {66,66}
+
+ setting8.png
+
+ frame
+ {{2,2},{758,480}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{758,480}}
+ sourceSize
+ {758,480}
+
+ setting9.png
+
+ frame
+ {{890,206},{220,42}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{220,42}}
+ sourceSize
+ {220,42}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ setting.png
+ size
+ {948,484}
+ smartupdate
+ $TexturePacker:SmartUpdate:080862085a0679ea5be385c1236050c8:1/1$
+ textureFileName
+ setting.png
+
+
+
diff --git a/client/assets/resources/textures/images/setting.plist.meta b/client/assets/resources/textures/images/setting.plist.meta
new file mode 100755
index 0000000..5aeb6f8
--- /dev/null
+++ b/client/assets/resources/textures/images/setting.plist.meta
@@ -0,0 +1,254 @@
+{
+ "ver": "1.2.4",
+ "uuid": "09bfe702-65eb-47f4-9ccb-7593d9233e0d",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "size": {
+ "width": 948,
+ "height": 484
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "setting1.png": {
+ "ver": "1.0.3",
+ "uuid": "8f8b031e-48ad-4814-8eb0-0e51c2961831",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 822,
+ "trimY": 49,
+ "width": 102,
+ "height": 102,
+ "rawWidth": 102,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting10.png": {
+ "ver": "1.0.3",
+ "uuid": "498383c9-347c-434f-84e3-53e4f304d72a",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 762,
+ "trimY": 2,
+ "width": 184,
+ "height": 45,
+ "rawWidth": 184,
+ "rawHeight": 45,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting11.png": {
+ "ver": "1.0.3",
+ "uuid": "7f5d1ce1-ad62-48c3-891d-2feb0457a744",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 762,
+ "trimY": 49,
+ "width": 430,
+ "height": 32,
+ "rawWidth": 430,
+ "rawHeight": 32,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting12.png": {
+ "ver": "1.0.3",
+ "uuid": "9d456e8d-b4a7-492e-bc9a-bd60dff93263",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 796,
+ "trimY": 49,
+ "width": 424,
+ "height": 24,
+ "rawWidth": 424,
+ "rawHeight": 24,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting2.png": {
+ "ver": "1.0.3",
+ "uuid": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 890,
+ "trimY": 153,
+ "width": 51,
+ "height": 55,
+ "rawWidth": 51,
+ "rawHeight": 55,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting3.png": {
+ "ver": "1.0.3",
+ "uuid": "0acd8ea4-0cc4-4240-9438-b5591b52d6bb",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 822,
+ "trimY": 357,
+ "width": 66,
+ "height": 66,
+ "rawWidth": 66,
+ "rawHeight": 66,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting4.png": {
+ "ver": "1.0.3",
+ "uuid": "66a82289-42b1-4fb6-a223-220e32129cfa",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 822,
+ "trimY": 289,
+ "width": 66,
+ "height": 66,
+ "rawWidth": 66,
+ "rawHeight": 66,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting5.png": {
+ "ver": "1.0.3",
+ "uuid": "c4d40921-9a54-4928-8409-ce5c5c456840",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 822,
+ "trimY": 221,
+ "width": 66,
+ "height": 66,
+ "rawWidth": 66,
+ "rawHeight": 66,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting6.png": {
+ "ver": "1.0.3",
+ "uuid": "8ee53e49-397a-4974-b996-923c19d3cf0a",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 822,
+ "trimY": 153,
+ "width": 66,
+ "height": 66,
+ "rawWidth": 66,
+ "rawHeight": 66,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting8.png": {
+ "ver": "1.0.3",
+ "uuid": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 758,
+ "height": 480,
+ "rawWidth": 758,
+ "rawHeight": 480,
+ "borderTop": 240,
+ "borderBottom": 240,
+ "borderLeft": 379,
+ "borderRight": 379,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "setting9.png": {
+ "ver": "1.0.3",
+ "uuid": "c993886c-1bec-463c-a4dd-baab41d8173f",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 890,
+ "trimY": 206,
+ "width": 220,
+ "height": 42,
+ "rawWidth": 220,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/setting.png b/client/assets/resources/textures/images/setting.png
new file mode 100755
index 0000000..f7b315e
Binary files /dev/null and b/client/assets/resources/textures/images/setting.png differ
diff --git a/client/assets/resources/textures/images/setting.png.meta b/client/assets/resources/textures/images/setting.png.meta
new file mode 100755
index 0000000..9c19535
--- /dev/null
+++ b/client/assets/resources/textures/images/setting.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "setting": {
+ "ver": "1.0.3",
+ "uuid": "a7f715ba-5366-4101-9dd3-32546913101e",
+ "rawTextureUuid": "d1a03cc6-a428-433f-b66a-a2dcb6ce98ef",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 944,
+ "height": 480,
+ "rawWidth": 948,
+ "rawHeight": 484,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/status.meta b/client/assets/resources/textures/images/status.meta
new file mode 100755
index 0000000..b950ead
--- /dev/null
+++ b/client/assets/resources/textures/images/status.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "85579c9a-91b0-4c1d-9e01-bccabe733cb6",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/status/Z_power.png b/client/assets/resources/textures/images/status/Z_power.png
new file mode 100755
index 0000000..e507676
Binary files /dev/null and b/client/assets/resources/textures/images/status/Z_power.png differ
diff --git a/client/assets/resources/textures/images/status/Z_power.png.meta b/client/assets/resources/textures/images/status/Z_power.png.meta
new file mode 100755
index 0000000..1786f2e
--- /dev/null
+++ b/client/assets/resources/textures/images/status/Z_power.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "43d7bab4-1194-49bd-9086-8e194cb0fad7",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_power": {
+ "ver": "1.0.3",
+ "uuid": "06d4bb9e-6c43-4338-896b-376455357acb",
+ "rawTextureUuid": "43d7bab4-1194-49bd-9086-8e194cb0fad7",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 1,
+ "width": 56,
+ "height": 29,
+ "rawWidth": 56,
+ "rawHeight": 31,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/status/powerG.PNG b/client/assets/resources/textures/images/status/powerG.PNG
new file mode 100755
index 0000000..8f4cca6
Binary files /dev/null and b/client/assets/resources/textures/images/status/powerG.PNG differ
diff --git a/client/assets/resources/textures/images/status/powerG.PNG.meta b/client/assets/resources/textures/images/status/powerG.PNG.meta
new file mode 100755
index 0000000..503ff27
--- /dev/null
+++ b/client/assets/resources/textures/images/status/powerG.PNG.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0a030286-ff57-47a3-bd96-818af7154024",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "powerG": {
+ "ver": "1.0.3",
+ "uuid": "d705dbcc-23e3-4069-98da-552ba69bea94",
+ "rawTextureUuid": "0a030286-ff57-47a3-bd96-818af7154024",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 34,
+ "height": 17,
+ "rawWidth": 34,
+ "rawHeight": 17,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/status/xinhao1.png b/client/assets/resources/textures/images/status/xinhao1.png
new file mode 100755
index 0000000..5efb476
Binary files /dev/null and b/client/assets/resources/textures/images/status/xinhao1.png differ
diff --git a/client/assets/resources/textures/images/status/xinhao1.png.meta b/client/assets/resources/textures/images/status/xinhao1.png.meta
new file mode 100755
index 0000000..c0e1ed7
--- /dev/null
+++ b/client/assets/resources/textures/images/status/xinhao1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "01d505bd-ed51-458f-b352-5c13e7024818",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "xinhao1": {
+ "ver": "1.0.3",
+ "uuid": "f7c3a7c5-24ca-4aec-8c63-63999772365c",
+ "rawTextureUuid": "01d505bd-ed51-458f-b352-5c13e7024818",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 48,
+ "height": 42,
+ "rawWidth": 48,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/status/xinhao2.png b/client/assets/resources/textures/images/status/xinhao2.png
new file mode 100755
index 0000000..11a8846
Binary files /dev/null and b/client/assets/resources/textures/images/status/xinhao2.png differ
diff --git a/client/assets/resources/textures/images/status/xinhao2.png.meta b/client/assets/resources/textures/images/status/xinhao2.png.meta
new file mode 100755
index 0000000..bb9b8d4
--- /dev/null
+++ b/client/assets/resources/textures/images/status/xinhao2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0b03962f-bfc2-42b3-ba0b-d355eacbd11c",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "xinhao2": {
+ "ver": "1.0.3",
+ "uuid": "09a1b575-5456-4341-b48a-07f712e4fd8b",
+ "rawTextureUuid": "0b03962f-bfc2-42b3-ba0b-d355eacbd11c",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 48,
+ "height": 42,
+ "rawWidth": 48,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/status/xinhao3.png b/client/assets/resources/textures/images/status/xinhao3.png
new file mode 100755
index 0000000..f9c9301
Binary files /dev/null and b/client/assets/resources/textures/images/status/xinhao3.png differ
diff --git a/client/assets/resources/textures/images/status/xinhao3.png.meta b/client/assets/resources/textures/images/status/xinhao3.png.meta
new file mode 100755
index 0000000..79823e7
--- /dev/null
+++ b/client/assets/resources/textures/images/status/xinhao3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "58f148b2-79ef-4764-8c90-a12d1aefcd82",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "xinhao3": {
+ "ver": "1.0.3",
+ "uuid": "fe7898db-1398-455c-95f6-a52931b456c0",
+ "rawTextureUuid": "58f148b2-79ef-4764-8c90-a12d1aefcd82",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 48,
+ "height": 42,
+ "rawWidth": 48,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/status/xinhao4.png b/client/assets/resources/textures/images/status/xinhao4.png
new file mode 100755
index 0000000..7edebe8
Binary files /dev/null and b/client/assets/resources/textures/images/status/xinhao4.png differ
diff --git a/client/assets/resources/textures/images/status/xinhao4.png.meta b/client/assets/resources/textures/images/status/xinhao4.png.meta
new file mode 100755
index 0000000..b239e94
--- /dev/null
+++ b/client/assets/resources/textures/images/status/xinhao4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0377aeac-841b-4813-890c-8d487d04b367",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "xinhao4": {
+ "ver": "1.0.3",
+ "uuid": "1f3f7910-9f9f-42fe-bb75-232047d45055",
+ "rawTextureUuid": "0377aeac-841b-4813-890c-8d487d04b367",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0.5,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 48,
+ "height": 41,
+ "rawWidth": 48,
+ "rawHeight": 42,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/title.png b/client/assets/resources/textures/images/title.png
new file mode 100755
index 0000000..a1eab30
Binary files /dev/null and b/client/assets/resources/textures/images/title.png differ
diff --git a/client/assets/resources/textures/images/title.png.meta b/client/assets/resources/textures/images/title.png.meta
new file mode 100755
index 0000000..6d35186
--- /dev/null
+++ b/client/assets/resources/textures/images/title.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "977d5c04-3ba5-4577-a78e-debabf09d9aa",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "title": {
+ "ver": "1.0.3",
+ "uuid": "e836456a-11d3-4b62-bad7-38cbbfa8ae15",
+ "rawTextureUuid": "977d5c04-3ba5-4577-a78e-debabf09d9aa",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -2.5,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 217,
+ "height": 54,
+ "rawWidth": 222,
+ "rawHeight": 54,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/unpack.py b/client/assets/resources/textures/images/unpack.py
new file mode 100755
index 0000000..ef9308d
--- /dev/null
+++ b/client/assets/resources/textures/images/unpack.py
@@ -0,0 +1,72 @@
+#!python
+import os,sys
+from xml.etree import ElementTree
+from PIL import Image
+
+def tree_to_dict(tree):
+ d = {}
+ for index, item in enumerate(tree):
+ if item.tag == 'key':
+ if tree[index+1].tag == 'string':
+ d[item.text] = tree[index + 1].text
+ elif tree[index + 1].tag == 'true':
+ d[item.text] = True
+ elif tree[index + 1].tag == 'false':
+ d[item.text] = False
+ elif tree[index+1].tag == 'dict':
+ d[item.text] = tree_to_dict(tree[index+1])
+ return d
+
+def gen_png_from_plist(plist_filename, png_filename):
+ file_path = plist_filename.replace('.plist', '')
+ big_image = Image.open(png_filename)
+ root = ElementTree.fromstring(open(plist_filename, 'r').read())
+ plist_dict = tree_to_dict(root[0])
+ to_list = lambda x: x.replace('{','').replace('}','').split(',')
+ for k,v in plist_dict['frames'].items():
+ rectlist = to_list(v['frame'])
+ width = int( rectlist[3] if v['rotated'] else rectlist[2] )
+ height = int( rectlist[2] if v['rotated'] else rectlist[3] )
+ box=(
+ int(rectlist[0]),
+ int(rectlist[1]),
+ int(rectlist[0]) + width,
+ int(rectlist[1]) + height,
+ )
+ sizelist = [ int(x) for x in to_list(v['sourceSize'])]
+ rect_on_big = big_image.crop(box)
+
+ if v['rotated']:
+ rect_on_big = rect_on_big.rotate(90)
+
+ result_image = Image.new('RGBA', sizelist, (0,0,0,0))
+ if v['rotated']:
+ result_box=(
+ ( sizelist[0] - height )/2,
+ ( sizelist[1] - width )/2,
+ ( sizelist[0] + height )/2,
+ ( sizelist[1] + width )/2
+ )
+ else:
+ result_box=(
+ ( sizelist[0] - width )/2,
+ ( sizelist[1] - height )/2,
+ ( sizelist[0] + width )/2,
+ ( sizelist[1] + height )/2
+ )
+ result_image.paste(rect_on_big, result_box, mask=0)
+
+ if not os.path.isdir(file_path):
+ os.mkdir(file_path)
+ outfile = (file_path+'/' + k).replace('gift_', '')
+ print outfile, "generated"
+ result_image.save(outfile)
+
+if __name__ == '__main__':
+ filename = sys.argv[1]
+ plist_filename = filename + '.plist'
+ png_filename = filename + '.png'
+ if (os.path.exists(plist_filename) and os.path.exists(png_filename)):
+ gen_png_from_plist( plist_filename, png_filename )
+ else:
+ print "make sure you have boith plist and png files in the same directory"
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/unpack.py.meta b/client/assets/resources/textures/images/unpack.py.meta
new file mode 100755
index 0000000..b2b4d82
--- /dev/null
+++ b/client/assets/resources/textures/images/unpack.py.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3fb41aca-8cfd-405b-aa8a-30ad39fd7023",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/youqingTip.plist b/client/assets/resources/textures/images/youqingTip.plist
new file mode 100755
index 0000000..2ae74c5
--- /dev/null
+++ b/client/assets/resources/textures/images/youqingTip.plist
@@ -0,0 +1,61 @@
+
+
+
+
+ frames
+
+ xiongmao1.png
+
+ frame
+ {{2,2},{398,343}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{398,343}}
+ sourceSize
+ {398,343}
+
+ xiongmao2.png
+
+ frame
+ {{2,347},{389,341}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{389,341}}
+ sourceSize
+ {389,341}
+
+ xiongmao3.png
+
+ frame
+ {{2,690},{226,380}}
+ offset
+ {0,0}
+ rotated
+
+ sourceColorRect
+ {{0,0},{226,380}}
+ sourceSize
+ {226,380}
+
+
+ metadata
+
+ format
+ 2
+ realTextureFileName
+ youqingTip.png
+ size
+ {402,918}
+ smartupdate
+ $TexturePacker:SmartUpdate:21a2a57b9b675bfd93d826f0ed9bb7d2:1/1$
+ textureFileName
+ youqingTip.png
+
+
+
diff --git a/client/assets/resources/textures/images/youqingTip.plist.meta b/client/assets/resources/textures/images/youqingTip.plist.meta
new file mode 100755
index 0000000..0f283c2
--- /dev/null
+++ b/client/assets/resources/textures/images/youqingTip.plist.meta
@@ -0,0 +1,78 @@
+{
+ "ver": "1.2.4",
+ "uuid": "cdbf24b6-487a-47c4-89c8-a26c904af2d4",
+ "rawTextureUuid": "2c9b7b23-1d41-4a46-bb3d-59f276d1d239",
+ "size": {
+ "width": 402,
+ "height": 918
+ },
+ "type": "Texture Packer",
+ "subMetas": {
+ "xiongmao1.png": {
+ "ver": "1.0.3",
+ "uuid": "6df48294-00fd-4003-bee3-14447d7cceb0",
+ "rawTextureUuid": "2c9b7b23-1d41-4a46-bb3d-59f276d1d239",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 2,
+ "width": 398,
+ "height": 343,
+ "rawWidth": 398,
+ "rawHeight": 343,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "xiongmao2.png": {
+ "ver": "1.0.3",
+ "uuid": "9b2e97ec-e82c-4602-b9b7-3c073095962d",
+ "rawTextureUuid": "2c9b7b23-1d41-4a46-bb3d-59f276d1d239",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 347,
+ "width": 389,
+ "height": 341,
+ "rawWidth": 389,
+ "rawHeight": 341,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ },
+ "xiongmao3.png": {
+ "ver": "1.0.3",
+ "uuid": "5368328b-77a9-48e3-9398-ff4265ba65ed",
+ "rawTextureUuid": "2c9b7b23-1d41-4a46-bb3d-59f276d1d239",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": true,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 2,
+ "trimY": 690,
+ "width": 226,
+ "height": 380,
+ "rawWidth": 226,
+ "rawHeight": 380,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "spriteType": "normal",
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/images/youqingTip.png b/client/assets/resources/textures/images/youqingTip.png
new file mode 100755
index 0000000..c481c3c
Binary files /dev/null and b/client/assets/resources/textures/images/youqingTip.png differ
diff --git a/client/assets/resources/textures/images/youqingTip.png.meta b/client/assets/resources/textures/images/youqingTip.png.meta
new file mode 100755
index 0000000..31ba9dc
--- /dev/null
+++ b/client/assets/resources/textures/images/youqingTip.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2c9b7b23-1d41-4a46-bb3d-59f276d1d239",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "youqingTip": {
+ "ver": "1.0.3",
+ "uuid": "d8124940-c8ac-4655-87da-af4cb862de8f",
+ "rawTextureUuid": "2c9b7b23-1d41-4a46-bb3d-59f276d1d239",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": -0.5,
+ "trimX": 2,
+ "trimY": 3,
+ "width": 398,
+ "height": 913,
+ "rawWidth": 402,
+ "rawHeight": 918,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading.meta b/client/assets/resources/textures/loading.meta
new file mode 100755
index 0000000..8c98cf2
--- /dev/null
+++ b/client/assets/resources/textures/loading.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "a306ffe2-b13e-4ff2-a274-ca64d2a4534e",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading/dian1.png b/client/assets/resources/textures/loading/dian1.png
new file mode 100755
index 0000000..31c5125
Binary files /dev/null and b/client/assets/resources/textures/loading/dian1.png differ
diff --git a/client/assets/resources/textures/loading/dian1.png.meta b/client/assets/resources/textures/loading/dian1.png.meta
new file mode 100755
index 0000000..486ebdf
--- /dev/null
+++ b/client/assets/resources/textures/loading/dian1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "9c7a7833-db7e-4439-9434-20901dde5aa8",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "dian1": {
+ "ver": "1.0.3",
+ "uuid": "bb9fa226-e1aa-40f9-955d-14c6c361d7be",
+ "rawTextureUuid": "9c7a7833-db7e-4439-9434-20901dde5aa8",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -48.5,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 20,
+ "height": 18,
+ "rawWidth": 117,
+ "rawHeight": 18,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading/dian2.png b/client/assets/resources/textures/loading/dian2.png
new file mode 100755
index 0000000..c807fb1
Binary files /dev/null and b/client/assets/resources/textures/loading/dian2.png differ
diff --git a/client/assets/resources/textures/loading/dian2.png.meta b/client/assets/resources/textures/loading/dian2.png.meta
new file mode 100755
index 0000000..e750a81
--- /dev/null
+++ b/client/assets/resources/textures/loading/dian2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "370dee27-9ee0-4af9-9c2e-1166320faf77",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "dian2": {
+ "ver": "1.0.3",
+ "uuid": "9deb94a9-3861-4d48-b17c-2dc048d22da8",
+ "rawTextureUuid": "370dee27-9ee0-4af9-9c2e-1166320faf77",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -38.5,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 40,
+ "height": 18,
+ "rawWidth": 117,
+ "rawHeight": 18,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading/dian3.png b/client/assets/resources/textures/loading/dian3.png
new file mode 100755
index 0000000..2a06dbc
Binary files /dev/null and b/client/assets/resources/textures/loading/dian3.png differ
diff --git a/client/assets/resources/textures/loading/dian3.png.meta b/client/assets/resources/textures/loading/dian3.png.meta
new file mode 100755
index 0000000..dae00a0
--- /dev/null
+++ b/client/assets/resources/textures/loading/dian3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e90bfd1a-c3d2-4660-8412-c471a55929b0",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "dian3": {
+ "ver": "1.0.3",
+ "uuid": "03aef4a9-c4ee-48a7-b66c-e1d352657e60",
+ "rawTextureUuid": "e90bfd1a-c3d2-4660-8412-c471a55929b0",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -29,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 59,
+ "height": 18,
+ "rawWidth": 117,
+ "rawHeight": 18,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading/dian4.png b/client/assets/resources/textures/loading/dian4.png
new file mode 100755
index 0000000..2b2a2bd
Binary files /dev/null and b/client/assets/resources/textures/loading/dian4.png differ
diff --git a/client/assets/resources/textures/loading/dian4.png.meta b/client/assets/resources/textures/loading/dian4.png.meta
new file mode 100755
index 0000000..188b3af
--- /dev/null
+++ b/client/assets/resources/textures/loading/dian4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7da91495-b60f-48c9-8633-6d62d7561b31",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "dian4": {
+ "ver": "1.0.3",
+ "uuid": "4b4f8910-1f4d-4d2c-a4da-a57921ace189",
+ "rawTextureUuid": "7da91495-b60f-48c9-8633-6d62d7561b31",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -19,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 79,
+ "height": 18,
+ "rawWidth": 117,
+ "rawHeight": 18,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading/dian5.png b/client/assets/resources/textures/loading/dian5.png
new file mode 100755
index 0000000..99b27b7
Binary files /dev/null and b/client/assets/resources/textures/loading/dian5.png differ
diff --git a/client/assets/resources/textures/loading/dian5.png.meta b/client/assets/resources/textures/loading/dian5.png.meta
new file mode 100755
index 0000000..d0df2ac
--- /dev/null
+++ b/client/assets/resources/textures/loading/dian5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "227ac05d-89d6-4939-bf0b-b7c1e48bc56d",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "dian5": {
+ "ver": "1.0.3",
+ "uuid": "0970c647-a97f-4dd1-9841-c5a879b9287e",
+ "rawTextureUuid": "227ac05d-89d6-4939-bf0b-b7c1e48bc56d",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -9.5,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 98,
+ "height": 18,
+ "rawWidth": 117,
+ "rawHeight": 18,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading/dian6.png b/client/assets/resources/textures/loading/dian6.png
new file mode 100755
index 0000000..e92e0e8
Binary files /dev/null and b/client/assets/resources/textures/loading/dian6.png differ
diff --git a/client/assets/resources/textures/loading/dian6.png.meta b/client/assets/resources/textures/loading/dian6.png.meta
new file mode 100755
index 0000000..8d2157a
--- /dev/null
+++ b/client/assets/resources/textures/loading/dian6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "46d77bdc-5159-4e35-9a23-6710a2d2e1e0",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "dian6": {
+ "ver": "1.0.3",
+ "uuid": "a7b39b8e-43c6-476f-9581-8ee2eb9562c8",
+ "rawTextureUuid": "46d77bdc-5159-4e35-9a23-6710a2d2e1e0",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 117,
+ "height": 18,
+ "rawWidth": 117,
+ "rawHeight": 18,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading/load.png b/client/assets/resources/textures/loading/load.png
new file mode 100755
index 0000000..6ed5152
Binary files /dev/null and b/client/assets/resources/textures/loading/load.png differ
diff --git a/client/assets/resources/textures/loading/load.png.meta b/client/assets/resources/textures/loading/load.png.meta
new file mode 100755
index 0000000..7a8f0e6
--- /dev/null
+++ b/client/assets/resources/textures/loading/load.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d94f8d8b-cd1a-48bb-87ec-c7a9fdcc534f",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "load": {
+ "ver": "1.0.3",
+ "uuid": "84763af1-762f-44f0-9bd4-803a09b047de",
+ "rawTextureUuid": "d94f8d8b-cd1a-48bb-87ec-c7a9fdcc534f",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 334,
+ "height": 44,
+ "rawWidth": 334,
+ "rawHeight": 44,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/loading/loading_image.png b/client/assets/resources/textures/loading/loading_image.png
new file mode 100755
index 0000000..fb43ed5
Binary files /dev/null and b/client/assets/resources/textures/loading/loading_image.png differ
diff --git a/client/assets/resources/textures/loading/loading_image.png.meta b/client/assets/resources/textures/loading/loading_image.png.meta
new file mode 100755
index 0000000..fc54e16
--- /dev/null
+++ b/client/assets/resources/textures/loading/loading_image.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4be58b20-1dc8-422a-94b2-b4d3882f7133",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "loading_image": {
+ "ver": "1.0.3",
+ "uuid": "30a1da14-4bcc-420c-8f6f-2bf454f76f89",
+ "rawTextureUuid": "4be58b20-1dc8-422a-94b2-b4d3882f7133",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 102,
+ "height": 102,
+ "rawWidth": 102,
+ "rawHeight": 102,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/ops.meta b/client/assets/resources/textures/ops.meta
new file mode 100755
index 0000000..ead705f
--- /dev/null
+++ b/client/assets/resources/textures/ops.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "8343c6ad-1cb0-495e-9da0-a708aac980b3",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/ops/pai_bottom.png b/client/assets/resources/textures/ops/pai_bottom.png
new file mode 100755
index 0000000..310adea
Binary files /dev/null and b/client/assets/resources/textures/ops/pai_bottom.png differ
diff --git a/client/assets/resources/textures/ops/pai_bottom.png.meta b/client/assets/resources/textures/ops/pai_bottom.png.meta
new file mode 100755
index 0000000..f42927c
--- /dev/null
+++ b/client/assets/resources/textures/ops/pai_bottom.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7aafcc6e-6f21-4c99-82b7-52dd5c529bbc",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "pai_bottom": {
+ "ver": "1.0.3",
+ "uuid": "85a8cdbb-b77e-4d81-b843-9852c08c0215",
+ "rawTextureUuid": "7aafcc6e-6f21-4c99-82b7-52dd5c529bbc",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 230,
+ "height": 101,
+ "rawWidth": 230,
+ "rawHeight": 101,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/ops/penggang_bottom.png b/client/assets/resources/textures/ops/penggang_bottom.png
new file mode 100755
index 0000000..737a435
Binary files /dev/null and b/client/assets/resources/textures/ops/penggang_bottom.png differ
diff --git a/client/assets/resources/textures/ops/penggang_bottom.png.meta b/client/assets/resources/textures/ops/penggang_bottom.png.meta
new file mode 100755
index 0000000..ba401a7
--- /dev/null
+++ b/client/assets/resources/textures/ops/penggang_bottom.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "831c7d6a-e72a-4c25-8195-c31be44c5ceb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "penggang_bottom": {
+ "ver": "1.0.3",
+ "uuid": "0f95b280-dc05-4110-97e2-d315a11dbce7",
+ "rawTextureUuid": "831c7d6a-e72a-4c25-8195-c31be44c5ceb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 74,
+ "height": 70,
+ "rawWidth": 74,
+ "rawHeight": 70,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/png.meta b/client/assets/resources/textures/png.meta
new file mode 100755
index 0000000..9f082ac
--- /dev/null
+++ b/client/assets/resources/textures/png.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "16fecc9b-9c0b-4da3-91a9-b7d45ffeefd8",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/png/Z_zhunbeizhuangt.png b/client/assets/resources/textures/png/Z_zhunbeizhuangt.png
new file mode 100755
index 0000000..72f59b5
Binary files /dev/null and b/client/assets/resources/textures/png/Z_zhunbeizhuangt.png differ
diff --git a/client/assets/resources/textures/png/Z_zhunbeizhuangt.png.meta b/client/assets/resources/textures/png/Z_zhunbeizhuangt.png.meta
new file mode 100755
index 0000000..0e174ac
--- /dev/null
+++ b/client/assets/resources/textures/png/Z_zhunbeizhuangt.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ea2cac6b-362a-4742-87fc-f5fe97f7fb04",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "Z_zhunbeizhuangt": {
+ "ver": "1.0.3",
+ "uuid": "8988418a-46a0-461d-959b-07af93600051",
+ "rawTextureUuid": "ea2cac6b-362a-4742-87fc-f5fe97f7fb04",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 88,
+ "height": 39,
+ "rawWidth": 88,
+ "rawHeight": 39,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/png/count_down_num.png b/client/assets/resources/textures/png/count_down_num.png
new file mode 100755
index 0000000..e18db08
Binary files /dev/null and b/client/assets/resources/textures/png/count_down_num.png differ
diff --git a/client/assets/resources/textures/png/count_down_num.png.meta b/client/assets/resources/textures/png/count_down_num.png.meta
new file mode 100755
index 0000000..a81cf31
--- /dev/null
+++ b/client/assets/resources/textures/png/count_down_num.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "06cb0389-d2fc-45bb-a454-b01285153a10",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "count_down_num": {
+ "ver": "1.0.3",
+ "uuid": "52a03f52-0d18-4e5c-a87b-f88eb9b01fe3",
+ "rawTextureUuid": "06cb0389-d2fc-45bb-a454-b01285153a10",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 238,
+ "height": 32,
+ "rawWidth": 240,
+ "rawHeight": 32,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/png/fangkaxiaobeijing.png b/client/assets/resources/textures/png/fangkaxiaobeijing.png
new file mode 100755
index 0000000..45971c0
Binary files /dev/null and b/client/assets/resources/textures/png/fangkaxiaobeijing.png differ
diff --git a/client/assets/resources/textures/png/fangkaxiaobeijing.png.meta b/client/assets/resources/textures/png/fangkaxiaobeijing.png.meta
new file mode 100755
index 0000000..32dbfee
--- /dev/null
+++ b/client/assets/resources/textures/png/fangkaxiaobeijing.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "2d0478bd-d02e-408c-9a07-f743376ebdcf",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "fangkaxiaobeijing": {
+ "ver": "1.0.3",
+ "uuid": "42a50b85-90bb-4955-9d63-ede2418818fa",
+ "rawTextureUuid": "2d0478bd-d02e-408c-9a07-f743376ebdcf",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 255,
+ "height": 45,
+ "rawWidth": 255,
+ "rawHeight": 45,
+ "borderTop": 15,
+ "borderBottom": 15,
+ "borderLeft": 50,
+ "borderRight": 50,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/png/money_frame.png b/client/assets/resources/textures/png/money_frame.png
new file mode 100755
index 0000000..f96cad0
Binary files /dev/null and b/client/assets/resources/textures/png/money_frame.png differ
diff --git a/client/assets/resources/textures/png/money_frame.png.meta b/client/assets/resources/textures/png/money_frame.png.meta
new file mode 100755
index 0000000..9e0cedc
--- /dev/null
+++ b/client/assets/resources/textures/png/money_frame.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "e21aa672-ddd3-4350-8e8c-5b288d2892f5",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "money_frame": {
+ "ver": "1.0.3",
+ "uuid": "9be070de-91ff-4f41-9b82-fd2adeedfd27",
+ "rawTextureUuid": "e21aa672-ddd3-4350-8e8c-5b288d2892f5",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 86,
+ "height": 27,
+ "rawWidth": 86,
+ "rawHeight": 27,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/png/room_num.png b/client/assets/resources/textures/png/room_num.png
new file mode 100755
index 0000000..976197f
Binary files /dev/null and b/client/assets/resources/textures/png/room_num.png differ
diff --git a/client/assets/resources/textures/png/room_num.png.meta b/client/assets/resources/textures/png/room_num.png.meta
new file mode 100755
index 0000000..182fc2d
--- /dev/null
+++ b/client/assets/resources/textures/png/room_num.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0b76b4ec-bbc9-4aeb-a1de-cbe665509f05",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "room_num": {
+ "ver": "1.0.3",
+ "uuid": "cc419b28-eb9a-4386-b836-1af7dac0d184",
+ "rawTextureUuid": "0b76b4ec-bbc9-4aeb-a1de-cbe665509f05",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -0.5,
+ "offsetY": 0,
+ "trimX": 1,
+ "trimY": 0,
+ "width": 247,
+ "height": 26,
+ "rawWidth": 250,
+ "rawHeight": 26,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting.meta b/client/assets/resources/textures/setting.meta
new file mode 100755
index 0000000..8eb3f4f
--- /dev/null
+++ b/client/assets/resources/textures/setting.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "4fc373ca-415e-4c11-9776-15f58cc986b8",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/checkbox_full.png b/client/assets/resources/textures/setting/checkbox_full.png
new file mode 100755
index 0000000..cdfa07d
Binary files /dev/null and b/client/assets/resources/textures/setting/checkbox_full.png differ
diff --git a/client/assets/resources/textures/setting/checkbox_full.png.meta b/client/assets/resources/textures/setting/checkbox_full.png.meta
new file mode 100755
index 0000000..8d4869a
--- /dev/null
+++ b/client/assets/resources/textures/setting/checkbox_full.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "04175e45-7938-487d-a471-f6b8204c55e1",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "checkbox_full": {
+ "ver": "1.0.3",
+ "uuid": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42",
+ "rawTextureUuid": "04175e45-7938-487d-a471-f6b8204c55e1",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 20,
+ "trimY": 20,
+ "width": 40,
+ "height": 40,
+ "rawWidth": 80,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/checkbox_void.png b/client/assets/resources/textures/setting/checkbox_void.png
new file mode 100755
index 0000000..101a89d
Binary files /dev/null and b/client/assets/resources/textures/setting/checkbox_void.png differ
diff --git a/client/assets/resources/textures/setting/checkbox_void.png.meta b/client/assets/resources/textures/setting/checkbox_void.png.meta
new file mode 100755
index 0000000..afdd7d3
--- /dev/null
+++ b/client/assets/resources/textures/setting/checkbox_void.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ad87660e-cf3d-4c4a-9058-de8d22700d61",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "checkbox_void": {
+ "ver": "1.0.3",
+ "uuid": "e7b17174-dc37-407e-8cd3-09b440c7d89d",
+ "rawTextureUuid": "ad87660e-cf3d-4c4a-9058-de8d22700d61",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 20,
+ "trimY": 20,
+ "width": 40,
+ "height": 40,
+ "rawWidth": 80,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/cr_check_bg.png b/client/assets/resources/textures/setting/cr_check_bg.png
new file mode 100755
index 0000000..11440fb
Binary files /dev/null and b/client/assets/resources/textures/setting/cr_check_bg.png differ
diff --git a/client/assets/resources/textures/setting/cr_check_bg.png.meta b/client/assets/resources/textures/setting/cr_check_bg.png.meta
new file mode 100755
index 0000000..712e535
--- /dev/null
+++ b/client/assets/resources/textures/setting/cr_check_bg.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7f59c7ae-665a-4154-8e01-8aca650a6fec",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "cr_check_bg": {
+ "ver": "1.0.3",
+ "uuid": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed",
+ "rawTextureUuid": "7f59c7ae-665a-4154-8e01-8aca650a6fec",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -0.5,
+ "offsetY": 0,
+ "trimX": 21,
+ "trimY": 22,
+ "width": 37,
+ "height": 36,
+ "rawWidth": 80,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/cr_unused.png b/client/assets/resources/textures/setting/cr_unused.png
new file mode 100755
index 0000000..bad997a
Binary files /dev/null and b/client/assets/resources/textures/setting/cr_unused.png differ
diff --git a/client/assets/resources/textures/setting/cr_unused.png.meta b/client/assets/resources/textures/setting/cr_unused.png.meta
new file mode 100755
index 0000000..59fa899
--- /dev/null
+++ b/client/assets/resources/textures/setting/cr_unused.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "88828ec5-c842-43b9-b212-84a48cf424b6",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "cr_unused": {
+ "ver": "1.0.3",
+ "uuid": "bc6eae82-6c8c-4d2e-be6d-e02ae3f5be07",
+ "rawTextureUuid": "88828ec5-c842-43b9-b212-84a48cf424b6",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -0.5,
+ "offsetY": 0,
+ "trimX": 21,
+ "trimY": 22,
+ "width": 37,
+ "height": 36,
+ "rawWidth": 80,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/createroom_check.png b/client/assets/resources/textures/setting/createroom_check.png
new file mode 100755
index 0000000..8a37fbb
Binary files /dev/null and b/client/assets/resources/textures/setting/createroom_check.png differ
diff --git a/client/assets/resources/textures/setting/createroom_check.png.meta b/client/assets/resources/textures/setting/createroom_check.png.meta
new file mode 100755
index 0000000..c9f7251
--- /dev/null
+++ b/client/assets/resources/textures/setting/createroom_check.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4b82bfd7-c347-48d7-ae61-519081a158b2",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "createroom_check": {
+ "ver": "1.0.3",
+ "uuid": "b85a52c9-fae9-4d2f-ac10-238071cc869f",
+ "rawTextureUuid": "4b82bfd7-c347-48d7-ae61-519081a158b2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -0.5,
+ "offsetY": 0,
+ "trimX": 21,
+ "trimY": 22,
+ "width": 37,
+ "height": 36,
+ "rawWidth": 80,
+ "rawHeight": 80,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/titlebg.png b/client/assets/resources/textures/setting/titlebg.png
new file mode 100755
index 0000000..a357495
Binary files /dev/null and b/client/assets/resources/textures/setting/titlebg.png differ
diff --git a/client/assets/resources/textures/setting/titlebg.png.meta b/client/assets/resources/textures/setting/titlebg.png.meta
new file mode 100755
index 0000000..d9a0860
--- /dev/null
+++ b/client/assets/resources/textures/setting/titlebg.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5bbb5fae-3058-4ae6-8566-2263eecf1305",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "titlebg": {
+ "ver": "1.0.3",
+ "uuid": "1f7e6bb4-8413-4569-adb8-4aece672f566",
+ "rawTextureUuid": "5bbb5fae-3058-4ae6-8566-2263eecf1305",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 92,
+ "rawWidth": 1280,
+ "rawHeight": 92,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/whitebackground.png b/client/assets/resources/textures/setting/whitebackground.png
new file mode 100755
index 0000000..5cca964
Binary files /dev/null and b/client/assets/resources/textures/setting/whitebackground.png differ
diff --git a/client/assets/resources/textures/setting/whitebackground.png.meta b/client/assets/resources/textures/setting/whitebackground.png.meta
new file mode 100755
index 0000000..055fd85
--- /dev/null
+++ b/client/assets/resources/textures/setting/whitebackground.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "76c50036-e629-41dc-9674-e384be20f9de",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "whitebackground": {
+ "ver": "1.0.3",
+ "uuid": "3fb624b4-ffc4-4452-ac76-7986a733fb5d",
+ "rawTextureUuid": "76c50036-e629-41dc-9674-e384be20f9de",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 594,
+ "height": 111,
+ "rawWidth": 594,
+ "rawHeight": 111,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/z_fuxuan_off.png b/client/assets/resources/textures/setting/z_fuxuan_off.png
new file mode 100755
index 0000000..d43834b
Binary files /dev/null and b/client/assets/resources/textures/setting/z_fuxuan_off.png differ
diff --git a/client/assets/resources/textures/setting/z_fuxuan_off.png.meta b/client/assets/resources/textures/setting/z_fuxuan_off.png.meta
new file mode 100755
index 0000000..c88aaf4
--- /dev/null
+++ b/client/assets/resources/textures/setting/z_fuxuan_off.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "698f8b0b-3e01-4ee8-aeae-502e71c1d57a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "z_fuxuan_off": {
+ "ver": "1.0.3",
+ "uuid": "0a3bf38c-a691-469e-bd1d-e134c3176ed3",
+ "rawTextureUuid": "698f8b0b-3e01-4ee8-aeae-502e71c1d57a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 40,
+ "height": 40,
+ "rawWidth": 40,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/setting/z_fuxuan_on.png b/client/assets/resources/textures/setting/z_fuxuan_on.png
new file mode 100755
index 0000000..a088cf4
Binary files /dev/null and b/client/assets/resources/textures/setting/z_fuxuan_on.png differ
diff --git a/client/assets/resources/textures/setting/z_fuxuan_on.png.meta b/client/assets/resources/textures/setting/z_fuxuan_on.png.meta
new file mode 100755
index 0000000..e2c7039
--- /dev/null
+++ b/client/assets/resources/textures/setting/z_fuxuan_on.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5ba85f44-eef1-495c-a091-03ddf1942031",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "z_fuxuan_on": {
+ "ver": "1.0.3",
+ "uuid": "e1279c9b-922a-4263-be6e-80f680a805d7",
+ "rawTextureUuid": "5ba85f44-eef1-495c-a091-03ddf1942031",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 40,
+ "height": 40,
+ "rawWidth": 40,
+ "rawHeight": 40,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice.meta b/client/assets/resources/textures/voice.meta
new file mode 100755
index 0000000..467b4c1
--- /dev/null
+++ b/client/assets/resources/textures/voice.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "42e7ba5e-83e8-43a9-ba94-e8059b3f73d9",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/adj.png b/client/assets/resources/textures/voice/adj.png
new file mode 100755
index 0000000..3cfd3cd
Binary files /dev/null and b/client/assets/resources/textures/voice/adj.png differ
diff --git a/client/assets/resources/textures/voice/adj.png.meta b/client/assets/resources/textures/voice/adj.png.meta
new file mode 100755
index 0000000..a7a62e1
--- /dev/null
+++ b/client/assets/resources/textures/voice/adj.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "faacbdb0-134f-4cf3-9b59-4e1f06c3db66",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "adj": {
+ "ver": "1.0.3",
+ "uuid": "58ac7267-1489-431b-b1b4-b27995c63e8a",
+ "rawTextureUuid": "faacbdb0-134f-4cf3-9b59-4e1f06c3db66",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 1,
+ "offsetY": 0,
+ "trimX": 13,
+ "trimY": 5,
+ "width": 36,
+ "height": 50,
+ "rawWidth": 60,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/cancel.png b/client/assets/resources/textures/voice/cancel.png
new file mode 100755
index 0000000..3d0d6f3
Binary files /dev/null and b/client/assets/resources/textures/voice/cancel.png differ
diff --git a/client/assets/resources/textures/voice/cancel.png.meta b/client/assets/resources/textures/voice/cancel.png.meta
new file mode 100755
index 0000000..f2b06d7
--- /dev/null
+++ b/client/assets/resources/textures/voice/cancel.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "f5d20f1c-71f8-4800-899a-c80e99725325",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "cancel": {
+ "ver": "1.0.3",
+ "uuid": "57bdfc9b-ee84-458d-9b8e-733bc1215511",
+ "rawTextureUuid": "f5d20f1c-71f8-4800-899a-c80e99725325",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -9.5,
+ "offsetY": 6,
+ "trimX": 55,
+ "trimY": 12,
+ "width": 111,
+ "height": 144,
+ "rawWidth": 240,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/dialog_loading_bg.9.png b/client/assets/resources/textures/voice/dialog_loading_bg.9.png
new file mode 100755
index 0000000..792e1bf
Binary files /dev/null and b/client/assets/resources/textures/voice/dialog_loading_bg.9.png differ
diff --git a/client/assets/resources/textures/voice/dialog_loading_bg.9.png.meta b/client/assets/resources/textures/voice/dialog_loading_bg.9.png.meta
new file mode 100755
index 0000000..53cdb89
--- /dev/null
+++ b/client/assets/resources/textures/voice/dialog_loading_bg.9.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d9fdfb5f-1f60-4026-bc3a-980e1659e417",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "dialog_loading_bg.9": {
+ "ver": "1.0.3",
+ "uuid": "f16c2d61-6d80-4487-a008-2735ef49c00b",
+ "rawTextureUuid": "d9fdfb5f-1f60-4026-bc3a-980e1659e417",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 32,
+ "height": 32,
+ "rawWidth": 32,
+ "rawHeight": 32,
+ "borderTop": 10,
+ "borderBottom": 10,
+ "borderLeft": 10,
+ "borderRight": 10,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/recorder.png b/client/assets/resources/textures/voice/recorder.png
new file mode 100755
index 0000000..e12231f
Binary files /dev/null and b/client/assets/resources/textures/voice/recorder.png differ
diff --git a/client/assets/resources/textures/voice/recorder.png.meta b/client/assets/resources/textures/voice/recorder.png.meta
new file mode 100755
index 0000000..6dc9cbd
--- /dev/null
+++ b/client/assets/resources/textures/voice/recorder.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "77f932ed-5482-451a-8919-2adc5aabd943",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "recorder": {
+ "ver": "1.0.3",
+ "uuid": "dce56925-2b5d-40fd-9023-28605ac3a8d9",
+ "rawTextureUuid": "77f932ed-5482-451a-8919-2adc5aabd943",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 6,
+ "offsetY": 1,
+ "trimX": 24,
+ "trimY": 18,
+ "width": 84,
+ "height": 142,
+ "rawWidth": 120,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v1.png b/client/assets/resources/textures/voice/v1.png
new file mode 100755
index 0000000..9ca1a73
Binary files /dev/null and b/client/assets/resources/textures/voice/v1.png differ
diff --git a/client/assets/resources/textures/voice/v1.png.meta b/client/assets/resources/textures/voice/v1.png.meta
new file mode 100755
index 0000000..21384eb
--- /dev/null
+++ b/client/assets/resources/textures/voice/v1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "ebc7eab4-4b12-4b2f-8d94-02da7e9ff15b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v1": {
+ "ver": "1.0.3",
+ "uuid": "b1671f1a-3797-4611-a461-430f8836ecc4",
+ "rawTextureUuid": "ebc7eab4-4b12-4b2f-8d94-02da7e9ff15b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -26.5,
+ "offsetY": -63.5,
+ "trimX": 20,
+ "trimY": 147,
+ "width": 27,
+ "height": 13,
+ "rawWidth": 120,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v2.png b/client/assets/resources/textures/voice/v2.png
new file mode 100755
index 0000000..e47ac2c
Binary files /dev/null and b/client/assets/resources/textures/voice/v2.png differ
diff --git a/client/assets/resources/textures/voice/v2.png.meta b/client/assets/resources/textures/voice/v2.png.meta
new file mode 100755
index 0000000..6804d55
--- /dev/null
+++ b/client/assets/resources/textures/voice/v2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "debe80de-a6dc-4fba-badc-39eb0779414b",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v2": {
+ "ver": "1.0.3",
+ "uuid": "06ab8343-75d9-41b2-9388-165764ded274",
+ "rawTextureUuid": "debe80de-a6dc-4fba-badc-39eb0779414b",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -24.5,
+ "offsetY": -52.5,
+ "trimX": 20,
+ "trimY": 125,
+ "width": 31,
+ "height": 35,
+ "rawWidth": 120,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v3.png b/client/assets/resources/textures/voice/v3.png
new file mode 100755
index 0000000..b8df544
Binary files /dev/null and b/client/assets/resources/textures/voice/v3.png differ
diff --git a/client/assets/resources/textures/voice/v3.png.meta b/client/assets/resources/textures/voice/v3.png.meta
new file mode 100755
index 0000000..7cd50a9
--- /dev/null
+++ b/client/assets/resources/textures/voice/v3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7fbf12b6-5e14-4014-9c2c-a5abf220f6e5",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v3": {
+ "ver": "1.0.3",
+ "uuid": "69de2f4f-8180-46b7-8455-eb93ffb620f1",
+ "rawTextureUuid": "7fbf12b6-5e14-4014-9c2c-a5abf220f6e5",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -22.5,
+ "offsetY": -41.5,
+ "trimX": 20,
+ "trimY": 103,
+ "width": 35,
+ "height": 57,
+ "rawWidth": 120,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v4.png b/client/assets/resources/textures/voice/v4.png
new file mode 100755
index 0000000..2f341e6
Binary files /dev/null and b/client/assets/resources/textures/voice/v4.png differ
diff --git a/client/assets/resources/textures/voice/v4.png.meta b/client/assets/resources/textures/voice/v4.png.meta
new file mode 100755
index 0000000..98cca0f
--- /dev/null
+++ b/client/assets/resources/textures/voice/v4.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d36dba82-a906-470d-b55a-a1df59b7c972",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v4": {
+ "ver": "1.0.3",
+ "uuid": "bb32a3d6-8237-4434-b9b2-286b9cc07dc1",
+ "rawTextureUuid": "d36dba82-a906-470d-b55a-a1df59b7c972",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -20.5,
+ "offsetY": -30.5,
+ "trimX": 20,
+ "trimY": 81,
+ "width": 39,
+ "height": 79,
+ "rawWidth": 120,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v5.png b/client/assets/resources/textures/voice/v5.png
new file mode 100755
index 0000000..6f75e9c
Binary files /dev/null and b/client/assets/resources/textures/voice/v5.png differ
diff --git a/client/assets/resources/textures/voice/v5.png.meta b/client/assets/resources/textures/voice/v5.png.meta
new file mode 100755
index 0000000..95bdd49
--- /dev/null
+++ b/client/assets/resources/textures/voice/v5.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "34ad96a6-6163-47dc-81d5-7ec6d21c4516",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v5": {
+ "ver": "1.0.3",
+ "uuid": "667a75f9-c138-42c3-b60b-0442b125545e",
+ "rawTextureUuid": "34ad96a6-6163-47dc-81d5-7ec6d21c4516",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -18,
+ "offsetY": -19,
+ "trimX": 20,
+ "trimY": 58,
+ "width": 44,
+ "height": 102,
+ "rawWidth": 120,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v6.png b/client/assets/resources/textures/voice/v6.png
new file mode 100755
index 0000000..b62cc0e
Binary files /dev/null and b/client/assets/resources/textures/voice/v6.png differ
diff --git a/client/assets/resources/textures/voice/v6.png.meta b/client/assets/resources/textures/voice/v6.png.meta
new file mode 100755
index 0000000..24b8bd1
--- /dev/null
+++ b/client/assets/resources/textures/voice/v6.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a1da9ea8-5a78-41f1-8937-253fa6fcb2b5",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v6": {
+ "ver": "1.0.3",
+ "uuid": "9d6427da-be3c-40e6-adf5-144216d8db41",
+ "rawTextureUuid": "a1da9ea8-5a78-41f1-8937-253fa6fcb2b5",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -16,
+ "offsetY": -7.5,
+ "trimX": 20,
+ "trimY": 35,
+ "width": 48,
+ "height": 125,
+ "rawWidth": 120,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v7.png b/client/assets/resources/textures/voice/v7.png
new file mode 100755
index 0000000..26c21a8
Binary files /dev/null and b/client/assets/resources/textures/voice/v7.png differ
diff --git a/client/assets/resources/textures/voice/v7.png.meta b/client/assets/resources/textures/voice/v7.png.meta
new file mode 100755
index 0000000..99a1d9a
--- /dev/null
+++ b/client/assets/resources/textures/voice/v7.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7c138050-9c6a-4d38-a5c2-9728e47bfd88",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v7": {
+ "ver": "1.0.3",
+ "uuid": "2397833d-46a0-4fff-b8ab-422b96e2c4df",
+ "rawTextureUuid": "7c138050-9c6a-4d38-a5c2-9728e47bfd88",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": -14,
+ "offsetY": 4.5,
+ "trimX": 20,
+ "trimY": 11,
+ "width": 52,
+ "height": 149,
+ "rawWidth": 120,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v_anim1.png b/client/assets/resources/textures/voice/v_anim1.png
new file mode 100755
index 0000000..044965e
Binary files /dev/null and b/client/assets/resources/textures/voice/v_anim1.png differ
diff --git a/client/assets/resources/textures/voice/v_anim1.png.meta b/client/assets/resources/textures/voice/v_anim1.png.meta
new file mode 100755
index 0000000..43f5b3a
--- /dev/null
+++ b/client/assets/resources/textures/voice/v_anim1.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3b1098e0-8291-46ce-8a91-1d62d6cce1bc",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v_anim1": {
+ "ver": "1.0.3",
+ "uuid": "44020ba3-52dc-4a39-aeb0-f1e50105ea65",
+ "rawTextureUuid": "3b1098e0-8291-46ce-8a91-1d62d6cce1bc",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 14,
+ "offsetY": 0,
+ "trimX": 39,
+ "trimY": 19,
+ "width": 10,
+ "height": 22,
+ "rawWidth": 60,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v_anim2.png b/client/assets/resources/textures/voice/v_anim2.png
new file mode 100755
index 0000000..76f963e
Binary files /dev/null and b/client/assets/resources/textures/voice/v_anim2.png differ
diff --git a/client/assets/resources/textures/voice/v_anim2.png.meta b/client/assets/resources/textures/voice/v_anim2.png.meta
new file mode 100755
index 0000000..acbc783
--- /dev/null
+++ b/client/assets/resources/textures/voice/v_anim2.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "a4637acb-7b61-4062-a90d-002c3db8e48a",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v_anim2": {
+ "ver": "1.0.3",
+ "uuid": "51eafd60-de47-4a80-b2c9-091d824270b8",
+ "rawTextureUuid": "a4637acb-7b61-4062-a90d-002c3db8e48a",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 8,
+ "offsetY": 0,
+ "trimX": 27,
+ "trimY": 13,
+ "width": 22,
+ "height": 34,
+ "rawWidth": 60,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/v_anim3.png b/client/assets/resources/textures/voice/v_anim3.png
new file mode 100755
index 0000000..8c51c8c
Binary files /dev/null and b/client/assets/resources/textures/voice/v_anim3.png differ
diff --git a/client/assets/resources/textures/voice/v_anim3.png.meta b/client/assets/resources/textures/voice/v_anim3.png.meta
new file mode 100755
index 0000000..bf10ba0
--- /dev/null
+++ b/client/assets/resources/textures/voice/v_anim3.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "c20f66f1-0b1c-497d-91e0-db4d33870bc8",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "v_anim3": {
+ "ver": "1.0.3",
+ "uuid": "2ccbd5f5-df3b-416e-aaeb-c8e662f8641d",
+ "rawTextureUuid": "c20f66f1-0b1c-497d-91e0-db4d33870bc8",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 1,
+ "offsetY": 0,
+ "trimX": 13,
+ "trimY": 5,
+ "width": 36,
+ "height": 50,
+ "rawWidth": 60,
+ "rawHeight": 60,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/voice_to_short.png b/client/assets/resources/textures/voice/voice_to_short.png
new file mode 100755
index 0000000..9ed0dc1
Binary files /dev/null and b/client/assets/resources/textures/voice/voice_to_short.png differ
diff --git a/client/assets/resources/textures/voice/voice_to_short.png.meta b/client/assets/resources/textures/voice/voice_to_short.png.meta
new file mode 100755
index 0000000..47c7afa
--- /dev/null
+++ b/client/assets/resources/textures/voice/voice_to_short.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5cdac727-5588-47d7-8230-007a9cb10e77",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "voice_to_short": {
+ "ver": "1.0.3",
+ "uuid": "51bdb722-b293-4554-951c-9de51650845d",
+ "rawTextureUuid": "5cdac727-5588-47d7-8230-007a9cb10e77",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 8.5,
+ "trimX": 97,
+ "trimY": 7,
+ "width": 46,
+ "height": 149,
+ "rawWidth": 240,
+ "rawHeight": 180,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/yuyin_bg.png b/client/assets/resources/textures/voice/yuyin_bg.png
new file mode 100755
index 0000000..3a05efc
Binary files /dev/null and b/client/assets/resources/textures/voice/yuyin_bg.png differ
diff --git a/client/assets/resources/textures/voice/yuyin_bg.png.meta b/client/assets/resources/textures/voice/yuyin_bg.png.meta
new file mode 100755
index 0000000..d917812
--- /dev/null
+++ b/client/assets/resources/textures/voice/yuyin_bg.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "3e741280-da5f-4c3d-b5d8-cb90e474c4a2",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "yuyin_bg": {
+ "ver": "1.0.3",
+ "uuid": "faf9e5db-6959-4d2b-9a87-461a837d130f",
+ "rawTextureUuid": "3e741280-da5f-4c3d-b5d8-cb90e474c4a2",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 110,
+ "height": 110,
+ "rawWidth": 110,
+ "rawHeight": 110,
+ "borderTop": 50,
+ "borderBottom": 50,
+ "borderLeft": 50,
+ "borderRight": 50,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/textures/voice/yyDialog.png b/client/assets/resources/textures/voice/yyDialog.png
new file mode 100755
index 0000000..809a6fc
Binary files /dev/null and b/client/assets/resources/textures/voice/yyDialog.png differ
diff --git a/client/assets/resources/textures/voice/yyDialog.png.meta b/client/assets/resources/textures/voice/yyDialog.png.meta
new file mode 100755
index 0000000..0eceb63
--- /dev/null
+++ b/client/assets/resources/textures/voice/yyDialog.png.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7b06d436-bd43-425d-9e01-87153cb302e3",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "yyDialog": {
+ "ver": "1.0.3",
+ "uuid": "c190547d-93bf-45fa-8e7f-43847fc0ad26",
+ "rawTextureUuid": "7b06d436-bd43-425d-9e01-87153cb302e3",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 113,
+ "height": 58,
+ "rawWidth": 113,
+ "rawHeight": 58,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/assets/resources/ver.meta b/client/assets/resources/ver.meta
new file mode 100755
index 0000000..47f0b04
--- /dev/null
+++ b/client/assets/resources/ver.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "1e22a1bf-d11c-4fba-b6f6-63ae4c4cf3c0",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/ver/cv.txt b/client/assets/resources/ver/cv.txt
new file mode 100755
index 0000000..b5a964b
--- /dev/null
+++ b/client/assets/resources/ver/cv.txt
@@ -0,0 +1 @@
+20161227
\ No newline at end of file
diff --git a/client/assets/resources/ver/cv.txt.meta b/client/assets/resources/ver/cv.txt.meta
new file mode 100755
index 0000000..815d5b3
--- /dev/null
+++ b/client/assets/resources/ver/cv.txt.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "0449b0bc-f46a-4328-8405-ed35102072bf",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/ver/project.manifest b/client/assets/resources/ver/project.manifest
new file mode 100755
index 0000000..126a9f8
--- /dev/null
+++ b/client/assets/resources/ver/project.manifest
@@ -0,0 +1 @@
+{"packageUrl":"http://bengbumj.6811379.com/hot/","remoteManifestUrl":"http://bengbumj.6811379.com/hot/project.manifest","remoteVersionUrl":"http://bengbumj.6811379.com/hot/version.manifest","version":"1.0.4","assets":{"src/jsb_anysdk.jsc":{"md5":"f44c38d86c10cdb911bff876cc407ab2"},"src/jsb_anysdk_constants.jsc":{"md5":"941ecaddfece93bcfa3c5503caaa5789"},"src/jsb_polyfill.jsc":{"md5":"892c06f2efcacdbb61948656007ef784"},"src/project.jsc":{"md5":"c2752311de11b9fa223511188f5ffb52"},"src/settings.jsc":{"md5":"be8322c4e3d62c9a6a596853a5f9acea"},"res/import/00/001488ed-61c9-40a1-a7e0-9152dfe8df0e.json":{"md5":"3502a6de316434bbd46c38dbde57997c"},"res/import/00/006c6abe-45c5-421e-be27-44d827370cc9.json":{"md5":"55735795b30d0b67e10824bfd54dd9c6"},"res/import/00/009b55b1-565e-483a-8a5c-f9195d4cfa76.json":{"md5":"b8419e00d4b70903eb2272963b647448"},"res/import/00/00d442fc-5cf0-417a-bb75-566f8d97b3b4.json":{"md5":"9f1437e15b6243f364425fb3356a428c"},"res/import/01/0127a5c8-3692-46f9-8bfb-ab869d931ca3.json":{"md5":"31d084b131c9c000540b92166c4ace57"},"res/import/01/014e2b9c-aece-45ab-a588-ec19c669546b.json":{"md5":"d4591367df52edb7e20c220fc023614d"},"res/import/02/02070caa-b061-47a3-b8fe-8be4bb252b3a.json":{"md5":"f06459185d039215831ef57db7dcc1cc"},"res/import/02/02491912-f027-4dce-88b9-9296333c8dee.json":{"md5":"bff29b9c51c5044bfd5ae68858d83aed"},"res/import/02/026b4040-ebfd-487c-a7d4-0806ea5820e1.json":{"md5":"5010a2ebeb215274da43132fb5794cd4"},"res/import/02/02fb2d75-6aff-4e2f-b971-ecc8a65de7a5.json":{"md5":"364ec403b41c6a59d16e680547482ea6"},"res/import/03/03082215-5162-43c9-87df-e1a275d40258.json":{"md5":"0541eef1c94c50ce8ff23a83ef9f6e80"},"res/import/03/03a6660a-ee76-4896-8673-0f9b9e65a1c0.json":{"md5":"6f8b30f0c28e09e2082e7123c67572ce"},"res/import/03/03a988d2-a7c8-4c62-b205-5e38971143f4.json":{"md5":"cc06fdf76fda0bdd889bfe7bf8acbc71"},"res/import/03/03aef4a9-c4ee-48a7-b66c-e1d352657e60.json":{"md5":"e9f80cafc417e46bbb4803d6ccc52c2a"},"res/import/04/0406e813-de32-4d34-8de8-c2774ac54fb7.json":{"md5":"4e016e8af700f9b32f4d5d4da5ca58e0"},"res/import/04/04305d19-5d1e-48ca-8ec5-3cd10a439a73.json":{"md5":"e3daf7bfcf39a7ba4680e0b269f6413b"},"res/import/04/0470db5f-e2e7-4a23-985e-087e2faf1e35.json":{"md5":"98d5acbfb8d86d46bd6efd160b2b4846"},"res/import/04/04ddd588-57c3-4d45-8322-0bb2eb8e0dd1.json":{"md5":"0c1606298de30287a8421b18ab9f75a5"},"res/import/05/05b80eb8-2054-4f28-9be0-36044421240d.json":{"md5":"e172ca39bfdab447a9df3450d99e65fa"},"res/import/06/06357dfd-5b12-40cd-b94c-cfa0e20d2e72.json":{"md5":"328c6a3c1a8e9e2c94d2a5ff60a5ddb4"},"res/import/06/06ab8343-75d9-41b2-9388-165764ded274.json":{"md5":"1c97d1774518b3affb7ff2c1c8c2a5a8"},"res/import/07/073df302-1989-4307-aba9-73f2b6364525.json":{"md5":"d50bfb9de5a9574bdef248ec580d6b0e"},"res/import/07/0742b288-ef58-49da-aa18-226ca275227f.json":{"md5":"eaacb48ae846e4708dc214752889cccf"},"res/import/07/07b178b4-e554-430a-8d6f-732fcac35b6b.json":{"md5":"ea76b4f243b161d54f9c7b4198966b3a"},"res/import/07/07b19e0a-b505-4d93-a200-e5edc66c99b3.json":{"md5":"cec0a8ee10237b9504e361930c0f4248"},"res/import/07/07ef7eba-7d2c-416f-8dc5-80b50fea62e3.json":{"md5":"9265218fbd19adad77ae6413bc5ea487"},"res/import/08/08616609-bfbf-459c-a8af-cf9ea29e453d.json":{"md5":"a3904fbe18637dd13b90336b82e73318"},"res/import/08/088725d4-b66d-40d0-a3fe-aeeec07307b5.json":{"md5":"f88e12222e1db7bcff4f12ab79fbe5a5"},"res/import/08/08aa8adc-4f84-4b32-bc75-bb402d5b134b.json":{"md5":"bb027b9e1d49164e34f84020118a269a"},"res/import/08/08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48.json":{"md5":"a1c8dbc31fa738b9249df0386e642848"},"res/import/09/090330a6-6c19-4995-b830-7e06a456e235.json":{"md5":"fe0670034744f8a92da3e39a81d80442"},"res/import/09/092833c8-627a-4f92-9774-83e743083685.json":{"md5":"214c4a66ab1eb4aff52191db2c744c2b"},"res/import/09/0970c647-a97f-4dd1-9841-c5a879b9287e.json":{"md5":"67f25e2440012fa8233562b98185c132"},"res/import/09/09bfe702-65eb-47f4-9ccb-7593d9233e0d.json":{"md5":"da70057d618b33dd4e830fdccb75b7d7"},"res/import/09/09de0d73-53fe-44c3-8fd5-f02d3dfe80bb.json":{"md5":"791e45b878fde69e8e6f05615ec0da94"},"res/import/09/09e3083b-13a3-44f1-b9eb-b468cdff6aeb.json":{"md5":"e66fc3fff7d7cfdb58e6292617ca967e"},"res/import/0a/0a0a734f-3633-4b7e-8480-e01c52cb9b6f.json":{"md5":"1221bd87b54bc8f28794b837b660e94d"},"res/import/0a/0a32c3c0-32d3-4c09-9d87-2bc46021a29b.json":{"md5":"23ac6ad2324b73e969122bd8dc3359ac"},"res/import/0a/0a3bf38c-a691-469e-bd1d-e134c3176ed3.json":{"md5":"8075e17d55cd111bfc8fc0979254a4db"},"res/import/0a/0a6fef68-87a0-430b-abe7-82b0526bb5bc.json":{"md5":"90082b6dddc800d6887b745d3c691abc"},"res/import/0a/0acd8ea4-0cc4-4240-9438-b5591b52d6bb.json":{"md5":"e0538145b40f8fb11b2137a4712c94ac"},"res/import/0b/0b1a57cf-a3d2-4dc6-bc40-bb6112c63062.json":{"md5":"d70643372108934637406704884e90e5"},"res/import/0b/0b36bdca-49cd-451b-b6ae-d57be4393752.json":{"md5":"6f8086b4c3a645882756e1351154ed67"},"res/import/0b/0b79c326-c0e2-4d0f-bddb-3945ee7f73cd.json":{"md5":"39c3de4714c1eb0cdfdf7017da4baf79"},"res/import/0b/0b79f9c7-27bc-4cbe-b226-5cae256501c3.json":{"md5":"4b1047ae1b2e66b650fa5e0acc73eec3"},"res/import/0c/0c503f66-4348-4934-9ced-33b9e5b76e72.json":{"md5":"fa85c9c6b411ba052a3102eb7c741b10"},"res/import/0c/0c5946b9-cb83-41b9-af8e-1e882e5c6ca6.json":{"md5":"03834bffbad5240e97d93058a007b35d"},"res/import/0c/0c68b464-2b10-4d64-a025-e93952845161.json":{"md5":"9da2c6b917c1348853dfba438bdf8af0"},"res/import/0c/0ce7a298-26b4-428c-bccb-89b95cbbec39.json":{"md5":"8b29ff625005db53d3353f9fe307cee9"},"res/import/0d/0d1d8c59-b160-4c74-8a8f-9d77877502fa.json":{"md5":"b33a6b0bce641410d9e8db2093b6e756"},"res/import/0d/0d530de2-7c69-407b-a81e-58f8aa35e92a.json":{"md5":"2348f7ed7f774356ca086a8ca105e187"},"res/import/0d/0d6a1d80-5319-4829-861a-5d28bbff3782.json":{"md5":"b1f6750012104ecb0507b97e8783d989"},"res/import/0e/0e08d727-5083-4210-872c-fd5d2faddd3b.json":{"md5":"3f2d18967e64f1096a735d629fa79b24"},"res/import/0e/0e1a1779-cd6d-466b-880c-fd89275274fa.json":{"md5":"5a4c5fb9d5e3537ee651154e5cf37619"},"res/import/0e/0e881754-1c25-46a1-b80a-4e6f7f60d6f5.json":{"md5":"0e5cc05371b55dd92c5d1ecee63c76b7"},"res/import/0e/0eb58ac1-9097-4322-8878-b0c4ffeead29.json":{"md5":"187bffc1aacaeb4be5a1fc1e65b32122"},"res/import/0f/0f95b280-dc05-4110-97e2-d315a11dbce7.json":{"md5":"87962acaf36c4ebd7b1937ac347ecf3c"},"res/import/0f/0fa4979d-58c8-40d4-b4d7-b40a2b24fae1.json":{"md5":"7267ae105640ac3959ef6fdb969c7be1"},"res/import/0f/0fb27d8f-8360-4c08-92c5-2d18eb854610.json":{"md5":"7f7b547daa6fa60abf76598f181f3210"},"res/import/10/10aee4bb-1469-4453-a814-d179f1bbfa26.json":{"md5":"53996547f981d8d5385b735a5d15e0e8"},"res/import/10/10b2f590-dd13-4057-9ea3-ac53c1487106.json":{"md5":"628f01e6d5752cbaf2b84f743a8f7d86"},"res/import/10/10c6b231-c25e-4eab-808c-f107e0e66dff.json":{"md5":"dfc3a51042a144576928d2b5bfbc6244"},"res/import/11/11241202-69c2-49ac-a07d-56a8f172c4d5.json":{"md5":"dbd5c4a98c0153e0547fef907df8c749"},"res/import/11/1132394a-d9cc-4421-8e45-fec617cde021.json":{"md5":"2f5255bd96feb54d5824cdd09028d6e7"},"res/import/11/118e175e-deaa-47da-8f22-aa3b92233165.json":{"md5":"df5a7da803caeeec7d00a77cda3762f5"},"res/import/11/11ac894c-3582-4768-bc25-80de5f46a0cd.json":{"md5":"39773e2e73ded6b864482d46f3b3410f"},"res/import/12/1272c881-cc49-4cca-be3f-1dfd7be3a100.json":{"md5":"5568b85c9cc8cb7574d7f0c765ac50d1"},"res/import/13/133786c1-2f6d-4eb4-b5e6-145a73cb65b2.json":{"md5":"3b3eb2b102edc0449ea56926555fabb3"},"res/import/14/145e2c4b-09c7-4e03-85cc-3a9e0ca4207d.json":{"md5":"8d8d177c01cb06af5fbb8289efd29831"},"res/import/14/147fe42f-7640-4b8a-adf2-b4097e0c7e65.json":{"md5":"856d95c5ab6a2bdd94a616e676aeea5c"},"res/import/15/150829b1-d3a8-4b43-a7d2-b894c15fb133.json":{"md5":"1b7178b89a34d67e4b9f89703310d499"},"res/import/15/1517fd6b-e1d5-41e2-9ca6-c0e716735a4f.json":{"md5":"6b7e1e3675c26efb80c41bf6b88a4916"},"res/import/16/16228643-2a90-4cd0-b781-45f6bdc338d6.json":{"md5":"e3b0cb39f17c156e1773b273883fec98"},"res/import/16/16d3afa4-d1c5-45c6-9448-e56b37b91224.json":{"md5":"2c0b2210ccedf54acb4e00e55aedb0bf"},"res/import/17/1713f177-ed64-4b6e-8535-a5cea8101f5a.json":{"md5":"99acb62c4a4cf315c621ea3bee46e885"},"res/import/17/175669ae-76a2-4240-a230-ad19d669a917.json":{"md5":"4729b6f0e78cb8ad223af4887e8324cb"},"res/import/17/17ad7104-10d9-418c-96cc-0af9154385d4.json":{"md5":"1a7310868d97c55f265d95c640d662be"},"res/import/17/17c15905-21e5-4911-b272-afa575f1d9c2.json":{"md5":"b2b97d3bfa68574c619baf50988572f7"},"res/import/17/17da0da6-7609-48ca-bcfd-3ac332b6d00d.json":{"md5":"d27d3c68ba1bd8c02b005fc4ab0ed057"},"res/import/19/19800559-9d4f-4615-a91f-83b6e82daed6.json":{"md5":"7e20268809e9975442ca232d1f81b600"},"res/import/19/19a75185-fd4a-473e-ae42-2b5490ad13e7.json":{"md5":"b3374d83e88ba6bb33ae8930f971510d"},"res/import/19/19cf2c64-10c2-42eb-b6a4-a3d60b17dd68.json":{"md5":"7c52c3bf78568893f61e5d83dd32d0be"},"res/import/1a/1a69f4e8-766e-4685-bb19-a37cd1138f67.json":{"md5":"0ebdb972c4312154d8545e4a9758357e"},"res/import/1a/1a96991d-0fec-46e8-a593-768de4e1d105.json":{"md5":"a0ae5a7deda90a08daaf26ecadb02dae"},"res/import/1a/1a9fcfa9-2ff9-485e-85c7-ca51af537ead.json":{"md5":"66ec0ebf06a6c262f33e98360fc7a578"},"res/import/1a/1ab7ef07-100c-4144-94ae-88062cfdc661.json":{"md5":"ff7412795dc58cab60bbdb54d0efc15f"},"res/import/1a/1ac0776a-ec85-476e-bbdb-6e9eace3e082.json":{"md5":"93038f74b27cf4f2cb6d97068bd7b6c7"},"res/import/1a/1aecfa70-0b27-44ba-b6c5-65efb20c5948.json":{"md5":"92da40ea1d03156a57d629676b11d287"},"res/import/1b/1b484497-3bab-434f-986d-2f12c762a3ba.json":{"md5":"a91654c77359b9ed516b7dea75fe111f"},"res/import/1b/1b59695e-5540-424c-9039-1f104391aeda.json":{"md5":"32cf44d29c8057aad30314d2b788939b"},"res/import/1b/1b650047-9873-4e70-a87e-f5355261f7aa.json":{"md5":"cef96c67703094492e3b62f579a6772e"},"res/import/1b/1b76e77c-2677-442c-bb2e-cc535798cba1.json":{"md5":"8f7cc0e0462ef5a5287c8217ecba4a16"},"res/import/1b/1b8853f2-29c4-4c1e-a04d-3976d4fca30e.json":{"md5":"f2bc0a909e67decb056663ab99d0de45"},"res/import/1b/1be49286-2bf6-4081-9470-97cad682f5f9.json":{"md5":"fe2f0ab4dc9a13948f1bfa09ea1d72fc"},"res/import/1c/1c88086c-8bdc-4480-b651-82a71273f079.json":{"md5":"6947301d0ed6a388b1793f3e8f5199c4"},"res/import/1c/1ca0ad3c-f918-44f8-b146-9c3afd14da18.json":{"md5":"8b5d072013e930c1fc75669fd2fc2f2f"},"res/import/1c/1cbd6b1a-6cd4-4f59-a49f-53005d224e95.json":{"md5":"4c7f3baf1d5d1af582f08431aad38ef3"},"res/import/1d/1d09396e-f87c-4ba0-8b4b-6b1473ff279b.json":{"md5":"126ff253ed373c61f9407c73d40a6655"},"res/import/1d/1d8873d5-1f11-43be-b233-8047bb53fa5f.json":{"md5":"1c27a2c808ee0601860a94bf518549cc"},"res/import/1d/1d96874b-13bf-4d95-be33-7d45957d435a.json":{"md5":"b87bb4f9bbbeebb6726fe8f57d1e5553"},"res/import/1d/1dd2be1a-f5cb-4386-a063-625c0acd8eb6.json":{"md5":"e669ddfd8ff543e6d0fd42039b3eec27"},"res/import/1e/1e46d595-f781-4837-b581-8fcb6f01b142.json":{"md5":"60348a4901e5ab819da490dfd39328d5"},"res/import/1e/1efbc606-874d-4c6c-b5e9-1799a28ad426.json":{"md5":"7231aa4ca149d3ab51de38aac14a0362"},"res/import/1f/1f128bdb-6db3-4548-a3e1-217520f26245.json":{"md5":"398a579478a861cab8ea4e31f950ecec"},"res/import/1f/1f337ec9-dafc-41c7-9f98-213d943efcb9.json":{"md5":"1735346776e9070dd30504e7c156be35"},"res/import/1f/1f4ce8a0-b51e-4c91-b245-1e53cc4ab4cd.json":{"md5":"ad4bb08776843f93d0b2d3d902569302"},"res/import/1f/1f7e6bb4-8413-4569-adb8-4aece672f566.json":{"md5":"e3a9d4aae4155c74bd95b678a8541126"},"res/import/1f/1fdd675c-f41b-4fdf-9ff2-8f848772a92a.json":{"md5":"bd37756887b0bfbbcbe3bd4ae53343c0"},"res/import/20/20e91468-a3cc-4bcb-b150-8cc19161b1ba.json":{"md5":"26d835a63df38c36d0b6b959ea29ee7a"},"res/import/21/216ecf6c-1d78-4218-a52d-9ed7712b5831.json":{"md5":"801a4f82c625f86dd87aa5512db3a630"},"res/import/22/225cd024-e1df-4ebc-8769-ef31947d3051.json":{"md5":"2af0c397ff53b6aa362d7f5bcfafcef1"},"res/import/22/225cf3da-f4d4-463d-ad5a-6db4211fec6f.json":{"md5":"3ece0dd39f7b1e5bd9c06853b027c40e"},"res/import/22/229ca516-c90e-4092-9f73-2f758b46b2fb.json":{"md5":"ea3c47e4d1c73c7e02eab53ad9620167"},"res/import/23/234dedb0-678d-4893-9486-2e471a0f0a17.json":{"md5":"1e05dc039e49a9a96167dbcfcf65a7e5"},"res/import/23/237032f8-9668-4bdc-bc99-960e5c53bd9f.json":{"md5":"67c2b4f74a05adc895e031643750eead"},"res/import/23/23790826-1d37-4f95-8765-1a77abc15c3f.json":{"md5":"a7e4207d3304e1f2cc796ad8950193fd"},"res/import/23/2397833d-46a0-4fff-b8ab-422b96e2c4df.json":{"md5":"4bca14ba0f17d266ec08bfd69c737243"},"res/import/23/23d25b30-e11b-4057-ad29-758f259c1c40.json":{"md5":"4edf119688058f3d4e0824deea47f34c"},"res/import/23/23fdb5af-9999-464a-9131-bcf186d31075.json":{"md5":"4a514a1e08671abbb3ef5395ea31ce30"},"res/import/24/24670f05-f6d6-42a2-b7a4-ef9e463011f7.json":{"md5":"10ed47465fee98bf5aa50d556c935b62"},"res/import/24/24697d0f-0baa-431b-82e8-d74c1124a91c.json":{"md5":"b7d777894d6a58d9c0ea4aa324129054"},"res/import/24/249efc01-de45-4d92-8851-12b8e612751d.json":{"md5":"a0ce4d1decaae227f9e0c40686340082"},"res/import/24/24bd55f3-2acf-46f4-99b5-7e32b4127773.json":{"md5":"9334d4707dfe3405eb5367fc5e4755cb"},"res/import/25/253c17f0-a7b1-4a85-9507-b4258cfb0221.json":{"md5":"5f6b182ea51dc83fa846697d069e97bf"},"res/import/27/272b1e58-0469-43a4-97ad-12c0ba28aa77.json":{"md5":"7b6287295c41f363979629e9cf3a4419"},"res/import/27/2799b8e3-7e4a-4963-a626-dedf9f936481.json":{"md5":"c6b6411a4d14f85af4bd02b2c9053a90"},"res/import/28/2822bb44-286f-40a1-9398-35a3bb0bd761.json":{"md5":"629b0c1757bb62f895d202d3a2433452"},"res/import/28/282e64c4-424f-4d65-b265-430ae59d9fa5.json":{"md5":"9612fd1d51a20078219f209f62644fc7"},"res/import/28/28cd14db-6ba3-458d-bcb3-ea53a7adddc3.json":{"md5":"9ace92386f705d19314c18a49c8230b7"},"res/import/29/29158224-f8dd-4661-a796-1ffab537140e.json":{"md5":"010c7f611484d18ee762ec90406e5a0b"},"res/import/2a/2a53790d-d623-46e0-adea-b6fa54b522a1.json":{"md5":"0086ca41391aac088de2ae02abff9191"},"res/import/2a/2a5d1317-547d-40b3-9360-1b876afa8189.json":{"md5":"d6ada839238b2bfd6678c0f20c9ef9e0"},"res/import/2a/2a712174-365d-40a5-8c39-85860c809e56.json":{"md5":"edaa8f4b3063dfe60fea30843fc49471"},"res/import/2a/2a8ce1e7-b527-468b-9fef-2f4a1bd0c873.json":{"md5":"0941a8a47307cdf972ab238711613b60"},"res/import/2a/2ad8e984-fb49-4a51-ac0f-46bb27251f6e.json":{"md5":"6bb3e4adc8eb90538c8c9af6ebaf93c9"},"res/import/2c/2c9aa949-8b8e-4dc3-a42e-88939ee2e84d.json":{"md5":"84bbf8f4f7a98b1b802824637d4c4d20"},"res/import/2c/2ccbd5f5-df3b-416e-aaeb-c8e662f8641d.json":{"md5":"1f3f8ec6a3e9641d8d4d4defd9d95a53"},"res/import/2d/2d167769-a80b-4b3d-89f1-b150fa64008e.json":{"md5":"994e123bbd6c04019b810cfa3640669d"},"res/import/2d/2db7b3e5-2efd-409b-b434-17bd3c764929.json":{"md5":"21797344d3c39e687c16c87dd6e85475"},"res/import/2f/2f267281-0313-4ab5-bb20-2c8c084b9db7.json":{"md5":"952fd54a70fab43dcfd3e34704a026f6"},"res/import/2f/2f3cb14f-612d-4aca-9061-654a4426138d.json":{"md5":"e244581da858c61f06964c59bf9b4783"},"res/import/2f/2f63db7a-573e-4821-89b2-35f72edf67f0.json":{"md5":"4ff6893de84d254d6d510780bbcb3062"},"res/import/2f/2fb4931d-580f-4ab8-8871-e70a605712b2.json":{"md5":"992129e9f05428d4cd6c2199d37c5d8d"},"res/import/30/30220141-dcea-4b2c-82ea-f6932b703abd.json":{"md5":"5609a8de0f75a3ab25b1eb8354c22f37"},"res/import/30/306a0d16-09f5-4c00-9bdb-0dc53c00990c.json":{"md5":"5ad0cd5ef53a8013830466ae788e9160"},"res/import/30/30a1da14-4bcc-420c-8f6f-2bf454f76f89.json":{"md5":"29a8858844e90af7e7e029ebfe8890ac"},"res/import/31/312c5295-8210-4203-b06e-c72d765f0928.json":{"md5":"d49307620946ad02e1ca738e5cdbb03c"},"res/import/31/3172929a-6752-4840-b747-9ab45c973a88.json":{"md5":"be3bc38421618c92711c095d42a9b84c"},"res/import/31/31766719-eaf4-45ef-9c92-e06b90d29723.json":{"md5":"4639962f14f6c67878d126ad60a24ee9"},"res/import/31/31aa3b0f-133e-4fe4-9daf-f5c267d8c8d1.json":{"md5":"121c766d93d8ed6470b27c030b44f80f"},"res/import/31/31e651f0-4cf7-4da8-a63c-d112bfb9f786.json":{"md5":"df7ff0e7ce92ae847a19fcd5aba428e9"},"res/import/31/31f437f7-7887-42e3-8ed5-a251209d690c.json":{"md5":"48872f93db3651b11d3126ea1735eef7"},"res/import/32/325e47b0-3fb8-4cc1-b6eb-45891fd122de.json":{"md5":"ba1138ec969a5ba7ae0cccfcd77ba3b5"},"res/import/32/329a4adb-a9ca-4d95-9e9b-85475a1d74ab.json":{"md5":"8a2efff2e3d33b088e4fd44948acdb43"},"res/import/33/3329caac-ff7b-4e43-815f-ae3ce3d83c7a.json":{"md5":"aab9653ab0d88c23a1873fe23a356eb0"},"res/import/33/336a1d18-1647-4f4d-a297-0f54688e1cfe.json":{"md5":"83c127879133ad6e6a2fea2c71768729"},"res/import/33/33a87e63-83e7-4f98-a40e-96feece06697.json":{"md5":"3606f16712704c2ecc385fdf122b486c"},"res/import/34/346509d6-6ebc-4da2-82c6-9c25c18312a1.json":{"md5":"4d7ba9ddbdb84ca15c748da8c686a57b"},"res/import/34/3479e792-95f8-4d4d-b196-2f8c6a125cd4.json":{"md5":"d148bbbfb8679c172c4e997aa2a2024f"},"res/import/35/350940fd-9691-4aaf-8685-7764627333ad.json":{"md5":"a20029d8cb199cb5a65ff71766a94528"},"res/import/35/35246e42-2c3d-44d1-b9f1-9dd63d38e6ea.json":{"md5":"f83e1eee2629a31801fa7d0a5178ab7e"},"res/import/36/360eb57b-9704-40f6-9284-c2593ebbc324.json":{"md5":"1153ab586fa78a4d6a56112851d062b9"},"res/import/36/36839b7e-2d75-4b5c-9e36-9c4005ac8be0.json":{"md5":"aec21584eaaedcb83845ea0f7223f1a9"},"res/import/36/36f51da2-6d61-4356-9d25-1896816e8c94.json":{"md5":"60c9ba0f79da8df7b93b7b3962032c0b"},"res/import/37/37481f79-c4df-464a-bf6c-a75486171fd6.json":{"md5":"81bd38309357b19201f5c36e7ef16b71"},"res/import/37/3776c26b-553b-419d-b952-a2e0db712436.json":{"md5":"9eea9addba482f0471e70f257c52930e"},"res/import/37/37baaa16-b7be-4e0e-8c38-d471fd2bf334.json":{"md5":"cc71a4c002f08898ae52c346ce4606d2"},"res/import/37/37d4ee65-bd1a-47ae-be4d-eddc881e8ff0.json":{"md5":"ae42c93f7226e29dba6521927018db6c"},"res/import/38/3836d8d3-441e-4db9-a771-3d17e1233842.json":{"md5":"bb54fe7e9748a7b0032dbd302a31c697"},"res/import/38/38726f0b-9ace-4f8b-baa3-e21765937edb.json":{"md5":"50a37a31ccb59ef29728398432688961"},"res/import/38/38744dcf-8d01-40b5-868b-e74014d78dcd.json":{"md5":"4379fbba6e145917fcf4e92e38bac6d6"},"res/import/38/38ae6141-64f5-4ae1-af5f-ff3e15cee4fd.json":{"md5":"df87b5ca7de59cfe434a8492267cfea6"},"res/import/38/38be1123-65ab-4374-9b79-5ba993c9e089.json":{"md5":"7c6bb8cb106bf0aae05af0b93bad4ae5"},"res/import/38/38d62777-d02a-4b17-a3f0-493cc47d334e.json":{"md5":"e6cdc3985091a89bd533be924b5eae3a"},"res/import/39/3910b006-24a5-4e8b-9c51-4592b88ad2c7.json":{"md5":"afc3ad7992718c7bfa3817561416f83a"},"res/import/39/393f1987-dda3-4e38-8936-1aa059f8ee7a.json":{"md5":"a449f778dbf2dd1dbfa57fdc09bb7bb7"},"res/import/39/397f7028-2225-43bd-9c38-80f857a464cb.json":{"md5":"8a47e5ff4c5a3e0f883d0376349fff61"},"res/import/3a/3a3a48a1-be45-46c4-b82b-1b5d10a7132e.json":{"md5":"6ae4bd4684912a99ded3312da6b7eaac"},"res/import/3a/3a4bc43a-320e-496b-84e3-9cd7b192cafa.json":{"md5":"e4e3019b63d7238f519a01f216f14d35"},"res/import/3a/3a8204cd-d533-48c0-a299-e58646b3ade8.json":{"md5":"fa57d365f269caf243a21b2f892a86dd"},"res/import/3b/3b7ae76c-3b0a-4bc0-a6d6-66b44595c03d.json":{"md5":"21c9bb6be2f6c9592e61889fc173af58"},"res/import/3c/3c0f974f-e10b-4609-a564-29046d422f28.json":{"md5":"469f6e32023ecf02d6cbfd9c1705f8ae"},"res/import/3c/3c83a88f-ffc9-4db5-8925-323eba63cccb.json":{"md5":"d9b77b106eda7d9bafb5b275192e0b08"},"res/import/3d/3d03636f-4c3e-4387-a7e5-c41e5a08ec3a.json":{"md5":"560e2504bfda827824523d285a0e17cb"},"res/import/3d/3d241371-739e-4441-963c-b0159a01a19e.json":{"md5":"18303e1984c0e6706545c99c3fe696b2"},"res/import/3d/3d29250c-190a-49f1-9ca5-21b78b2f378a.json":{"md5":"7a56261bad368a30af03047ed796f3a4"},"res/import/3d/3dad14aa-1217-43e2-a654-c22ae3a85d84.json":{"md5":"c7e9ce920613b051db4b1275dd1d0b39"},"res/import/3d/3dae001a-9bfa-4fcc-b018-fb3c74e77eed.json":{"md5":"18f264bdf91e134b0d323d24222a0985"},"res/import/3d/3db313d3-a167-451f-8d0a-ab4346493ee9.json":{"md5":"384c5334e4113a9f70374de7d1778e34"},"res/import/3d/3dc7b598-874d-468f-9f4d-3013eab17d36.json":{"md5":"e26aadd224541f4ee97b108f67fef888"},"res/import/3d/3dd40bbb-4cfc-430c-8f46-e9ea95313447.json":{"md5":"d98bc9df0b9504c26aabe34d815bb1c1"},"res/import/3e/3e01c30e-044d-4d20-9cb9-05c97a4bee7a.json":{"md5":"938c9d4da9145f0f7d32be33c01f9953"},"res/import/3e/3e2ce021-e723-452d-94ed-bb743dfdc7ee.json":{"md5":"6eb0ffe88cdad7a209a66cf5e5c4bec4"},"res/import/3e/3e2dff62-53f3-43cf-8869-c5bed84dbb36.json":{"md5":"f68cc916b83f69b26ffcd5ee601657f7"},"res/import/3e/3eb6e700-3535-49a7-9513-008c83bf5452.json":{"md5":"5099eecb6c69d0c9f3ad91487aac15b9"},"res/import/3f/3fa8e33b-2a70-4bfb-8693-b1d1c6fbef6a.json":{"md5":"9a6b2a3f6c9f347757183344d79f9404"},"res/import/3f/3fa90332-39d7-4ef0-aa1e-289ba203421e.json":{"md5":"7707a4131a5457acb82bb7917e3cd19a"},"res/import/3f/3fb624b4-ffc4-4452-ac76-7986a733fb5d.json":{"md5":"05ae4beb44971dedf888035cc6889b66"},"res/import/40/40070852-dace-4de0-976c-f37aa482b996.json":{"md5":"2f5f9d3d483bd0a34bc3e2ac28296a85"},"res/import/40/4034ffb8-fe80-4c54-906a-05afad9ab3d8.json":{"md5":"5cc9cb80d3a66f43a374048c034740f5"},"res/import/40/40450ac6-6ce8-49b6-8c32-02948c71a8d6.json":{"md5":"d891dce4baa46949207d4d7d09dd03a4"},"res/import/40/40a7ce28-a17d-4952-8d33-6853ee0d060c.json":{"md5":"e9b7fdcc4062e4c677e4f42d21d3b024"},"res/import/41/410d62af-0c20-4e18-ba68-17cc2c1f798d.json":{"md5":"602db393079de342935299b63df516bb"},"res/import/42/4201ef1f-4abc-4af0-8e84-e9e776943900.json":{"md5":"511aa3db93a98651f53ca9d0be947d63"},"res/import/42/4226dac1-b3ec-43e0-bd22-9fe16f8c4de7.json":{"md5":"b90c8d7e1ab157c1907669c935ade56e"},"res/import/42/422fdf7d-1ed4-43b6-8a3a-ed379c08210d.json":{"md5":"0c4f9917ea96448d62edb5bfa6a72199"},"res/import/42/42a50b85-90bb-4955-9d63-ede2418818fa.json":{"md5":"5eebbdef27bd026cbbd49f9a4f94bad0"},"res/import/42/42d1a30b-c8ec-40b2-a673-12f6440ad588.json":{"md5":"fe73fc5a2d2d59d13a97e8d37428d65a"},"res/import/42/42fff579-3e8b-4b57-babb-7ef5e6a31ba9.json":{"md5":"a2074238158900d2e0a8939a1e78b5f8"},"res/import/43/4327d1d7-afcc-49af-b6e0-f0abd482649c.json":{"md5":"f2b0af492ecbd53a1ba3d195204aa02c"},"res/import/43/43361fd9-f730-414a-baf6-d91ce91a3a13.json":{"md5":"2a2dff6eda7e5e6f1b36aa9bee3fb443"},"res/import/43/4338b286-ca55-4eec-877f-ca22150bc313.json":{"md5":"982807a43430bc549545a0e97cc01756"},"res/import/43/43554c84-ff61-4bb6-aa29-ed8bbc83b320.json":{"md5":"b3e71595b79277ce4fd444c030338408"},"res/import/43/4369d0a6-ab05-48f7-b182-f4da05b42051.json":{"md5":"fc7a6c744f8702ad9370838699851c35"},"res/import/43/4390b71c-1b8f-407d-a18b-285229b31641.json":{"md5":"967c0abba05e4d35a87410c9c6a8661b"},"res/import/43/43cab994-4ae6-4348-ba93-23bdcf03c240.json":{"md5":"2002fbc353b8bf97c0d0e4a5cd5f7fa8"},"res/import/43/43cf194b-951f-41d2-abf8-4b00596fc99c.json":{"md5":"77ec709bd90e2dc257cc1ed5f88c4a10"},"res/import/44/44020ba3-52dc-4a39-aeb0-f1e50105ea65.json":{"md5":"4ac839d1b627fb7b23378606b05cb44b"},"res/import/44/4424c05a-7f85-4e5f-8c8c-a8102270bbf1.json":{"md5":"c5638e00c6731cb4c489c0b02e97e5b7"},"res/import/44/443c94c6-7c19-47d2-afea-91a6c097f7a6.json":{"md5":"6e6dbb0332c6163b675616a45a6d51d3"},"res/import/44/448f4af6-7f69-41bc-a7cb-c471ddbb7f08.json":{"md5":"70b01bdc4e7d05f1858e8a86f8408247"},"res/import/45/4574e3dc-ca58-4a31-b973-9acfe4ef04f0.json":{"md5":"8281c0bd0fd15a3565295d3b7f36fe49"},"res/import/46/460a57fe-3afe-4009-8aea-341f7479de42.json":{"md5":"9c36f494c6be6782716687194e19f3ec"},"res/import/46/463d3424-e930-45a2-b82b-607be03f6c80.json":{"md5":"b41f618e5cc48b96df7a5948b1891614"},"res/import/47/47e441c3-81cc-4916-bf1c-fa13f1359c8f.json":{"md5":"00f73482376f275d3cf86de988c46719"},"res/import/48/48285984-e828-4033-8a54-dd4e5654f01e.json":{"md5":"91643f0a6c5333fd69e082fd83b79ddb"},"res/import/48/48b4c355-d155-4d8f-8e2e-a25ac45dbefe.json":{"md5":"000186ae8238afbf3e5e953999516d47"},"res/import/48/48bbc34e-d304-4947-a0fc-bba08f27205b.json":{"md5":"b299fe8b95cfd9de6499b539a72429cf"},"res/import/48/48c1d635-cb9e-4f2a-96ec-07c30130e107.json":{"md5":"ada91798b233f89c26fed4f8984ada37"},"res/import/49/498383c9-347c-434f-84e3-53e4f304d72a.json":{"md5":"a6cb285d1335e913df9895e9ce983302"},"res/import/49/49b48549-9276-4962-bce2-5c6733965a79.json":{"md5":"bd9719c5d5a32faacbed8220317e704d"},"res/import/4a/4a1acad9-ce88-4334-aa62-bf23a5ccc79e.json":{"md5":"fc02633cdb397d13d50b70bf10b9af85"},"res/import/4a/4ac30c8e-023a-4e83-aa95-9022172c9bee.json":{"md5":"74d4f7a3bb4b1b3f3eb9244d30af915e"},"res/import/4a/4acfc9b0-d737-42b1-ade6-8254cbe914d3.json":{"md5":"2e0944231f293bee87137244a9d03a22"},"res/import/4a/4afc8a40-c557-4507-9998-1eecb96c46e6.json":{"md5":"df3840535bec9d5ffa925ea087e4b245"},"res/import/4b/4b48cbcd-ecdf-418a-83d1-a109e527bcf1.json":{"md5":"43bd8428fcf762b85ad2259ef4267cc7"},"res/import/4b/4b4f8910-1f4d-4d2c-a4da-a57921ace189.json":{"md5":"c9efc656acbfea8d7ef3d985208e378c"},"res/import/4c/4c1e3125-a324-404a-a515-639653fdeb54.json":{"md5":"af9ca4a4d3c951baa39f382097b9eeb8"},"res/import/4c/4c4a9d3c-37b6-4aa6-b692-8e04c6818225.json":{"md5":"fbd00325b935e252d8a4ec8c6957e714"},"res/import/4c/4cf4ed66-5b23-4410-ad0e-ddeac313e067.json":{"md5":"f950a5ea4082c57ff7a811603033352d"},"res/import/4d/4d42ddcf-8e6c-4396-bf69-26dd2b288e2b.json":{"md5":"0526cd284c69730da8b26438c03bf535"},"res/import/4d/4d53c7ba-0950-4e59-833e-2d2cb816a110.json":{"md5":"24008c6615cc120e74529b5ca561f6c9"},"res/import/4d/4db720d9-b5ed-47db-b457-e7dff65d0c6f.json":{"md5":"4398513e5e79b6efbc06e41fdecaf77b"},"res/import/4d/4de83bb7-b70d-4463-991d-171370d155ec.json":{"md5":"0ac2e674947938a0e78b2c3aaaa7edda"},"res/import/4e/4efdc35e-8803-4698-b585-7cc8d1c5ab5e.json":{"md5":"de10c17367f8e282a786ed1839e26490"},"res/import/4f/4f77b050-277e-41bc-9793-94a9c10b6bd9.json":{"md5":"fd2758ae19d5ac04aef2f657780570e9"},"res/import/50/502f783f-1d98-4f9f-acdd-66de4d989b3c.json":{"md5":"f13c47035dda39e33dfc093a4fbc57c4"},"res/import/50/50500b39-b2bb-4c1e-838b-b7874b8370a1.json":{"md5":"b3a3b38172e7be9c884553d93cbd2bfc"},"res/import/50/507f0bef-7034-40f3-8f13-2f3683ea428f.json":{"md5":"6d7aa9c87525dd2a8ec526b07ca1a899"},"res/import/50/50e77c44-284c-44b7-8797-2a246a7b60fd.json":{"md5":"7fb6e8ad573062a938611b81305bcce0"},"res/import/51/51175934-08ce-46e6-bd77-67257d26de4a.json":{"md5":"36115d9b83c1c2cc70c1a690c517bdfc"},"res/import/51/516faa4e-cd1e-4501-b5e3-6f83650549c4.json":{"md5":"f269424e28fb5a672dbd3d5428a5028b"},"res/import/51/51bdb722-b293-4554-951c-9de51650845d.json":{"md5":"885440dd3149ebd55d81e8dc2ce52b94"},"res/import/51/51eafd60-de47-4a80-b2c9-091d824270b8.json":{"md5":"bebc781fe7e5928bbed940bd05400be1"},"res/import/52/521b4858-11da-45d5-95ac-5a9577f59e2c.json":{"md5":"6ea80dd0d3bdbde624e7a4c86565a035"},"res/import/52/527755e3-0e6b-4003-ab74-cef83bb066cb.json":{"md5":"388259f736305fe0a64150f3b2820b9e"},"res/import/52/52a03f52-0d18-4e5c-a87b-f88eb9b01fe3.json":{"md5":"6708e8d8a1ab912802db5d5625039cd1"},"res/import/52/52a1abf5-8762-4bb7-82dd-c6c7afc88610.json":{"md5":"18821de73f9114771ee6f1c4a959883c"},"res/import/53/5322e3e8-b47b-408a-9bf0-23ec6fc1936c.json":{"md5":"b1a548d2c279eb67d5d5110c8794d029"},"res/import/53/535753f9-162b-4819-969d-6726b942ab53.json":{"md5":"600cd1c29468d6e324ea5b3a7381cd2f"},"res/import/53/5368328b-77a9-48e3-9398-ff4265ba65ed.json":{"md5":"71e07d66311b97973fa72bfc6992c70e"},"res/import/53/537e486e-8ef6-48ce-8094-32aa50d9410e.json":{"md5":"7e60b2b2ade91f8f05936c48ca0ea449"},"res/import/53/537fab22-1b60-464b-99a8-b287c6be0474.json":{"md5":"f25e8c0236920bba145bde059bd72cef"},"res/import/53/539d920f-2dd2-40d2-ae1c-41f880f07042.json":{"md5":"b936ae54133354c4496815374cc6d1dd"},"res/import/54/54981393-3c96-41e0-8694-b871cf7564d9.json":{"md5":"3eba4affad6062d860914bd69b310fb8"},"res/import/54/54a6caf2-73d4-4f69-a6dd-507e00f7539f.json":{"md5":"80d70ce99d69fa1c27ff34132ca25573"},"res/import/55/55830f4d-a21d-4a98-a7c4-a3fb006c3d42.json":{"md5":"c96148e78f13190f2c8f22d76fd3cc37"},"res/import/55/55d26685-5c2e-40e9-a579-9811f5ced994.json":{"md5":"50147df74fb972911544829747a23893"},"res/import/56/563d622c-fc5b-4733-adfe-9c3c3706b09c.json":{"md5":"d5cb69ef72c1b4c898c40c12277cd4cc"},"res/import/56/5683f3a3-b0ef-4b92-b5a4-643a3aa10911.json":{"md5":"a32f073230a21d2bd6a158f76bfa4b73"},"res/import/56/56958185-085b-40b3-8c94-6e58181b7ca5.json":{"md5":"ecc1b7ddb8a2a48a9e31ef8e983f7c6f"},"res/import/56/56a65ee0-9ed8-4a88-a573-0594dcbb16b9.json":{"md5":"d08f443cdf4f3f32348ee24232dfa6d3"},"res/import/56/56be11b4-9c6a-4350-b4ab-d660a127e72e.json":{"md5":"19d71703a71b438eb990535d00bda96f"},"res/import/57/5703d1da-4911-4396-a82d-b6b5f0f7eab6.json":{"md5":"2754ef55d3d97f04fe71bbbd3b70ec22"},"res/import/57/574a6b87-40f5-467f-9bd4-5decd2e86138.json":{"md5":"283495d5fdf65dba5129858f62167772"},"res/import/57/57bdfc9b-ee84-458d-9b8e-733bc1215511.json":{"md5":"a9e5dad1cf03a958414557bc5a01c60f"},"res/import/58/5814d418-f75c-49fa-b3ff-910c85c9c9ba.json":{"md5":"91d126b895fe8880fc8b39898a24064a"},"res/import/58/58189fa6-582c-4bc1-8818-d64112bed4e1.json":{"md5":"88683cda24d85372592e60e58404956d"},"res/import/58/583f998b-da82-4a5f-ab27-12109f495fa6.json":{"md5":"423c281c4ff4430ccbe73a26d9ec4c5c"},"res/import/58/58ac7267-1489-431b-b1b4-b27995c63e8a.json":{"md5":"409d3513497fb3a17880dc01d3f8e100"},"res/import/58/58c53b75-bfa3-4b1a-b430-9eda7a788ee7.json":{"md5":"2694025b34e006e4a29645e6bac21eb8"},"res/import/59/5914f056-b6c1-4bbd-979b-92b5b721c7f4.json":{"md5":"7418d89d54e4d30fb44647131a8010b0"},"res/import/59/59409a24-303b-4212-b2c3-d3ae09c28d7f.json":{"md5":"3406114f131e945a07627e7a7a1b366a"},"res/import/59/59788439-5d0c-4124-842b-44d03e21f1bd.json":{"md5":"5382107c79a2147eb014fd98cf87877a"},"res/import/59/59821a17-576c-458a-9bbc-9930b55e0690.json":{"md5":"94b20f574509c73ebed248a7fd277acb"},"res/import/59/59bbd743-7bfd-42bc-84d3-d0bb0898bea5.json":{"md5":"2878ec6e8d83023fa645a34ac05f3038"},"res/import/5a/5a4b139c-cf52-4e01-b03c-eea87102060a.json":{"md5":"30296fc768f9ddf47c66c6eab346901b"},"res/import/5a/5a8ba0b6-f0d2-40c8-a712-8a42f323c602.json":{"md5":"96a40b37ec3595e4d2b5d61008a648dc"},"res/import/5a/5ab46b86-6642-499f-89ea-b70b7ce6752e.json":{"md5":"5183b10f2275d68905fdf11114414c77"},"res/import/5b/5bd44f21-8a1b-413d-8d64-08e3c4b67f90.json":{"md5":"911f9769b9911005295f4605303ffe0e"},"res/import/5c/5c16d753-6196-48e1-9f33-bba0dd6ed13d.json":{"md5":"244fe77c31b56b859db0756c696086cc"},"res/import/5c/5c27ea1c-ead5-4b7a-b7fc-60ed40a3cd94.json":{"md5":"99d81ede85493033ea7b2e418bcfa26f"},"res/import/5c/5c3bb932-6c3c-468f-88a9-c8c61d458641.json":{"md5":"b5fd945272412c6367727e7947d422d6"},"res/import/5c/5c55545a-49fb-4919-9fcf-2b8a69b98dbf.json":{"md5":"e920ce45b3ad0e98469c3f6b4c533185"},"res/import/5c/5c72c12b-d37a-47aa-8a04-faa20f4d8be0.json":{"md5":"29a06302283be65ae422cdc87bf64c6d"},"res/import/5c/5c8f3de3-2dba-4e42-b354-d776cadfa12b.json":{"md5":"3822a4af1b3ed2c835bd569e95147ca1"},"res/import/5c/5cac63a0-5716-436d-9066-8ade4e05d6a6.json":{"md5":"dd52d22079b60aaffc4c4a425228bd27"},"res/import/5d/5dec5a15-1c35-46ca-94a1-df6f0d024e29.json":{"md5":"188cfe72b25a12bf742a6a756cadaaaf"},"res/import/5d/5df0fb42-67cf-4df8-8ba4-539ef53a3ba7.json":{"md5":"fdcf988dfc548ea74335b2215f5d31db"},"res/import/5e/5e14cc7f-5ec7-40ca-810e-8c1786eed0f8.json":{"md5":"be5b4ef28b0e40b199110bf9390a2de5"},"res/import/5e/5e5d01f9-5a85-4abc-9330-a89e7f44dbbb.json":{"md5":"30cf579d50c55811019d9410e42ac774"},"res/import/5e/5e694dce-4a8d-4d16-8c10-f1770b02609b.json":{"md5":"3b8eb0228f13c8a2c7e8a651d6dc93e8"},"res/import/5e/5ea4cbbf-d3ad-469d-8488-e3b5c9e14d66.json":{"md5":"df3eece88aad682a708bf66a0bd35204"},"res/import/5e/5ebc8906-0653-4bf2-9325-d4368a3d46db.json":{"md5":"66833abec42c7235e4954a8fbda0cc90"},"res/import/5f/5f2ac589-4aa8-49e4-b05e-250966238126.json":{"md5":"fb0ce20e5ff55f0c2585b66c17a68561"},"res/import/5f/5f444d97-5b71-44d8-ae76-f3e5b4fefb7a.json":{"md5":"96538e4abe9a79a6b39390027edb5c98"},"res/import/5f/5f8c8560-c35f-4c91-99d4-b396e563f9ce.json":{"md5":"efa30bcaab15be8cb8128e0e892e2c46"},"res/import/5f/5fad28f0-3c44-4f5e-9351-381fe3fb522c.json":{"md5":"71e624e9ad97ed8e81d3bc77ffdfd256"},"res/import/5f/5fae1714-f8c0-4683-bef2-8ad3dc5d96a8.json":{"md5":"6315010d940f137c794ef5315f10f16b"},"res/import/5f/5fcb8009-ae70-4dcd-aea5-079bc448ac55.json":{"md5":"10a25f0f3863d3d7f90c63d5000d4f66"},"res/import/5f/5fe5dcaa-b513-4dc5-a166-573627b3a159.json":{"md5":"6eb4a9679a1404b7d7d7bfa92c9ef0af"},"res/import/60/603f50c7-923c-4bcd-a47a-9f62f2eea7ad.json":{"md5":"bb6ce51dd470186ca8c60d6841681dd7"},"res/import/60/606775c9-8727-482f-8013-5ba083282842.json":{"md5":"9dd296bb749648b6712581b7a8c7bfd9"},"res/import/60/607aa446-471b-4cac-a428-4c2890c873c4.json":{"md5":"e40fac75e650718e3d6ce0a4d1cf26d5"},"res/import/60/60a385cf-e2f4-49ae-b1d0-071e77ded151.json":{"md5":"55381b80c99ea3dd0a8a20046591b951"},"res/import/61/6120fc28-be94-496c-9a0b-e636a54ef049.json":{"md5":"057428cb9cf84fe4ae251af507b12916"},"res/import/61/61749169-1f57-43e2-91d0-e473992efe49.json":{"md5":"e064d5dc93c04b5807f76bcbc65a56ef"},"res/import/61/61847d16-8efc-43c8-bd0f-94c22d50515c.json":{"md5":"1c8269d0097ad7a3f6fd1ef25a73eb0b"},"res/import/61/61b4cc23-12d5-45ee-a302-b15d54acaf4c.json":{"md5":"563df7099599d7b132d826a3eef0c8dd"},"res/import/61/61f45545-f8cb-461e-a7a4-0dc551d1d004.json":{"md5":"da459feefddd8640e6b9244750321986"},"res/import/62/62ce077e-9af1-4617-ab01-50d67a3b457a.json":{"md5":"f6a52b0b9e2177bdd9b06a3ca1724632"},"res/import/63/630d3be3-d850-489c-94d3-bc52be73e5aa.json":{"md5":"58e40e04c4b9fe55db5117355cb42e6e"},"res/import/63/63c63e1a-d30c-450a-8795-e60c8408f715.json":{"md5":"b7a75edea1592933db10c4731dce149d"},"res/import/63/63e575ab-83f6-41d5-a0d5-3d1fdc1be9d7.json":{"md5":"3208c7d1cfb3709b221670bb3d2c5a9c"},"res/import/64/64c4df35-90e0-4276-984f-cf32491b2394.json":{"md5":"8d8b87ae7fda69383b995d4f151e97b1"},"res/import/65/653c33e2-391d-4d4b-b922-e48e6b9f3a42.json":{"md5":"56aee6ba41d2d16de2430380f3a0a732"},"res/import/65/65bb91f9-898a-4f92-a37d-fb84bed2cd5c.json":{"md5":"088912fca3a7740919c223725a29f204"},"res/import/65/65cbca5f-f477-47a7-bbec-55a847235fdd.json":{"md5":"4229fe2c824fdd43b7d645735d6c9575"},"res/import/65/65f60710-5e7a-420b-8be7-50f81c38f9c6.json":{"md5":"4cb3bf9dfc5bd0a732da7cc45f12b2fd"},"res/import/66/6656bc3b-58ee-4b27-b058-13208d96e148.json":{"md5":"8d73a3bef7958ad5779afc0333886585"},"res/import/66/667a75f9-c138-42c3-b60b-0442b125545e.json":{"md5":"ea7355a9992f2ac764ee1f2b794f8f45"},"res/import/66/667bb892-2b32-4444-9750-6c7dfa65b275.json":{"md5":"ad1411940264cb4ce992ecb8f8baeb79"},"res/import/66/66a82289-42b1-4fb6-a223-220e32129cfa.json":{"md5":"6318fcd406e249b43b19d435c333518d"},"res/import/66/66b308cb-b553-47c2-a12c-21370349a729.json":{"md5":"65d4695326c9055ab37072c50f8e06aa"},"res/import/67/67368907-8fe6-493f-be21-083e0ed0306b.json":{"md5":"6d20f53581d1ed7c2f43936fe2f8b258"},"res/import/67/6756aeaf-a941-47e1-b050-40340620e637.json":{"md5":"d13fc4113facc01d226f379e8c51b64f"},"res/import/67/676a445d-bb91-4c54-aa79-f748cd862233.json":{"md5":"7b72e2d71f8c29c4cd1b06a449862c70"},"res/import/67/67a4a21e-ebe7-4f16-993d-a8f9c2549e7d.json":{"md5":"1d53b826cec041be12992c9c4b950208"},"res/import/68/680b9fb5-f40f-4b5f-8a1f-6dd65a0c5b94.json":{"md5":"05f1a3ce05cfd67bf36ecf0a9cdadea7"},"res/import/68/680dba2f-6219-495f-b96a-6b93e5bfc6be.json":{"md5":"8f00bfdf3211fe33d88fd917d97dbb27"},"res/import/69/6927a755-077d-4825-a595-3c4c0998d29d.json":{"md5":"f00aeb258542888ca0c3c3d9ab4db4db"},"res/import/69/69d89393-64d9-47ff-8411-f7147b162086.json":{"md5":"76cadde07d866ff6d73f4f38eafd74d8"},"res/import/69/69de2f4f-8180-46b7-8455-eb93ffb620f1.json":{"md5":"272998037c69f6817c04fd2a296c107f"},"res/import/69/69e9a984-fb77-4929-b522-cc3c2e88f5d8.json":{"md5":"ec24b80015cee6ce7c7a01b46f5caaee"},"res/import/6a/6a11e4da-d2a3-4dd3-bd97-9a9ba7b99e6a.json":{"md5":"3f5275504d37a5579b1d51f7d2a5d595"},"res/import/6a/6a16e48b-b85c-47eb-a246-dbde91b1ceae.json":{"md5":"6f2238a04c41635411f2ba8d54f1b518"},"res/import/6a/6a8bf6e5-665f-43b3-ada0-8b141c3c25ed.json":{"md5":"09a42b2efd52d671ec929652ac11ce8c"},"res/import/6c/6c7e528a-9561-44b3-b19d-bb16c2a01489.json":{"md5":"9c3e5643be01f9143640dc369ef82084"},"res/import/6c/6ca96e44-6ac2-4afe-b854-1a7f4a0878fe.json":{"md5":"0b34441550987940b9d9b3947725740a"},"res/import/6c/6cfad644-dfdd-40a9-b947-5644eb2906b4.json":{"md5":"8b8aa87b08bbdc12a81463ff15b8fd82"},"res/import/6d/6d1abc98-8240-49c0-9dca-cfd8d0cc189d.json":{"md5":"6b57571adb81a1db4b40560f6e8dc467"},"res/import/6d/6d733fad-01cd-404f-bc0f-a2e262378be4.json":{"md5":"3aceb896d84fa2814ac8c2f1a8b76081"},"res/import/6d/6d985fdd-4d46-4216-8f13-4a214f0c0977.json":{"md5":"ade5ff262151d7a8194271664812dcb1"},"res/import/6d/6df48294-00fd-4003-bee3-14447d7cceb0.json":{"md5":"3d895df00099dd90f70a6f4503ca2b8d"},"res/import/6e/6e3f06a1-7edb-4a86-bfbf-2cd12d45c41e.json":{"md5":"99768caafdab56e9f0b5f0ed08eebd6f"},"res/import/6e/6e6ccb6f-b30e-4cb3-9f91-ed6d59001410.json":{"md5":"0eb0bbe6a04bc96507ab5b3f57b1dd94"},"res/import/6e/6ed16926-a1df-40e2-b4c0-b9c2bf4a2aeb.json":{"md5":"562e2e9a9fd774a4418ac9bf91a40bed"},"res/import/6f/6f711013-a943-4391-a5e2-5dc5ee2c43fe.json":{"md5":"ee5a9cc59f76ca23db47878ec729beed"},"res/import/6f/6fb8913c-4002-42c2-9c10-e9db64c2b2a3.json":{"md5":"82263a39c24cc3635317a17d5cefb4e2"},"res/import/6f/6fbdb5b6-ff8c-458d-85c8-d08fdf7b03b3.json":{"md5":"586078efb6e11b5d7dcab651841afa6f"},"res/import/6f/6fbdf7d9-eeba-4a7d-b7b4-bba89d411657.json":{"md5":"64ea144663f28e3f1513e953a7d15d89"},"res/import/70/70d93c53-9319-4bab-b392-906d5e829ef8.json":{"md5":"81343644ccd262e20dcdcbbecffa9b5e"},"res/import/70/70e14a7e-9eac-46a0-9aab-6e6584e120ab.json":{"md5":"666a9bd1eb5eb865ba75c59dddfc5ae5"},"res/import/70/70ef7af2-b66f-4751-8fc3-920c00e6e624.json":{"md5":"0c96c13d3f9b6cac9d2d936546ee5db3"},"res/import/71/718e98bd-522b-4ff0-b5cd-e955aa0d620b.json":{"md5":"8865322c5c731add0cd0a37a8068e030"},"res/import/71/71c366f0-00c9-4e34-8b8e-29c1f6a5d93a.json":{"md5":"0f5f835b683bedff79342f36f7cb8592"},"res/import/72/721fb52f-dc4f-48e0-b583-43fb72c4b452.json":{"md5":"bbf07ba06d5312ad48677eebed8dd492"},"res/import/72/72f3f982-810b-4ca7-8662-602d2424e179.json":{"md5":"380698134847d50fd51ca91ee9e718f1"},"res/import/73/73551241-ffce-43ee-9e14-9159c4954e57.json":{"md5":"8766ee1ad6e12d4df80e9356370d92ba"},"res/import/73/73c15f0e-7dc2-4002-b206-11fef2951af3.json":{"md5":"4edd91b8536c1906af7e127c8856eb1d"},"res/import/73/73e9da26-3bde-42ef-9905-9b080302bf85.json":{"md5":"e6639b231ba93c23afab9326bd2d9cfb"},"res/import/74/7411c09d-2f89-4202-9d7a-1101493513d4.json":{"md5":"c3c79a88a6b905b5aa73270d208fa903"},"res/import/74/74885e9d-0ba7-4c31-ad8a-2f5a2b4fc6e7.json":{"md5":"6a9b87ea0466d6b1d169dfa1553daaf4"},"res/import/74/7498f8b2-3d65-47a5-a5dc-3f484a6e5f42.json":{"md5":"4138ba0ed8c52cb702f8e129a858e075"},"res/import/74/74b83ad5-4e4d-46db-8222-cc98a66cddef.json":{"md5":"58ac3ca450686cc6ffcc029e98873f32"},"res/import/74/74e2b334-0d39-49cf-b69d-bbe9c7b373c7.json":{"md5":"87d0ac173136555f027c30b51129d44d"},"res/import/75/7503bd7f-78f1-4c8b-b68b-202bcf26cc40.json":{"md5":"ffce5543bfb4abd54e461802d6d3cc72"},"res/import/75/752034e8-e2df-4b80-8dd5-e14b719d5e1b.json":{"md5":"bc00f537fc3146edfa7d6dddcf7d56fc"},"res/import/75/75a98499-2f66-4c05-a7c3-6efdbf2becb5.json":{"md5":"efc9f02118933cac96808d167e4b69db"},"res/import/76/761858de-4717-457e-aea5-cc8e500b9961.json":{"md5":"e2d33063ad3a802b9c564a75fcdf7076"},"res/import/76/7635d991-faef-4770-bd40-3a3eebb3b281.json":{"md5":"91ebf6abd8dafe573cda41f4eb0625d3"},"res/import/77/77169e70-22e0-4a25-9fea-a1123dd035c9.json":{"md5":"683b67fa30911527e7f107ce9209f143"},"res/import/78/7824e0e7-a8d6-4bed-b56d-de6cede5973b.json":{"md5":"05c0076ffa03a32946adeec62830c88d"},"res/import/78/786006a9-e063-48e7-a26e-1c2ab0a9f7e7.json":{"md5":"f329b681e2d049b4dc13428e0d9a0858"},"res/import/78/789d279c-3505-47f1-aff4-62d2cd22ad66.json":{"md5":"15511e9fd35526e88d78aabca248c3e3"},"res/import/78/78b9174d-35ce-4e92-af35-e003f3348d34.json":{"md5":"4c4a846511625d3ed0948be7e4cfd3b1"},"res/import/78/78e898c8-ab73-4740-912b-74f95a405d93.json":{"md5":"e89d664d90076783c066ac1bdf0bc90c"},"res/import/79/792edbfd-c7c3-4fbc-af11-abc267ab9d7d.json":{"md5":"aadc35ec37514fcc95237be4eff09ad2"},"res/import/79/79a3cddf-5aee-4cf6-b4bf-6a33c1fc99a3.json":{"md5":"28a02c630dcc3865c9ff8ab65f0963b0"},"res/import/79/79ca1461-bcce-4e92-a148-bbd4884778f1.json":{"md5":"79d5ea59478f0dc93eac553563bf0243"},"res/import/7a/7a56407b-28b3-447f-9a20-d16c0a7c03a3.json":{"md5":"8e36eeefa701d6945093ca5bd961bb04"},"res/import/7a/7a731f97-f192-4f9b-ba2f-a5f7e6fa9b7a.json":{"md5":"cb613669d954748b60f67bd3b86b6f12"},"res/import/7a/7a80f347-8790-49a9-b48c-0538a505ae09.json":{"md5":"0592528401ff9a824263fd81e90b8c8a"},"res/import/7b/7b486d14-13bc-4be8-91e6-2efa50fc8715.json":{"md5":"44d836d0442572070a1fd137d1203bd0"},"res/import/7c/7c2ce215-1bd6-499a-a441-a242784bfe85.json":{"md5":"bc2b88e56ea3004c8cdca1ba9c759c55"},"res/import/7c/7c3969d8-f186-49df-ad0e-278e01b5470d.json":{"md5":"bea58e2c4baa3a49e6b3ef3794a499e6"},"res/import/7c/7c4bcc81-506d-4d5d-80b4-b13b9c4694a4.json":{"md5":"b94a3c6ca708a845a41f798bfba10260"},"res/import/7c/7c699688-794b-436c-92aa-8044ae3896f0.json":{"md5":"6ebc48572c76efbcd9b48b639599ddac"},"res/import/7c/7ce05240-d123-4f98-9258-7c67fee072b5.json":{"md5":"74c666d9daaa8a1a06856b9fae6eb1fe"},"res/import/7c/7cf92ff5-ac87-4f89-9d81-598c887891b1.json":{"md5":"abe9537fbc6a2461be13364c57e21d16"},"res/import/7d/7d691697-7e83-4729-a1b2-8f7ad43304da.json":{"md5":"c51d5fa3e9b5863f27dd2fe42eb0f57c"},"res/import/7d/7d776ae8-340f-4a13-ba9e-8c05afa9ac30.json":{"md5":"5e4f21c6d070950b6cb222b3296a4589"},"res/import/7e/7e09de06-e9d4-429c-bbb8-ba766ad5f218.json":{"md5":"b23d393c37b49a996d314054578fa972"},"res/import/7e/7e4b0329-9455-4d54-8daa-8e36668a4a34.json":{"md5":"90265e397fd4bca2a863dce8b6259af7"},"res/import/7e/7e7a797e-7896-4577-92a9-7c39115c97cd.json":{"md5":"bba82159d072ed9184eaf7409c0776a8"},"res/import/7e/7e91eac6-b184-45c2-82c6-92362176638e.json":{"md5":"a89ea8170c7b2dacf0c3199816f56761"},"res/import/7e/7ecd578f-9f4e-4b1b-aa7f-ca8ca0e2e7c0.json":{"md5":"428aea978b0608e74cdb3b8b2369d45b"},"res/import/7e/7edc1f0f-2db2-45ba-8d93-2215736b67e5.json":{"md5":"6ae5c5f9cc41fe5faa1d7da07f1988b7"},"res/import/7f/7f224e05-a30c-4e02-afcb-4985914b24c8.json":{"md5":"4a197cd8b64fdc96caf43e9c70e3e26e"},"res/import/7f/7f5d1ce1-ad62-48c3-891d-2feb0457a744.json":{"md5":"6384a2937aaad327bed6157af0647521"},"res/import/7f/7f83d309-ba3c-4869-8942-2d727697a3c3.json":{"md5":"3c896871f40fe8b579e9243579ef7106"},"res/import/7f/7fd48fa0-f426-4a16-8ffa-35093afdef59.json":{"md5":"895cfc16f57bb0c2e20f140c890f503e"},"res/import/7f/7ff13ca1-7e66-4197-829b-a46e0fbbe42c.json":{"md5":"4d5a81da2ce7671d6106c7c63d3f0bda"},"res/import/80/80236eb7-5080-4170-96ee-a8c4f8a016cb.json":{"md5":"41e5b052ce7fdb55446e8be153e3809d"},"res/import/80/806bc42f-8b88-4a9a-85f1-b5a459b4193e.json":{"md5":"f31b4a4af9ed5dd53c906e9dd6c0ca9b"},"res/import/80/80b84425-e8c1-476a-88ed-516078899054.json":{"md5":"76ad371b1770bb5847b0ef7e41deb10c"},"res/import/81/815524ef-1c74-45c5-9b08-27960b851e85.json":{"md5":"0146881d751e565cc9b3f862599e758f"},"res/import/81/8192a3ff-7ebf-4298-a972-68a6920c2616.json":{"md5":"7ae9720ec557ea912727d840a67d8365"},"res/import/83/8350eb62-c416-4e8a-bb91-30762b045da6.json":{"md5":"cf00fa1282fba2bdebf382036c6c2123"},"res/import/83/835db317-51f5-4689-9dc8-71442c726ab4.json":{"md5":"7990eed8bad4feadbe72c8a90da0b932"},"res/import/83/836d2a01-b443-4b1a-92ca-642a907122fb.json":{"md5":"1bed495035f82740198bcfb5eb7edac7"},"res/import/83/83a3e8f0-e9d7-4eab-a67a-cf9bc5ae69a5.json":{"md5":"58661b8cf071dcd7c5c2928cb5acd7ee"},"res/import/84/841e65ac-50e1-41c4-92e5-f380e937cabc.json":{"md5":"f933a9e00f3aa054823010672eb1d99b"},"res/import/84/84763af1-762f-44f0-9bd4-803a09b047de.json":{"md5":"548aaa17cdaea3ee6813cd6323a3c846"},"res/import/85/8532d2cf-5b76-4801-a64f-cf9e12a138f7.json":{"md5":"114d14bfe2fdf84959f352edb9b7baa1"},"res/import/85/85a8cdbb-b77e-4d81-b843-9852c08c0215.json":{"md5":"a420562d6cf3306345808fbec2949bfd"},"res/import/86/866460c2-61b8-4057-9b7c-69d6912673bd.json":{"md5":"bb1527a819a75d919b4a728ef721e472"},"res/import/86/866ccc82-41fe-4046-9c1e-4466c7933b0c.json":{"md5":"7269e18008a2a319bd9a6c330e3b49da"},"res/import/86/86a5d0fd-9685-43d7-8d52-13c20033db5d.json":{"md5":"d8739920697269eb38dcf876cf9c7397"},"res/import/87/870c289f-6778-4a0e-b7a7-788a831eba65.json":{"md5":"608609509cbfff750613a20515fd9e89"},"res/import/87/8714b659-208c-4b6f-bf7c-69c3ed504017.json":{"md5":"c9ae624237b6bbd7e9337140b9e11400"},"res/import/87/87349c4b-caa4-428d-ae53-549b97438ce4.json":{"md5":"fe2018eee0b687ea7649c2663cf482eb"},"res/import/87/87b90ce4-92f1-4888-ad52-77f4164d6af0.json":{"md5":"9e980dc12ff6c6ffb46404479103f59d"},"res/import/87/87b96191-fa48-423f-b671-8b942f81b8b0.json":{"md5":"d0638c6022b83ff7e2f0e8f04c4b1fb2"},"res/import/88/88b610e0-ae46-4547-9ba7-7f3d35a09c88.json":{"md5":"421dc779ae4999ba23ffe5d387b7e28f"},"res/import/88/88fb2044-2916-4378-ad5b-60c9b7724f05.json":{"md5":"1579e3529565b48ceeae8b482e8f67a2"},"res/import/89/89250d26-0fc2-447e-bf18-58c7af624cb7.json":{"md5":"640528eb641cdae6901a3433df7a891c"},"res/import/89/893d538d-23fc-4e55-8669-b717cb905636.json":{"md5":"504ebe7d15dc806f2a45b66711d4ec56"},"res/import/89/895585dc-65c0-41a6-a6c6-fff6ec95714b.json":{"md5":"092b00e4bab5d20315825d10365ecad8"},"res/import/89/8976316c-cae9-43b9-8fa0-36532ccced65.json":{"md5":"69426f7ad50076d609b814f895824516"},"res/import/89/8988418a-46a0-461d-959b-07af93600051.json":{"md5":"cc3d995f47aaf59103884db634526a64"},"res/import/89/89f3e2ac-26c4-4ad2-8039-c54a4aede48f.json":{"md5":"c396ef24c25ce6e423f312160a41e278"},"res/import/8a/8a1ef75b-231d-4577-aad3-4ccce7a1cd95.json":{"md5":"c4e8167b1cd23522d3fce9ed9c3dca71"},"res/import/8a/8a68b8fa-1bcb-4c9a-92cb-bd47c4bd5df8.json":{"md5":"9e995ab147ebd0d243bb1dd98f0b60ef"},"res/import/8a/8a7516b1-6171-4406-8413-297aa4123326.json":{"md5":"f7b16fb0d113169e0ce54b5aaedc90e0"},"res/import/8a/8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8.json":{"md5":"57b2648002793b7280f3d60c2ad408a1"},"res/import/8a/8ae39b2a-9963-42f5-8988-e5152803f870.json":{"md5":"59a93b806c6e1d8c1b8d0b00abbfffa1"},"res/import/8b/8b018912-da14-4c07-a104-b7f00b41e9a9.json":{"md5":"ee3caed568381c7fb9564bbff9739f43"},"res/import/8b/8b77d34d-496d-4e36-aa08-27096567bf0f.json":{"md5":"778747c9e576bebfeb368465b18d6837"},"res/import/8c/8c082abd-20ad-4fb2-b1e2-4b99e943da66.json":{"md5":"e48b8ea82cc519accaddf72a41e75d4a"},"res/import/8c/8c2e8172-65aa-4d5f-ad62-5383e3f1f939.json":{"md5":"35bd2fca35aeae7187111bb76f4470d1"},"res/import/8c/8c324292-6062-4aa0-ba44-051332d4e31f.json":{"md5":"71a8831b5ebc1cfe99d0a2f7e284f3bf"},"res/import/8c/8c3ba05e-1fbf-4af6-934e-40020fa8a371.json":{"md5":"d6007deee0339ccefbe90d62ad7f4976"},"res/import/8c/8ccc7c83-6ae1-4396-b287-d7cdf5dd87cc.json":{"md5":"55b679c63375c790ae930d7b63e68a41"},"res/import/8c/8cdb44ac-a3f6-449f-b354-7cd48cf84061.json":{"md5":"790fdab2fa0bc6b4915d6ca2ac1d244e"},"res/import/8d/8d09e976-25a0-4c78-81cd-65fac8505830.json":{"md5":"34d9aa366413c391a0aea547f40aded9"},"res/import/8d/8d68fedf-6682-4a51-8977-b860121d0b71.json":{"md5":"5040ec1f15b013d34683853ce57c5069"},"res/import/8d/8d9a2026-aae8-4db2-b6e1-1d89eed524cf.json":{"md5":"10c88208f4336287db83993acd0e37e0"},"res/import/8e/8e0d9625-3f6f-46a6-861b-b5301050174c.json":{"md5":"2fcc6c2aff8388a407f82f4ec5107436"},"res/import/8e/8ee53e49-397a-4974-b996-923c19d3cf0a.json":{"md5":"ee9e54e864d8fffdb437b9e2da3ad93a"},"res/import/8f/8f272adf-0dee-464e-bfc2-bd8bd6f38479.json":{"md5":"82db422bc2b4fe5dc04162c25a4c9c9e"},"res/import/8f/8f63fcfb-d714-44db-b840-2cde17648738.json":{"md5":"54993cb0bb2641b01baadbc6a7474082"},"res/import/8f/8f8b031e-48ad-4814-8eb0-0e51c2961831.json":{"md5":"fd2ad66040ffd25073e5f359c63b0774"},"res/import/8f/8fa76a26-7936-4bc0-af9b-c81d5f39cb0b.json":{"md5":"a66c7cda4a046f8d0b564f67f919b69b"},"res/import/8f/8fe224e5-640d-4a87-99b6-fa1e261713bf.json":{"md5":"ece9a1a574dfb33da33fe7c16befe7c4"},"res/import/90/90e4b45c-8044-49b6-a842-5bd38dafe909.json":{"md5":"4b496247bbe5213385322d772b99b096"},"res/import/92/92051a13-178a-4963-b761-28430a7d777e.json":{"md5":"b4bce987e41c8aea370dee075364df40"},"res/import/92/926fad4d-58f9-4703-9298-300293e852cc.json":{"md5":"706cd4ff31fb4f7bcdfc659a6e96afba"},"res/import/92/9283cd92-ac83-457a-b2e0-acaf8c7c46e7.json":{"md5":"34d5ed24d94031907f5e3a560f6bf465"},"res/import/92/9289e00c-6c8c-4489-b57d-ee322cacc7d8.json":{"md5":"307f9ab1285ec119dbb80113c126437e"},"res/import/93/9326997f-8b14-4719-9606-13e3b7ea148b.json":{"md5":"7477b2c104bb3035e04d041757ce1b24"},"res/import/93/932b763f-9917-4284-a122-fef5a727440b.json":{"md5":"242d6381c6af069477b794822922c237"},"res/import/93/93c93965-d3d4-4483-a96e-497e1b243dbc.json":{"md5":"a57c464419ed371d62da4d2256059195"},"res/import/94/94195fae-fcaf-440c-95d9-46b8dfa27914.json":{"md5":"08e34dd5cd59d58f355ced5a41d3d4ed"},"res/import/94/94879ab8-1f28-4dd4-9e75-4cbe27246ccf.json":{"md5":"af492394b6e2949eb15ca74294795b35"},"res/import/95/95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596.json":{"md5":"a10d5a88b865b76efd50e5a5c860dfca"},"res/import/96/96053a47-4c56-4e4c-b7f6-1d11becf13a6.json":{"md5":"d42a51bfce5c59aa7f712511202c0d2d"},"res/import/96/9639ea2b-ad15-48ac-9335-68c6e2f45330.json":{"md5":"88cfa01e2ebd2950d2bfa197b7e3ae18"},"res/import/96/96934e02-32aa-4e99-9cbc-de01b7dff81b.json":{"md5":"c37abc56959a69d192019d93a53958d6"},"res/import/96/96e9c302-8798-4e4b-b6c0-32a35c228c8c.json":{"md5":"40eec686d8ea861594ddd0ca1e029951"},"res/import/97/97642bab-67c3-4371-aa43-b4c666583d36.json":{"md5":"4f07c082dd4ea06f8e11b2d3ed2f5779"},"res/import/99/9935d202-1938-4b59-98b7-ba8383303d8c.json":{"md5":"2578c9d9154ee15359070eb3ecf9b520"},"res/import/99/994d39b8-2a1b-401d-aa23-1be67d06b452.json":{"md5":"50750315e4cafdc7653d72493862a9ec"},"res/import/99/9958d67b-8a88-4f6d-b50f-6efda2222eb8.json":{"md5":"2eb6217a0dafc5150da82e5875d62c8a"},"res/import/99/99590587-bbe2-476a-8f41-0ee43fb6e872.json":{"md5":"457f663964d86ec5c6113c764f5ead11"},"res/import/99/999350d5-eb8e-4a6e-9ac3-f1690a3ea842.json":{"md5":"37014778ed6d8d08f12fbae980c265bb"},"res/import/99/999f2d03-9986-4725-8680-fc16a62646bc.json":{"md5":"0403a77ff331c92733b8731af03dbe89"},"res/import/9a/9a015ff4-f39b-41a5-bc1f-fff72dafcdb6.json":{"md5":"a96a6eec0b0d2189b8242db7e1aa018a"},"res/import/9a/9a8cb0af-4120-458d-8352-b4ca140d5842.json":{"md5":"6cac4dda08f9e67575b256760932eb58"},"res/import/9b/9b2e97ec-e82c-4602-b9b7-3c073095962d.json":{"md5":"392f5bb5a3781031553df0c26e8f6ce4"},"res/import/9b/9b326c9e-2120-4262-9131-04cc8d824e24.json":{"md5":"14782ca1e9b9b8279584805cb833ae5f"},"res/import/9b/9b5079b4-d62b-4dcb-95c2-27e71c3d757d.json":{"md5":"b804e0a1d1f24c13360b1a7434bf93b9"},"res/import/9b/9b555350-c2ec-4259-b6fd-1dd07a25b530.json":{"md5":"ec15e660b6e2b7781c5a16b66ea7c84e"},"res/import/9b/9bbda31e-ad49-43c9-aaf2-f7d9896bac69.json":{"md5":"f1358f65bc14173e289645a4d2a7dfb3"},"res/import/9b/9be070de-91ff-4f41-9b82-fd2adeedfd27.json":{"md5":"d3db222c54aad9e3879b90193467c979"},"res/import/9c/9c24b693-4be6-4fee-8fec-9614208b37fc.json":{"md5":"54345ec5e07a0cd25c425f4d6ed8cb68"},"res/import/9c/9c49f08b-f821-4a09-9f66-c1711f0330e0.json":{"md5":"4c84edd96163858165b32dbf5c574b7e"},"res/import/9c/9c8dd523-f857-44ba-ba67-77eb5c258e76.json":{"md5":"5e24ab644d496273381b69a4b0bd7e32"},"res/import/9c/9c8e2f45-a85d-4b5a-9347-5868f3e355bc.json":{"md5":"19fae13b1db39a18c25257642ea864ad"},"res/import/9c/9ca3657f-6216-4cb9-bc0b-f6972a05ae86.json":{"md5":"ca7cc8cf6e2aa606c572dfd4be829b70"},"res/import/9c/9cc2dc4e-e55c-498b-83b1-ce01f3804123.json":{"md5":"3965d73f94b039a74971dc295623bd71"},"res/import/9c/9ce0c7c4-7811-4644-84ea-63a822a000fb.json":{"md5":"ca26eba28eb6f51e830249deac4ab125"},"res/import/9c/9ce1fd88-86b4-49a4-876d-9da08ddb294f.json":{"md5":"9212df74e7e7033c771211d2f4d3acf3"},"res/import/9d/9d456e8d-b4a7-492e-bc9a-bd60dff93263.json":{"md5":"a384fd2adef186d23af5c054163b8e67"},"res/import/9d/9d6427da-be3c-40e6-adf5-144216d8db41.json":{"md5":"2c1b3a934af796242771f14971acce01"},"res/import/9d/9deb94a9-3861-4d48-b17c-2dc048d22da8.json":{"md5":"e1b7f7941ca3b4a5dadc67d1cd7c74b6"},"res/import/9e/9e65e011-14ff-48cd-935d-4cda9c43c9a3.json":{"md5":"9758eb0f05c6c8d70dab952983269497"},"res/import/9e/9ea541bf-5c7d-4910-8330-31e7f474c8b0.json":{"md5":"1ad3a6b266fddd28a1734251ac4690c6"},"res/import/9e/9ef235e3-46fd-45ef-8e0a-d6531e7f1ffb.json":{"md5":"79014c8de30c2721b8d0199b3681a1bb"},"res/import/9f/9f844e2e-44df-45d4-bc1f-9cdef2d8d1cc.json":{"md5":"434a24b75063f85615a2f9004b43347c"},"res/import/9f/9fdbad27-6226-4502-a818-f93f2d543cf8.json":{"md5":"0f4b0bf9560501e929f38d788c0fdf0e"},"res/import/9f/9fe76483-1a41-4ec8-9779-147f104cf4f7.json":{"md5":"a3a085407257e1beeb490942a333b804"},"res/import/9f/9ff38dc8-149e-464e-b574-d093ce5967d5.json":{"md5":"4fa4fc2dd8f9a4c156638559cd05bd9c"},"res/import/a0/a046059e-0c94-4865-a6c6-be200f23181f.json":{"md5":"66abe633e4e1511413de379cd13429aa"},"res/import/a0/a0a634b2-48b2-4a89-a985-ab8b4c00e172.json":{"md5":"63b47653825dcc91d7b06e8b892af01f"},"res/import/a0/a0fc3f61-d6aa-459a-acce-8203cea59a66.json":{"md5":"87b05e4a34e08da9806e61f9bf1db1ba"},"res/import/a1/a1aca5ef-b367-4b65-ab8e-e567e039e9c3.json":{"md5":"21468885c15cfb370ad3d6858f208b10"},"res/import/a1/a1d30b84-7487-4eb8-905e-eb5e1618564f.json":{"md5":"3ec03c68ac8ae2d80ad548b0e3c2d81c"},"res/import/a2/a230e2f8-3203-4f06-8299-6a187f59b5eb.json":{"md5":"edc0db870e995beb66b4b91e4703d0a1"},"res/import/a3/a3b4e04d-1fbb-487e-9a70-18596c2a2239.json":{"md5":"277e08ef3c37f9b19f7bec36ebc8ea98"},"res/import/a4/a42cfa3a-43b6-49f1-be9b-8839596e9976.json":{"md5":"65c583f9e3ba9936a31c5da1b3a49067"},"res/import/a5/a5490aed-a2bf-48f8-bfdf-5f48327a061f.json":{"md5":"1618092712ebbcfe889b417361db13a3"},"res/import/a5/a5c2bb3a-45eb-41d7-ac46-f2823c669104.json":{"md5":"6fdf613b385d86b3d3944d3c46a8ce80"},"res/import/a6/a6896a4b-83da-4e5e-9868-8d29425ee730.json":{"md5":"fc53fe09a84d4d394a30db645c92d116"},"res/import/a7/a78cfa69-d2ad-43ae-a956-44b036f9683b.json":{"md5":"057918c02ef6852aee8afc0e5d29a9e8"},"res/import/a7/a7b08c37-ea5d-4c04-85ae-ec901991e574.json":{"md5":"4123dc744dca5884979d6c772f6c960f"},"res/import/a7/a7b39b8e-43c6-476f-9581-8ee2eb9562c8.json":{"md5":"1e7e045517a5ae43bfe95655670a2f97"},"res/import/a7/a7f61c8c-a8b0-4472-8bd0-a81aa1645b7b.json":{"md5":"5c1241632e7aec63a9fb9f49173c8ce0"},"res/import/a7/a7f715ba-5366-4101-9dd3-32546913101e.json":{"md5":"68f1a4fdac46e2a0457cd50bc5f45741"},"res/import/a8/a80b2d0e-eb0a-42ee-8736-2381b83cb665.json":{"md5":"7a5807e691bee69ed146530f4aff6883"},"res/import/a8/a812d421-cef6-49b1-88ec-f64a8d3fda71.json":{"md5":"f03002d318c58e02aae47bf710238201"},"res/import/a8/a856e807-c132-4e91-bda1-b95a0593291b.json":{"md5":"942733f4c38843960e694f3d9e736928"},"res/import/a8/a8880732-446c-4797-a83e-7b1376458309.json":{"md5":"ad9aaa41c5cbbb503c23ea1998f797e5"},"res/import/a8/a8a89ffa-83ed-4e78-a9b3-2d3a6e129f7d.json":{"md5":"4f87121005d16e61842a1fb0ff2b2095"},"res/import/a8/a8b8cff8-f7ee-405a-905d-00ee80a86c86.json":{"md5":"529632220d8b1ade8282c67b5e4969f4"},"res/import/a8/a8be677d-5057-42f3-9c45-ef5b5595b5f5.json":{"md5":"d8f12bc358781315636f2f10557c7b72"},"res/import/aa/aa33de03-9b55-459d-b5b0-8e7c6fb20b00.json":{"md5":"f135951eba7312b57b51d5eacea84e93"},"res/import/aa/aa52ef21-75a9-45ac-9725-afbf473df0b7.json":{"md5":"14d7ea3f64d99e4d9f7fd83a0fda929e"},"res/import/ab/ab2500fa-9ff8-4489-a1c7-5febd50136b7.json":{"md5":"dc70c117fb22243266bbc515b0d9bd18"},"res/import/ab/abb55ec9-187f-436e-9a1a-5ba431862e87.json":{"md5":"2c73af2e7d7df81a16da2a5dd7ba83eb"},"res/import/ab/abe298a3-71f9-4e37-908d-007aa727983c.json":{"md5":"ef448372f19a6cc195f8966d8c45bdfe"},"res/import/ab/abf21e13-82d4-4347-b135-b547dfbbe254.json":{"md5":"0da14c414dfbfc5745b42b74c642d013"},"res/import/ac/ac2f73dd-07af-497f-9af1-a6c12260d106.json":{"md5":"58c98e50f32cc37cde1140cdf051ca1b"},"res/import/ac/ac66e690-86e7-4aee-9368-fa9e02643e0b.json":{"md5":"07814bec18a28862f76263b9741d8b13"},"res/import/ac/ac8be0c2-1c7f-4675-b462-dd8f52283017.json":{"md5":"80642f0ed8669892079d86e88c1d91dc"},"res/import/ac/ace46e09-37ab-4607-9282-99981f565cef.json":{"md5":"9f055a6942ea580865dec68087be0d44"},"res/import/ae/ae66c8ea-bf8d-4490-805d-e9d07577e36b.json":{"md5":"8579fb4ace249579d9dc9ab158662f7a"},"res/import/ae/aeae578b-3e35-42a8-aa3f-1bcae5b1a84b.json":{"md5":"3ba0642ba06145876d9879beda80b3a3"},"res/import/af/af1c4afa-6fe9-433e-a9eb-5fb2e7086fd6.json":{"md5":"cedee15b9cbbc1bd8857b8eae7f93119"},"res/import/af/af421aaf-6a5b-4663-a033-8ed750ca5a54.json":{"md5":"0bb5e7af7c8d12b3b7720e898510239b"},"res/import/af/af984eb9-3ddc-4c57-aacd-82887f7a19ee.json":{"md5":"1a5329910ec32a76a0315e7326413500"},"res/import/af/afc96215-f657-4e45-b5e6-ff5152f52566.json":{"md5":"bbfbe6716abbb9bce934101a6f0eb3ad"},"res/import/b0/b03dc8dc-0c47-41b0-96e5-e638457d4fa4.json":{"md5":"001802d95d17f23b39941583dfce189d"},"res/import/b0/b043e12f-af52-49e5-ab0e-17f848fbd3ec.json":{"md5":"c67a08dfcbce7d5b5e44d043b2017e90"},"res/import/b0/b0737cf8-25e7-4122-a577-66181b3ffbb8.json":{"md5":"51c1b6af20c1a8e3c7b6d0a98e099448"},"res/import/b0/b092af06-2d62-4a4f-ae7c-103926cb8a53.json":{"md5":"0d7c315c81f16224cc52c7c0dcd4611e"},"res/import/b0/b0a14769-d96d-4be0-b02e-fbddca936daa.json":{"md5":"387c80d0fb49ee328efbd2ec1044005a"},"res/import/b0/b0ba2ebe-a39f-473f-8de1-4b49c8690940.json":{"md5":"be96727be3e8ab6bb2f9d97f848e814e"},"res/import/b1/b1671f1a-3797-4611-a461-430f8836ecc4.json":{"md5":"6e96cdc7dc285019f4b3221adedb70d1"},"res/import/b1/b1851886-6654-48f8-bbda-22f762d3e3b3.json":{"md5":"ab691e04764a3650b43b499e57317cbf"},"res/import/b1/b191c7fe-e16c-496a-94df-6cfd5865f8f2.json":{"md5":"9a582b942e29d17e422026d628e24881"},"res/import/b1/b1b5f887-6e69-4701-b38c-b25252c3a569.json":{"md5":"b256002341e58b3fa21b8b50451c0827"},"res/import/b2/b23a8d60-d314-40c1-9abb-424a335ddc26.json":{"md5":"7dead2071845aff9b4921576cacc616a"},"res/import/b2/b23dea61-eec0-4d8b-8397-5148277e21ba.json":{"md5":"a78a7c898ab17767f128186d79a31fa3"},"res/import/b2/b2a05403-3e08-4089-852f-d5b90261ade2.json":{"md5":"4e50a1c37eefc1bbfe85c07a0552c6eb"},"res/import/b2/b2bde301-3bb6-4d07-a5b0-99cafcbec717.json":{"md5":"123398a35504bb9c9e2aebf1c097cc67"},"res/import/b2/b2c1781b-17c0-4385-ae58-5ca7a67b741d.json":{"md5":"944b41e43a0ed2c84e62b50a3303d9a0"},"res/import/b2/b2f29176-11c6-44dd-8c7a-0638772e4ead.json":{"md5":"2edc3105f78c0bb523bea532b7d67d1d"},"res/import/b3/b336e47e-89fc-40d9-9048-d4bfa232739c.json":{"md5":"e2ddf4499f363974e795cd757de61a63"},"res/import/b3/b35a9d33-5790-459f-950c-eee12b27056c.json":{"md5":"ff1927a910fdbd8866b33a3ed769d194"},"res/import/b3/b3daa091-3e8e-4358-8255-7543c401efd7.json":{"md5":"e8d1af8db8ae328b2c12b068006c2d9b"},"res/import/b4/b412c14f-56c7-4725-8896-d342425609bd.json":{"md5":"d503037a8efc41851e47dd6e1006b69a"},"res/import/b4/b44ad3b9-5da6-4f10-89f1-630768646ed8.json":{"md5":"147022002a7f0db949357ae8a1454add"},"res/import/b4/b44e445a-e2fa-4326-9080-22ffacd9208e.json":{"md5":"42270f49fa5d489bf7a9fd8957600236"},"res/import/b4/b460ae13-6304-4916-a065-092f5544ae00.json":{"md5":"73d43af9ec23e953581736eb429afe7b"},"res/import/b4/b46b6ea1-67da-4949-a2af-45e76463796c.json":{"md5":"49601f2baa1ea6db16dd134921f69152"},"res/import/b4/b4cd8eb2-b901-43e6-85c2-8791641cecaa.json":{"md5":"59d62aa255f44a1e819c63388cb4dd30"},"res/import/b5/b511fec1-ff0d-4755-84bf-7a89eceef8bb.json":{"md5":"b4bdcfc3773c40bf3a4703c723893ca8"},"res/import/b5/b526316a-0879-4b6e-8b03-63cf91505eff.json":{"md5":"2d657d9302825b6b237aaa67e83276dc"},"res/import/b7/b72b5f69-e7e2-4eb0-ae43-d668c5b4609a.json":{"md5":"47047db15a64f928463c7f9995012604"},"res/import/b8/b800145e-5730-491d-838c-a1837abf5b7c.json":{"md5":"78056e211509556569a0cfc033f920fd"},"res/import/b8/b824bcbe-b02d-4032-9eee-253b4368c088.json":{"md5":"a86f1858fc020db96c0e81f5cb3d59e9"},"res/import/b8/b83a3ad2-17dd-4c8f-9c20-30dba9f80f99.json":{"md5":"2722b8608cdb6f40e35d361b7db965d7"},"res/import/b8/b85a52c9-fae9-4d2f-ac10-238071cc869f.json":{"md5":"82cd93d22ea64f4a8e0813441264430e"},"res/import/b8/b874b9e3-55b7-46b5-911e-46d8e00ae34d.json":{"md5":"4f6229b64c991122aa107a8e8d266b55"},"res/import/b8/b890c454-24ff-4185-a2a3-f004140a8e5c.json":{"md5":"a837bcd39a8f7702227b8c0d482ec3c6"},"res/import/b8/b8bed57c-7c55-41cc-8f87-b746d4bf0c73.json":{"md5":"52373c742e36bc7922b6f0e0fb54a36d"},"res/import/b8/b8d90545-c2e4-408b-891b-bc8a6f2f72ac.json":{"md5":"1b45c6e67027febef7b3744ef347506d"},"res/import/b9/b9abadb1-b872-4b4e-b997-81d092746c94.json":{"md5":"ac41d81c3962d2fe5d74cc5ddc790828"},"res/import/b9/b9e6033e-3d63-439a-bbcb-ef77a7574dcb.json":{"md5":"edc7e49f335e9d8093019c71c2a231f2"},"res/import/ba/ba272c1b-eb47-4939-9878-2971c91fa764.json":{"md5":"89ac97589e781914d7b1cf15f1bc9cf5"},"res/import/ba/ba318dd9-5759-42a3-9d92-dd5765808651.json":{"md5":"dce30a60d472f16b45dd9ffd97ed9941"},"res/import/ba/bac6f5f0-d06b-41be-8122-b47ea55c8788.json":{"md5":"6b031b7d4eaff3d995e278e8dbedf9d4"},"res/import/ba/bae96e0a-012a-4029-b8db-e0ddef5133e1.json":{"md5":"b15e79c1d4863094259e582187b0962e"},"res/import/bb/bb32a3d6-8237-4434-b9b2-286b9cc07dc1.json":{"md5":"4625bf3cd26f99dd8d17a8e772d5f749"},"res/import/bb/bb4e83c3-ec89-44bc-bd44-70431b9bd933.json":{"md5":"820867dd59d6579f7c6bf7e48ca9caf0"},"res/import/bb/bb5e640f-7f9f-48c5-8695-deb1e57f0a91.json":{"md5":"185711508fed860c9c9c2d5a36703cff"},"res/import/bb/bb6c6ad0-5e36-473d-a41f-370dfcdfcce5.json":{"md5":"f72d2e4b2f70310f63bdc63ccffc225c"},"res/import/bb/bb9fa226-e1aa-40f9-955d-14c6c361d7be.json":{"md5":"c9c5f4efe2e163a53560cdebe5412447"},"res/import/bb/bbb5fe8c-0f31-41f3-8774-635da092fbff.json":{"md5":"3449ac119d5ed24f7c61f58df27c8d69"},"res/import/bc/bc6eae82-6c8c-4d2e-be6d-e02ae3f5be07.json":{"md5":"e2a9ee43372c685057d36bd3ee0c0e39"},"res/import/bc/bc866d92-d324-4d6b-91bd-5b26df85577f.json":{"md5":"180b10c0dcf2d7c8be45931c75d60328"},"res/import/bc/bce1c001-43f5-4e94-b2ca-8460d5a1960c.json":{"md5":"46c3e8d1491ce6d64545603c24f2eea2"},"res/import/bd/bd489e17-6703-43ae-9f9a-f4962e2b5f6a.json":{"md5":"d688b012d174fdcc8ddeb56ddaaea680"},"res/import/bd/bd840aff-153b-4609-9f4e-c203d8d31d2e.json":{"md5":"08a6f2f62e97805b3c69ece9d6e59043"},"res/import/be/be329022-a763-47b1-a16e-55e317f4464a.json":{"md5":"eb6a6b622073a702ebe949a6cde45fd8"},"res/import/bf/bf6861d5-7745-42f4-a6a7-82278bb6d583.json":{"md5":"d461930e192be2c3243487182690d609"},"res/import/bf/bfab0cb0-774f-4c38-8263-4ed7c6c763f2.json":{"md5":"dc60a21d358a5d086db68ea8fbe226d5"},"res/import/bf/bfaea9b4-45e1-4507-9f6f-612f604c2d3d.json":{"md5":"c9b3b333013423a37b9987384732d9cb"},"res/import/c0/c0371335-9e49-4fb9-93c3-706e70fa6816.json":{"md5":"fa221b09522fdf1efd6f87af450c0f35"},"res/import/c0/c04ea0fb-d731-4b97-acc3-ab81254f3b65.json":{"md5":"cc58e4766019ad912c50108985a0b097"},"res/import/c0/c08802bc-404e-426a-a93c-7667490b5f2d.json":{"md5":"8768065a01dda40dad5737b8c4bf39b8"},"res/import/c0/c08937b5-d001-4d18-8270-cd3ec1f0d4c0.json":{"md5":"4027df15bd2abca9f4af6355689733a3"},"res/import/c0/c09b72bf-c8e1-428a-b444-a476a552f590.json":{"md5":"8c02ded923a4d2e0f5afc8c6dfeded49"},"res/import/c0/c0e07b21-f5c5-4c49-ba3b-2240d9bde094.json":{"md5":"53feb4f888b21b3bd9b47e595af5c97c"},"res/import/c1/c190547d-93bf-45fa-8e7f-43847fc0ad26.json":{"md5":"c0ca994c346acac5fe8577d4a4dc6dcd"},"res/import/c2/c20fd7f7-187e-4c40-8183-f6a896a2aed7.json":{"md5":"c6e0379aeb4b36490ad2333431c851d5"},"res/import/c2/c2236cae-cdc3-41d4-a58f-b5b4e18fb6e2.json":{"md5":"e9c68909d7318718935a8a1af51900db"},"res/import/c2/c247a0e4-43d3-4d92-a51a-6ed4c7a8c040.json":{"md5":"a554de138945e9b318bfaae62d1342a7"},"res/import/c2/c2f575b6-fc89-454e-b6cc-f4fb310e9b19.json":{"md5":"3c970b5f384bc3466d8752feef446cb2"},"res/import/c3/c310366e-416a-4166-ba90-9b5a589f1dd6.json":{"md5":"635d511aab5d4373b22ee161f768970b"},"res/import/c3/c35aecc1-b59d-4b7b-a4c9-96ae664695f0.json":{"md5":"8632520f58ed800c9f437abbb3a3d2b1"},"res/import/c3/c35d6dfe-70ee-4bc0-8bc8-38b9ec4618f2.json":{"md5":"ffa2d3b90102b6f0571b3f4f22f1121e"},"res/import/c3/c3b52d38-8738-4f33-b235-5345a68dd85f.json":{"md5":"7e5dc1c3c05e7b351a93cb629529fd11"},"res/import/c3/c3c044c5-9bab-4f50-8fe9-38982a5a648e.json":{"md5":"63e6826420688608fda6e7ae49827bcf"},"res/import/c3/c3fde634-7152-4408-813e-581c2ca09f45.json":{"md5":"5be621a18941b08b6184ac6c7a6be7fe"},"res/import/c4/c418c218-d861-4c6e-85a6-a1917cb2607c.json":{"md5":"a6e240a8f34d9ce2399a54d8d35c399e"},"res/import/c4/c4d40921-9a54-4928-8409-ce5c5c456840.json":{"md5":"4387e5d061b1930b45a99ca091d4566b"},"res/import/c6/c600d178-02b7-4c68-920c-c79cf0f74790.json":{"md5":"a10b3efb6d620dc9d0bdf224f2e7c19e"},"res/import/c6/c60480ec-5571-4301-a6d0-b7e52258aa6f.json":{"md5":"4b2dea40f987890e8a37ecf6bd899448"},"res/import/c6/c618bb0c-1c9d-4c1e-aab8-1cb593fbdf59.json":{"md5":"f7c56fe5c2183c1f48531dff2088ae40"},"res/import/c6/c61b13c5-2120-409a-a83c-ad8a3d6fdc2a.json":{"md5":"89a7a5cb2d600b2a903e830335d8e2eb"},"res/import/c6/c6792fab-a883-4d0f-8ec5-ad4d738671cd.json":{"md5":"352321104b332756da2eea0e812b43b3"},"res/import/c6/c682722e-501f-491f-83b9-6ac4cf7101e4.json":{"md5":"18b1f3270a4c7ab0a0eb5cd48a406cd9"},"res/import/c6/c6fea8b3-7baf-46b6-85d7-e370a60ca2c5.json":{"md5":"49ebbe2fdb942aded152fa21cf1b4279"},"res/import/c7/c7289abd-1844-47d5-87b2-aabd502393c7.json":{"md5":"8c259549f6f3237f9fa5ad142fb0a863"},"res/import/c8/c80abbb2-c412-4736-96c6-734930fa9dd9.json":{"md5":"5695bb5ec8d88f5a08e708a4902fc917"},"res/import/c8/c87018b3-f070-4296-89a1-b381ed5cf759.json":{"md5":"7c635e83c3455a96b686ed45ad9fe513"},"res/import/c9/c993886c-1bec-463c-a4dd-baab41d8173f.json":{"md5":"5deb2c733887a5a06ad768e34279b7db"},"res/import/c9/c9b8641e-3063-4634-b242-cb58a6a1215e.json":{"md5":"556491425f04ff804d5ec3108a750817"},"res/import/ca/ca63a0ab-a2bd-4ec1-8ec3-a72e34ed2499.json":{"md5":"5f3b33540d26a2156859a4092c8406cb"},"res/import/ca/caae3f7d-5afc-40df-b058-2c229216895e.json":{"md5":"355dff85f87f240fa5a5cbe6fda344cb"},"res/import/ca/caeb40a8-4f48-4fcc-b20e-2406ff408450.json":{"md5":"881dd74b6824ea461fb0a54b4cd40d92"},"res/import/ca/caeffa32-dd50-48ec-9df4-2ad873d8535c.json":{"md5":"aef146974f20d6b003aa7107184d926a"},"res/import/cb/cb10cfc4-0088-4bc5-8f3b-a2af00fb88b1.json":{"md5":"5b8f71f94c9ea7f7de08b8c3d64858f9"},"res/import/cb/cba1400b-4e40-44d4-a288-1d74f6757332.json":{"md5":"00648a1746026ff881124d18dd22fa5e"},"res/import/cb/cba31817-ea68-42a5-a400-1b979dd6e434.json":{"md5":"eaea0f4f8655a1703c40278b3bca135d"},"res/import/cc/cc419b28-eb9a-4386-b836-1af7dac0d184.json":{"md5":"0c39f0d98eb617998f8695bfa8c8676f"},"res/import/cc/cc642103-5997-4603-a5ba-d01acd173437.json":{"md5":"1b551a2dc847e5e200c8599d787c735e"},"res/import/cc/cc85a55a-6a5f-4376-a1e7-9def6d14f73b.json":{"md5":"7541ac1654943774ff2e43dae2b855c9"},"res/import/cc/cca17967-5bea-40df-ab3e-656c77719051.json":{"md5":"e0ffd17fc762fe26c65af692f5b39897"},"res/import/cc/cccb9d35-4492-48ef-87e1-e550adfca1c6.json":{"md5":"a6ae45f160dd3d793c6fcba42f4f6730"},"res/import/cc/cceeb278-53dd-49a2-ad52-9aa7a73203da.json":{"md5":"1fb148b825f217005271f3f4c433363d"},"res/import/cd/cd04cd0d-dc53-421f-8970-f8d8069d4746.json":{"md5":"d3556971eefb21a34c79f6d4c5a6dc2b"},"res/import/cd/cd8f59ff-9bdc-4b86-8bd8-2ed99cc3da9a.json":{"md5":"3fbe3a070bbc8d5d245e24ce7bf6b3e9"},"res/import/cd/cdb95d9b-b7ae-4d5d-bd67-fa757a4c282d.json":{"md5":"e5ddd3ebc417eb9f2adaa1701f6c5785"},"res/import/cd/cdbf24b6-487a-47c4-89c8-a26c904af2d4.json":{"md5":"6b5b36509e444c89d928a7ead3be992e"},"res/import/cd/cdfd34ab-c52b-4342-8613-ac4356a0f29f.json":{"md5":"de07d89f1ae909cd60800e66ce6e5170"},"res/import/cd/cdffd874-3c5c-4b12-9512-b08a00b6b00c.json":{"md5":"9cafa10b63fab01c9d42af224a5f2981"},"res/import/ce/cead5d37-33b1-4d99-a054-e64168a887f6.json":{"md5":"9fc4296adb09c2ed92b393ee7c12d03d"},"res/import/ce/ceb4144f-fb9b-4869-ac37-cbcff0a0bef7.json":{"md5":"45fadcb26c315b55dfe0e5c97b4b3dd8"},"res/import/ce/cedd15d4-6953-4ab8-b2c3-db44e1d961f6.json":{"md5":"1b899a9e52bd299d8324254189a6c95d"},"res/import/ce/ceddd85f-1240-4cce-81d8-d3cb25c13b31.json":{"md5":"66e965e291e276fc7897b5a502c9fbe4"},"res/import/cf/cf017ebf-8a52-4b86-b6b8-e84ad1dd9ff0.json":{"md5":"d5d240044a366db6f50a31e4f2ebaaf1"},"res/import/cf/cf1eac64-de9c-4dd6-9a26-a417abeb55e1.json":{"md5":"1cfc43b2cc9fb0948360cf409dccf246"},"res/import/cf/cf399da5-208d-4592-827c-f2a9c43d9b12.json":{"md5":"f5b599ff7882b10915ff11ea57b8e15e"},"res/import/cf/cf4f1ee6-e71c-44a5-adf4-d71d7d33530e.json":{"md5":"fbc3a73554a4e141a81f5c0be731a479"},"res/import/cf/cf7639d5-3f54-4160-94e6-01298d35fd02.json":{"md5":"ddb30d46504e4ea83455d81b91d1258f"},"res/import/cf/cf878df7-9ee1-43b4-b87a-d6a457e4f8f6.json":{"md5":"4f3c1742f3feafee9e7487f17a152514"},"res/import/cf/cff26fca-aca8-4f1d-9486-ddb04669788b.json":{"md5":"f2e297bf58cd4684bd1fc94457e1f8e8"},"res/import/d0/d092d418-dcdd-4823-a232-eca65fe76fff.json":{"md5":"d9281ad4787a9826d2852c090dacb192"},"res/import/d0/d0c01627-4d4d-4e0f-a8cf-872b3965b082.json":{"md5":"21484575525fd6f8ec814bfcc2e7db0a"},"res/import/d0/d0d50645-30a9-4207-9f58-ae6e0d360649.json":{"md5":"6e012d949a1c96758e5615579228da44"},"res/import/d0/d0dfc100-c4be-45de-8df6-1c51de881c06.json":{"md5":"e94667f52784a64fb691dfe9911587cb"},"res/import/d1/d10d3fb4-7a2c-4698-96e9-77c8914eb137.json":{"md5":"7d56e3adaf50a38a02cca2f649418e82"},"res/import/d1/d133ca01-b7d3-4e7d-9d6c-43101fda3c25.json":{"md5":"3c8e58c3599060cc99820f9f3f5db675"},"res/import/d1/d1ea8ac0-7e17-4924-899e-1b2bd520fca6.json":{"md5":"7e9780d2cb57cc250ad6bd93cadbdb24"},"res/import/d1/d1ec606d-1a3a-4ebf-a9f1-5391b946cd31.json":{"md5":"b758205e9a518c1c74fdcdc172f0cd5b"},"res/import/d2/d278cab0-d89b-4fca-b312-e5a5279015fa.json":{"md5":"8aed5fb5e74b7ee35e5b7a1135496cb3"},"res/import/d2/d29e2668-bcbd-4498-a79c-cc73bb7f53c1.json":{"md5":"6f2d34ad729cd5d12333d48000261d34"},"res/import/d2/d2bf07d6-cbaa-485a-9e05-b9409bf16b62.json":{"md5":"3d9184c10760fb3aeb49cc4ce85a96c1"},"res/import/d2/d2d631ae-5272-47d1-9604-e3ec6d209b9f.json":{"md5":"dcbc7c012274dedde14b3569bf9c9906"},"res/import/d3/d3127750-e024-4301-b1cf-62be6437c845.json":{"md5":"5e3aa6b18f9480d182233c3cf45602b1"},"res/import/d3/d39e5304-2526-469c-820e-9c156171542d.json":{"md5":"33a6808533fd733caa5f363cc75f8423"},"res/import/d3/d3d93b91-5ef4-40df-9456-d6915b2098a5.json":{"md5":"7735a2e0b621e954db781576764ec59b"},"res/import/d4/d4963f11-66d7-452c-b75b-36f5c60af4ce.json":{"md5":"b8721f7a9b2e56fc6ed58947f645e6a5"},"res/import/d4/d4b7c258-db82-4cee-99c3-cbdd4c71b941.json":{"md5":"8b7d74d0aad126efc75424d51c14939c"},"res/import/d4/d4ed868f-c4a4-4a75-9ae8-e8c005d9fa10.json":{"md5":"2ad3afff9a24a6063b9de6c346f37a44"},"res/import/d4/d4ee4a99-35be-459e-8221-3d7064ad0051.json":{"md5":"8a24704a5367c68bbc9b1c85020ac05d"},"res/import/d4/d4f25282-d9d0-4d30-8b2d-0b93e761e717.json":{"md5":"cdc7ae7ff84a9f753c55f8fa2436eeb7"},"res/import/d5/d5119d67-5224-4403-8130-5a1b50128280.json":{"md5":"524c2334b51762bf22c95c9f33812fea"},"res/import/d5/d53f742d-e434-4147-ae95-498fda6957bb.json":{"md5":"d442b8eabd00e9f4d58f9c4d692258a1"},"res/import/d5/d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1.json":{"md5":"e538517fee9fe1b05e3a1370604f5650"},"res/import/d5/d5da5754-a91d-4204-8aca-5e648a4da1c8.json":{"md5":"e8530ebe99425c67908ad6e216e4a1a3"},"res/import/d6/d6891d75-4cbd-44cd-88ff-7c3b6387946f.json":{"md5":"0eebfdf4b872feccd6442f29007ceade"},"res/import/d7/d7003345-08c2-4992-8b68-31cffc31b677.json":{"md5":"4232800fca0002abbac294eb6a871ad3"},"res/import/d7/d793451a-9795-447f-b8e6-00a2e2a17218.json":{"md5":"0cd31413646c58672ba332240c4c0bfa"},"res/import/d7/d79c5202-76c4-4caa-938e-36a9452f100b.json":{"md5":"0a2dba891de16f17efac571124441ac5"},"res/import/d7/d7ee5835-6b15-4294-a79d-72574036cd3f.json":{"md5":"3b1aa1df2656ba55baef6bdd13882480"},"res/import/d8/d8124940-c8ac-4655-87da-af4cb862de8f.json":{"md5":"4e11700d2863e5295fa34490efd610a4"},"res/import/d9/d968d96e-fe8e-4332-9646-a558343b20ee.json":{"md5":"b4ef53535204476d2aba9d94f3414deb"},"res/import/d9/d98016fb-e005-46b8-b1f2-b7934b265254.json":{"md5":"d04fc191db384080ee4151583e008135"},"res/import/d9/d98c0735-3f6a-45a2-862d-db432518af85.json":{"md5":"a8881c550c93d343f2d770438028cc7c"},"res/import/d9/d99d4b2b-e612-48ee-a29d-f65d513fec3d.json":{"md5":"dfde7a16874ccfd0f45ff0c47ab7d952"},"res/import/d9/d9cbd908-929e-4a74-95f2-c285e74bcc07.json":{"md5":"e0a0f99328d3fbdd8088b4912c1bf7e0"},"res/import/d9/d9eb0394-4dde-4a94-a36e-040e1b6cadfa.json":{"md5":"6302d61638118fd981585ead8b98150c"},"res/import/da/daa887d9-e85c-4396-b8e3-03bce53ab4a1.json":{"md5":"57308a281f026d986694eb8867f74608"},"res/import/da/daf4f6ca-498c-4dd4-91aa-89d63269eb85.json":{"md5":"85a62b1961fdf605ed78045f76234bca"},"res/import/db/db2e469d-64f7-4fb2-b62d-bf54447a517e.json":{"md5":"68505d900ce502bca0b92f62f0c9b534"},"res/import/db/db2e51a5-9511-4d64-ac51-951d80da0101.json":{"md5":"77be715ba9b3e87a88e9de2e9c7ae3fb"},"res/import/db/db886f00-0ada-4183-b6d9-f339a7d16dd4.json":{"md5":"7ee4c5ea7528bdd8bf83dcd4b1cc2c74"},"res/import/db/dbe2b062-0b7c-424c-b928-84658f4324e4.json":{"md5":"ea2ed48af633afff5316430e59ff0885"},"res/import/db/dbe72fcb-546f-4b1a-a38a-8c401c098f15.json":{"md5":"ec9c1bdc216aaee79ff683f870b07b4c"},"res/import/dc/dc0f12a0-949b-450f-9d67-9f1054b115f8.json":{"md5":"f56db1bd6d9f7f702ca2622c4b44e375"},"res/import/dc/dc1a17e2-17f0-4cae-b88f-af8176f08e24.json":{"md5":"c6a64b4bca11e4162c9c0c7a68685662"},"res/import/dc/dc8aaac9-73a5-48aa-b04c-6679debab83f.json":{"md5":"aefa5dbee505586aad090a22bef06440"},"res/import/dc/dce56925-2b5d-40fd-9023-28605ac3a8d9.json":{"md5":"d862dc2f721a57ace7f83a621a0fc388"},"res/import/dc/dcfd81f9-c553-44c7-b21a-6e485107dd8c.json":{"md5":"d64bdc8af3b7bc388f568ce26fbb02ab"},"res/import/dd/dd067b6a-d750-478c-b239-a845ef554ef7.json":{"md5":"057ecf36c13c6af934b168c464f44166"},"res/import/dd/dd06aa46-aac2-48a9-8d16-44de1a1fd36d.json":{"md5":"aca12b10862d92d2dfff419c130e8ad2"},"res/import/dd/dd0be58c-a0ce-456a-8999-1d9f17335eab.json":{"md5":"cc7871b3937734ae29efc0fb6fedd0b8"},"res/import/dd/ddc89083-5194-4822-a109-4a65e07411d2.json":{"md5":"2230c902432ac9b483a5a413fdfa18af"},"res/import/de/de0c43c2-ba63-44a8-b2e8-ace6b0d571ab.json":{"md5":"97ca6afe504c1051aaa630820eee1f05"},"res/import/de/dee9b327-1443-40c8-ab14-76110c4bae92.json":{"md5":"ce47eac762b187f0496279017fe9e219"},"res/import/df/df2accea-10ef-49a2-83d4-be88e35e48d7.json":{"md5":"d39f14c3f2e6bbae84cd679470b1f88b"},"res/import/df/dfc88041-d607-409f-bc18-d65dc7226af1.json":{"md5":"9d6c0da0c774fddf525a648262119171"},"res/import/df/dfd021b3-5669-4e73-8a28-5e16a579e110.json":{"md5":"2bd1bb311f2a9394eb2fea726b8e718b"},"res/import/e0/e015c7f1-cd70-4c94-b381-5f910532e4cc.json":{"md5":"8a8082359119250d49d6f3d9dc668c6b"},"res/import/e0/e04fddee-4024-4efd-abbb-3f981e6c60d0.json":{"md5":"d9b487af5219687ef3ccf316d0f6e000"},"res/import/e0/e0906f59-9a5b-4b4a-9406-132008e36610.json":{"md5":"0b1d9dee64d24b4257e24539a2e92416"},"res/import/e1/e1279c9b-922a-4263-be6e-80f680a805d7.json":{"md5":"5ed6bd0a73a009f89ebf3f6caeaec9ae"},"res/import/e1/e1714551-b433-4d23-8991-52e100dde094.json":{"md5":"652e037d2017fc4f75dcabce2d739ab1"},"res/import/e1/e1a3a475-5518-47c8-a3dd-0d00a6ec9eb5.json":{"md5":"9ffde2090ae24254eeab7b6657753f2b"},"res/import/e1/e1b15a33-b97d-4e1a-b851-6fd562170671.json":{"md5":"bef82e1cca00fd921582b84ea207df9d"},"res/import/e1/e1c391b9-3c69-4637-8876-9a1bbd585e97.json":{"md5":"65bf2fbd734939ea272b4fa353ea8204"},"res/import/e1/e1ffb160-a2ba-4b85-9133-0616b4de100c.json":{"md5":"0ac675841f8efe5ad69e3656e0e9c1cf"},"res/import/e2/e252d253-751b-4c11-ac0d-879a48159947.json":{"md5":"6104c95a9297e40bb70475eec05dbf8a"},"res/import/e3/e34ab6be-5473-4435-94e5-e6c24b404352.json":{"md5":"7ed90049b048b54bf12aebc0d5bb240e"},"res/import/e3/e35d2605-6a6c-4e32-8086-530b841a53a8.json":{"md5":"6c6c7e95a26058a5045f516c7defdee7"},"res/import/e3/e37d1ee9-ac92-47c6-a2a7-66a3c524f7df.json":{"md5":"56e122825b19e3edef1a981e18c85470"},"res/import/e4/e40e075f-60fe-4019-99b8-756403003f62.json":{"md5":"00b2c3d401841760ab39b3747f0bdfd3"},"res/import/e4/e4237ef8-fd32-4874-9ab0-6f94b5393b8b.json":{"md5":"e24470278d4f5ce389dd320a4b8b653a"},"res/import/e4/e47b00b2-acf5-40ac-9ae1-78fe3aa1e731.json":{"md5":"7c1eeb78f7d9824fed656f9b7ac6240e"},"res/import/e4/e4f8042d-0ace-43c9-b944-929028c7e47b.json":{"md5":"1f2c3840b0559c82a07af795b05fb276"},"res/import/e5/e52aa553-af72-440b-b7a5-fc46ce134e8b.json":{"md5":"cd32bd8784ba9296db60d64a2abdb262"},"res/import/e5/e5b94aaf-d006-4935-9b08-439798ff68e9.json":{"md5":"82380565962c622d9897ab80beac1a33"},"res/import/e7/e780b529-e5dd-47f4-89b9-085eb0c305ff.json":{"md5":"aaa0440d0796611643195756365e7f51"},"res/import/e7/e7b17174-dc37-407e-8cd3-09b440c7d89d.json":{"md5":"32e1ce902db4e750d796a143c3f6f231"},"res/import/e8/e82cf877-69b6-40c5-8ddf-57c183941ad8.json":{"md5":"33e21c2b401b662882970011fd6bfbde"},"res/import/e8/e836456a-11d3-4b62-bad7-38cbbfa8ae15.json":{"md5":"28c4855ea4b2e2e9af2d7a4b7a94ec2b"},"res/import/e8/e86727d5-028b-4b5c-8806-8d5098c5128b.json":{"md5":"bb620f4881dd88e7dad1a5022f627f2c"},"res/import/e8/e86fe1d1-4e4d-408c-b543-f6d3be2951bf.json":{"md5":"a78c4416a49963fe7a54309d173a35b7"},"res/import/e8/e88648aa-c921-4c4c-a071-9ef8ea95a262.json":{"md5":"3e78553849fcf3b4f6b4154681a7b3fa"},"res/import/e8/e8d9f695-ac2f-43dc-b9a0-b51e9531a700.json":{"md5":"9ff0caabd10cc7809870422010e899f8"},"res/import/e8/e8dd3c7f-2177-4c87-8ce7-9f08bc34d8bc.json":{"md5":"79e49b4e41b426964373ce9a75e48ffb"},"res/import/e8/e8eda776-a770-42ff-bd4b-1ddaa5aac8d8.json":{"md5":"1f46945d02733a7eacd86bef05794a5f"},"res/import/e9/e912bdb2-f94f-4721-b384-7c9c4e6ab229.json":{"md5":"20bbadbeba02af5f1ca74dc40e18b5ed"},"res/import/e9/e935272d-0fe9-46d4-83be-23b7c481c178.json":{"md5":"6903bf5fc76e1b146d73192e4103e611"},"res/import/e9/e97f8db4-4c2b-43c9-8b16-2a064aa4c200.json":{"md5":"ee56c7a5b2c743a45e5616d27d0e6fd1"},"res/import/e9/e9ec654c-97a2-4787-9325-e6a10375219a.json":{"md5":"a8f7c7c3548fe0ca63949d41bb3448ec"},"res/import/e9/e9ecb267-78f5-49b7-be14-60cc9116abe1.json":{"md5":"20aad603ef59f2806ffbf818011eab70"},"res/import/ea/ea0d9383-c0d7-4b7e-9fa8-4d16992991d5.json":{"md5":"2a3b40239dc0365b1fa04e10445d9b8a"},"res/import/ea/ea7d8d70-11a2-48fd-8f20-82bd49ffce05.json":{"md5":"3fdb39997226c63fe994226d18b6e506"},"res/import/ea/ea90eb71-da66-44b9-b343-b577cdb7d53f.json":{"md5":"14f49eff060c77b43c4d7bf481cf8146"},"res/import/eb/eb5f7a5d-19af-4f2f-b38f-4304d48f1876.json":{"md5":"3407427ce554d6faaa0ef4665b701cff"},"res/import/eb/eb7b694b-7557-450a-9572-e3f6c2769e76.json":{"md5":"115dc73c3c218932939a89778997f5c0"},"res/import/eb/ebb98c10-ffe5-4691-8e14-7a12d8c9d98e.json":{"md5":"7782caccf76abec20b3334585636ef48"},"res/import/eb/ebe3fd18-d11e-449e-a9d7-f90daacfb94b.json":{"md5":"298f5a5ace6a36fc9dffb52996db2e39"},"res/import/ec/ec4501d1-8b58-467e-994a-8ecb4a0006e1.json":{"md5":"9f355dde3c92476ec90e7d1deeb79b17"},"res/import/ec/ec7d16ec-e9ab-4bde-aded-feb81e933c40.json":{"md5":"e63787b280882c543554c810b16b9365"},"res/import/ec/ecb7074a-215e-4245-976a-5e0669c94479.json":{"md5":"17ce39ddb1317ef23d3cdd6fcc332590"},"res/import/ec/ecb830a8-95c6-4528-bb97-771d7cd13dc4.json":{"md5":"e73e5730753b5590da0082da52f7736d"},"res/import/ec/ecd8d18c-8b8d-45a0-b0aa-0acc029f7fce.json":{"md5":"92f35e2ef3a05a200fbd78184eeea81a"},"res/import/ec/ecec0041-4528-48f0-8b08-49f5358014b8.json":{"md5":"2421a1a306973f5e0d8d17b2e69ffb81"},"res/import/ec/ecf2a72a-7f6b-496d-a333-45912d28efcd.json":{"md5":"c220b4b26031df7f5632194ca15401c2"},"res/import/ed/eda9a42a-6b21-4792-bcde-1916f1f76d2c.json":{"md5":"ce91a829a74ca8e1df08e50d63f621b1"},"res/import/ee/ee5ff482-e2c9-47e9-972a-ee4e4f8f2adb.json":{"md5":"7b83d9f04b1348dc14329dd8c1928a3a"},"res/import/ef/ef0b2857-5785-46e2-b02c-63f7171098ab.json":{"md5":"12ea25ef0b355892d808074805d323a2"},"res/import/ef/efb1084f-0b5a-4980-b187-1e949555cb55.json":{"md5":"2fe230cde9604ad4d33729f8f841fc65"},"res/import/f0/f0048c10-f03e-4c97-b9d3-3506e1d58952.json":{"md5":"ff26e02eed2a166d5dd12bdeea2f0d40"},"res/import/f0/f06b37c1-0207-471e-a639-cf16d18f50da.json":{"md5":"1f7742941956976615a5788487df1463"},"res/import/f0/f0cdd99d-254d-4aa2-92a3-c09048d88eec.json":{"md5":"ef7d723f217a4d5cd80e0725684b93fe"},"res/import/f1/f14fdf0e-988d-4e4e-b70d-0c38ce8f8f5f.json":{"md5":"c4c003173d436e500d7cee5b71219f34"},"res/import/f1/f16c2d61-6d80-4487-a008-2735ef49c00b.json":{"md5":"c9bed71027353ffb4907154eb118eeb5"},"res/import/f1/f185a906-ccba-4a6e-9f1d-fd84839c25e8.json":{"md5":"e918a24b5cc74f0ae5d7831257f3192f"},"res/import/f1/f1be4d3f-9c99-49eb-9778-7759c16e8a2f.json":{"md5":"87cad8cb5877805c3be180bb560992f4"},"res/import/f2/f2666293-f619-40bd-850e-04cb601c4f23.json":{"md5":"9e7c9115dcf303c4cf6e471e3e08699d"},"res/import/f2/f2855192-6250-41a5-8b9f-fe2b02040bba.json":{"md5":"ab17b1cf1d9d633fc3ec16851b708876"},"res/import/f2/f2edef3e-a500-4585-b39d-8dae2b4cc531.json":{"md5":"bca61c8d7afe9de4a6fe89e1b8709d18"},"res/import/f2/f2fd3b02-16b0-4352-90fd-894cb73eb272.json":{"md5":"731370b5ef23cdc6eba276924f27de30"},"res/import/f4/f476f0f1-59f6-42ba-8306-04e902314f96.json":{"md5":"440d2ba7a5524862f01d74db3a2ff02a"},"res/import/f4/f4a71a07-1bc0-459d-8e9a-07a7ee56485a.json":{"md5":"8391f0f1f0527e1528d5dae2d879e14d"},"res/import/f6/f6874ded-313f-4ce5-a3d4-08925be31265.json":{"md5":"3338e014c98bc3f21a65fca26e3acdeb"},"res/import/f6/f699312d-ac5c-418a-9fe3-cc89d7be30b9.json":{"md5":"4849e4f28293e6d8e3f755d87add9f68"},"res/import/f7/f7132675-6c23-418c-826f-77c98fc97950.json":{"md5":"538b8f92daa5c3795fa257c8ddbe0e6e"},"res/import/f7/f71d47b7-0979-48b1-ac1a-206076b00220.json":{"md5":"0c18d02c75705cb535953bb344c7345c"},"res/import/f7/f78391f5-138d-44c1-9755-3a9b027b0f28.json":{"md5":"cb74a9fdf34c15509d364bb5da9fc754"},"res/import/f7/f7a90881-3cc3-4e4a-a5cd-4e0892e94a2d.json":{"md5":"ce08c8c090b95202488b1f0827d63a9c"},"res/import/f8/f824f614-8f4b-4f99-b85d-4845c8039956.json":{"md5":"83e002b7216990dc29df5404fffb99f4"},"res/import/f8/f82e7e6c-f80a-4db0-b88f-a1bc222d4d86.json":{"md5":"2b5215c4735287d28925fba448e2d77f"},"res/import/f8/f8357817-9926-4db9-a88c-9a171b5d3fea.json":{"md5":"c26d749df477ca5a726a1550a7b4a23d"},"res/import/f8/f89760d5-2554-46f1-ab00-c302382d8f11.json":{"md5":"824776a1b0d05e2354ac223279e560e2"},"res/import/f9/f90b180d-1782-44e4-9ae6-4156c29e6f9d.json":{"md5":"8cf58481c6d688fb1fe8dbb08a0a3489"},"res/import/f9/f9560c03-fff5-4eed-9035-0ec5e547e19c.json":{"md5":"2bb64d32112f5a7a5145092490400fa6"},"res/import/fa/fa12fbe4-a9f9-45ed-9abb-f44fd8887906.json":{"md5":"c8192d4ab804f674860879a2460bd6b9"},"res/import/fa/fa43d352-05ef-40df-87a8-60ddfc6532d8.json":{"md5":"bc820c2c49472c9d9f5072ffd51ac56b"},"res/import/fa/fab8a700-71e3-415c-9af5-27398c333981.json":{"md5":"bb3622a762965bbb609158b965a33cc8"},"res/import/fa/faf9e5db-6959-4d2b-9a87-461a837d130f.json":{"md5":"b39ae3f16aeb7737505f51142f7faa35"},"res/import/fb/fb284fb4-227c-4d21-bc7c-510f804fa112.json":{"md5":"82ade95e29c19e53d08f398e786b2427"},"res/import/fb/fb7b8faa-9f16-4d78-b447-35ff391199e1.json":{"md5":"0728938e204837250ca242dc9f8fbf39"},"res/import/fb/fb9a2d3b-1b7d-40da-8aaa-007dc3ff5910.json":{"md5":"e091fa0c8ca839b4d35cc47d0a0c0a24"},"res/import/fb/fbcbc31f-1c06-473c-bbc1-0d39efdd7445.json":{"md5":"84a6f524b5d8bc587135b129e82f84aa"},"res/import/fb/fbd4f585-4b9f-483f-82ab-02085b92b38e.json":{"md5":"213cc88b83d85e4760b23cb20374a04b"},"res/import/fc/fc248c7f-23ff-4019-bfb9-08be4c5722de.json":{"md5":"df7d381320e416c0d1eb788c3f7727a5"},"res/import/fc/fc8d435b-7d57-43bf-80b1-b0e1d77eeafd.json":{"md5":"d57dccaa291640cf56152df3e261fce1"},"res/import/fc/fcb826b8-dcca-4795-b94d-ffea6eb25350.json":{"md5":"a316b6497211638d2549e3fb4ebf3dee"},"res/import/fd/fd15829e-3860-49b5-9e85-909d58750275.json":{"md5":"44792404b12f8ed0bdfc7981c08a9841"},"res/import/fd/fd1eb247-5106-4745-b234-94b01f2badb3.json":{"md5":"138e249883c0ff5b805de30d62bd2400"},"res/import/fd/fd62cb57-e79b-4fb0-865a-bce7bf226a16.json":{"md5":"03c3385f3bb47d137c12038318c5c862"},"res/import/fd/fdb663a5-8b5d-46dd-81b8-f03217e77e3a.json":{"md5":"a96dece92360d30ad8f9de43b790006e"},"res/import/fe/fe25f3b3-ab7c-48a6-ad17-56de32613c54.json":{"md5":"78c6270810b1d2825daa3ff7829a2efc"},"res/import/fe/feeb6b81-8498-4125-94ce-1528510279c3.json":{"md5":"b24f5a7a52e0f3c7ef41827282ddf9bc"},"res/import/ff/ff112882-d1ec-4ee1-92ad-c2778e6b14e4.json":{"md5":"08871e140f524640c2c85cc8df29850c"},"res/import/ff/ff360503-52f4-4bcb-9760-21032e85ef6f.json":{"md5":"3c2046e4fce0f765d3a26acf963583e7"},"res/import/ff/ff4e6d82-2644-4e4b-9fe3-2ed10ec4429f.json":{"md5":"740398b45e12e3292dd311cb08d7a9aa"},"res/import/ff/ffd781e3-3d89-49a1-99af-45446e138558.json":{"md5":"446cdade10985380980bf40811556468"},"res/raw-assets/resources/sounds/bgFight.mp3":{"md5":"896e4e0093fa5aaf131e12149359996e"},"res/raw-assets/resources/sounds/bgMain.mp3":{"md5":"da1e7e28ccb487116acb7f3833bf99a6"},"res/raw-assets/resources/sounds/btnClick.mp3":{"md5":"21269221ea5e8b34e3a0f28a7b99128b"},"res/raw-assets/resources/sounds/deal.mp3":{"md5":"efff4e56dfda85d820f13b7009661781"},"res/raw-assets/resources/sounds/dropCoin.mp3":{"md5":"aedcea01b2338eb4aa638f27e1f23e0f"},"res/raw-assets/resources/sounds/fix_msg_1.mp3":{"md5":"3aa6f09e89586ee26621e15a4b0d293e"},"res/raw-assets/resources/sounds/fix_msg_2.mp3":{"md5":"5ac17f02f6b56f3653f48e2ff007ef73"},"res/raw-assets/resources/sounds/fix_msg_3.mp3":{"md5":"e8a72b1cef43ef308fa18ec858f4c0a0"},"res/raw-assets/resources/sounds/fix_msg_4.mp3":{"md5":"56c3356a749f8c1640b1b3930447a805"},"res/raw-assets/resources/sounds/fix_msg_5.mp3":{"md5":"490379f942786b5c4ac0728c576a86d4"},"res/raw-assets/resources/sounds/fix_msg_6.mp3":{"md5":"f2995fe7f91cdba12dc6609a2de494fc"},"res/raw-assets/resources/sounds/fix_msg_7.mp3":{"md5":"2bea7c3bcddadbab5e48b248ffe91fb7"},"res/raw-assets/resources/sounds/fix_msg_8.mp3":{"md5":"1378cb20ae01cb8e29b4b482a2163247"},"res/raw-assets/resources/sounds/fix_msg_9.mp3":{"md5":"dd26ec7c08a91adf86b67d6ef2c952b3"},"res/raw-assets/resources/sounds/give.mp3":{"md5":"fb2f160e40170a39e870cc47654ab6e9"},"res/raw-assets/resources/sounds/guess/bgm.mp3":{"md5":"935877e9dbe0b154c8e63dd6ae960cfa"},"res/raw-assets/resources/sounds/guess/lose.mp3":{"md5":"9e04261023b24f97ee7398d3cc0c227c"},"res/raw-assets/resources/sounds/guess/win.mp3":{"md5":"a843841deffa3ecb1447bb08f7dfd9ed"},"res/raw-assets/resources/sounds/horse/bet.mp3":{"md5":"e79d6b996c19c3a8106b2967144c843b"},"res/raw-assets/resources/sounds/horse/bgBet.mp3":{"md5":"870571b1168b291bd9b1361ea76840db"},"res/raw-assets/resources/sounds/horse/bgRace.mp3":{"md5":"f96f864e23c1a1d5cdc56da001428107"},"res/raw-assets/resources/sounds/horse/go.mp3":{"md5":"82b042d3e4cc780705deab11e44a56cc"},"res/raw-assets/resources/sounds/horse/shutter.mp3":{"md5":"545a43686e10430acbdcf689687ab765"},"res/raw-assets/resources/sounds/lose.mp3":{"md5":"b6889d3dcb0643fee0fd6b23d9c9c9b5"},"res/raw-assets/resources/sounds/nv/1.mp3":{"md5":"3641a0a36b6687442f5cf84e5f06f4e8"},"res/raw-assets/resources/sounds/nv/11.mp3":{"md5":"251a4b927cd3c32ca38dd266c1996b2e"},"res/raw-assets/resources/sounds/nv/12.mp3":{"md5":"d0ef04f9657586848f0dfa1198d950f7"},"res/raw-assets/resources/sounds/nv/13.mp3":{"md5":"4c2e440762df36730ceb3fb4a2bcb0e4"},"res/raw-assets/resources/sounds/nv/14.mp3":{"md5":"175510071bf285e6fa2d49ce6a4ac6ef"},"res/raw-assets/resources/sounds/nv/15.mp3":{"md5":"3c028ea93c977b513ba2eb1186a05685"},"res/raw-assets/resources/sounds/nv/16.mp3":{"md5":"5e0921cf6e2ad1aa2dab22a3aea1c5ab"},"res/raw-assets/resources/sounds/nv/17.mp3":{"md5":"9b6eca3e2c8e9b370bec93c750abb366"},"res/raw-assets/resources/sounds/nv/18.mp3":{"md5":"533971c182bc2f584d4374b0bd5f3ce3"},"res/raw-assets/resources/sounds/nv/19.mp3":{"md5":"ab38bbf25747e5f4c9af5b42ad326131"},"res/raw-assets/resources/sounds/nv/2.mp3":{"md5":"1057910b53d94cbf33e22bd4569e10ea"},"res/raw-assets/resources/sounds/nv/21.mp3":{"md5":"39e6fd97e677abcea27e47efd04671b0"},"res/raw-assets/resources/sounds/nv/22.mp3":{"md5":"a19bfb31715a6ff0fcbe0754ed5c0e76"},"res/raw-assets/resources/sounds/nv/23.mp3":{"md5":"8c793c7528012cc4471b276b14990f2e"},"res/raw-assets/resources/sounds/nv/24.mp3":{"md5":"d71ccfe27ce0bcc7632d9b43b8957465"},"res/raw-assets/resources/sounds/nv/25.mp3":{"md5":"e8b57cf11b69410af30b616a5ea0c9b5"},"res/raw-assets/resources/sounds/nv/26.mp3":{"md5":"302b06abf56655f0c8e95e0ec3dcb5d3"},"res/raw-assets/resources/sounds/nv/27.mp3":{"md5":"9f910719966cae23344fcdd75f46746d"},"res/raw-assets/resources/sounds/nv/28.mp3":{"md5":"d0e3e9ea33ebc2748df11842ba4ef6bd"},"res/raw-assets/resources/sounds/nv/29.mp3":{"md5":"6a4b19e8066223438b9c710f0df64131"},"res/raw-assets/resources/sounds/nv/3.mp3":{"md5":"680e6c26ed50e449b0e02d70b16471cb"},"res/raw-assets/resources/sounds/nv/31.mp3":{"md5":"415a306f97ba77e2bedcd0aa86ae64f6"},"res/raw-assets/resources/sounds/nv/4.mp3":{"md5":"f3226a1ce1a4719b0a3ef5a8bb067ca2"},"res/raw-assets/resources/sounds/nv/41.mp3":{"md5":"71d486c2553c2cdbf981f0709655c94a"},"res/raw-assets/resources/sounds/nv/5.mp3":{"md5":"27b04552680c1992578f06e8848fa878"},"res/raw-assets/resources/sounds/nv/51.mp3":{"md5":"5963e8b91662eaf0321b1ce448cd7151"},"res/raw-assets/resources/sounds/nv/6.mp3":{"md5":"67e65b37ada436dda2bb27efbf2f165a"},"res/raw-assets/resources/sounds/nv/61.mp3":{"md5":"723ca422c6cd99aa8ec96bdf5603f6bd"},"res/raw-assets/resources/sounds/nv/7.mp3":{"md5":"2e783b69b17673ec5f4eee58477b9459"},"res/raw-assets/resources/sounds/nv/71.mp3":{"md5":"e48c11df0d0c81a2bc11951aa4cd4b0f"},"res/raw-assets/resources/sounds/nv/8.mp3":{"md5":"c0a52bb1f464112959aa04cbca6be322"},"res/raw-assets/resources/sounds/nv/81.mp3":{"md5":"3d847ddc25f89fdcd8d0dca9a8e60881"},"res/raw-assets/resources/sounds/nv/9.mp3":{"md5":"72623930913b1a23c4a01cf98857b185"},"res/raw-assets/resources/sounds/nv/91.mp3":{"md5":"b0c3cda2b79ceb0a985d881b43713feb"},"res/raw-assets/resources/sounds/nv/chi.mp3":{"md5":"0a6f4df44067e6f51b6aab887a9ad5e6"},"res/raw-assets/resources/sounds/nv/gang.mp3":{"md5":"aa1964b152f7dda5229555d446aba059"},"res/raw-assets/resources/sounds/nv/hu.mp3":{"md5":"63405b3a7116eb56d973503fd037c759"},"res/raw-assets/resources/sounds/nv/peng.mp3":{"md5":"36c71c07386fd8614dbdd5f2ac19357c"},"res/raw-assets/resources/sounds/select.mp3":{"md5":"4274b5f2578336d6be8ab987f2c104d7"},"res/raw-assets/resources/sounds/shuffle.mp3":{"md5":"9190f5ec62b208c4346626f2cd48e9fd"},"res/raw-assets/resources/sounds/sort.mp3":{"md5":"453a39aab160cf95a6a810fe6f4482f5"},"res/raw-assets/resources/sounds/timeup_alarm.mp3":{"md5":"a692b4657d9f312a3106bff431746f0c"},"res/raw-assets/resources/sounds/ui_click.mp3":{"md5":"93949508dc0f269b7a55983c87dd6df2"},"res/raw-assets/resources/sounds/win.mp3":{"md5":"5844792dd30b4bbdecf1d59f0da207d1"},"res/raw-assets/resources/textures/chat/chatbg_ld.png":{"md5":"e2c26f6e8466d98e45a9c6b3437390ca"},"res/raw-assets/resources/textures/chat/chatbg_lt.png":{"md5":"ee4f8ff09e62234f832337c20fdc452e"},"res/raw-assets/resources/textures/chat/chatbg_rd.png":{"md5":"31f8e2f1c8939d234c4b1b2896d9dabe"},"res/raw-assets/resources/textures/chat/chat_backbg.png":{"md5":"16eb071a3083f54ddd62c66822dedd1f"},"res/raw-assets/resources/textures/chat/chat_chick.png":{"md5":"55ea620879baf9c114bbc5bfd3841f10"},"res/raw-assets/resources/textures/chat/chat_easychat.png":{"md5":"f0190d66f4adab7f6b1c07c44372826b"},"res/raw-assets/resources/textures/chat/chat_easychat1.png":{"md5":"bf3e4871d79b8760a3d8c966445d7760"},"res/raw-assets/resources/textures/chat/chat_emoji.png":{"md5":"31e2b8f39fc3133d87ef68bacbd5b53e"},"res/raw-assets/resources/textures/chat/chat_emoji1.png":{"md5":"cea192513d22d97bc1076e307916345f"},"res/raw-assets/resources/textures/chat/chat_emojibg.png":{"md5":"81ed7492e92937307c73c917f457480b"},"res/raw-assets/resources/textures/chat/chat_normol.png":{"md5":"20ca9d88825b1830094e9488736246d2"},"res/raw-assets/resources/textures/chat/emoji_action_texture.png":{"md5":"cddcfa5b92eb14cb44bd837ca92208bb"},"res/raw-assets/resources/textures/chat/input.png":{"md5":"977d796c54ae87257a22ebd65a538c23"},"res/raw-assets/resources/textures/chat/playerinfoline.png":{"md5":"7ca7593b43cffeb5164fb617e41072e9"},"res/raw-assets/resources/textures/chat/send.png":{"md5":"d52b197088b92d16689f012f10d52495"},"res/raw-assets/resources/textures/chat/send_h.png":{"md5":"85768e6da59a701fa7fcee2c8ffcf5c2"},"res/raw-assets/resources/textures/chat/yellowBg.png":{"md5":"49db881c5be4e37bbc62fdea61f1af1f"},"res/raw-assets/resources/textures/chat/Z_chat_bottom_1.png":{"md5":"351b61fd4647d9c162d91bad4b185cd8"},"res/raw-assets/resources/textures/hall/fangkaxiaobeijing.png":{"md5":"4640cf590f4ee768e12141df1ea21d00"},"res/raw-assets/resources/textures/hall/z_datingtouxiang.png":{"md5":"f2316dfa609613d6ea5b53a1db58548e"},"res/raw-assets/resources/textures/images/chat.png":{"md5":"2bc2980034b69ec0066f1143d2948d79"},"res/raw-assets/resources/textures/images/createroom.png":{"md5":"5919578586a472af2f0d57113d4d54b1"},"res/raw-assets/resources/textures/images/dingque.png":{"md5":"051c8df8019a2708f6fb3d075be9fa3c"},"res/raw-assets/resources/textures/images/efx/gang_1.png":{"md5":"3fefb0218cdac5cc97d8488a2556f078"},"res/raw-assets/resources/textures/images/efx/gang_10.png":{"md5":"3503ee0f098a06c66d644bfa57d26884"},"res/raw-assets/resources/textures/images/efx/gang_11.png":{"md5":"efa794fa833017deea58965ab70bdd78"},"res/raw-assets/resources/textures/images/efx/gang_12.png":{"md5":"de1284e97203102636fc404196091cd0"},"res/raw-assets/resources/textures/images/efx/gang_13.png":{"md5":"7785a0b9278cd55e6caf5c36decefe80"},"res/raw-assets/resources/textures/images/efx/gang_14.png":{"md5":"2ceb66cd2d01a4ce1a8e2eb4f0a24156"},"res/raw-assets/resources/textures/images/efx/gang_2.png":{"md5":"d22338512af690ff4fb7adf0473e2c57"},"res/raw-assets/resources/textures/images/efx/gang_3.png":{"md5":"2f96a235d82cea2ff312e6eb076d04b0"},"res/raw-assets/resources/textures/images/efx/gang_4.png":{"md5":"762cddfb8ffa56ebb37e294ec8106d0e"},"res/raw-assets/resources/textures/images/efx/gang_5.png":{"md5":"78f609cb13cdec79db77b69cae41e6bd"},"res/raw-assets/resources/textures/images/efx/gang_6.png":{"md5":"0cb6d4efa19ac1f85615cfa79511eebf"},"res/raw-assets/resources/textures/images/efx/gang_7.png":{"md5":"0c5267c32a7d6c98e4beec792d321ef7"},"res/raw-assets/resources/textures/images/efx/gang_8.png":{"md5":"9256e92654699779ea328a56a738411e"},"res/raw-assets/resources/textures/images/efx/gang_9.png":{"md5":"035ccd1cf383cff81bb30e02ae499cfb"},"res/raw-assets/resources/textures/images/efx/guafeng1.png":{"md5":"d633c0d0d279f5c1a25188821002e681"},"res/raw-assets/resources/textures/images/efx/guafeng10.png":{"md5":"58c91c69bf5dbfb190fabadace847a10"},"res/raw-assets/resources/textures/images/efx/guafeng1_1.png":{"md5":"d116ac84e5ee704f9b1d762d5d4312c2"},"res/raw-assets/resources/textures/images/efx/guafeng1_2.png":{"md5":"3cac0ac306190f199a1bc9e16ab8a48d"},"res/raw-assets/resources/textures/images/efx/guafeng2.png":{"md5":"7a9032349c233d2e9344422d204eb257"},"res/raw-assets/resources/textures/images/efx/guafeng2_1.png":{"md5":"b396e88c66821de9640a978131a8833b"},"res/raw-assets/resources/textures/images/efx/guafeng3.png":{"md5":"c634da6e25cd8bda0e39a6c2aa4143ff"},"res/raw-assets/resources/textures/images/efx/guafeng4.png":{"md5":"6db80b84997c7bc04fa2a6bbf0b02fb0"},"res/raw-assets/resources/textures/images/efx/guafeng5.png":{"md5":"6fba7f980500e39dca26bc9c5a0f9c29"},"res/raw-assets/resources/textures/images/efx/guafeng6.png":{"md5":"214c3d0a603bd38fe043cf251049b1dc"},"res/raw-assets/resources/textures/images/efx/guafeng7.png":{"md5":"b1898f771b8e044be17c2a214d4ed446"},"res/raw-assets/resources/textures/images/efx/guafeng8.png":{"md5":"f956b2193324c444a0dae0cf4096b0f4"},"res/raw-assets/resources/textures/images/efx/guafeng9.png":{"md5":"eb8f2e165090af1f0680aae8c8102a4d"},"res/raw-assets/resources/textures/images/efx/paohu_1.png":{"md5":"56d87484d0e0278ff343218b4ea3c406"},"res/raw-assets/resources/textures/images/efx/paohu_10.png":{"md5":"727dc30bc5b7ab62e4704ece3a4342b2"},"res/raw-assets/resources/textures/images/efx/paohu_11.png":{"md5":"b65c6800c59a27c19a79431caa4837b1"},"res/raw-assets/resources/textures/images/efx/paohu_12.png":{"md5":"00e3589f24908987c4768548b3e876da"},"res/raw-assets/resources/textures/images/efx/paohu_13.png":{"md5":"c78a2b92fbb1735fcbcd5e1e09c869f7"},"res/raw-assets/resources/textures/images/efx/paohu_14.png":{"md5":"d64211e5162be7b9014c48617be27505"},"res/raw-assets/resources/textures/images/efx/paohu_2.png":{"md5":"50c9fc67207a33d6e53e4278995e81b0"},"res/raw-assets/resources/textures/images/efx/paohu_3.png":{"md5":"5ed179cacf819b759afa7c0d4efc349e"},"res/raw-assets/resources/textures/images/efx/paohu_4.png":{"md5":"3a5d7090c80b353f78f0a52e82779a96"},"res/raw-assets/resources/textures/images/efx/paohu_5.png":{"md5":"3fad926f55d088e1b311350a3cea7986"},"res/raw-assets/resources/textures/images/efx/paohu_6.png":{"md5":"04781fa7f80148b754e4b700bc3b23b0"},"res/raw-assets/resources/textures/images/efx/paohu_7.png":{"md5":"a3be4027d421a18ca865759e9178922e"},"res/raw-assets/resources/textures/images/efx/paohu_8.png":{"md5":"ebd29f967ccee57dff7fe34518f621e1"},"res/raw-assets/resources/textures/images/efx/paohu_9.png":{"md5":"c937cd89a0f9a6c46f8bdb107eac25e7"},"res/raw-assets/resources/textures/images/efx/peng_1.png":{"md5":"f8e0398a3ceebb2743a13a0423d12c1c"},"res/raw-assets/resources/textures/images/efx/peng_10.png":{"md5":"8c61ac0b16d34a83ec68bcc8da55b815"},"res/raw-assets/resources/textures/images/efx/peng_11.png":{"md5":"3a472062b9427c68746fc4f03ebb3134"},"res/raw-assets/resources/textures/images/efx/peng_12.png":{"md5":"90669f65d78e6cd774e910b524444cc7"},"res/raw-assets/resources/textures/images/efx/peng_13.png":{"md5":"dfd981c1fd4ff6138edd9e0f195d8fc7"},"res/raw-assets/resources/textures/images/efx/peng_14.png":{"md5":"77b044193f6b3d999128cbe3e2a28f19"},"res/raw-assets/resources/textures/images/efx/peng_2.png":{"md5":"9f7f95919d06a01145d13076a587b998"},"res/raw-assets/resources/textures/images/efx/peng_3.png":{"md5":"afac3b6e3899a90092862f8eb5ed4341"},"res/raw-assets/resources/textures/images/efx/peng_4.png":{"md5":"2728c0d57d84086f0f6b14daadbadb19"},"res/raw-assets/resources/textures/images/efx/peng_5.png":{"md5":"73ce3107cb4410cab18f07632b5e8be4"},"res/raw-assets/resources/textures/images/efx/peng_6.png":{"md5":"067880a70b6abbf554aaccbb8cbbd01b"},"res/raw-assets/resources/textures/images/efx/peng_7.png":{"md5":"087f20370a1d039e3dc10e13d3ced95f"},"res/raw-assets/resources/textures/images/efx/peng_8.png":{"md5":"5175f4678fb58411fb4da8261e738944"},"res/raw-assets/resources/textures/images/efx/peng_9.png":{"md5":"217e6d2800d9780c7a19913f403cac6d"},"res/raw-assets/resources/textures/images/efx/rain1.png":{"md5":"14d14a128b2f6874dac8c966f267b75e"},"res/raw-assets/resources/textures/images/efx/rain10.png":{"md5":"6fc01dd80f4938d189658a3703fe3498"},"res/raw-assets/resources/textures/images/efx/rain11.png":{"md5":"f20800d46d1831883ffb9cc27ba10dae"},"res/raw-assets/resources/textures/images/efx/rain12.png":{"md5":"0f7c2b4c68998faea78e3e3952aec6a7"},"res/raw-assets/resources/textures/images/efx/rain1_1.png":{"md5":"20bdc5e7b398655b4baed1f01e2cc570"},"res/raw-assets/resources/textures/images/efx/rain2.png":{"md5":"79b0f021c49b34c917f3a8501a6d3b82"},"res/raw-assets/resources/textures/images/efx/rain3.png":{"md5":"0cb231dc702ca619407dd9fabccc291d"},"res/raw-assets/resources/textures/images/efx/rain4.png":{"md5":"6fc01dd80f4938d189658a3703fe3498"},"res/raw-assets/resources/textures/images/efx/rain5.png":{"md5":"f20800d46d1831883ffb9cc27ba10dae"},"res/raw-assets/resources/textures/images/efx/rain6.png":{"md5":"0f7c2b4c68998faea78e3e3952aec6a7"},"res/raw-assets/resources/textures/images/efx/rain7.png":{"md5":"f20800d46d1831883ffb9cc27ba10dae"},"res/raw-assets/resources/textures/images/efx/rain8.png":{"md5":"6fc01dd80f4938d189658a3703fe3498"},"res/raw-assets/resources/textures/images/efx/rain9.png":{"md5":"0cb231dc702ca619407dd9fabccc291d"},"res/raw-assets/resources/textures/images/efx/zimo1.png":{"md5":"47d4a0f1bd44d99f041d17415ce47ff2"},"res/raw-assets/resources/textures/images/efx/zimo10.png":{"md5":"ba4a3164ef00ead2bb20727c32c1f20d"},"res/raw-assets/resources/textures/images/efx/zimo11.png":{"md5":"51ba976d5a03e2d64ac9f80796817620"},"res/raw-assets/resources/textures/images/efx/zimo12.png":{"md5":"5dc1a96f0991b22ac1ce253ca72569cb"},"res/raw-assets/resources/textures/images/efx/zimo2.png":{"md5":"4784004c250f7f702e89829f874b1d1c"},"res/raw-assets/resources/textures/images/efx/zimo3.png":{"md5":"f746b392bdd33f8558b01ee3c335cf0a"},"res/raw-assets/resources/textures/images/efx/zimo4.png":{"md5":"ba4a3164ef00ead2bb20727c32c1f20d"},"res/raw-assets/resources/textures/images/efx/zimo5.png":{"md5":"51ba976d5a03e2d64ac9f80796817620"},"res/raw-assets/resources/textures/images/efx/zimo6.png":{"md5":"5dc1a96f0991b22ac1ce253ca72569cb"},"res/raw-assets/resources/textures/images/efx/zimo7.png":{"md5":"47d4a0f1bd44d99f041d17415ce47ff2"},"res/raw-assets/resources/textures/images/efx/zimo8.png":{"md5":"4784004c250f7f702e89829f874b1d1c"},"res/raw-assets/resources/textures/images/efx/zimo9.png":{"md5":"f746b392bdd33f8558b01ee3c335cf0a"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd1.png":{"md5":"e7aa4f2eb0fb1f6006f18c54be586407"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd10.png":{"md5":"2237721a61687b5c4d961fac3dd726a2"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd11.png":{"md5":"13e84f2156d5e208aa05788a569eef04"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd12.png":{"md5":"d7c6269c6560e9e27839b73e731abf18"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd13.png":{"md5":"96d2b5653ed18c9c41c56fd25513a2ba"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd14.png":{"md5":"10fb96ac9ff2cef2324f0667d8112fed"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd15.png":{"md5":"8f72573778558edb49c12e7bc08ec1c5"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd16.png":{"md5":"9a5ed2a76670628e2af96ba6ebc730fe"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd17.png":{"md5":"5e29035a7cdfdcf86d19c75373ae8e97"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd18.png":{"md5":"88cf2d349c95f628ece0c965efb950fc"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd19.jpg":{"md5":"896b2cd6bda7e3918d7475dddcee36d1"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd2.png":{"md5":"2d2af88885e1fa5cffa50c43686f22a2"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd20.png":{"md5":"4810ab8dfe793f9c42538ba5075fb9a5"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd21.png":{"md5":"b4ea31430e8251864a6a871ff95f06dd"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd22.png":{"md5":"49f24d5952b6a91411639bf5e86f1b85"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd3.png":{"md5":"59d5ccd90048125018a2c2a8700d9f79"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd4-0.jpg":{"md5":"2e94b1ef304472e14846e223f12d5d47"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd4.jpg":{"md5":"781bd232e14c0668eb2e283f2e2f0251"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd5.png":{"md5":"962e3c8a8d5fbc6659c54646f045915a"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd6.png":{"md5":"4810ab8dfe793f9c42538ba5075fb9a5"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd7.png":{"md5":"74f6230bca174dd95e742653899c0d15"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd8.png":{"md5":"47e6f27bb7b2cee943c5390529fa023e"},"res/raw-assets/resources/textures/images/GameEnd/GameEnd9.png":{"md5":"833bcd4da9df5b1264f9bf72ef3ef9ba"},"res/raw-assets/resources/textures/images/GameEnd/GameEndHu.png":{"md5":"24dbc8dffe0501aa7c8b53711653f57b"},"res/raw-assets/resources/textures/images/guangfengxiayu.png":{"md5":"5d3d16e7ed7b6c9259dac889860b9d60"},"res/raw-assets/resources/textures/images/hall/bangzhu-1.png":{"md5":"61d33bb3be0e104f5907e3dbfd7cd93a"},"res/raw-assets/resources/textures/images/hall/bangzhu.png":{"md5":"50a6867b6e4ac2f5bc4b96401aff8754"},"res/raw-assets/resources/textures/images/hall/bg-1.jpg":{"md5":"781bd232e14c0668eb2e283f2e2f0251"},"res/raw-assets/resources/textures/images/hall/card-1.png":{"md5":"eed1f46fdb1c8f9440e0b9e191804c12"},"res/raw-assets/resources/textures/images/hall/card.png":{"md5":"041b955116de91e6d51a020cbea8cb0d"},"res/raw-assets/resources/textures/images/hall/chuangjianfang-1.png":{"md5":"15176c9b82c9bf662679718d9ce08544"},"res/raw-assets/resources/textures/images/hall/chuangjianfang.png":{"md5":"0b16631054074c739cfc1222773d577e"},"res/raw-assets/resources/textures/images/hall/chuangjianfangjianxiaochangjing-1.png":{"md5":"6d42c5512cac7f97fdec7749108c5bee"},"res/raw-assets/resources/textures/images/hall/chuangjianfangjianxiaochangjing.png":{"md5":"e7343a140e68f6078a9a07e12e4cfa77"},"res/raw-assets/resources/textures/images/hall/dingbuuibantoumingdi-1.png":{"md5":"b29f166ccdb048b77f0018cdb05d3ad6"},"res/raw-assets/resources/textures/images/hall/dingbuuibantoumingdi.png":{"md5":"49dcb644b1b86d3d09d70f9d26689fb7"},"res/raw-assets/resources/textures/images/hall/fangkaxiaobeijing-1.png":{"md5":"d3f2120f73b426049f9816c14b0f279d"},"res/raw-assets/resources/textures/images/hall/fangkaxiaobeijing.png":{"md5":"2965e0f86a7984f8a33c2fb3d717080d"},"res/raw-assets/resources/textures/images/hall/feedback-1.png":{"md5":"090d2723c44e03d9efd5594acae14b97"},"res/raw-assets/resources/textures/images/hall/feedback.png":{"md5":"5ad3d69fb85157b4e718653cf47281aa"},"res/raw-assets/resources/textures/images/hall/ffanghuifangj-1.png":{"md5":"5022b9b42330a636f9dbdf4d05f9e932"},"res/raw-assets/resources/textures/images/hall/ffanghuifangj.png":{"md5":"3571858d1c3a5cde6fa2422cf0653110"},"res/raw-assets/resources/textures/images/hall/goumaixiaojiahao-1.png":{"md5":"8bbcdf87b82f4379bad2c8122e5a132f"},"res/raw-assets/resources/textures/images/hall/goumaixiaojiahao.png":{"md5":"839fcde65e2e394585ca9a4f8c5cda9e"},"res/raw-assets/resources/textures/images/hall/huodong.png":{"md5":"9df35a998633ebf1de6a3b8fd94f1a1e"},"res/raw-assets/resources/textures/images/hall/jiaruyouxi-1.png":{"md5":"35675a5a5d215544b9d5896cec6ab984"},"res/raw-assets/resources/textures/images/hall/jiaruyouxi.png":{"md5":"59fffe18bbbc2772ee07485f41c6316c"},"res/raw-assets/resources/textures/images/hall/jiaruyouxixiaochangjing-1.png":{"md5":"58a46186e6294035afc3bd2256c21c27"},"res/raw-assets/resources/textures/images/hall/jiaruyouxixiaochangjing.png":{"md5":"4a59cc5168ad6a06173ed9cc22ebbb93"},"res/raw-assets/resources/textures/images/hall/paomadengbeijing.png":{"md5":"e6d903532d3d5e7a7dad982162904771"},"res/raw-assets/resources/textures/images/hall/share-1.png":{"md5":"0dd1315b1ebf017b66eb764bfb03f35c"},"res/raw-assets/resources/textures/images/hall/share.png":{"md5":"c38ca29d7028589d34b8a4219ae0b63d"},"res/raw-assets/resources/textures/images/hall/shezhi-1.png":{"md5":"923da92fc386e166519cb69ddc745c96"},"res/raw-assets/resources/textures/images/hall/shezhi.png":{"md5":"f2b71cae093103e7aba2b8e583fee012"},"res/raw-assets/resources/textures/images/hall/touxing001.png":{"md5":"11f2358016f451d46cb97eb23d32a15b"},"res/raw-assets/resources/textures/images/hall/touxingbg001.png":{"md5":"af168cce15502e3be9ec91cd90c122cb"},"res/raw-assets/resources/textures/images/hall/xiao'xi-1.png":{"md5":"1ee1b83b2fa49c86557bafe8df7eb608"},"res/raw-assets/resources/textures/images/hall/xiao'xi.png":{"md5":"568e2e33218c403f21fbce98d591c309"},"res/raw-assets/resources/textures/images/hall/xiaolaba-1.png":{"md5":"b2584796f1e671d444cb4d1011e96790"},"res/raw-assets/resources/textures/images/hall/xiaolaba.png":{"md5":"e7cfe02733c9728235b9c6310ce941f4"},"res/raw-assets/resources/textures/images/hall/xixia001.png":{"md5":"7b46e22bf8ce0d86f6c383dd23bf858d"},"res/raw-assets/resources/textures/images/hall/zhanji.png":{"md5":"a44fa3d1e862b78b5e4c65bf6d65438f"},"res/raw-assets/resources/textures/images/history_record.png":{"md5":"97473353ffbe53077812b60b3e2b8eca"},"res/raw-assets/resources/textures/images/JoinRoom.png":{"md5":"4d62043f290ff0fa0fd002ae7629c41d"},"res/raw-assets/resources/textures/images/JoinRoomBg.png":{"md5":"9c43251ae47db12e09cf64cb2539e55e"},"res/raw-assets/resources/textures/images/loading.png":{"md5":"db800c7223675e9d7d87d052d86b4b88"},"res/raw-assets/resources/textures/images/Login/bg.jpg":{"md5":"8d6abf2d9d8fa9f46a417d0345e0ebc8"},"res/raw-assets/resources/textures/images/Login/btn_%20traveler-0.png":{"md5":"f661c312f7a9b78e988b63d401b5cd77"},"res/raw-assets/resources/textures/images/Login/btn_%20traveler.png":{"md5":"b4285ad049ae5d6fdd3cf7b04390b93c"},"res/raw-assets/resources/textures/images/Login/btn_-traveler-1.png":{"md5":"b4285ad049ae5d6fdd3cf7b04390b93c"},"res/raw-assets/resources/textures/images/Login/btn_checkbox-0.png":{"md5":"012cf1d1b7d444010858e34c59ec5e6f"},"res/raw-assets/resources/textures/images/Login/btn_checkbox.png":{"md5":"27d33c8d17a9dd7a24250b212fa86d16"},"res/raw-assets/resources/textures/images/Login/btn_weixin-0.png":{"md5":"c371822f43c8bd2c2f7176c45811a703"},"res/raw-assets/resources/textures/images/Login/btn_weixin.png":{"md5":"7a769de30cdac464253394c3a5664de9"},"res/raw-assets/resources/textures/images/Login/check_mark-0.png":{"md5":"28d9e5ff9e262c5c839d96ac8e20530b"},"res/raw-assets/resources/textures/images/Login/check_mark.png":{"md5":"4884bfdf5be25c9504da9355e2c94008"},"res/raw-assets/resources/textures/images/Login/yonghuxieyi-0.png":{"md5":"4d1f7f3061a3056fbd7b98475b78152c"},"res/raw-assets/resources/textures/images/Login/yonghuxieyi.png":{"md5":"9693961116ce1b3b28c1831f26599710"},"res/raw-assets/resources/textures/images/mahjong_table.jpg":{"md5":"a4fc1ee5de93380486266dfd9fdb6d27"},"res/raw-assets/resources/textures/images/main_scene.png":{"md5":"a3cce5ac9f0c5b8be09ba3027dc4767f"},"res/raw-assets/resources/textures/images/playScenesc/nvxiongmao001.png":{"md5":"c6ec1458a58d8ca5a84307ec60b6ab3a"},"res/raw-assets/resources/textures/images/playScenesc/play_scene_4.png":{"md5":"fcb5f9fdfd7b6ba41306e09523fd0816"},"res/raw-assets/resources/textures/images/playScenesc/play_scene_5.png":{"md5":"8dd65d2554b114608148c5c7758236f7"},"res/raw-assets/resources/textures/images/playScenesc/play_scene_6.png":{"md5":"9252bed3d60b6bb6cd9a06ce9021224f"},"res/raw-assets/resources/textures/images/playScenesc/play_scene_9.png":{"md5":"3ba9ba7261fa6e2796196624271253b6"},"res/raw-assets/resources/textures/images/playScenesc/sichuantouxiang002.png":{"md5":"1b0cb499131d018570f1cfdcf985688f"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang.png":{"md5":"a6d9c73ab7915059a03afe631dbe71b7"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001.png":{"md5":"45705a829a5f77e3a28a5a43bed491ab"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_001_01.png":{"md5":"4c86c261387fe3790b371fa8f5048003"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002.png":{"md5":"6ecc4b39f15e8334665691df05d1acbb"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_002_01.png":{"md5":"c2b73ad3d3b7e5d56d3a86c0d6787ba4"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003.png":{"md5":"28ade70376354ae4a7b872021b313943"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_003_01.png":{"md5":"70d00dfdd8616fe9ffb725d695f7608a"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004.png":{"md5":"62a0b74b199e73842f66647f90ceff4e"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_fangxiang_004_01.png":{"md5":"77e4be1be3a4786c8aebff59530d07a4"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_huatong_001.png":{"md5":"312609da45f7f6923c6ea0d882fa3452"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_huatong_002.png":{"md5":"beba19b9f35eab3a0dfa52edda6e7801"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_shezhi_001.png":{"md5":"1403d37ed6927cd607ab6b484b69b3db"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_shezhi_002.png":{"md5":"dfe1812b43e0bef64e695afa38d7c090"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_001.png":{"md5":"e0a05e86606c3d8ae609db4fe9f43dc8"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_room_xiaoxi_002.png":{"md5":"b390db874fbf523b3afb491b569862ed"},"res/raw-assets/resources/textures/images/playScenesc/sichuan_zhuang.png":{"md5":"10e0a6d8f3164369356de5e21414b3ed"},"res/raw-assets/resources/textures/images/playScenesc/wenzi001.png":{"md5":"1b0a93bf8f1e82ac02bf2c98f8e6ab3a"},"res/raw-assets/resources/textures/images/playScenesc/wenzi002.png":{"md5":"1453303f1d59365c6b024359899ea89c"},"res/raw-assets/resources/textures/images/playScenesc/wenzi003.png":{"md5":"3d28b8c5c7fe83e50897b7fbc5da5ea0"},"res/raw-assets/resources/textures/images/playScenesc/wenzi004.png":{"md5":"ec1647c8567485be28a39e633543c2a4"},"res/raw-assets/resources/textures/images/playScenesc/wenzi005.png":{"md5":"efc7cfeb08a698e010682aad2347fe8a"},"res/raw-assets/resources/textures/images/play_scene.png":{"md5":"4d5e5a530e4e086ff665dcde2eae23a7"},"res/raw-assets/resources/textures/images/PopupScene.png":{"md5":"f91fb5d2e33f17526ac618f2934e451f"},"res/raw-assets/resources/textures/images/public_ui.png":{"md5":"e076c991dca90b301c0c2989d89b7804"},"res/raw-assets/resources/textures/images/replayBtn.png":{"md5":"8bd97317e1e47bd57f20f54fac9cb3af"},"res/raw-assets/resources/textures/images/setting.png":{"md5":"27457a6aa3c4846611836c2a69577449"},"res/raw-assets/resources/textures/images/splash.jpg":{"md5":"8e2797b31d8e086a1ff53cdf728579dd"},"res/raw-assets/resources/textures/images/title.png":{"md5":"2d49bca53a747a16cacdb0663db7156e"},"res/raw-assets/resources/textures/images/unpack.py":{"md5":"e68f6c004f00e3ebe08a518a82973a28"},"res/raw-assets/resources/textures/images/xiongmao3-1.png":{"md5":"810e67b630157a6057200d7dedae9fef"},"res/raw-assets/resources/textures/images/youqingTip.png":{"md5":"bbd32104c3f9a49a8b5ffd576bc455ac"},"res/raw-assets/resources/textures/loading/dian1.png":{"md5":"8c28fd6d0db67e4b94b29aac6db0fcfd"},"res/raw-assets/resources/textures/loading/dian2.png":{"md5":"eface16b57a9b895cae104362c33b16d"},"res/raw-assets/resources/textures/loading/dian3.png":{"md5":"5375dc5742817b1c0ae12218918fd500"},"res/raw-assets/resources/textures/loading/dian4.png":{"md5":"738b94098daefdb8b7064cac86dda1ad"},"res/raw-assets/resources/textures/loading/dian5.png":{"md5":"c896dd492cd58f7b6e9b8e159ecacf1a"},"res/raw-assets/resources/textures/loading/dian6.png":{"md5":"ce2efea313fb30c77250c5761d6a6dc3"},"res/raw-assets/resources/textures/loading/load.png":{"md5":"7bccaa3072558b3715a4e0bab961bef3"},"res/raw-assets/resources/textures/loading/loading_image.png":{"md5":"565baa61b8f9f3cd782c7a28b86a0ce8"},"res/raw-assets/resources/textures/MJ/bottom/B_bamboo_1.png":{"md5":"70619a61c8448e9547f54d0d82e13681"},"res/raw-assets/resources/textures/MJ/bottom/B_bamboo_5.png":{"md5":"15469f6791da29656f4c63ab7fe5558f"},"res/raw-assets/resources/textures/MJ/bottom/e_mj_b_up.png":{"md5":"8085af7277c9a7d29afc3314ff66a308"},"res/raw-assets/resources/textures/MJ/bottom/Z_bottom.png":{"md5":"67213b5321e470e51b3aef2f284ece89"},"res/raw-assets/resources/textures/MJ/left/Z_left.png":{"md5":"bcf99da1ca0bb4989bbc90b9dd84c4b1"},"res/raw-assets/resources/textures/MJ/mjEmpty.png":{"md5":"de1cbd82c2722b807bf88ed95ce3c795"},"res/raw-assets/resources/textures/MJ/my/M_character_3.png":{"md5":"b177f64b7376cc1f8d4e96ed765be0d8"},"res/raw-assets/resources/textures/MJ/my/Z_my.png":{"md5":"a089e828a3395f1c16279ca6e51d2527"},"res/raw-assets/resources/textures/MJ/right/R_character_1.png":{"md5":"a4c201413df59f1626019296a7336d33"},"res/raw-assets/resources/textures/MJ/right/Z_right.png":{"md5":"14e0dfaec99dc36614f2304104fbca79"},"res/raw-assets/resources/textures/MJRoom/powerG.PNG":{"md5":"3fcdf6f43fbbb4f4ca132f19197ddc35"},"res/raw-assets/resources/textures/MJRoom/roundnumbg.png":{"md5":"5e14ec1d56fd3c548c6eba2fe1397ff8"},"res/raw-assets/resources/textures/MJRoom/Z_arrow.png":{"md5":"3e2491e7da2030e3205d013802c42fa6"},"res/raw-assets/resources/textures/MJRoom/Z_arrow_frame.png":{"md5":"7858954c4157be0e9338f36e35a41bd2"},"res/raw-assets/resources/textures/MJRoom/Z_arrow_top.png":{"md5":"a3b75956b9777eb2cf733b6a7bc9e51e"},"res/raw-assets/resources/textures/MJRoom/Z_bg_bottom.png":{"md5":"f28138a1f739def0603ecc728e29cf65"},"res/raw-assets/resources/textures/MJRoom/Z_bg_lAr.png":{"md5":"0c038fe84544b593c293cfc843dbbfc2"},"res/raw-assets/resources/textures/MJRoom/Z_corner_lbottom.png":{"md5":"eea1c81ff064514a8d84a0aa54d6749e"},"res/raw-assets/resources/textures/MJRoom/Z_corner_ltop.png":{"md5":"81c2775d86faa384dd625e5c0ef8f79b"},"res/raw-assets/resources/textures/MJRoom/Z_corner_rbottom.png":{"md5":"7646955840c57f6517436be298949f36"},"res/raw-assets/resources/textures/MJRoom/Z_corner_rtop.png":{"md5":"14d90bb1f2da3ceaaf8ebd451622e8d3"},"res/raw-assets/resources/textures/MJRoom/Z_count_down_num.png":{"md5":"bce693563dbb90d9718e07b017ad39ef"},"res/raw-assets/resources/textures/MJRoom/Z_help.png":{"md5":"d527b9d1dd61fa86cb81d3cbe8039f9e"},"res/raw-assets/resources/textures/MJRoom/Z_money_frame.png":{"md5":"87db932e5f4472034d0b0e54cf95f012"},"res/raw-assets/resources/textures/MJRoom/Z_nobody.png":{"md5":"d5dc728d08dcc33edbff9bb8504b80a8"},"res/raw-assets/resources/textures/MJRoom/Z_offline.png":{"md5":"dfe1006565e7b1e518e3bcd4e2b83d20"},"res/raw-assets/resources/textures/MJRoom/Z_power.png":{"md5":"596d8315b550ac239d2f758667152838"},"res/raw-assets/resources/textures/MJRoom/Z_user.png":{"md5":"9b65ac206c6484bd648ff4ba195d59ff"},"res/raw-assets/resources/textures/ops/pai_bottom.png":{"md5":"6c9cfb25e6ccd90189ff78d244412fe2"},"res/raw-assets/resources/textures/ops/penggang_bottom.png":{"md5":"604ce652905c0aad9a3e3d828d6cc9a6"},"res/raw-assets/resources/textures/png/count_down_num.png":{"md5":"bce693563dbb90d9718e07b017ad39ef"},"res/raw-assets/resources/textures/png/fangkaxiaobeijing.png":{"md5":"4640cf590f4ee768e12141df1ea21d00"},"res/raw-assets/resources/textures/png/money_frame.png":{"md5":"712a84373dba7c58f7436887c2475de1"},"res/raw-assets/resources/textures/png/room_num.png":{"md5":"588ed0c83ef667dd58d7fd4e2f9d4fc6"},"res/raw-assets/resources/textures/png/Z_zhunbeizhuangt.png":{"md5":"46c8fc3c82bbdc259c909933d1a524a0"},"res/raw-assets/resources/textures/setting/checkbox_full.png":{"md5":"bb10b811c65f335e0263febc4c8dee03"},"res/raw-assets/resources/textures/setting/checkbox_void.png":{"md5":"75bcacb8cd456c598cb3f767f627de84"},"res/raw-assets/resources/textures/setting/createroom_check.png":{"md5":"f814d7d8258cf069a5a6a2632d76552c"},"res/raw-assets/resources/textures/setting/cr_check_bg.png":{"md5":"6ea37e84494e33b454b312e251df72dd"},"res/raw-assets/resources/textures/setting/cr_unused.png":{"md5":"229729035c33133bc3c249bc9d33babf"},"res/raw-assets/resources/textures/setting/titlebg.png":{"md5":"74924373c61588ca4597c43bbcc9db3f"},"res/raw-assets/resources/textures/setting/whitebackground.png":{"md5":"7021e69ac119a5ee6189bdd711e17875"},"res/raw-assets/resources/textures/setting/z_fuxuan_off.png":{"md5":"26ee6b67150fc0045608aa15742429d0"},"res/raw-assets/resources/textures/setting/z_fuxuan_on.png":{"md5":"1746e730054dbcc3a5d56af90928f4e0"},"res/raw-assets/resources/textures/voice/adj.png":{"md5":"47c471268dfda4c1325e90091573c984"},"res/raw-assets/resources/textures/voice/cancel.png":{"md5":"7534aee10dc869c8ac7ec89636f8f0bc"},"res/raw-assets/resources/textures/voice/dialog_loading_bg.9.png":{"md5":"73c889dab2b915c3e71d297777f5486f"},"res/raw-assets/resources/textures/voice/recorder.png":{"md5":"5631338caf705dc88c34e9f85c7157e2"},"res/raw-assets/resources/textures/voice/v1.png":{"md5":"46e7b879ac5c7430158192a9cd8f7d94"},"res/raw-assets/resources/textures/voice/v2.png":{"md5":"bf870f6b9591708b68508db83580ebf1"},"res/raw-assets/resources/textures/voice/v3.png":{"md5":"3a12dd0eda5b94d6778e7a7bfe33b344"},"res/raw-assets/resources/textures/voice/v4.png":{"md5":"d16a643e3ca4af3a248428a31347b9dd"},"res/raw-assets/resources/textures/voice/v5.png":{"md5":"0cd79787a431bc04236af6a8683c2b02"},"res/raw-assets/resources/textures/voice/v6.png":{"md5":"43a5061c786daed82a53cb11feac502e"},"res/raw-assets/resources/textures/voice/v7.png":{"md5":"9039651efbf78742bbcc4abb3d525dc9"},"res/raw-assets/resources/textures/voice/voice_to_short.png":{"md5":"342663ab74e9b65871b4a4d304b29a72"},"res/raw-assets/resources/textures/voice/v_anim1.png":{"md5":"3e38482cee2cef4e108190e39c269514"},"res/raw-assets/resources/textures/voice/v_anim2.png":{"md5":"8cf247af51ad5cbe1f9b81414bb89614"},"res/raw-assets/resources/textures/voice/v_anim3.png":{"md5":"453e7711c4b4010b255b74b2a7c06169"},"res/raw-assets/resources/textures/voice/yuyin_bg.png":{"md5":"07786186e4962be0b726351aa446a053"},"res/raw-assets/resources/textures/voice/yyDialog.png":{"md5":"6d2138010b39c5a66ec6347bd9d26044"},"res/raw-assets/resources/ver/cv.txt":{"md5":"db6f0d88f51fe070fda871f41c8bfff1"},"res/raw-assets/resources/ver/project.manifest":{"md5":"4e51a5dcb14ec8325834bbe5e0c7bb89"},"res/raw-assets/resources/ver/version.manifest":{"md5":"487f2e40e2097ed8d0a65af91ac1d2fa"},"res/raw-internal/image/default_btn_disabled.png":{"md5":"ccbd56c4f14890bbc94d17004e501e9f"},"res/raw-internal/image/default_btn_normal.png":{"md5":"ffdc9657918740e0f5d088acaaada3af"},"res/raw-internal/image/default_btn_pressed.png":{"md5":"c1daa456037cc3884aabad81bb91b5cc"},"res/raw-internal/image/default_panel.png":{"md5":"d7ea722858e0207cfed0de97e8dbf0eb"},"res/raw-internal/image/default_scrollbar_vertical.png":{"md5":"8374a4ac432663e422b21b8aef8131c8"},"res/raw-internal/image/default_scrollbar_vertical_bg.png":{"md5":"30bceaa8c3c314c44ee70ff2bd2cc76e"},"res/raw-internal/image/default_sprite.png":{"md5":"4692994585cd9c104fd52ed2ac2fe180"}},"searchPaths":[]}
\ No newline at end of file
diff --git a/client/assets/resources/ver/project.manifest.meta b/client/assets/resources/ver/project.manifest.meta
new file mode 100755
index 0000000..5743b95
--- /dev/null
+++ b/client/assets/resources/ver/project.manifest.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "14aacc80-74e4-47b3-8a10-73970bf6e24c",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/resources/ver/version.manifest b/client/assets/resources/ver/version.manifest
new file mode 100755
index 0000000..fb387a1
--- /dev/null
+++ b/client/assets/resources/ver/version.manifest
@@ -0,0 +1 @@
+{"packageUrl":"http://bengbumj.6811379.com/hot/","remoteManifestUrl":"http://bengbumj.6811379.com/hot/project.manifest","remoteVersionUrl":"http://bengbumj.6811379.com/hot/version.manifest","version":"1.0.4"}
\ No newline at end of file
diff --git a/client/assets/resources/ver/version.manifest.meta b/client/assets/resources/ver/version.manifest.meta
new file mode 100755
index 0000000..9a1efa7
--- /dev/null
+++ b/client/assets/resources/ver/version.manifest.meta
@@ -0,0 +1,5 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5faf33d5-bf44-4244-88e8-18eab6c6fd03",
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scenes.meta b/client/assets/scenes.meta
new file mode 100755
index 0000000..7da30b0
--- /dev/null
+++ b/client/assets/scenes.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "29f52784-2fca-467b-92e7-8fd9ef8c57b7",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scenes/createrole.fire b/client/assets/scenes/createrole.fire
new file mode 100755
index 0000000..53ef06b
--- /dev/null
+++ b/client/assets/scenes/createrole.fire
@@ -0,0 +1,1034 @@
+[
+ {
+ "__type__": "cc.SceneAsset",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "scene": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Scene",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ }
+ ],
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5fad28f0-3c44-4f5e-9351-381fe3fb522c",
+ "autoReleaseAssets": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Canvas",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 5
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 640,
+ "y": 360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0f2c8smwYZKEJ4u6D8Sr0s/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 25
+ },
+ {
+ "__id__": 26
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hall_list_bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "04768yK/qBP1KRoZoA9CTI/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 4
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 3
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "61f45545-f8cb-461e-a7a4-0dc551d1d004"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "center",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 6
+ },
+ {
+ "__id__": 8
+ },
+ {
+ "__id__": 10
+ },
+ {
+ "__id__": 14
+ },
+ {
+ "__id__": 20
+ },
+ {
+ "__id__": 22
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ed7f3wc15BED5U9Uu3h9gPa",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 24
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "women_head",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 5
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 2,
+ "_scaleY": 2,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 144
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d3044Zt4UdPiY6yiFnarUiJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 7
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d793451a-9795-447f-b8e6-00a2e2a17218"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "inputName",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 5
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c2660f5RelCRYR6G8ZxBR5R",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 9
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.EditBox",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 8
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_string": "",
+ "_tabIndex": 0,
+ "editingDidBegan": [],
+ "textChanged": [],
+ "editingDidEnded": [],
+ "editingReturn": [],
+ "_N$backgroundImage": {
+ "__uuid__": "0a0a734f-3633-4b7e-8480-e01c52cb9b6f"
+ },
+ "_N$returnType": 1,
+ "_N$inputFlag": 3,
+ "_N$inputMode": 6,
+ "_N$fontSize": 60,
+ "_N$lineHeight": 70,
+ "_N$fontColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$placeholder": "Lucy",
+ "_N$placeholderFontSize": 60,
+ "_N$placeholderFontColor": {
+ "__type__": "cc.Color",
+ "r": 150,
+ "g": 150,
+ "b": 150,
+ "a": 255
+ },
+ "_N$maxLength": 8,
+ "_N$stayOnTop": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnRandom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 5
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 51,
+ "height": 55
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 272,
+ "y": -129
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2f375tTlAtJup0ismbvCxRb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 11
+ },
+ {
+ "__id__": 12
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 10
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 10
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 195,
+ "g": 195,
+ "b": 195,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 13
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 111,
+ "g": 111,
+ "b": 111,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 10
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "CreateRole",
+ "handler": "onRandomBtnClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnConfirm",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 5
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 288,
+ "height": 77
+ },
+ "_children": [
+ {
+ "__id__": 15
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 3,
+ "y": -249
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bdfacVkqppHsJUiX423gxPz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 17
+ },
+ {
+ "__id__": 18
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene22",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 14
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 98,
+ "height": 47
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b4c9dIa9zJFSrtc6sTCbN/W",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "93c93965-d3d4-4483-a96e-497e1b243dbc"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 14
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5914f056-b6c1-4bbd-979b-92b5b721c7f4"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 14
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 165,
+ "g": 165,
+ "b": 165,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 19
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "5914f056-b6c1-4bbd-979b-92b5b721c7f4"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 14
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "CreateRole",
+ "handler": "onBtnConfirmClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sex_man",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 5
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 2.01,
+ "_scaleY": 2.01,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -80,
+ "y": -27
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "afcf19weaFJlogswCiHYjW0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 21
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 20
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ecf2a72a-7f6b-496d-a333-45912d28efcd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sex_women",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 5
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.9,
+ "_scaleY": 1.9,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 80,
+ "y": -27
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "88e641B6chPk7NNl29339zI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 23
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 22
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8c2e8172-65aa-4d5f-ad62-5383e3f1f939"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 16,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Canvas",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_designResolution": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_fitWidth": false,
+ "_fitHeight": true
+ },
+ {
+ "__type__": "5d56bFYy/REb77pQCq9YHh6",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "inputName": {
+ "__id__": 9
+ }
+ }
+]
\ No newline at end of file
diff --git a/client/assets/scenes/createrole.fire.meta b/client/assets/scenes/createrole.fire.meta
new file mode 100755
index 0000000..66fc9b6
--- /dev/null
+++ b/client/assets/scenes/createrole.fire.meta
@@ -0,0 +1,7 @@
+{
+ "ver": "1.0.0",
+ "uuid": "5fad28f0-3c44-4f5e-9351-381fe3fb522c",
+ "asyncLoadAssets": false,
+ "autoReleaseAssets": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scenes/hall.fire b/client/assets/scenes/hall.fire
new file mode 100755
index 0000000..6cde1ed
--- /dev/null
+++ b/client/assets/scenes/hall.fire
@@ -0,0 +1,32133 @@
+[
+ {
+ "__type__": "cc.SceneAsset",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "scene": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Scene",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ }
+ ],
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "efb1084f-0b5a-4980-b187-1e949555cb55",
+ "autoReleaseAssets": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Canvas",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 13
+ },
+ {
+ "__id__": 18
+ },
+ {
+ "__id__": 52
+ },
+ {
+ "__id__": 54
+ },
+ {
+ "__id__": 56
+ },
+ {
+ "__id__": 59
+ },
+ {
+ "__id__": 63
+ },
+ {
+ "__id__": 67
+ },
+ {
+ "__id__": 78
+ },
+ {
+ "__id__": 80
+ },
+ {
+ "__id__": 89
+ },
+ {
+ "__id__": 94
+ },
+ {
+ "__id__": 99
+ },
+ {
+ "__id__": 104
+ },
+ {
+ "__id__": 224
+ },
+ {
+ "__id__": 665
+ },
+ {
+ "__id__": 682
+ },
+ {
+ "__id__": 703
+ },
+ {
+ "__id__": 773
+ },
+ {
+ "__id__": 828
+ },
+ {
+ "__id__": 859
+ },
+ {
+ "__id__": 883
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 640,
+ "y": 360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3bdfd8sjlNGYrmsgdA0NyY/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 903
+ },
+ {
+ "__id__": 904
+ },
+ {
+ "__id__": 905
+ },
+ {
+ "__id__": 906
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hallBg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 4
+ },
+ {
+ "__id__": 6
+ },
+ {
+ "__id__": 9
+ },
+ {
+ "__id__": 11
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "db4e3pZ/7JHjYw/m6vAlrKU",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 3
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "42ee10tZ19GDqs0o+Fcw9KZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 5
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 4
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "61f45545-f8cb-461e-a7a4-0dc551d1d004"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "nv",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 3
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 554,
+ "height": 606
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -80,
+ "y": -54
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6bafd/mSd9PsppMFvfhYzOi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 7
+ },
+ {
+ "__id__": 8
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7d3576c9-40cc-4924-b6af-f2d0f611dd6b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "_defaultClip": {
+ "__uuid__": "ea92705c-a5a5-41fe-876e-95193b26bd9e"
+ },
+ "_clips": [
+ {
+ "__uuid__": "ea92705c-a5a5-41fe-876e-95193b26bd9e"
+ }
+ ],
+ "playOnLoad": true
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "top_bar",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 3
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ee112xnVWFIIIMFluphi6Em",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 10
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 9
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "01ce6d04-c3f8-4fb2-90a0-063813b8fd9b"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xixia001",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 3
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 62
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -329
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3b19ev//R1AIIGJjBwlPvs4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 12
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 11
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9ef235e3-46fd-45ef-8e0a-d6531e7f1ffb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ads",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 390,
+ "height": 450
+ },
+ "_children": [
+ {
+ "__id__": 14
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -420,
+ "y": -21
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "469998+cRZAwpFiY7u7G/np",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ },
+ {
+ "__id__": 17
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 13
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a16delVRqJNIYTiyKRtEl2V",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 15
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 14
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "珍爱生活\n远离赌博",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3d08e1eb-e155-4540-a4cd-8575dddb2be9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 8,
+ "_left": 0.05,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": false,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "top_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 19
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -640.5,
+ "y": 360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "58cb37UgbdBp76e+T4xJni0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 51
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "headinfo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 18
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 20
+ },
+ {
+ "__id__": 29
+ },
+ {
+ "__id__": 31
+ },
+ {
+ "__id__": 34
+ },
+ {
+ "__id__": 36
+ },
+ {
+ "__id__": 40
+ },
+ {
+ "__id__": 42
+ },
+ {
+ "__id__": 46
+ },
+ {
+ "__id__": 48
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a8258f2qc5OEqDbw54Q18os",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "headimg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 90
+ },
+ "_children": [
+ {
+ "__id__": 21
+ },
+ {
+ "__id__": 24
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 64,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8f551OKIJREl7GwvAtdWRNU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 28
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 20
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 95,
+ "height": 95
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1dca2AFY6lFiJfnvqwEf/mM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 22
+ },
+ {
+ "__id__": 23
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 21
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 21
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 95,
+ "height": 95
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "head",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 20
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 90
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4f69ciM3ldEcYpbp/y1RHIb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 25
+ },
+ {
+ "__id__": 26
+ },
+ {
+ "__id__": 27
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 24
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85246ecf-6f60-49c6-bc6f-f18606e771b2"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 24
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 24
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 24
+ }
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 20
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_head",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 64,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "47a54lniTZMaZNRBuxCCkfa",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 30
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 29
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "50e77c44-284c-44b7-8797-2a246a7b60fd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lblName",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 233,
+ "g": 189,
+ "b": 34,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 122,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 128,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2e9e4MeDtVExIJn2P7yfORB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 32
+ },
+ {
+ "__id__": 33
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 31
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 31
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 125
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lblID",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 101.46,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -54.4
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c33caUjNudIi5xKVbVBK8KB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 35
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 34
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "ID:10001",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg_gems",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 174,
+ "height": 42
+ },
+ "_children": [
+ {
+ "__id__": 37
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 214,
+ "y": -95.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "db2daf4ISdJAKHElpO91UX2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 39
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "z_zhuangshi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 36
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 60,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -53.4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2b744V1f/tGhq7fW3B3o6g7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 38
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 37
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c35d6dfe-70ee-4bc0-8bc8-38b9ec4618f2"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 36
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "792edbfd-c7c3-4fbc-af11-abc267ab9d7d"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lblGems",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 271,
+ "y": -95.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dc72fWCPT9Gq4Enjpfm6Fqx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 41
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 40
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9999",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_add_gems",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 31,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 289,
+ "y": -94.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8be5bqkTzxBzarTyUZr/SzQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 43
+ },
+ {
+ "__id__": 44
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 42
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b874b9e3-55b7-46b5-911e-46d8e00ae34d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 42
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 45
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "b874b9e3-55b7-46b5-911e-46d8e00ae34d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 42
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Hall",
+ "handler": "onBtnAddGemsClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lblMoney",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120.84,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 144,
+ "y": -197
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "11ce3cUsoZHibnZSjMagSmH",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 47
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "111.5K",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_add_coin",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 19
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 247,
+ "y": -197
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ddbe4mChWNIlLFakVUQt63C",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 49
+ },
+ {
+ "__id__": 50
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 48
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 48
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 48
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 18
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 9,
+ "_left": -0.5,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bottom_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -640.5,
+ "y": -360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e53fdXDNcxN8pYbNIzLUXDF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 53
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 52
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 12,
+ "_left": -0.5,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "center",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "48bf9XvvIBNaoUXuWroCmxV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 55
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 54
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 16,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_zhanji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 173,
+ "height": 139
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -250,
+ "y": -273
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1cbfbdDm5NIC6uoSA/EfjB8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 57
+ },
+ {
+ "__id__": 58
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 56
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b03dc8dc-0c47-41b0-96e5-e638457d4fa4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 56
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 56
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_share",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 117,
+ "height": 133
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 15,
+ "y": -274
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0c7b2xlbBJKRrkSdM6SYYwM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 60
+ },
+ {
+ "__id__": 61
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 59
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "653c33e2-391d-4d4b-b922-e48e6b9f3a42"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 59
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 62
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 59
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Hall",
+ "handler": "onShare",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_feedback",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 145,
+ "height": 133
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 250,
+ "y": -274
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d8a30KJhUNCEKEuAiDp1DEy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 64
+ },
+ {
+ "__id__": 65
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 63
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "52a1abf5-8762-4bb7-82dd-c6c7afc88610"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 63
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 66
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 63
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Hall",
+ "handler": "onBtnTaobaoClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "right_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 68
+ },
+ {
+ "__id__": 71
+ },
+ {
+ "__id__": 74
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 640,
+ "y": 347
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d15d3Jg5D1FkYgfdWJpyPXR",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 77
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_shezhi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 67
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 67,
+ "height": 79
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -54,
+ "y": -49
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7fca0K2O55LXaJi9qyZ9K6O",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 69
+ },
+ {
+ "__id__": 70
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 68
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b0737cf8-25e7-4122-a577-66181b3ffbb8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 68
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "b0737cf8-25e7-4122-a577-66181b3ffbb8"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 68
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_help",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 67
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 67,
+ "height": 79
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -138,
+ "y": -49
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8fec5A6TFlHYoHSWwBB/I2J",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 72
+ },
+ {
+ "__id__": 73
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "147fe42f-7640-4b8a-adf2-b4097e0c7e65"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "147fe42f-7640-4b8a-adf2-b4097e0c7e65"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 71
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_xiaoxi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 67
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 67,
+ "height": 79
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -225,
+ "y": -49
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c34d7xghzFKf7CBjvW9jyIW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 75
+ },
+ {
+ "__id__": 76
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 74
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "24670f05-f6d6-42a2-b7a4-ef9e463011f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 74
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "24670f05-f6d6-42a2-b7a4-ef9e463011f7"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 74
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 67
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 37,
+ "_left": 0,
+ "_right": 0,
+ "_top": 13,
+ "_bottom": 707,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 384,
+ "height": 99
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 300
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "51c8faSEapB7K6PxZjvJJJ9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 79
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 78
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "de83c74a-5db9-4fb2-a445-f8ee6aa5ed45"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "notice",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 81
+ },
+ {
+ "__id__": 83
+ },
+ {
+ "__id__": 87
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 197
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "74274eneHhFf6HVUHylKil/",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg_notice",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 80
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 700,
+ "height": 45
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b1810yHt+JOJY0haWOk1gpt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 82
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 81
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cf017ebf-8a52-4b86-b6b8-e84ad1dd9ff0"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Node",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 80
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 620,
+ "height": 45
+ },
+ "_children": [
+ {
+ "__id__": 84
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e9258OcW5NAuL25dvbVZS9N",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 86
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lblNotice",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 83
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1080,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 641,
+ "y": -1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "15eeeWTcv5ME6s6wlun9pzB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 85
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 84
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "大王叫我来巡山,我来牌馆转一转。胡着我的牌,数着赢的钱,生活充满节奏感。",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 83
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "homelaba",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 80
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 39,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -327,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ae3f90+SZJAXan23LZQxfci",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 88
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 87
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9fe76483-1a41-4ec8-9779-147f104cf4f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "79ca1461-bcce-4e92-a148-bbd4884778f1"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_create_room",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 383,
+ "height": 159
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 423,
+ "y": 80
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3365085k5lBeZyURkKHHwfo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 90
+ },
+ {
+ "__id__": 91
+ },
+ {
+ "__id__": 93
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 89
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "124287eb-7819-4f20-91da-50759cb16063"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 89
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 92
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 89
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Hall",
+ "handler": "onCreateRoomClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 89
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 0.049843749999999964,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": false,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnJoinGame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 383,
+ "height": 159
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 423,
+ "y": -90
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b62d7EMFz5FbaqvYHXZhzkn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 95
+ },
+ {
+ "__id__": 96
+ },
+ {
+ "__id__": 98
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 94
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5cdf3758-4cce-4dcf-9321-a257a408269c"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 94
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 97
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 94
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Hall",
+ "handler": "onJoinGameClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 94
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 0.049843749999999964,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": false,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnReturnGame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 383,
+ "height": 159
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 423,
+ "y": -90
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ae424aEM8hHMYJXyyGjRBbJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 100
+ },
+ {
+ "__id__": 101
+ },
+ {
+ "__id__": 103
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 99
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "f6c224f1-be43-4b53-a56b-a75f5001c952"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 99
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 102
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 99
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Hall",
+ "handler": "onReturnGameClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 99
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 0.049843749999999964,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": false,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "JoinGame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 105
+ },
+ {
+ "__id__": 110
+ },
+ {
+ "__id__": 113
+ },
+ {
+ "__id__": 119
+ },
+ {
+ "__id__": 122
+ },
+ {
+ "__id__": 125
+ },
+ {
+ "__id__": 128
+ },
+ {
+ "__id__": 131
+ },
+ {
+ "__id__": 134
+ },
+ {
+ "__id__": 137
+ },
+ {
+ "__id__": 199
+ },
+ {
+ "__id__": 202
+ },
+ {
+ "__id__": 205
+ },
+ {
+ "__id__": 208
+ },
+ {
+ "__id__": 211
+ },
+ {
+ "__id__": 214
+ },
+ {
+ "__id__": 217
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 8,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a6f6djGb+RJRZE6TYjnaKP7",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 222
+ }
+ ],
+ "_prefab": {
+ "__id__": 223
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 32,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "25d00V2eCtB1IdSxeVkqQPM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 106
+ },
+ {
+ "__id__": 107
+ },
+ {
+ "__id__": 108
+ }
+ ],
+ "_prefab": {
+ "__id__": 109
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 105
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 105
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 105
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 105
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "25d00V2eCtB1IdSxeVkqQPM",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Num25",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 845,
+ "height": 592
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "595cbbTCzNF1K4gxrOtC3HI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 111
+ }
+ ],
+ "_prefab": {
+ "__id__": 112
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 110
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "03a6660a-ee76-4896-8673-0f9b9e65a1c0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "595cbbTCzNF1K4gxrOtC3HI",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene20",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 227,
+ "height": 56
+ },
+ "_children": [
+ {
+ "__id__": 114
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 244
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e1149jrR9tMqILQ08rZNSey",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 117
+ }
+ ],
+ "_prefab": {
+ "__id__": 118
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 168,
+ "g": 33,
+ "b": 33,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 113
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 240,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -79
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "45a5fv9Vj9C5bXwmHWWAt0Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 115
+ }
+ ],
+ "_prefab": {
+ "__id__": 116
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 114
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "请输入房间号",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "45a5fv9Vj9C5bXwmHWWAt0Q",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 113
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "38744dcf-8d01-40b5-868b-e74014d78dcd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "e1149jrR9tMqILQ08rZNSey",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 247,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 150,
+ "g": 16,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 19.47,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.5,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -150,
+ "y": 87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "78f20DNTv9LVJT/WB9ZZubo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 120
+ }
+ ],
+ "_prefab": {
+ "__id__": 121
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 119
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "_",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "78f20DNTv9LVJT/WB9ZZubo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 247,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 150,
+ "g": 16,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 19.47,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.5,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -90,
+ "y": 87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c5b7dmvpGhMsZTyuJh6EM19",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 123
+ }
+ ],
+ "_prefab": {
+ "__id__": 124
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 122
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "_",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "78f20DNTv9LVJT/WB9ZZubo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 247,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 150,
+ "g": 16,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 19.47,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.5,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -30,
+ "y": 87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "22ddczwQ5NFxoJQwcpE3rHe",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 126
+ }
+ ],
+ "_prefab": {
+ "__id__": 127
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 125
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "_",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "78f20DNTv9LVJT/WB9ZZubo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 247,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 150,
+ "g": 16,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 19.47,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.5,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 30,
+ "y": 87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1c77c3TxrBL2oUSH0OSQqJF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 129
+ }
+ ],
+ "_prefab": {
+ "__id__": 130
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 128
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "_",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "78f20DNTv9LVJT/WB9ZZubo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 247,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 150,
+ "g": 16,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 19.47,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.5,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 90,
+ "y": 87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "97a9eOeh/1BfJa0c51F/P5r",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 132
+ }
+ ],
+ "_prefab": {
+ "__id__": 133
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 131
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "_",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "78f20DNTv9LVJT/WB9ZZubo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_shurukuang",
+ "_objFlags": 0,
+ "_opacity": 247,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 150,
+ "g": 16,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 19.47,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.5,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "34792hd1vxA1IfU8XaZ0KPa",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 135
+ }
+ ],
+ "_prefab": {
+ "__id__": 136
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 134
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "_",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "78f20DNTv9LVJT/WB9ZZubo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Node",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 138
+ },
+ {
+ "__id__": 143
+ },
+ {
+ "__id__": 148
+ },
+ {
+ "__id__": 153
+ },
+ {
+ "__id__": 158
+ },
+ {
+ "__id__": 163
+ },
+ {
+ "__id__": 168
+ },
+ {
+ "__id__": 173
+ },
+ {
+ "__id__": 178
+ },
+ {
+ "__id__": 183
+ },
+ {
+ "__id__": 188
+ },
+ {
+ "__id__": 193
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dd4bfMKgpRAH6bjQoDE4mvz",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 198
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 248,
+ "height": 87
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -257
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2c167mtG9ZEZ4ZplsZXovos",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 139
+ },
+ {
+ "__id__": 140
+ }
+ ],
+ "_prefab": {
+ "__id__": 142
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 138
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a856e807-c132-4e91-bda1-b95a0593291b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 138
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 141
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "a856e807-c132-4e91-bda1-b95a0593291b"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 138
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN0Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "2c167mtG9ZEZ4ZplsZXovos",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 257,
+ "height": 87
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -252,
+ "y": 2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f3800UeBfJOSITWhzg5OlM8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 144
+ },
+ {
+ "__id__": 145
+ }
+ ],
+ "_prefab": {
+ "__id__": 147
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 143
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9a015ff4-f39b-41a5-bc1f-fff72dafcdb6"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 143
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 121,
+ "g": 121,
+ "b": 121,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 146
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "9a015ff4-f39b-41a5-bc1f-fff72dafcdb6"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 143
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN1Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "f3800UeBfJOSITWhzg5OlM8",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 248,
+ "height": 87
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "23ea8B3UbBPjal+sirrQtfX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 149
+ },
+ {
+ "__id__": 150
+ }
+ ],
+ "_prefab": {
+ "__id__": 152
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 148
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aa33de03-9b55-459d-b5b0-8e7c6fb20b00"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 148
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 151
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "aa33de03-9b55-459d-b5b0-8e7c6fb20b00"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 148
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN2Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "23ea8B3UbBPjal+sirrQtfX",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 259,
+ "height": 87
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 252,
+ "y": 2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7773c6C9lVLgpyTT5VqjqQK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 154
+ },
+ {
+ "__id__": 155
+ }
+ ],
+ "_prefab": {
+ "__id__": 157
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 153
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cf7639d5-3f54-4160-94e6-01298d35fd02"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 153
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 156
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "cf7639d5-3f54-4160-94e6-01298d35fd02"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 153
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN3Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "7773c6C9lVLgpyTT5VqjqQK",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 257,
+ "height": 86
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -252,
+ "y": -85
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3c269X0+5VBYbQ/xNE6YyRY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 159
+ },
+ {
+ "__id__": 160
+ }
+ ],
+ "_prefab": {
+ "__id__": 162
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 158
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cb10cfc4-0088-4bc5-8f3b-a2af00fb88b1"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 158
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 161
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "cb10cfc4-0088-4bc5-8f3b-a2af00fb88b1"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 158
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN4Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "3c269X0+5VBYbQ/xNE6YyRY",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 248,
+ "height": 86
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -85
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3129cYVsLJBjLV7URgRudw+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 164
+ },
+ {
+ "__id__": 165
+ }
+ ],
+ "_prefab": {
+ "__id__": 167
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 163
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aa52ef21-75a9-45ac-9725-afbf473df0b7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 163
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 166
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "aa52ef21-75a9-45ac-9725-afbf473df0b7"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 163
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN5Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "3129cYVsLJBjLV7URgRudw+",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 259,
+ "height": 86
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 252,
+ "y": -85
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b50e6xkh3BA17hXRAsPOHzH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 169
+ },
+ {
+ "__id__": 170
+ }
+ ],
+ "_prefab": {
+ "__id__": 172
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 168
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d5119d67-5224-4403-8130-5a1b50128280"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 168
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 171
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "d5119d67-5224-4403-8130-5a1b50128280"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 168
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN6Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "b50e6xkh3BA17hXRAsPOHzH",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 257,
+ "height": 85
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -252,
+ "y": -171
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2c0bbp34QdEFp+n9bT4hHPa",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 174
+ },
+ {
+ "__id__": 175
+ }
+ ],
+ "_prefab": {
+ "__id__": 177
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 173
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fbd4f585-4b9f-483f-82ab-02085b92b38e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 173
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 176
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "fbd4f585-4b9f-483f-82ab-02085b92b38e"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 173
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN7Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "2c0bbp34QdEFp+n9bT4hHPa",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 248,
+ "height": 85
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -171
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a3f72L63TJMIpGGgcehhglJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 179
+ },
+ {
+ "__id__": 180
+ }
+ ],
+ "_prefab": {
+ "__id__": 182
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 178
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "0d530de2-7c69-407b-a81e-58f8aa35e92a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 178
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 181
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "0d530de2-7c69-407b-a81e-58f8aa35e92a"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 178
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN8Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "a3f72L63TJMIpGGgcehhglJ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 259,
+ "height": 85
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 252,
+ "y": -171
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3721auLL6ZAuYCquBZP0TPV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 184
+ },
+ {
+ "__id__": 185
+ }
+ ],
+ "_prefab": {
+ "__id__": 187
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 183
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b1851886-6654-48f8-bbda-22f762d3e3b3"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 183
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 186
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "b1851886-6654-48f8-bbda-22f762d3e3b3"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 183
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onN9Clicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "3721auLL6ZAuYCquBZP0TPV",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_Lose_weight",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 257,
+ "height": 87
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -252,
+ "y": -257
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "db661z9hfVCP5gdGXiWgNmz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 189
+ },
+ {
+ "__id__": 190
+ }
+ ],
+ "_prefab": {
+ "__id__": 192
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 188
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "59788439-5d0c-4124-842b-44d03e21f1bd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 188
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 191
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "59788439-5d0c-4124-842b-44d03e21f1bd"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 188
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onResetClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "db661z9hfVCP5gdGXiWgNmz",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_button_del",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 137
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 259,
+ "height": 87
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 252,
+ "y": -257
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c3fa30uhelN5ZjGuUnwBVdZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 194
+ },
+ {
+ "__id__": 195
+ }
+ ],
+ "_prefab": {
+ "__id__": 197
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 193
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "61b4cc23-12d5-45ee-a302-b15d54acaf4c"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "e34ab6be-5473-4435-94e5-e6c24b404352"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 193
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 196
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "61b4cc23-12d5-45ee-a302-b15d54acaf4c"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 193
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onDelClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "c3fa30uhelN5ZjGuUnwBVdZ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "dd4bfMKgpRAH6bjQoDE4mvz",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 120,
+ "g": 20,
+ "b": 20,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -150,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "915ce899XhGkqaFFA1Pnemx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 200
+ }
+ ],
+ "_prefab": {
+ "__id__": 201
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 199
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "915ce899XhGkqaFFA1Pnemx",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 120,
+ "g": 20,
+ "b": 20,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -90,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a6f8bdtqnVIsKs3MW5cL6Qw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 203
+ }
+ ],
+ "_prefab": {
+ "__id__": 204
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 202
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "a6f8bdtqnVIsKs3MW5cL6Qw",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 120,
+ "g": 20,
+ "b": 20,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -30,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3c0099vmrRPx5jtxdJkfzCU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 206
+ }
+ ],
+ "_prefab": {
+ "__id__": 207
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 205
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "3c0099vmrRPx5jtxdJkfzCU",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 120,
+ "g": 20,
+ "b": 20,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 30,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "538dcFqX41G/LRUJpTf6WWB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 209
+ }
+ ],
+ "_prefab": {
+ "__id__": 210
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 208
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "538dcFqX41G/LRUJpTf6WWB",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 120,
+ "g": 20,
+ "b": 20,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 90,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7944fToJUZG7pxR55fH8bSe",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 212
+ }
+ ],
+ "_prefab": {
+ "__id__": 213
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 211
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "7944fToJUZG7pxR55fH8bSe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "N5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 120,
+ "g": 20,
+ "b": 20,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 22.25,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d7005p/0WJEpL6ulCmWP7ko",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 215
+ }
+ ],
+ "_prefab": {
+ "__id__": 216
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 214
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "9",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "d7005p/0WJEpL6ulCmWP7ko",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 104
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 362,
+ "y": 259
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5f4e9drH6ZPhaywnudhwJ3Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 218
+ },
+ {
+ "__id__": 219
+ }
+ ],
+ "_prefab": {
+ "__id__": 221
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 217
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 217
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 220
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 217
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 104
+ },
+ "component": "JoinGameInput",
+ "handler": "onCloseClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "5f4e9drH6ZPhaywnudhwJ3Y",
+ "sync": false
+ },
+ {
+ "__type__": "10a1c8jz95Ju4NnpkOWUfin",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 104
+ },
+ "_enabled": true,
+ "nums": [
+ {
+ "__id__": 200
+ },
+ {
+ "__id__": 203
+ },
+ {
+ "__id__": 206
+ },
+ {
+ "__id__": 209
+ },
+ {
+ "__id__": 212
+ },
+ {
+ "__id__": 215
+ }
+ ],
+ "_inputIndex": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 104
+ },
+ "asset": {
+ "__uuid__": "c6fea8b3-7baf-46b6-85d7-e370a60ca2c5"
+ },
+ "fileId": "a6f6djGb+RJRZE6TYjnaKP7",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CreateRoom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 225
+ },
+ {
+ "__id__": 253
+ },
+ {
+ "__id__": 271
+ },
+ {
+ "__id__": 276
+ },
+ {
+ "__id__": 282
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "af2a4AjnnZAmJW00pZq94lt",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 663
+ },
+ {
+ "__id__": 664
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 224
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 226
+ },
+ {
+ "__id__": 228
+ },
+ {
+ "__id__": 232
+ },
+ {
+ "__id__": 234
+ },
+ {
+ "__id__": 236
+ },
+ {
+ "__id__": 238
+ },
+ {
+ "__id__": 240
+ },
+ {
+ "__id__": 242
+ },
+ {
+ "__id__": 244
+ },
+ {
+ "__id__": 246
+ },
+ {
+ "__id__": 248
+ },
+ {
+ "__id__": 250
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "691ae56mIBBgLQGuxOuyKla",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 252
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene19",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "363cdJIRgVJ8opCQFiPB+KT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 227
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 226
+ },
+ "_enabled": false,
+ "_spriteFrame": {
+ "__uuid__": "b421470e-abca-4b84-9e4c-eab8b6b7806e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "helpbg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1230,
+ "height": 670
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2941eZeKjlNor7/P/jJAR2s",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 229
+ },
+ {
+ "__id__": 230
+ },
+ {
+ "__id__": 231
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 228
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 228
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 228
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 228
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 25,
+ "_right": 25,
+ "_top": 25,
+ "_bottom": 25,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 758,
+ "_originalHeight": 480
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1180,
+ "height": 432
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -32
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "11c029v+OtDS4Hlr/i4kbnT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 233
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 232
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "306a0d16-09f5-4c00-9bdb-0dc53c00990c"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 54
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 290
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ce6e6p7/W1P7rY+1Dp2AXUf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 235
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 234
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bf6861d5-7745-42f4-a6a7-82278bb6d583"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 192,
+ "height": 68
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -250,
+ "y": 236
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "08b7f4z4pFEtaWK99yTFIfe",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 237
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 236
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "6656bc3b-58ee-4b27-b058-13208d96e148"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom18",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1129,
+ "height": 6
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 120
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "55b76/pfLpEa4aBIzL/4sL9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 239
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 238
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "36839b7e-2d75-4b5c-9e36-9c4005ac8be0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom18",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1129,
+ "height": 6
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 60
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5a89cIFC4ZK0Lia52CxNI9Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 241
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 240
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "36839b7e-2d75-4b5c-9e36-9c4005ac8be0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom18",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1129,
+ "height": 6
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b1644DVaJlHGpoBcGkkpXiQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 243
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 242
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "36839b7e-2d75-4b5c-9e36-9c4005ac8be0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom18",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1129,
+ "height": 6
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -60
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9ab69/lKwVP4JNT/IqqYCk8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 245
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 244
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "36839b7e-2d75-4b5c-9e36-9c4005ac8be0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom18",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1129,
+ "height": 6
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -120
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "34322swOyhLaoMasOpznafO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 247
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 246
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "36839b7e-2d75-4b5c-9e36-9c4005ac8be0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom18",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1129,
+ "height": 6
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -180
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d787fgbKtRB0INJO7DqwT+l",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 249
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 248
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "36839b7e-2d75-4b5c-9e36-9c4005ac8be0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 225
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 720,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -222
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b3d0cjZmFJKNozBha8nEfYT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 251
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 250
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "注:房卡将在第一局结算时扣除,提前解散不扣房卡。",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 225
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "leixingxuanze",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 224
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 254
+ },
+ {
+ "__id__": 262
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -481,
+ "y": 250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "08e23ASO2JKUYVS5Yd8BRvm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 270
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 253
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 255
+ },
+ {
+ "__id__": 259
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7ec61jal95PBJAhkwcloEbZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 261
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 254
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 192,
+ "height": 86
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7fe86gJz7hF9bDiNbTFkkt/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 256
+ },
+ {
+ "__id__": 257
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 255
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "59821a17-576c-458a-9bbc-9930b55e0690"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 255
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 258
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 255
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 254
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 254
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 165,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -10
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bcb5abNiRBFE7hFEMmIFoq7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 260
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 259
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7f83d309-ba3c-4869-8942-2d727697a3c3"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 254
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 255
+ },
+ "sprite": {
+ "__uuid__": "6656bc3b-58ee-4b27-b058-13208d96e148"
+ },
+ "checkedSprite": {
+ "__uuid__": "59821a17-576c-458a-9bbc-9930b55e0690"
+ },
+ "checked": true,
+ "groupId": 20
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 253
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 263
+ },
+ {
+ "__id__": 267
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 191,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "675b21l/9hD4IkyglMIguuA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 269
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 262
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 192,
+ "height": 86
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a8fc7iq7mhOA6mYV1Nx+Rmh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 264
+ },
+ {
+ "__id__": 265
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 263
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "59821a17-576c-458a-9bbc-9930b55e0690"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 263
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 266
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 263
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 262
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 262
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 165,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -10
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "02911SAvhVPr4Gd/egCYVvb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 268
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 267
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cf4f1ee6-e71c-44a5-adf4-d71d7d33530e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 262
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 263
+ },
+ "sprite": {
+ "__uuid__": "6656bc3b-58ee-4b27-b058-13208d96e148"
+ },
+ "checkedSprite": {
+ "__uuid__": "59821a17-576c-458a-9bbc-9930b55e0690"
+ },
+ "checked": false,
+ "groupId": 20
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 253
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 8,
+ "_left": 159,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_back",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 224
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 589,
+ "y": 309
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0cce4G/o0dNG5zIG3mAaZO3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 272
+ },
+ {
+ "__id__": 273
+ },
+ {
+ "__id__": 275
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 271
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 271
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 274
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "2d167769-a80b-4b3d-89f1-b150fa64008e"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 271
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 224
+ },
+ "component": "CreateRoom",
+ "handler": "onBtnBack",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 271
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 33,
+ "_left": -3,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 224
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 288,
+ "height": 77
+ },
+ "_children": [
+ {
+ "__id__": 277
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -278
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4befaAlyoNAcYH9+MoI3NqU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 279
+ },
+ {
+ "__id__": 280
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene22",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 276
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 98,
+ "height": 47
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "db334XgMK1MFKdxSiTbtiIE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 278
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 277
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "93c93965-d3d4-4483-a96e-497e1b243dbc"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 276
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5914f056-b6c1-4bbd-979b-92b5b721c7f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 276
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 281
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "5914f056-b6c1-4bbd-979b-92b5b721c7f4"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 276
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 224
+ },
+ "component": "CreateRoom",
+ "handler": "onBtnOK",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "game_list",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 224
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 283
+ },
+ {
+ "__id__": 473
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "157e4AzGy5DVatruawdTZ0X",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xzdd",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 282
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 284
+ },
+ {
+ "__id__": 320
+ },
+ {
+ "__id__": 343
+ },
+ {
+ "__id__": 385
+ },
+ {
+ "__id__": 431
+ },
+ {
+ "__id__": 452
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "058daCrwMZKbIeK/U+kfbfx",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "difenxuanze",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 283
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 285
+ },
+ {
+ "__id__": 296
+ },
+ {
+ "__id__": 307
+ },
+ {
+ "__id__": 318
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -258,
+ "y": 33
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "00f98WvKrZK3Zir0sX+FhKf",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 284
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 286
+ },
+ {
+ "__id__": 291
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "eca0c2zrAVHv5cTqFN/jyKB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 294
+ }
+ ],
+ "_prefab": {
+ "__id__": 295
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 285
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fe6700w7GtPq7yFkzsfG9qF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 287
+ },
+ {
+ "__id__": 288
+ }
+ ],
+ "_prefab": {
+ "__id__": 290
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 286
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 286
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 289
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 286
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 285
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 285
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 285
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b8dd4FInR1FELXZNCqWJ5zv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 292
+ }
+ ],
+ "_prefab": {
+ "__id__": 293
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 291
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1分",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 285
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 285
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 286
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 1
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 285
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 284
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 297
+ },
+ {
+ "__id__": 302
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 250,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4f669OtYaJJuLapUbsSdD5a",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 305
+ }
+ ],
+ "_prefab": {
+ "__id__": 306
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "683e049GAlNX7zh1bDqKiJt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 298
+ },
+ {
+ "__id__": 299
+ }
+ ],
+ "_prefab": {
+ "__id__": 301
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 297
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 297
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 300
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 297
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 296
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 296
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dfc01q6fr1O7IYCnkzg4+dk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 303
+ }
+ ],
+ "_prefab": {
+ "__id__": 304
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 302
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "2分",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 296
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 296
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 297
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 1
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 296
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 284
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 308
+ },
+ {
+ "__id__": 313
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 380,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0ab47juOPxOhaE8uWOAc+ag",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 316
+ }
+ ],
+ "_prefab": {
+ "__id__": 317
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 307
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a51dcA7QI9BJo78TIL8IkLA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 309
+ },
+ {
+ "__id__": 310
+ }
+ ],
+ "_prefab": {
+ "__id__": 312
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 308
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 308
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 311
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 308
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 307
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 307
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 307
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c02968UBxBFV4SaGkSRRU+a",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 314
+ }
+ ],
+ "_prefab": {
+ "__id__": 315
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 313
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "5分",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 307
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 307
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 308
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 1
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 307
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 284
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3b012ifTp5NhImv5JNzLuRz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 319
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 318
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "底分选择",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xuanzejushu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 283
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 321
+ },
+ {
+ "__id__": 331
+ },
+ {
+ "__id__": 341
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 147
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d5159zakB1PrJN9Wyh8ddFt",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 320
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 322
+ },
+ {
+ "__id__": 326
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bb13f2u85NLI6yh2eb8rONV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 330
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 321
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "051d7JJWc5OvLWZ9+pW/rmn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 323
+ },
+ {
+ "__id__": 324
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 322
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 322
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 325
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 322
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 321
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 321
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 158.35,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "aa596kXib1ASomdRUzu/0dy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 327
+ },
+ {
+ "__id__": 328
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 326
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "4局(房卡x2)",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 326
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 329
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 326
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 321
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 321
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 322
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 2
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 320
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 332
+ },
+ {
+ "__id__": 336
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "64155AsWFpGur+W2dFB5d5F",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 340
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 331
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dff71mqKr1OWZ1wnQ6ja1ri",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 333
+ },
+ {
+ "__id__": 334
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 332
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 332
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 335
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 332
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 331
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 331
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 158.35,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d146cahlVRO4pAvZ1URgTkU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 337
+ },
+ {
+ "__id__": 338
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 336
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "8局(房卡x3)",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 336
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 339
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 336
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 331
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 331
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 332
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 2
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 320
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 82,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "76b7fWBIIdESKPw08bxKoh3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 342
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 341
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "31aa3b0f-133e-4fe4-9daf-f5c267d8c8d1"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zuidafanshu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 283
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 344
+ },
+ {
+ "__id__": 357
+ },
+ {
+ "__id__": 370
+ },
+ {
+ "__id__": 383
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 85
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7d00a6YXpRPHKYrssp+RzAN",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 343
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 345
+ },
+ {
+ "__id__": 350
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 355
+ }
+ ],
+ "_prefab": {
+ "__id__": 356
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 344
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b4e0ap95F1L56CsOQdgftYu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 346
+ },
+ {
+ "__id__": 347
+ }
+ ],
+ "_prefab": {
+ "__id__": 349
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 345
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 345
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 348
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 345
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 344
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 344
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 344
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "23d30NXhR5GJ6F+RFLysF1m",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 351
+ },
+ {
+ "__id__": 352
+ }
+ ],
+ "_prefab": {
+ "__id__": 354
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 350
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "3番",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 350
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 353
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 350
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 344
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 344
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 344
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 345
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 344
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 343
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 358
+ },
+ {
+ "__id__": 363
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3aa42CKVhBDwYM4mpG/rQpV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 368
+ }
+ ],
+ "_prefab": {
+ "__id__": 369
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 357
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d0befsAcyBFmqj9Yb1XruwT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 359
+ },
+ {
+ "__id__": 360
+ }
+ ],
+ "_prefab": {
+ "__id__": 362
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 358
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 358
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 361
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 358
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 357
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 357
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 357
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "65fa2Gw+slKja8D4ZiRiYgk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 364
+ },
+ {
+ "__id__": 365
+ }
+ ],
+ "_prefab": {
+ "__id__": 367
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 363
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "4番",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 363
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 366
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 363
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 357
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 357
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 357
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 358
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 357
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 343
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 371
+ },
+ {
+ "__id__": 376
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 670,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7a76doL19pNtYR862bW1OBd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 381
+ }
+ ],
+ "_prefab": {
+ "__id__": 382
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bd1b5NwDthEd5UTkKBEgg7n",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 372
+ },
+ {
+ "__id__": 373
+ }
+ ],
+ "_prefab": {
+ "__id__": 375
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 371
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 371
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 374
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 371
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 370
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 370
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a5d15xf65FPoYAspCRYd/vl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 377
+ },
+ {
+ "__id__": 378
+ }
+ ],
+ "_prefab": {
+ "__id__": 380
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 376
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "5番",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 376
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 379
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 376
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 370
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 370
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 370
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 371
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 370
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom19",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 343
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 82,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ead14sQHbhOWKMwx+qAQUCn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 384
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 383
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ceb4144f-fb9b-4869-ac37-cbcff0a0bef7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wanfaxuanze",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 283
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 386
+ },
+ {
+ "__id__": 399
+ },
+ {
+ "__id__": 409
+ },
+ {
+ "__id__": 419
+ },
+ {
+ "__id__": 429
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 27
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ea137tQzShNR40eis9t0nE7",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CheckBox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 385
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 387
+ },
+ {
+ "__id__": 392
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "411e3xD1odODLn4JqeODGf/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 397
+ }
+ ],
+ "_prefab": {
+ "__id__": 398
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 386
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 37,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2e08a4rYZtOmph3Mfqwodl0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 388
+ },
+ {
+ "__id__": 389
+ }
+ ],
+ "_prefab": {
+ "__id__": 391
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 387
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 387
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 390
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 387
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 386
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 386
+ },
+ "asset": null,
+ "fileId": "aa067jnQLxC+Kt05ytyhyvG",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 386
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "00727/1X2BBC5kuoVoRiiTe",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 393
+ },
+ {
+ "__id__": 394
+ }
+ ],
+ "_prefab": {
+ "__id__": 396
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 392
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "换三张",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 392
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 395
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 392
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 386
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 386
+ },
+ "asset": null,
+ "fileId": "03b96J1mZNM6rEtNjB/CwaU",
+ "sync": false
+ },
+ {
+ "__type__": "dc9e5hcegFBFpbh0CwUFw8V",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 386
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 387
+ },
+ "sprite": {
+ "__uuid__": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed"
+ },
+ "checkedSprite": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "checked": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 386
+ },
+ "asset": null,
+ "fileId": "34d74WTWOhOyb6BWflYe0OV",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CheckBox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 385
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 400
+ },
+ {
+ "__id__": 404
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": -123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9ccb0eR30xNi6iEDsb2h0a0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 408
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 399
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 37,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "344c2WerB1GXpU2h4gFXjzS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 401
+ },
+ {
+ "__id__": 402
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 400
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 400
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 403
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 400
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 399
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 399
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 60,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1df51G/+QNGG4hXvMO7Kg8p",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 405
+ },
+ {
+ "__id__": 406
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 404
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "将对",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 404
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 407
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 404
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 399
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "dc9e5hcegFBFpbh0CwUFw8V",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 399
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 400
+ },
+ "sprite": {
+ "__uuid__": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed"
+ },
+ "checkedSprite": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "checked": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CheckBox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 385
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 410
+ },
+ {
+ "__id__": 414
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -184
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fab1dmpj/tFsZIjTcB3mt4e",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 418
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 409
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 37,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7f803NzgeZMcqRC28FiKK58",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 411
+ },
+ {
+ "__id__": 412
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 410
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 410
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 413
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 410
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 409
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 409
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4c5a9igy+xLbJUHFzc8UibV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 415
+ },
+ {
+ "__id__": 416
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 414
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "门清、中张",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 414
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 417
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 414
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 409
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "dc9e5hcegFBFpbh0CwUFw8V",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 409
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 410
+ },
+ "sprite": {
+ "__uuid__": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed"
+ },
+ "checkedSprite": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "checked": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CheckBox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 385
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 420
+ },
+ {
+ "__id__": 424
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": -184
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f9402KIQ+dO/Ky829SnKe+6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 428
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 419
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 37,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9600fBsFHpAGrW6/ww5x3sS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 421
+ },
+ {
+ "__id__": 422
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 420
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 420
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 423
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 420
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 419
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 419
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bfa512tP+tHcYZgfAvv+sUO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 425
+ },
+ {
+ "__id__": 426
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 424
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "天地胡",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 424
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 427
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 424
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 419
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "dc9e5hcegFBFpbh0CwUFw8V",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 419
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 420
+ },
+ "sprite": {
+ "__uuid__": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed"
+ },
+ "checkedSprite": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "checked": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom15",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 385
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 82,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0e161GYsnRO2pI8zbjgHogG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 430
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 429
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b043e12f-af52-49e5-ab0e-17f848fbd3ec"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zimojiacheng",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 283
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 432
+ },
+ {
+ "__id__": 442
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 27
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d90f9tWbwNKz5dfNNU8WM0f",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 431
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 433
+ },
+ {
+ "__id__": 437
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "21b48LTCkRFubc+ui/OLsD/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 441
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 432
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1c3c6zeFD1Mza3/j29H8CU7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 434
+ },
+ {
+ "__id__": 435
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 433
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 433
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 436
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 433
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 432
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 432
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "aa4399BLHxBto8w0yuLHr8D",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 438
+ },
+ {
+ "__id__": 439
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 437
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "自摸加底",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 437
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 440
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 437
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 432
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 432
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 433
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 4
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 431
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 443
+ },
+ {
+ "__id__": 447
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "675e0pFp1xL/JhF9mFXNwch",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 451
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 442
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c2706/iRKNEcK+Fhdq0mjqG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 444
+ },
+ {
+ "__id__": 445
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 443
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 443
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 446
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 443
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 442
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 442
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c33b5ZDcD9E+J4Ha7QFoSgW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 448
+ },
+ {
+ "__id__": 449
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 447
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "自摸加番",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 447
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 450
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 447
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 442
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 442
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 443
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 4
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dianganghua",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 283
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 453
+ },
+ {
+ "__id__": 463
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 27
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9ec03tG+PRJ9bLh2RfMClbZ",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 452
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 454
+ },
+ {
+ "__id__": 458
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -61
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2f205onHLdFqbspqymmdXkM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 462
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 453
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2dc02XtfSZL3IL2T/F1n3Mu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 455
+ },
+ {
+ "__id__": 456
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 454
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 454
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 457
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 454
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 453
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 453
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 169.98,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cee75rwyo5D3ZoVKtA6yIZr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 459
+ },
+ {
+ "__id__": 460
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 458
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点杠花(点炮)",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 458
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 461
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 458
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 453
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 453
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 454
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 5
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 452
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 464
+ },
+ {
+ "__id__": 468
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": -61
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "df6caYNL11FdrhlfiwBLEGO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 472
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 463
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "270edhNLchLx5gqSrs+R8nb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 465
+ },
+ {
+ "__id__": 466
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 464
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 464
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 467
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 464
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 463
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 463
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 169.98,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "62bcbo3ujFDN5q+fOFTDqeN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 469
+ },
+ {
+ "__id__": 470
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 468
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点杠花(自摸)",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 468
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 471
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 468
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 463
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 463
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 464
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 5
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xlch",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 282
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 474
+ },
+ {
+ "__id__": 495
+ },
+ {
+ "__id__": 531
+ },
+ {
+ "__id__": 554
+ },
+ {
+ "__id__": 596
+ },
+ {
+ "__id__": 642
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c4a93TwEwpCBJKv8CKRSLoL",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dianganghua",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 473
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 475
+ },
+ {
+ "__id__": 485
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 27
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cf304FTnLNBPpW6HX2UghT6",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 474
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 476
+ },
+ {
+ "__id__": 480
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -61
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "17d94LPoW9DrIqLygIUcBOi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 484
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 475
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3517aduzxxOUaa0jmMgpnbS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 477
+ },
+ {
+ "__id__": 478
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 476
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 476
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 479
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 476
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 475
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 475
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 169.98,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6e8d7mIPRFNpaWIh7BUYGlr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 481
+ },
+ {
+ "__id__": 482
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 480
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点杠花(点炮)",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 480
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 483
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 480
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 475
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 475
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 476
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 5
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 474
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 486
+ },
+ {
+ "__id__": 490
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": -61
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2ce38Z10lpKZJd3ZGlguM9q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 494
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 485
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e4799ElrepDTK4fWyFweQnb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 487
+ },
+ {
+ "__id__": 488
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 486
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 486
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 489
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 486
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 485
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 485
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 169.98,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b5520B0etNPJoTwX4r3cEJO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 491
+ },
+ {
+ "__id__": 492
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 490
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点杠花(自摸)",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 490
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 493
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 490
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 485
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 485
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 486
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 5
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "difenxuanze",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 473
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 496
+ },
+ {
+ "__id__": 507
+ },
+ {
+ "__id__": 518
+ },
+ {
+ "__id__": 529
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -258,
+ "y": 33
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2286enJ281Aprk3KrIDyAmH",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 495
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 497
+ },
+ {
+ "__id__": 502
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2feb0xD+V9FqLVOKG+2plEM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 505
+ }
+ ],
+ "_prefab": {
+ "__id__": 506
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 496
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "73dadvtAi1H1qzwChwFOMUj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 498
+ },
+ {
+ "__id__": 499
+ }
+ ],
+ "_prefab": {
+ "__id__": 501
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 497
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 497
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 500
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 497
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 496
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 496
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 496
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cfb32dOrhNNjaAe2Wm5qnf9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 503
+ }
+ ],
+ "_prefab": {
+ "__id__": 504
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 502
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1分",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 496
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 496
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 497
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 1
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 496
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 495
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 508
+ },
+ {
+ "__id__": 513
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 250,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8ef9dKBm5ZGaaZG+hh3HI+I",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 516
+ }
+ ],
+ "_prefab": {
+ "__id__": 517
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 507
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9e2datQmjZCtLJlU3KXd2Q9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 509
+ },
+ {
+ "__id__": 510
+ }
+ ],
+ "_prefab": {
+ "__id__": 512
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 508
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 508
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 511
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 508
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 507
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 507
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 507
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "21038uPaYhGUoCmO2msD3yE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 514
+ }
+ ],
+ "_prefab": {
+ "__id__": 515
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 513
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "2分",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 507
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 507
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 508
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 1
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 507
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 495
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 519
+ },
+ {
+ "__id__": 524
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 380,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "938d5E7N9dBHKX2iXLMsDIr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 527
+ }
+ ],
+ "_prefab": {
+ "__id__": 528
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 518
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "65146OGWeBNd4OJkRBr7s0v",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 520
+ },
+ {
+ "__id__": 521
+ }
+ ],
+ "_prefab": {
+ "__id__": 523
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 519
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 519
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 522
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 519
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 518
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 518
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 518
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ab8aaOERw1LfqLz/60BqUrM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 525
+ }
+ ],
+ "_prefab": {
+ "__id__": 526
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 524
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "5分",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 518
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 518
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 519
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 1
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 518
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 495
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8630fRLyFhH+ozThXG6/GDz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 530
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 529
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "底分选择",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xuanzejushu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 473
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 532
+ },
+ {
+ "__id__": 542
+ },
+ {
+ "__id__": 552
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 147
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "27024B/zyhAwpwv0hhXwtBG",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 531
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 533
+ },
+ {
+ "__id__": 537
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "56d1fdRZytDLqKE3OiNBNCI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 541
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 532
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8d12067XNZDu7f3YKkn/1Bg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 534
+ },
+ {
+ "__id__": 535
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 533
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 533
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 536
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 533
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 532
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 532
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 158.35,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "32bd8HErfxElYkik2BvIFjI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 538
+ },
+ {
+ "__id__": 539
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 537
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "4局(房卡x2)",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 537
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 540
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 537
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 532
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 532
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 533
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 2
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 531
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 543
+ },
+ {
+ "__id__": 547
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b46f6RHDM9OlITgrkGBJ0L0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 551
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 542
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "526d15w8j5PDKSGkZzS9mHQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 544
+ },
+ {
+ "__id__": 545
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 543
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 543
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 546
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 543
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 542
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 542
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 158.35,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9de47hf5ZtDf50FMmox++l2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 548
+ },
+ {
+ "__id__": 549
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 547
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "8局(房卡x3)",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 547
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 550
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 547
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 542
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 542
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 543
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 2
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 531
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 82,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d2859KIvulBOqaVemr9JvNH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 553
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 552
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "31aa3b0f-133e-4fe4-9daf-f5c267d8c8d1"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zuidafanshu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 473
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 555
+ },
+ {
+ "__id__": 568
+ },
+ {
+ "__id__": 581
+ },
+ {
+ "__id__": 594
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 85
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "79e0coQteVPvYs0oMRFd3Qi",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 554
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 556
+ },
+ {
+ "__id__": 561
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fb2d4RZp+5LfqH/z7Jnin/F",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 566
+ }
+ ],
+ "_prefab": {
+ "__id__": 567
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 555
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "411b0JFNEFHiJJAvwTStTQS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 557
+ },
+ {
+ "__id__": 558
+ }
+ ],
+ "_prefab": {
+ "__id__": 560
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 556
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 556
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 559
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 556
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 555
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 555
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 555
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "858a2p3xLtGDaBzBKfs+0Uk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 562
+ },
+ {
+ "__id__": 563
+ }
+ ],
+ "_prefab": {
+ "__id__": 565
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 561
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "3番",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 561
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 564
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 561
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 555
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 555
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 555
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 556
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 555
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 554
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 569
+ },
+ {
+ "__id__": 574
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fe664o4pY9FxYga2QAbTy/D",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 579
+ }
+ ],
+ "_prefab": {
+ "__id__": 580
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 568
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c281fAHPmBAMLs9BU7+PTiq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 570
+ },
+ {
+ "__id__": 571
+ }
+ ],
+ "_prefab": {
+ "__id__": 573
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 569
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 569
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 572
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 569
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 568
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 568
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 568
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6a9f623lZZLioqZriMuyNr9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 575
+ },
+ {
+ "__id__": 576
+ }
+ ],
+ "_prefab": {
+ "__id__": 578
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 574
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "4番",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 574
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 577
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 574
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 568
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 568
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 568
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 569
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 568
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 554
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 582
+ },
+ {
+ "__id__": 587
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 670,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a68acyWmf9OaI7DmoQVhOLH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 592
+ }
+ ],
+ "_prefab": {
+ "__id__": 593
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 581
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c71333tywFHPbSv0/K7/uOq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 583
+ },
+ {
+ "__id__": 584
+ }
+ ],
+ "_prefab": {
+ "__id__": 586
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 582
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 582
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 585
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 582
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 581
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 581
+ },
+ "asset": null,
+ "fileId": "b4e0ap95F1L56CsOQdgftYu",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 581
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "25251flEs1D74uQ2w61CzTZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 588
+ },
+ {
+ "__id__": 589
+ }
+ ],
+ "_prefab": {
+ "__id__": 591
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 587
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "5番",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 587
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 590
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 587
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 581
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 581
+ },
+ "asset": null,
+ "fileId": "23d30NXhR5GJ6F+RFLysF1m",
+ "sync": false
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 581
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 582
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 581
+ },
+ "asset": null,
+ "fileId": "7bae5xv6PVHhJRK5Qm8g2qF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom19",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 554
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 82,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d6eccieDFBL2LGupzRmQs+l",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 595
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 594
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ceb4144f-fb9b-4869-ac37-cbcff0a0bef7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wanfaxuanze",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 473
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 597
+ },
+ {
+ "__id__": 610
+ },
+ {
+ "__id__": 620
+ },
+ {
+ "__id__": 630
+ },
+ {
+ "__id__": 640
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 27
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e23c2v+ZfhOCpE1d5ctpGT7",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CheckBox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 598
+ },
+ {
+ "__id__": 603
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1cb07d6pFpJ9awn5cfMH+oz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 608
+ }
+ ],
+ "_prefab": {
+ "__id__": 609
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 597
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 37,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "94567N7RlZBboqQTrezia4L",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 599
+ },
+ {
+ "__id__": 600
+ }
+ ],
+ "_prefab": {
+ "__id__": 602
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 598
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 598
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 601
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 598
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 597
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 597
+ },
+ "asset": null,
+ "fileId": "aa067jnQLxC+Kt05ytyhyvG",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 597
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7f48bOhdRFEFJTjI85yiv76",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 604
+ },
+ {
+ "__id__": 605
+ }
+ ],
+ "_prefab": {
+ "__id__": 607
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 603
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "换三张",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 603
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 606
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 603
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 597
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 597
+ },
+ "asset": null,
+ "fileId": "03b96J1mZNM6rEtNjB/CwaU",
+ "sync": false
+ },
+ {
+ "__type__": "dc9e5hcegFBFpbh0CwUFw8V",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 597
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 598
+ },
+ "sprite": {
+ "__uuid__": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed"
+ },
+ "checkedSprite": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "checked": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 597
+ },
+ "asset": null,
+ "fileId": "34d74WTWOhOyb6BWflYe0OV",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CheckBox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 611
+ },
+ {
+ "__id__": 615
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": -123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fe3c11Kl1VN6pmBfZxozuD1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 619
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 610
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 37,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "83625IrnRRKSYuUoJugj5Gl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 612
+ },
+ {
+ "__id__": 613
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 611
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 611
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 614
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 611
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 610
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 610
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 60,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "24f73fCL0NC2aeNRkuB2t/u",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 616
+ },
+ {
+ "__id__": 617
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 615
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "将对",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 615
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 618
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 615
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 610
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "dc9e5hcegFBFpbh0CwUFw8V",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 610
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 611
+ },
+ "sprite": {
+ "__uuid__": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed"
+ },
+ "checkedSprite": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "checked": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CheckBox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 621
+ },
+ {
+ "__id__": 625
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -184
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1e2d8aUWvxHibwrFNOF154T",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 629
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 620
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 37,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "52ad7WLSspFl6SScE/BCl97",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 622
+ },
+ {
+ "__id__": 623
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 621
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 621
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 624
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 621
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 620
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 620
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "64211l/+OpLx4neiDz+24z0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 626
+ },
+ {
+ "__id__": 627
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 625
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "门清、中张",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 625
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 628
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 625
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 620
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "dc9e5hcegFBFpbh0CwUFw8V",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 620
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 621
+ },
+ "sprite": {
+ "__uuid__": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed"
+ },
+ "checkedSprite": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "checked": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "CheckBox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 631
+ },
+ {
+ "__id__": 635
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": -184
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bf294K38BBOn4RleseTzih3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 639
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 630
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 37,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a885f6HuwREh73iftoEzWLM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 632
+ },
+ {
+ "__id__": 633
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 631
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 631
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 634
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 631
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 630
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 630
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6545atvGNxJQIlgpQrLt96c",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 636
+ },
+ {
+ "__id__": 637
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 635
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "天地胡",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 635
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 638
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 635
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 630
+ },
+ "component": "CheckBox",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "dc9e5hcegFBFpbh0CwUFw8V",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 630
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 631
+ },
+ "sprite": {
+ "__uuid__": "3dae001a-9bfa-4fcc-b018-fb3c74e77eed"
+ },
+ "checkedSprite": {
+ "__uuid__": "b85a52c9-fae9-4d2f-ac10-238071cc869f"
+ },
+ "checked": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "creatroom15",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 82,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c03e8YLjWpLR6yqQbIoJqke",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 641
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 640
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b043e12f-af52-49e5-ab0e-17f848fbd3ec"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "65f60710-5e7a-420b-8be7-50f81c38f9c6"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zimojiacheng",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 473
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 643
+ },
+ {
+ "__id__": 653
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -442,
+ "y": 27
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "68791eVjH9LH5Hrcj2U6aQA",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 642
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 644
+ },
+ {
+ "__id__": 648
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "88556g/HTFJ84NjS5dKzWWx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 652
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1aaaaRxdRxPsJuUg7kC/Rv/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 645
+ },
+ {
+ "__id__": 646
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 644
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 644
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 647
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 644
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 643
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fd86fNi5MFAlaGfG0yND45Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 649
+ },
+ {
+ "__id__": 650
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 648
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "自摸加底",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 648
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 651
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 648
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 643
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 643
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 644
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": true,
+ "groupId": 4
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "RadioButton",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 642
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 654
+ },
+ {
+ "__id__": 658
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 400,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ea21ag+PkNMS55bfFpXchBW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 662
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "button",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 653
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fbafca/Q6RNpKEBqUzDOHZi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 655
+ },
+ {
+ "__id__": 656
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 654
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 654
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 657
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 654
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 653
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 97,
+ "g": 60,
+ "b": 16,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 653
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 25,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a53529ELwRPt7zi+ciNOv4i",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 659
+ },
+ {
+ "__id__": 660
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 658
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "自摸加番",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 658
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 661
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 658
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 653
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 653
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 654
+ },
+ "sprite": {
+ "__uuid__": "e7b17174-dc37-407e-8cd3-09b440c7d89d"
+ },
+ "checkedSprite": {
+ "__uuid__": "55830f4d-a21d-4a98-a7c4-a3fb006c3d42"
+ },
+ "checked": false,
+ "groupId": 4
+ },
+ {
+ "__type__": "eec07HsL4pBn5/PiT3SYBew",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 224
+ },
+ "_enabled": true,
+ "_leixingxuanze": null,
+ "_gamelist": null,
+ "_currentGame": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 224
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xiaoxi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 666
+ },
+ {
+ "__id__": 669
+ },
+ {
+ "__id__": 671
+ },
+ {
+ "__id__": 673
+ },
+ {
+ "__id__": 675
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e6b2831nIRNbJArJCON6b++",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 679
+ },
+ {
+ "__id__": 680
+ },
+ {
+ "__id__": 681
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 665
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1230,
+ "height": 670
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "830b6hd8lRJeq7IdBoAMtwF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 667
+ },
+ {
+ "__id__": 668
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 666
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 666
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 25,
+ "_right": 25,
+ "_top": 25,
+ "_bottom": 25,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 758,
+ "_originalHeight": 480
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene17",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 665
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 108,
+ "height": 52
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 290
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "01ff8HNIuVIY603BxHN/4e1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 670
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 669
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9ca3657f-6216-4cb9-bc0b-f6972a05ae86"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "babykylin",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 665
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 256,
+ "height": 264
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 8,
+ "y": 108
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3ca2e+rL8BAK4M13CB9ZQRd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 672
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 671
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85246ecf-6f60-49c6-bc6f-f18606e771b2"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 195,
+ "g": 43,
+ "b": 43,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 665
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 662.23,
+ "height": 100
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -87
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a650em2fJxEZKMvVCfeKN81",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 674
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 673
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 80,
+ "_fontSize": 80,
+ "_lineHeight": 100,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "卓越品质 值得信赖",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_back",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 665
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 589,
+ "y": 309
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5bbb3kJmuFJ6LL1yszrgWTd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 676
+ },
+ {
+ "__id__": 677
+ },
+ {
+ "__id__": 678
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 675
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 675
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 675
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 675
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 33,
+ "_left": 8,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 665
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 665
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 665
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 665
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "help",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 683
+ },
+ {
+ "__id__": 686
+ },
+ {
+ "__id__": 688
+ },
+ {
+ "__id__": 690
+ },
+ {
+ "__id__": 692
+ },
+ {
+ "__id__": 694
+ },
+ {
+ "__id__": 696
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f9f600ZPPtKjYeM/TOfXcIP",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 700
+ },
+ {
+ "__id__": 701
+ },
+ {
+ "__id__": 702
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 682
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3fc2eGwc8BMjrtaypWGxUuV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 684
+ },
+ {
+ "__id__": 685
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 683
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 683
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 220,
+ "_originalHeight": 42
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene17",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 682
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 54
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1ada5Phb8lATqqwwuCj9wTV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 687
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 686
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8fa76a26-7936-4bc0-af9b-c81d5f39cb0b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xzdd_title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 51,
+ "b": 51,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 682
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -587,
+ "y": 238
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9a0f45pKfRExLz9ZNIdEcg/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 689
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 688
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "血战到底",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xzdd_info",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 51,
+ "b": 51,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 682
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 963.9,
+ "height": 175
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -587,
+ "y": 191
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4530dKRS+xA56X1lsp5Udpi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 691
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 690
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1、游戏人数:4人\n2、游戏道具:筒条万 共108张\n3、玩家胡牌后,牌局继续进行。直到三家胡牌,或者牌墙抓完\n4、牌局开始时,需要玩家选择定缺的花色。胡牌时,手牌最多二色,否则不可以胡牌。\n5、流局时查大叫,未叫牌的玩家,要赔偿已叫牌玩家(不含胡牌玩家)最大番数\n6、坐庄规则:上一局最先胡牌的当庄;一炮多响,点炮者当庄;流局,庄家下家当庄。\n",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xlch_title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 51,
+ "b": 51,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 682
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -587,
+ "y": -9
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5dbearir9pLB4PYUIwhwqv0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 693
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 692
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "血流成河",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xlch_info",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 51,
+ "b": 51,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 682
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1088.9,
+ "height": 200
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -587,
+ "y": -56
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5c9beL1+xlMD48evnQX7R90",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 695
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 694
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "血流成河规则与血战到底基本一致,不同之处是,胡牌后可以继续胡牌和弯杠。\n1、游戏人数:4人\n2、游戏道具:筒条万 共108张\n3、玩家胡牌后,可以继续胡牌。直到牌墙无牌为止。血流胡牌以后,不可以直杠或暗杠,可以弯杠\n4、胡牌时,手牌最多二色,否则不可以胡牌。\n5、流局时查大叫,未叫牌的玩家,要赔偿已叫牌玩家(不含胡牌玩家)最大番数\n6、坐庄规则:上一局最先胡牌的当庄;一炮多响,点炮者当庄;流局,庄家下家当庄。\n",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_back",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 682
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 589,
+ "y": 309
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c33e5cTJPNHv6PstFHB2swr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 697
+ },
+ {
+ "__id__": 698
+ },
+ {
+ "__id__": 699
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 696
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 696
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 696
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 696
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 33,
+ "_left": 5.5,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 682
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b421470e-abca-4b84-9e4c-eab8b6b7806e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 682
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 682
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 682
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "history",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 704
+ },
+ {
+ "__id__": 706
+ },
+ {
+ "__id__": 709
+ },
+ {
+ "__id__": 711
+ },
+ {
+ "__id__": 766
+ },
+ {
+ "__id__": 770
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a80142W2sRA3ZogZxAsZJNa",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 772
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "helpbg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 703
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5d6d7la8WlNCKx5nG3Nn5gK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 705
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 704
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b421470e-abca-4b84-9e4c-eab8b6b7806e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "help_p_bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 703
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6f743aANyNM3LiJYPD1jcAu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 707
+ },
+ {
+ "__id__": 708
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 706
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 706
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 758,
+ "_originalHeight": 480
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene18",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 703
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 196,
+ "height": 54
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 313
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6a210Edt1pD2aH0MhQPaHQL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 710
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 709
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "350940fd-9691-4aaf-8685-7764627333ad"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "viewlist",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 184,
+ "g": 184,
+ "b": 184,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 703
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1210,
+ "height": 576
+ },
+ "_children": [
+ {
+ "__id__": 712
+ },
+ {
+ "__id__": 718
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 2,
+ "y": -39
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "69bbe66sq5B/awhX5dX8ih9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 765
+ },
+ {
+ "__id__": 716
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "scrollBar",
+ "_objFlags": 0,
+ "_opacity": 0,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 238,
+ "g": 217,
+ "b": 227,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 711
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 12,
+ "height": 576
+ },
+ "_children": [
+ {
+ "__id__": 713
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 605,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "845deQJSwVOy7XVc1bemLYY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 715
+ },
+ {
+ "__id__": 763
+ },
+ {
+ "__id__": 764
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bar",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 236,
+ "g": 241,
+ "b": 245,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 712
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 10,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -1,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "622eepzB8tFcpm9MGVTEJrm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 714
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 713
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5c3bb932-6c3c-468f-88a9-c8c61d458641"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Scrollbar",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 712
+ },
+ "_enabled": true,
+ "_scrollView": {
+ "__id__": 716
+ },
+ "_touching": false,
+ "_opacity": 255,
+ "enableAutoHide": true,
+ "autoHideTime": 1,
+ "_N$handle": {
+ "__id__": 714
+ },
+ "_N$direction": 1
+ },
+ {
+ "__type__": "cc.ScrollView",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 711
+ },
+ "_enabled": true,
+ "content": {
+ "__id__": 717
+ },
+ "horizontal": false,
+ "vertical": true,
+ "inertia": true,
+ "brake": 0.75,
+ "elastic": true,
+ "bounceDuration": 0.23,
+ "scrollEvents": [],
+ "cancelInnerEvents": true,
+ "_N$horizontalScrollBar": null,
+ "_N$verticalScrollBar": {
+ "__id__": 715
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "content",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 718
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1210,
+ "height": 150
+ },
+ "_children": [
+ {
+ "__id__": 721
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 285
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "df907vG8WxGxamKYdjxdn78",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 761
+ },
+ {
+ "__id__": 762
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "view",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 711
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1210,
+ "height": 576
+ },
+ "_children": [
+ {
+ "__id__": 717
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "746ddxYY2pBgaLb7dINI69+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 719
+ },
+ {
+ "__id__": 720
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 718
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 718
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 240,
+ "_originalHeight": 250
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "HistoryItem",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1210,
+ "height": 150
+ },
+ "_children": [
+ {
+ "__id__": 722
+ },
+ {
+ "__id__": 726
+ },
+ {
+ "__id__": 729
+ },
+ {
+ "__id__": 732
+ },
+ {
+ "__id__": 735
+ },
+ {
+ "__id__": 738
+ },
+ {
+ "__id__": 741
+ },
+ {
+ "__id__": 744
+ },
+ {
+ "__id__": 747
+ },
+ {
+ "__id__": 750
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bc942sy2fxA7YTV4zaTMp3h",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 758
+ }
+ ],
+ "_prefab": {
+ "__id__": 760
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_opacity": 0,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1195,
+ "height": 129
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -7,
+ "y": -3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "03219v+ht1GYrULeNwuc+Tk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 723
+ },
+ {
+ "__id__": 724
+ }
+ ],
+ "_prefab": {
+ "__id__": 725
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 722
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 722
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1195,
+ "height": 129
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "e8833FKcuZNbqmqt9SQUBzI",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 44.49,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -447,
+ "y": 4
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f6f02X25RVP84IS5yUhqU8g",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 727
+ }
+ ],
+ "_prefab": {
+ "__id__": 728
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 726
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 80,
+ "_fontSize": 80,
+ "_lineHeight": 80,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "63914t6MRVNJpDsnG1JNRNp",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "roomNo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 278.87,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -383,
+ "y": 67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2178cF6+oZNDqTvLSFQRn08",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 730
+ }
+ ],
+ "_prefab": {
+ "__id__": 731
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 729
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "Room No.:571118",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "62324mdg2dL1KjRkRCw8KXm",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "time",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 325,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -29,
+ "y": 67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "63736QHgCVF04KVMlaTM3i/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 733
+ }
+ ],
+ "_prefab": {
+ "__id__": 734
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 732
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "2016-09-03 17:07:19",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "62324mdg2dL1KjRkRCw8KXm",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200.31,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -383,
+ "y": 22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "737fdtuzepEe6ZhezKVanpV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 736
+ }
+ ],
+ "_prefab": {
+ "__id__": 737
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 735
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏:-80",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "62324mdg2dL1KjRkRCw8KXm",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200.31,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -29,
+ "y": 22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a48dctz9nBEXLZY8L9whqUy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 739
+ }
+ ],
+ "_prefab": {
+ "__id__": 740
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 738
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏:-80",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "4ea520D4zBB+5u/QJyuHv4P",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200.31,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -383,
+ "y": -24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5354ca4pHpAlqOBim4ZlvOT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 742
+ }
+ ],
+ "_prefab": {
+ "__id__": 743
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 741
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏:-80",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "3f4c0e5fAtAp6J+EkJpHyet",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 141,
+ "g": 58,
+ "b": 58,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200.31,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -29,
+ "y": -24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "86f3dTA96hH+YCRf8ALaKIH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 745
+ }
+ ],
+ "_prefab": {
+ "__id__": 746
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 744
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏:-80",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "e4090cfXZNMK7i8GlkvqH8F",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1133,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -73
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e96c4gH6B9DyZzuj7A6xTw0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 748
+ }
+ ],
+ "_prefab": {
+ "__id__": 749
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 747
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 1,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "9a306dXV65L85GSouYk0ZvU",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnOp",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 232,
+ "g": 168,
+ "b": 2,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 721
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 127,
+ "height": 77
+ },
+ "_children": [
+ {
+ "__id__": 751
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 373,
+ "y": -24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "adfc5LA1WFCTajvplMRemaj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 754
+ },
+ {
+ "__id__": 755
+ }
+ ],
+ "_prefab": {
+ "__id__": 757
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 750
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 100,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1.1368683772161603e-13,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "13132iTBXhBCZ75bCuTVpuF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 752
+ }
+ ],
+ "_prefab": {
+ "__id__": 753
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 751
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": false,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "详情",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 1
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 750
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 750
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 756
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 750
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "History",
+ "handler": "onBtnOpClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 721
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 759
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 721
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "History",
+ "handler": "onViewItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 721
+ },
+ "asset": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "fileId": "490eap8gSJCRJ2FiJx5dBAr",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 717
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1210,
+ "height": 150
+ },
+ "_resize": 1,
+ "_N$layoutType": 2,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 717
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 3,
+ "_bottom": 173,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 220,
+ "_originalHeight": 400
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 712
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 37,
+ "_left": 350.07654921020657,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 237
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 712
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5fe5dcaa-b513-4dc5-a166-573627b3a159"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 711
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_back",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 703
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 589,
+ "y": 309
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "231a3tJHXpKyKfgmoSxxjFq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 767
+ },
+ {
+ "__id__": 768
+ },
+ {
+ "__id__": 769
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 766
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 766
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_N$target": {
+ "__id__": 766
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 766
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 33,
+ "_left": 6.5,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emptyTip",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 146,
+ "g": 19,
+ "b": 19,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 703
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 794.43,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "464b1HthJxL2ZOEVhnzYElk",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 771
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 770
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 50,
+ "_fontSize": 50,
+ "_lineHeight": 50,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "暂无战绩,快去喊小伙伴一起玩吧 :)",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 703
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "settings",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 774
+ },
+ {
+ "__id__": 776
+ },
+ {
+ "__id__": 778
+ },
+ {
+ "__id__": 781
+ },
+ {
+ "__id__": 801
+ },
+ {
+ "__id__": 821
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4c909j7vh5DkbfELGxXVvmm",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 826
+ },
+ {
+ "__id__": 827
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 773
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 758,
+ "height": 480
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8c0802iqbhHaJcTSbt+PYSS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 775
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 774
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene16",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 773
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 116,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 194
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "baed3co9T9NjL5lFZivFRrt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 777
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 776
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "abb55ec9-187f-436e-9a1a-5ba431862e87"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 773
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 364,
+ "y": 215
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "45a33fYxkFAsbKNmtW3OrGC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 779
+ },
+ {
+ "__id__": 780
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 778
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 778
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 778
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yinxiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 773
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 782
+ },
+ {
+ "__id__": 784
+ },
+ {
+ "__id__": 795
+ },
+ {
+ "__id__": 798
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -300,
+ "y": 92
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "db30dN6Y05KiaIXm1zgDuDZ",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 15,
+ "b": 15,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 781
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7d436R3ASpEXJIvTKBLz7zn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 783
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 782
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "音效",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 781
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 785
+ },
+ {
+ "__id__": 787
+ },
+ {
+ "__id__": 791
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 285,
+ "y": 1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "281e2D1L8BH5IP/Oqd6MhrF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 794
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Background",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 784
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6c101PP4VtHCYulvhYmRSEe",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 786
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 785
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7f5d1ce1-ad62-48c3-891d-2feb0457a744"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 784
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 788
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -214,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "33061U5Mh1JOZsx4juteUvN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 790
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting12",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 787
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "950e0UG3ndLgLXT+gT4Rjq1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 789
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 788
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9d456e8d-b4a7-492e-bc9a-bd60dff93263"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 787
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Handle",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 784
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 51,
+ "height": 55
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -1.1368683772161603e-13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9d032WLPx9JDq8qHl750kik",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 792
+ },
+ {
+ "__id__": 793
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 791
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 791
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.1,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 791
+ }
+ },
+ {
+ "__type__": "cc.Slider",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 784
+ },
+ "_enabled": true,
+ "direction": 0,
+ "slideEvents": [],
+ "_N$handle": {
+ "__id__": 793
+ },
+ "_N$progress": 0.5
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yx_open",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 781
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9f47ahL40pC274twuzs9Tgx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 796
+ },
+ {
+ "__id__": 797
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 795
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c4d40921-9a54-4928-8409-ce5c5c456840"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 795
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 795
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yx_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 781
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5f545B4LsJIm5Qap+F2GTNU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 799
+ },
+ {
+ "__id__": 800
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 798
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "66a82289-42b1-4fb6-a223-220e32129cfa"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 798
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 798
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yinyue",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 773
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 802
+ },
+ {
+ "__id__": 804
+ },
+ {
+ "__id__": 815
+ },
+ {
+ "__id__": 818
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -300,
+ "y": -13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6bf59JERjtEX6l23jm6J6rK",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 15,
+ "b": 15,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8bed3JDBzZBJLBV8Po3yoBt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 803
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 802
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "音乐",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 805
+ },
+ {
+ "__id__": 807
+ },
+ {
+ "__id__": 811
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 285,
+ "y": 1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b0c35okH09EsKY62dR8Sook",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 814
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Background",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 804
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8b845+IKV9M4a2Izh+avNmS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 806
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 805
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7f5d1ce1-ad62-48c3-891d-2feb0457a744"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 804
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 808
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -214,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "675cdpQXSpDW4MdxVsMmT+Z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 810
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting12",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 807
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c6320RsoyRMrK+5nylfCSfk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 809
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 808
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9d456e8d-b4a7-492e-bc9a-bd60dff93263"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 807
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Handle",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 804
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 51,
+ "height": 55
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -5.684341886080802e-14
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "68039e/Ta1AELsQnpvrSJMh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 812
+ },
+ {
+ "__id__": 813
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 811
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 811
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.1,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 811
+ }
+ },
+ {
+ "__type__": "cc.Slider",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 804
+ },
+ "_enabled": true,
+ "direction": 0,
+ "slideEvents": [],
+ "_N$handle": {
+ "__id__": 813
+ },
+ "_N$progress": 0.5
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yy_open",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "597719YWJdOEqJahN3Nm9kD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 816
+ },
+ {
+ "__id__": 817
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 815
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c4d40921-9a54-4928-8409-ce5c5c456840"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 815
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 815
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yy_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "787482SEgFKgbBCoDnBSNyk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 819
+ },
+ {
+ "__id__": 820
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 818
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8ee53e49-397a-4974-b996-923c19d3cf0a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 818
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 818
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_exit",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 773
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 288,
+ "height": 77
+ },
+ "_children": [
+ {
+ "__id__": 822
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -146
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5d80d+s6+ZHjrOPXDKHMBYj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 824
+ },
+ {
+ "__id__": 825
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting10",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 821
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 184,
+ "height": 45
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "38782rdbmhM8KY+gY3SV3U3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 823
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 822
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "498383c9-347c-434f-84e3-53e4f304d72a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 821
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5914f056-b6c1-4bbd-979b-92b5b721c7f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 821
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 821
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 773
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 773
+ }
+ },
+ {
+ "__type__": "4c04fyd89JAZY7qGjvubi+f",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 773
+ },
+ "_enabled": true,
+ "_btnYXOpen": null,
+ "_btnYXClose": null,
+ "_btnYYOpen": null,
+ "_btnYYClose": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "userinfo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 829
+ },
+ {
+ "__id__": 834
+ },
+ {
+ "__id__": 837
+ },
+ {
+ "__id__": 840
+ },
+ {
+ "__id__": 843
+ },
+ {
+ "__id__": 846
+ },
+ {
+ "__id__": 850
+ },
+ {
+ "__id__": 853
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cbb24xM0u5GaJgt2Bl7WK+2",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 856
+ },
+ {
+ "__id__": 857
+ }
+ ],
+ "_prefab": {
+ "__id__": 858
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 30,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c6c9fuIC61GjIRBC9t6eOjO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 830
+ },
+ {
+ "__id__": 831
+ },
+ {
+ "__id__": 832
+ }
+ ],
+ "_prefab": {
+ "__id__": 833
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 829
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 829
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 829
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 720
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "67824+gx8RP476ggCmbdH25",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 200
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1c637wfmtdKw40npnbjSW0N",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 835
+ }
+ ],
+ "_prefab": {
+ "__id__": 836
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 834
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "1888drucLhD458pqcbrOINf",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": 46
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d9a17oo96BCBoHnPEuFTvoM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 838
+ }
+ ],
+ "_prefab": {
+ "__id__": 839
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 837
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "洛神科技",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "776cfxUStBDrY/eC8SPyi2y",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ip",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": -7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0a820WKQ9ZP1Y7EcdJZWd78",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 841
+ }
+ ],
+ "_prefab": {
+ "__id__": 842
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 840
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "IP: 171.217.46.219",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "26cd2AA681EObEdC11m2tnI",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "id",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "90a5flHBkVC5I3U/PXyV6CC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 844
+ }
+ ],
+ "_prefab": {
+ "__id__": 845
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 843
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "ID: 103",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "2d0c3ND2ARC/ZBlaclRtIyt",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -155,
+ "y": 13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "20ad8FzhTRFhqA/VA197Flx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 847
+ },
+ {
+ "__id__": 848
+ }
+ ],
+ "_prefab": {
+ "__id__": 849
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 846
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "afc96215-f657-4e45-b5e6-ff5152f52566"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 846
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "6b291hH7s9OOKktX4ML9rAe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sex_female",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -207,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bb78bzG64xDy4J0s6vzST+M",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 851
+ }
+ ],
+ "_prefab": {
+ "__id__": 852
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 850
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8c2e8172-65aa-4d5f-ad62-5383e3f1f939"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "b4defolLmtG0bDEBbVnOKRO",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sex_male",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -207,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "be212UHcedElqtjNMo5Elux",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 854
+ }
+ ],
+ "_prefab": {
+ "__id__": 855
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 853
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ecf2a72a-7f6b-496d-a333-45912d28efcd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "5302azh5f5F4ZMQLx9/yUpo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 828
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 828
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 828
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 720
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 828
+ },
+ "asset": {
+ "__uuid__": "19a75185-fd4a-473e-ae42-2b5490ad13e7"
+ },
+ "fileId": "361f9ipxABL1YeNo9g47lsF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "alert",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 860
+ },
+ {
+ "__id__": 864
+ },
+ {
+ "__id__": 867
+ },
+ {
+ "__id__": 870
+ },
+ {
+ "__id__": 873
+ },
+ {
+ "__id__": 877
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "28f35eafd5N9KGxdhNM33sJ",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 881
+ }
+ ],
+ "_prefab": {
+ "__id__": 882
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 30,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 859
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f11f9ITrlhJbbqZuUmjNCkT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 861
+ },
+ {
+ "__id__": 862
+ }
+ ],
+ "_prefab": {
+ "__id__": 863
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 860
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 860
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 859
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8b98bNahuFNG6hdvCi1NEQZ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 859
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 650,
+ "height": 350
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "53fe9K8U/NBkKtuKqGJLhMF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 865
+ }
+ ],
+ "_prefab": {
+ "__id__": 866
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 864
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 859
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "08edc5qMi1GNIOPT1/+Q4CE",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 859
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 124
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3019eV6xSVDa6PegorwuCts",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 868
+ }
+ ],
+ "_prefab": {
+ "__id__": 869
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 867
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "提示",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 859
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "6ca22GIGnND4ZgWPY/knc9m",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "content",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 859
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 560,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 16
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9b7e9yTEBhDpYqg5dnoWF7Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 871
+ }
+ ],
+ "_prefab": {
+ "__id__": 872
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 870
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 859
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "6ca22GIGnND4ZgWPY/knc9m",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 859
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -120,
+ "y": -102
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "544aeNqBd5JbZQHsA5SbIFM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 874
+ },
+ {
+ "__id__": 875
+ }
+ ],
+ "_prefab": {
+ "__id__": 876
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 873
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "718e98bd-522b-4ff0-b5cd-e955aa0d620b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 873
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 873
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 859
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "544aeNqBd5JbZQHsA5SbIFM",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_cancel",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 859
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 120,
+ "y": -102
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "364dcrZY2JP0JgoFg8PvNfI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 878
+ },
+ {
+ "__id__": 879
+ }
+ ],
+ "_prefab": {
+ "__id__": 880
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 877
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5df0fb42-67cf-4df8-8ba4-539ef53a3ba7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 877
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 877
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 859
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "364dcrZY2JP0JgoFg8PvNfI",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 859
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 859
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 859
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8f12cJXjThP5ILDjCfdQMUv",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "WaitingConnection",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 884
+ },
+ {
+ "__id__": 888
+ },
+ {
+ "__id__": 891
+ },
+ {
+ "__id__": 894
+ },
+ {
+ "__id__": 897
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3d614D0+1NGqIzCqXq7idA5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 900
+ },
+ {
+ "__id__": 901
+ }
+ ],
+ "_prefab": {
+ "__id__": 902
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 63,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 883
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "120e8A9DytHV6HYaTA5v8i8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 885
+ },
+ {
+ "__id__": 886
+ }
+ ],
+ "_prefab": {
+ "__id__": 887
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 884
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 884
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 883
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8b98bNahuFNG6hdvCi1NEQZ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 883
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 250
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ede7bDS4ypEQbDOzAsMz+Ao",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 889
+ }
+ ],
+ "_prefab": {
+ "__id__": 890
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 888
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 883
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "08edc5qMi1GNIOPT1/+Q4CE",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 883
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156.95,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 78
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "50fc3xQ30hI+oYFl838lBtF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 892
+ }
+ ],
+ "_prefab": {
+ "__id__": 893
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 891
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": " 正在登录游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 883
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "6ca22GIGnND4ZgWPY/knc9m",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "loading_image",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 883
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "88ec6EwsGtBLp8/49wKjx3s",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 895
+ }
+ ],
+ "_prefab": {
+ "__id__": 896
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 894
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "33a87e63-83e7-4f98-a40e-96feece06697"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "3dad14aa-1217-43e2-a654-c22ae3a85d84"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 883
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "c3fefzKTgRNL5VgfiSpLfOV",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jzshazi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 883
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 30,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "38f53NH/RNDKLsnOUAgcBQb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 898
+ }
+ ],
+ "_prefab": {
+ "__id__": 899
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 897
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "30220141-dcea-4b2c-82ea-f6932b703abd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "3dad14aa-1217-43e2-a654-c22ae3a85d84"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 883
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "15461fSawBG87CnfB3s49cE",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 883
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 883
+ }
+ },
+ {
+ "__type__": "10e32jDstpLhIGHWrQEq2vN",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 883
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 894
+ },
+ "_isShow": false,
+ "lblContent": {
+ "__id__": 892
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 883
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8f12cJXjThP5ILDjCfdQMUv",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Canvas",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_designResolution": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_fitWidth": false,
+ "_fitHeight": true
+ },
+ {
+ "__type__": "6edb3jjx+FBepS1mk1xKDF2",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "lblName": {
+ "__id__": 32
+ },
+ "lblMoney": {
+ "__id__": 47
+ },
+ "lblGems": {
+ "__id__": 41
+ },
+ "lblID": {
+ "__id__": 35
+ },
+ "lblNotice": {
+ "__id__": 85
+ },
+ "joinGameWin": {
+ "__id__": 104
+ },
+ "createRoomWin": {
+ "__id__": 224
+ },
+ "settingsWin": {
+ "__id__": 773
+ },
+ "helpWin": {
+ "__id__": 682
+ },
+ "xiaoxiWin": {
+ "__id__": 665
+ },
+ "btnJoinGame": {
+ "__id__": 94
+ },
+ "btnReturnGame": {
+ "__id__": 99
+ },
+ "sprHeadImg": {
+ "__id__": 25
+ }
+ },
+ {
+ "__type__": "4d7bci0LUxMT6MJKXJDj89w",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "HistoryItemPrefab": {
+ "__uuid__": "0b1a57cf-a3d2-4dc6-bc40-bb6112c63062"
+ },
+ "_history": null,
+ "_viewlist": null,
+ "_content": null,
+ "_viewitemTemp": null,
+ "_historyData": null,
+ "_curRoomInfo": null,
+ "_emptyTip": null
+ },
+ {
+ "__type__": "c12553sxCxG/on0Bz7rkX0f",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_alert": null,
+ "_btnOK": null,
+ "_btnCancel": null,
+ "_title": null,
+ "_content": null,
+ "_onok": null
+ }
+]
\ No newline at end of file
diff --git a/client/assets/scenes/hall.fire.meta b/client/assets/scenes/hall.fire.meta
new file mode 100755
index 0000000..ef1319d
--- /dev/null
+++ b/client/assets/scenes/hall.fire.meta
@@ -0,0 +1,7 @@
+{
+ "ver": "1.0.0",
+ "uuid": "efb1084f-0b5a-4980-b187-1e949555cb55",
+ "asyncLoadAssets": false,
+ "autoReleaseAssets": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scenes/loading.fire b/client/assets/scenes/loading.fire
new file mode 100755
index 0000000..a543696
--- /dev/null
+++ b/client/assets/scenes/loading.fire
@@ -0,0 +1,829 @@
+[
+ {
+ "__type__": "cc.SceneAsset",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "scene": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Scene",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ }
+ ],
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4a1acad9-ce88-4334-aa62-bf23a5ccc79e",
+ "autoReleaseAssets": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Canvas",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 5
+ },
+ {
+ "__id__": 7
+ },
+ {
+ "__id__": 9
+ },
+ {
+ "__id__": 19
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 640,
+ "y": 360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6e6abYFYfREFIcYMoVh+anM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 21
+ },
+ {
+ "__id__": 22
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "z_loading",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "05b51jmTw5KA5SKk7IGBSpf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 4
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 3
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc18bcef-c6d8-46b3-81a0-d91ce3ed83ea"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "LOGO",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 883,
+ "height": 228
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "28aab3SDptDlbMXto9oJuTV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 6
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9fde12b5-e35e-4de7-8014-b96690ef1ff0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 239.17,
+ "height": 35
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a98005ZLh5FfZ/bB+80gd97",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 8
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 7
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 35,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "正在连接网络...",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "alert",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 10
+ },
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 15
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -82
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d148fne/8tP0ZVFSALmlGyL",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 9
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 250
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "775aa5ovH9N2YtNF4LdRte3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 11
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 10
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 9
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 317,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 54
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "407b5m/riFEl5GlpuggRWzL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 13
+ },
+ {
+ "__id__": 14
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 35,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "版本过旧\n请下载并安装新版本",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 9
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -43
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7daacIsDBVNyatX7N0AhzY+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ },
+ {
+ "__id__": 17
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "718e98bd-522b-4ff0-b5cd-e955aa0d620b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 18
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 15
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 7
+ },
+ "component": "LoadingLogic",
+ "handler": "onBtnDownloadClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "splash",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "91610VZc9RBN5FgM5rp4Lr5",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 20
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 19
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Canvas",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_designResolution": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_fitWidth": false,
+ "_fitHeight": true
+ },
+ {
+ "__type__": "350d3Ry9aVIqJR27fP2H/z1",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "tipLabel": {
+ "__id__": 8
+ },
+ "_stateStr": "",
+ "_progress": 0,
+ "_splash": null,
+ "_isLoading": false
+ }
+]
\ No newline at end of file
diff --git a/client/assets/scenes/loading.fire.meta b/client/assets/scenes/loading.fire.meta
new file mode 100755
index 0000000..e7ceed1
--- /dev/null
+++ b/client/assets/scenes/loading.fire.meta
@@ -0,0 +1,7 @@
+{
+ "ver": "1.0.0",
+ "uuid": "4a1acad9-ce88-4334-aa62-bf23a5ccc79e",
+ "asyncLoadAssets": false,
+ "autoReleaseAssets": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scenes/login.fire b/client/assets/scenes/login.fire
new file mode 100755
index 0000000..94b6c84
--- /dev/null
+++ b/client/assets/scenes/login.fire
@@ -0,0 +1,1910 @@
+[
+ {
+ "__type__": "cc.SceneAsset",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "scene": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Scene",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ }
+ ],
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7b486d14-13bc-4be8-91e6-2efa50fc8715",
+ "autoReleaseAssets": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Canvas",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 5
+ },
+ {
+ "__id__": 7
+ },
+ {
+ "__id__": 11
+ },
+ {
+ "__id__": 15
+ },
+ {
+ "__id__": 17
+ },
+ {
+ "__id__": 24
+ },
+ {
+ "__id__": 28
+ },
+ {
+ "__id__": 32
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 640,
+ "y": 360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "49c51MdWGlKPYSJwMRRp7sm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 52
+ },
+ {
+ "__id__": 53
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "z_login",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "68bbfE11jBBeZPUJuXoCNLW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 4
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 3
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc18bcef-c6d8-46b3-81a0-d91ce3ed83ea"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "LOGO",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 883,
+ "height": 228
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a4b2aaorV9JgLYY8PaInIFO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 6
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9fde12b5-e35e-4de7-8014-b96690ef1ff0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yk",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 397,
+ "height": 137
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.79,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -211
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3472ebVhP1LhqxOvdUhBWzX",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 8
+ },
+ {
+ "__id__": 9
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 7
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e35d2605-6a6c-4e32-8086-530b841a53a8"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 7
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 92,
+ "g": 88,
+ "b": 88,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 10
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 7
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Login",
+ "handler": "onBtnQuickStartClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_weixin",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 406,
+ "height": 156
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -214
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ec4062WwfdAaZr9nVW9nBTl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 13
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 11
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3040cec3-8b19-4c7a-929c-9bff1cd882ed"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 11
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 14
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 11
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Login",
+ "handler": "onBtnWeichatClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1194.73,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -340
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d817bLxl21ESKb+KFfyHi/U",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 23,
+ "_fontSize": 23,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排游戏时间 享受健康生活",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Node",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 18
+ },
+ {
+ "__id__": 20
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -304
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ecc2eRozcZNI7YT3xKU49jg",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yonghuxieyi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 17
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 579,
+ "height": 43
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "34b93edV2pNyJznwmqo/H3x",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 19
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 18
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b83a3ad2-17dd-4c8f-9c20-30dba9f80f99"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_checkbox",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 17
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 47,
+ "height": 48
+ },
+ "_children": [
+ {
+ "__id__": 21
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -178,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1f3eckIOA5PI5fHk/lrPWi5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 23
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "check_mark",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 20
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 59,
+ "height": 48
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "21d4bqwr0tBcoZXgXw7uxgl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 22
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 21
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b484497-3bab-434f-986d-2f12c762a3ba"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 20
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "f2fd3b02-16b0-4352-90fd-894cb73eb272"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "A",
+ "_objFlags": 0,
+ "_opacity": 0,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 397,
+ "height": 137
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.79,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -481,
+ "y": 306
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "de68enxQ/NDZpFnkuDSh++8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 25
+ },
+ {
+ "__id__": 26
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 24
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e35d2605-6a6c-4e32-8086-530b841a53a8"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 24
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 92,
+ "g": 88,
+ "b": 88,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 27
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 24
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Login",
+ "handler": "onBtnMIMAClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B",
+ "_objFlags": 0,
+ "_opacity": 0,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 397,
+ "height": 137
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.79,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 482,
+ "y": 306
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "19e078ZBZRAg5qxiWHDsLN6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 29
+ },
+ {
+ "__id__": 30
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 28
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e35d2605-6a6c-4e32-8086-530b841a53a8"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 28
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 92,
+ "g": 88,
+ "b": 88,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 31
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 28
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Login",
+ "handler": "onBtnMIMAClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "WaitingConnection",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 33
+ },
+ {
+ "__id__": 37
+ },
+ {
+ "__id__": 40
+ },
+ {
+ "__id__": 43
+ },
+ {
+ "__id__": 46
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5a8b92b2RRJaJlIbUsFPiXS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 49
+ },
+ {
+ "__id__": 50
+ }
+ ],
+ "_prefab": {
+ "__id__": 51
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 63,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8b98bNahuFNG6hdvCi1NEQZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 34
+ },
+ {
+ "__id__": 35
+ }
+ ],
+ "_prefab": {
+ "__id__": 36
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 33
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 33
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 32
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8b98bNahuFNG6hdvCi1NEQZ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 250
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "08edc5qMi1GNIOPT1/+Q4CE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 38
+ }
+ ],
+ "_prefab": {
+ "__id__": 39
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 37
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 32
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "08edc5qMi1GNIOPT1/+Q4CE",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156.95,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 78
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6ca22GIGnND4ZgWPY/knc9m",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 41
+ }
+ ],
+ "_prefab": {
+ "__id__": 42
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 40
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": " 正在登录游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 32
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "6ca22GIGnND4ZgWPY/knc9m",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "loading_image",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fc986CvSNlLcoxOpCTf74gY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 44
+ }
+ ],
+ "_prefab": {
+ "__id__": 45
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 43
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "33a87e63-83e7-4f98-a40e-96feece06697"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "3dad14aa-1217-43e2-a654-c22ae3a85d84"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 32
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "c3fefzKTgRNL5VgfiSpLfOV",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jzshazi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 30,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "15461fSawBG87CnfB3s49cE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 47
+ }
+ ],
+ "_prefab": {
+ "__id__": 48
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "30220141-dcea-4b2c-82ea-f6932b703abd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "3dad14aa-1217-43e2-a654-c22ae3a85d84"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 32
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "15461fSawBG87CnfB3s49cE",
+ "sync": false
+ },
+ {
+ "__type__": "10e32jDstpLhIGHWrQEq2vN",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 32
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 43
+ },
+ "_isShow": false,
+ "lblContent": {
+ "__id__": 41
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 32
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 32
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 32
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8f12cJXjThP5ILDjCfdQMUv",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Canvas",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_designResolution": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_fitWidth": false,
+ "_fitHeight": true
+ },
+ {
+ "__type__": "572a7Qfh69N9ZLXkNthANfi",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_mima": null,
+ "_mimaIndex": 0
+ }
+]
\ No newline at end of file
diff --git a/client/assets/scenes/login.fire.meta b/client/assets/scenes/login.fire.meta
new file mode 100755
index 0000000..881cf20
--- /dev/null
+++ b/client/assets/scenes/login.fire.meta
@@ -0,0 +1,7 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7b486d14-13bc-4be8-91e6-2efa50fc8715",
+ "asyncLoadAssets": false,
+ "autoReleaseAssets": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scenes/mjgame.fire b/client/assets/scenes/mjgame.fire
new file mode 100755
index 0000000..ba0276d
--- /dev/null
+++ b/client/assets/scenes/mjgame.fire
@@ -0,0 +1,87869 @@
+[
+ {
+ "__type__": "cc.SceneAsset",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "scene": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Scene",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 2247
+ }
+ ],
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d092d418-dcdd-4823-a232-eca65fe76fff",
+ "autoReleaseAssets": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Canvas",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 7
+ },
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 166
+ },
+ {
+ "__id__": 1048
+ },
+ {
+ "__id__": 1063
+ },
+ {
+ "__id__": 1066
+ },
+ {
+ "__id__": 1071
+ },
+ {
+ "__id__": 1076
+ },
+ {
+ "__id__": 1080
+ },
+ {
+ "__id__": 1092
+ },
+ {
+ "__id__": 1100
+ },
+ {
+ "__id__": 1281
+ },
+ {
+ "__id__": 1294
+ },
+ {
+ "__id__": 1299
+ },
+ {
+ "__id__": 1334
+ },
+ {
+ "__id__": 1365
+ },
+ {
+ "__id__": 1472
+ },
+ {
+ "__id__": 1679
+ },
+ {
+ "__id__": 1958
+ },
+ {
+ "__id__": 2189
+ },
+ {
+ "__id__": 2199
+ },
+ {
+ "__id__": 2223
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 640,
+ "y": 360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a826cOZ4LpDWIw3SrrL6oz7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2243
+ },
+ {
+ "__id__": 2244
+ },
+ {
+ "__id__": 2245
+ },
+ {
+ "__id__": 2246
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 4
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f051eWgV9REJYHGauBHdv9u",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 6
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_backgroud",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 3
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "eb1efnr97NG2qOuLv5njqxa",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 5
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 4
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "71c366f0-00c9-4e34-8b8e-29c1f6a5d93a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 3
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "typeTitle",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 8
+ },
+ {
+ "__id__": 10
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fd19abYSBVL7IlLybtGdt3f",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xzdd",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 7
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 331,
+ "height": 23
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 85
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1138fTVHx9G5bbyEaV/pq+0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 9
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 8
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "630d3be3-d850-489c-94d3-bc52be73e5aa"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xlch",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 7
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 331,
+ "height": 23
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 85
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "795e3pPVYxNhJJNXQeHY14d",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 11
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 10
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "2822bb44-286f-40a1-9398-35a3bb0bd761"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "prepare",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 13
+ },
+ {
+ "__id__": 18
+ },
+ {
+ "__id__": 22
+ },
+ {
+ "__id__": 27
+ },
+ {
+ "__id__": 32
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "af641vYMylDcqAj+h8v8Ami",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 165
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnBack",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 208,
+ "height": 69
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 468,
+ "y": -183
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7aa9123lfBKQLZrbs98w1/S",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 14
+ },
+ {
+ "__id__": 15
+ },
+ {
+ "__id__": 17
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea7d8d70-11a2-48fd-8f20-82bd49ffce05"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 16
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "ea7d8d70-11a2-48fd-8f20-82bd49ffce05"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 13
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJRoom",
+ "handler": "onBtnBackClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 68,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnWeichat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 304,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0d009RBtp9CwJlIKBVu3lMF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 19
+ },
+ {
+ "__id__": 20
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 18
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "249efc01-de45-4d92-8851-12b8e612751d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 18
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 21
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "249efc01-de45-4d92-8851-12b8e612751d"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 18
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJRoom",
+ "handler": "onBtnWeichatClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnDissolve",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 208,
+ "height": 69
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 468,
+ "y": -267
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bd6bddVvwxFz5Bf6XQms0HC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 23
+ },
+ {
+ "__id__": 24
+ },
+ {
+ "__id__": 26
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 22
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "150829b1-d3a8-4b43-a7d2-b894c15fb133"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 22
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 25
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "150829b1-d3a8-4b43-a7d2-b894c15fb133"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 22
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJRoom",
+ "handler": "onBtnDissolveClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 22
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 68,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnExit",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 208,
+ "height": 69
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 468,
+ "y": -267
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9e67dQRnHZMsYhUBIDm0pwH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 28
+ },
+ {
+ "__id__": 29
+ },
+ {
+ "__id__": 31
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 27
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "150829b1-d3a8-4b43-a7d2-b894c15fb133"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 27
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 30
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "150829b1-d3a8-4b43-a7d2-b894c15fb133"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 27
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJRoom",
+ "handler": "onBtnExit",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 27
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 68,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seats",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 12
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 33
+ },
+ {
+ "__id__": 66
+ },
+ {
+ "__id__": 99
+ },
+ {
+ "__id__": 132
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2270264kwBHxruSISKSRHVD",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 34
+ },
+ {
+ "__id__": 36
+ },
+ {
+ "__id__": 38
+ },
+ {
+ "__id__": 42
+ },
+ {
+ "__id__": 44
+ },
+ {
+ "__id__": 46
+ },
+ {
+ "__id__": 53
+ },
+ {
+ "__id__": 56
+ },
+ {
+ "__id__": 58
+ },
+ {
+ "__id__": 60
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -404,
+ "y": -101
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f71b5JkIr9GqaDa/+kWdCTu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 65
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 96,
+ "height": 97
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "28b63AB67pKQ42+9e4d2FFE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 35
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 34
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_money_frame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -68
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "612d6Z+iVFFXYzCzGFYEy3a",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 37
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 36
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5e2aaTY2WBIFoEh22o1oefo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 39
+ },
+ {
+ "__id__": 40
+ },
+ {
+ "__id__": 41
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 38
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 38
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 38
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 38
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -68
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "037ccWONINCBJG10VfX8hXn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 43
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 42
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 230,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ebbfeF5xZpFno3LkpWEC2GA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 45
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 44
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBubble",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [
+ {
+ "__id__": 47
+ },
+ {
+ "__id__": 50
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 35.9,
+ "y": -61.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c38d35qOlVMn4ksVeNVY6/R",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 52
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatbg_ld",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 46
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 310,
+ "height": 116
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 140,
+ "y": -35
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f1a0fiYYOBKXaraNU/IFTc4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 48
+ },
+ {
+ "__id__": 49
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 47
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "db2e469d-64f7-4fb2-b62d-bf54447a517e"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 47
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": -15,
+ "_right": -15,
+ "_top": -23.000000000000004,
+ "_bottom": -13,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 350,
+ "_originalHeight": 66
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 139,
+ "g": 71,
+ "b": 21,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 46
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6a3fa5guXBBp5Jx3cAd1oRj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 51
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 50
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 60.9,
+ "y": -57.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fd305HlWklMtJYiby8SN16o",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 54
+ },
+ {
+ "__id__": 55
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 53
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 53
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ready",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 88,
+ "height": 39
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 103,
+ "y": 2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c0ac2IbBidP66N6doFWC8cv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 57
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 56
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8988418a-46a0-461d-959b-07af93600051"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "offline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 63,
+ "height": 41
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 12,
+ "y": 28
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "04025C+2ZhPb7n5vygTIaOx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 59
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 58
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a230e2f8-3203-4f06-8299-6a187f59b5eb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voicemsg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 33
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 61
+ },
+ {
+ "__id__": 63
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 39.8,
+ "y": -34.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cd3c0DLWMRAQ5Ybb5s2csoZ",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yyDialog",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 60
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 58
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1ce56hCm05HZ5Ypm1AJyud9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 62
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 61
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c190547d-93bf-45fa-8e7f-43847fc0ad26"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "adj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 60
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -0.8,
+ "_scaleY": -0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 39,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "805eb4FBVBKjKfL/ysR4dZ+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 64
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 63
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58ac7267-1489-431b-b1b4-b27995c63e8a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 33
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 67
+ },
+ {
+ "__id__": 69
+ },
+ {
+ "__id__": 71
+ },
+ {
+ "__id__": 75
+ },
+ {
+ "__id__": 77
+ },
+ {
+ "__id__": 79
+ },
+ {
+ "__id__": 86
+ },
+ {
+ "__id__": 89
+ },
+ {
+ "__id__": 91
+ },
+ {
+ "__id__": 93
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 233,
+ "y": -152
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4dfa5XIlD9DUbnCQQHLs7JS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 98
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 96,
+ "height": 97
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "89694NZDDFKgrVKUCMvWavp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 68
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 67
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_money_frame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -68
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "143f3FExP1PHLWz9uBMFVa6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 70
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 69
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "26e801CtTdBoI0xQFfxRACO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 72
+ },
+ {
+ "__id__": 73
+ },
+ {
+ "__id__": 74
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 71
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "18102pRXOJFFLlopsRg3+wE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 76
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 75
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 230,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7d8f856+chJQLFY6xGB4yzR",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 78
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 77
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBubble",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [
+ {
+ "__id__": 80
+ },
+ {
+ "__id__": 83
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -38.4,
+ "y": 68.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6ce17q1Q1JD6YkM16GwaJXT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 85
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatbg_ld",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 79
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 310,
+ "height": 116
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -140,
+ "y": 31
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6ae67DcopFHyYTpvq1V8mUw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 81
+ },
+ {
+ "__id__": 82
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 80
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8d68fedf-6682-4a51-8977-b860121d0b71"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 80
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": -15,
+ "_right": -15,
+ "_top": -9.000000000000004,
+ "_bottom": -27,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 350,
+ "_originalHeight": 66
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 139,
+ "g": 71,
+ "b": 21,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 79
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ba883T/VcJNd5ZKXOBXZmMV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 84
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 83
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 79
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -64,
+ "y": 63.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ead2660VF9AkpQN7JXLioUf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 87
+ },
+ {
+ "__id__": 88
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 86
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 86
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ready",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 88,
+ "height": 39
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -120,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4fa5deGxjRK75jXpdsVjWyi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 90
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 89
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8988418a-46a0-461d-959b-07af93600051"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "offline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 63,
+ "height": 41
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 12,
+ "y": 28
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d9405tF51RF2IlGV3LF560H",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 92
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 91
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a230e2f8-3203-4f06-8299-6a187f59b5eb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voicemsg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 66
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 94
+ },
+ {
+ "__id__": 96
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -45.3,
+ "y": 51
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3984azIrWNBDZ+2xgzRGub0",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yyDialog",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 93
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 58
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "202baJhz4lCQ44RS4dyyWbR",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 95
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 94
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c190547d-93bf-45fa-8e7f-43847fc0ad26"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "adj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 93
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": -0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -34,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "76b12IvqCJN87tTKtSKNeO0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 97
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 96
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58ac7267-1489-431b-b1b4-b27995c63e8a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 66
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 100
+ },
+ {
+ "__id__": 102
+ },
+ {
+ "__id__": 104
+ },
+ {
+ "__id__": 108
+ },
+ {
+ "__id__": 110
+ },
+ {
+ "__id__": 112
+ },
+ {
+ "__id__": 119
+ },
+ {
+ "__id__": 122
+ },
+ {
+ "__id__": 124
+ },
+ {
+ "__id__": 126
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 390,
+ "y": 183
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "89291sKVzxNyoLMiWrgXpXd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 131
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 96,
+ "height": 97
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c4373zmBWNDipiWpYfqImNG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 101
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 100
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_money_frame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -68
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b3a07C0pq9Bw7t0iM3uiWUi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 103
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 102
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e955a9cHzVI4KbLIjKbNtww",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 105
+ },
+ {
+ "__id__": 106
+ },
+ {
+ "__id__": 107
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 104
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 104
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 104
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 104
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8844fVNmNlDKr+ePH7DL1fR",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 109
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 108
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 230,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f8b0cp95hNBHbr3At9tmgvg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 111
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 110
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBubble",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [
+ {
+ "__id__": 113
+ },
+ {
+ "__id__": 116
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -40,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "16abf2kUhVC/rD391Jdmn/4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 118
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatbg_ld",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 112
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 310,
+ "height": 116
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": -1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -140,
+ "y": -31
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bf1a2aTKRpIu4lfGzdCPLzX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 114
+ },
+ {
+ "__id__": 115
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 113
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8d68fedf-6682-4a51-8977-b860121d0b71"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 113
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": -15,
+ "_right": -15,
+ "_top": -27.000000000000004,
+ "_bottom": -9,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 350,
+ "_originalHeight": 66
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 139,
+ "g": 71,
+ "b": 21,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 112
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "21b9asc4CRPRJBAf1awQC/+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 117
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 116
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 112
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -59,
+ "y": -52
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c150bvWLaxHjIfrNEtHFpV6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 120
+ },
+ {
+ "__id__": 121
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 119
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 119
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ready",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 88,
+ "height": 39
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -99,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a782cBTDkxJQJ5ducMMXWgG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 123
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 122
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8988418a-46a0-461d-959b-07af93600051"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "offline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 63,
+ "height": 41
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 12,
+ "y": 28
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bd0dd3ImTNEC426PksXs+KU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 125
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 124
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a230e2f8-3203-4f06-8299-6a187f59b5eb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voicemsg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 99
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 127
+ },
+ {
+ "__id__": 129
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -47,
+ "y": -36
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0ee9fa0DJhMYpMNrFPuU84+",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yyDialog",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 126
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 58
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "41a97ondAhAC6+WYpA5aAx2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 128
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 127
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c190547d-93bf-45fa-8e7f-43847fc0ad26"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "adj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 126
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": -0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -34,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3c703Wffq1OzoDLAJWko6NZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 130
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 129
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58ac7267-1489-431b-b1b4-b27995c63e8a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 99
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 32
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 133
+ },
+ {
+ "__id__": 135
+ },
+ {
+ "__id__": 137
+ },
+ {
+ "__id__": 141
+ },
+ {
+ "__id__": 143
+ },
+ {
+ "__id__": 145
+ },
+ {
+ "__id__": 152
+ },
+ {
+ "__id__": 155
+ },
+ {
+ "__id__": 157
+ },
+ {
+ "__id__": 159
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -324,
+ "y": 175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4f41bNzV9FHxKoMWrW/ugQr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 164
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 96,
+ "height": 97
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8c2f6jjTF1CPbOk+2ABcm9C",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 134
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 133
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_money_frame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -68
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "423b9NRqWtEorPTZlQaPacy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 136
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 135
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "db013XtPkxP9Ydr56rMGE1c",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 138
+ },
+ {
+ "__id__": 139
+ },
+ {
+ "__id__": 140
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 137
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 137
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 137
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 137
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "90689qWnbFFLIH2FLwhajMm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 142
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 141
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 230,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "75f2aoTBmdPeLY5Iqc9vi4G",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 144
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 143
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBubble",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [
+ {
+ "__id__": 146
+ },
+ {
+ "__id__": 149
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -11,
+ "y": -67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e4d27IB/EFHsINXLAfgUU1L",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 151
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatbg_ld",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 145
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 310,
+ "height": 116
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 140,
+ "y": -35
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8434aoYZu9F8r6qDjfVHDPX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 147
+ },
+ {
+ "__id__": 148
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 146
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "db2e469d-64f7-4fb2-b62d-bf54447a517e"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 146
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": -15,
+ "_right": -15,
+ "_top": -23.000000000000004,
+ "_bottom": -13,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 350,
+ "_originalHeight": 66
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 139,
+ "g": 71,
+ "b": 21,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 145
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9671fNz0nJNTLS66yI+O/93",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 150
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 149
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 145
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 58,
+ "y": -57
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "923e9LqUTRN2LBMx3DC776z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 153
+ },
+ {
+ "__id__": 154
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 152
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 152
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ready",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 88,
+ "height": 39
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 120,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "19ff4C2CL5HkKVT0fAE3Fbs",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 156
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 155
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8988418a-46a0-461d-959b-07af93600051"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "offline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 63,
+ "height": 41
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 12,
+ "y": 28
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e9ea4ZSpgVPLq8aDkEvvg53",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 158
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 157
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a230e2f8-3203-4f06-8299-6a187f59b5eb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voicemsg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 160
+ },
+ {
+ "__id__": 162
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 42.1,
+ "y": -36.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b02312Qw1ZOl55bIn1D1Mub",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yyDialog",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 159
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 58
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "47fe5HBwG9P1IvXxxA4Y5Vf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 161
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 160
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c190547d-93bf-45fa-8e7f-43847fc0ad26"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "adj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 159
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -0.8,
+ "_scaleY": -0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 39,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f9c75tfInxI77+6LjQVJGx0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 163
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 162
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58ac7267-1489-431b-b1b4-b27995c63e8a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 132
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 720
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "game",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 167
+ },
+ {
+ "__id__": 170
+ },
+ {
+ "__id__": 173
+ },
+ {
+ "__id__": 183
+ },
+ {
+ "__id__": 199
+ },
+ {
+ "__id__": 370
+ },
+ {
+ "__id__": 541
+ },
+ {
+ "__id__": 714
+ },
+ {
+ "__id__": 930
+ },
+ {
+ "__id__": 1007
+ },
+ {
+ "__id__": 1045
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "91c003upU1AObElNe9/e0SK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1047
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mjcount",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 108.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -55,
+ "y": -69
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bc8b8bkDmBMLY2RGMbdo8AR",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 168
+ },
+ {
+ "__id__": 169
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 167
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "剩余0张",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 167
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "gamecount",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 108.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": -69
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b0571dNFEND8IpvktXZ013p",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 171
+ },
+ {
+ "__id__": 172
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 170
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "剩余5局",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 170
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "huanpaiinfo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 174
+ },
+ {
+ "__id__": 176
+ },
+ {
+ "__id__": 178
+ },
+ {
+ "__id__": 180
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -610,
+ "y": 267
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2187bJf6m5I/rtjInY+wm72",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 182
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hp1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 173
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 16,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c537cLsCtdPpoV1/oRKLPjU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 175
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 174
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hp2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 173
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 61,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4e375qkfixF9ZTTcP9YzXCD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 177
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 176
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hp3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 173
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 106,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2a024+Tsi9DcYGxB35vN8lL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 179
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 178
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hpm",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 173
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 26,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 146,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e213cLBOxJGVIpJWeq+dYs0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 181
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 180
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ceb6e600-b231-4f3e-9528-4131277712b7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 173
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 8,
+ "_left": 30,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "arrow",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 184
+ },
+ {
+ "__id__": 186
+ },
+ {
+ "__id__": 188
+ },
+ {
+ "__id__": 190
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1d7a55kkRVI6Jd4LqC8OGj8",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_arrow_frame",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 183
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 104,
+ "height": 104
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "888f2khIVtM8qKGiZh99z/J",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 185
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 184
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "4d53c7ba-0950-4e59-833e-2d2cb816a110"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lblTime",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 183
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 33.37,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "edee7tmC49Brr5JF29bYEkV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 187
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 186
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "10",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_arrow_top",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 183
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 50,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9697aF9ztVIYZea5lhhoe/m",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 189
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 188
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b2c1781b-17c0-4385-ae58-5ca7a67b741d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pointer",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 183
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 191
+ },
+ {
+ "__id__": 193
+ },
+ {
+ "__id__": 195
+ },
+ {
+ "__id__": 197
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6b4d3uOgpFFhKvBgCNFdBGq",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sichuan_room_fangxiang_002",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 190
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 93,
+ "height": 21
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -37
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "00be03K7eVFMqKJXEfeBprN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 192
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 191
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e780b529-e5dd-47f4-89b9-085eb0c305ff"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sichuan_room_fangxiang_004",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 190
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 21,
+ "height": 93
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 37,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c5f3du5MGZNuZqcyvhvPonV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 194
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 193
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "90e4b45c-8044-49b6-a842-5bd38dafe909"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sichuan_room_fangxiang_003",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 190
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 93,
+ "height": 21
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 37
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e5609MBa3hB94S/q5sA5Njn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 196
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 195
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d278cab0-d89b-4fca-b312-e5a5279015fa"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sichuan_room_fangxiang_001",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 190
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 21,
+ "height": 92
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -37,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "17158Ks8R5J05eK2gTZQ+EX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 198
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 197
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ffd781e3-3d89-49a1-99af-45446e138558"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 200
+ },
+ {
+ "__id__": 229
+ },
+ {
+ "__id__": 230
+ },
+ {
+ "__id__": 279
+ },
+ {
+ "__id__": 284
+ },
+ {
+ "__id__": 289
+ },
+ {
+ "__id__": 296
+ },
+ {
+ "__id__": 341
+ },
+ {
+ "__id__": 366
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 550,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6f9aeXUHXhMSLOBjffsCfJg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 369
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "holds",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 201
+ },
+ {
+ "__id__": 203
+ },
+ {
+ "__id__": 205
+ },
+ {
+ "__id__": 207
+ },
+ {
+ "__id__": 209
+ },
+ {
+ "__id__": 211
+ },
+ {
+ "__id__": 213
+ },
+ {
+ "__id__": 215
+ },
+ {
+ "__id__": 217
+ },
+ {
+ "__id__": 219
+ },
+ {
+ "__id__": 221
+ },
+ {
+ "__id__": 223
+ },
+ {
+ "__id__": 225
+ },
+ {
+ "__id__": 227
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -97,
+ "y": 164
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "948616sEJZEPLzIeu8x9wgv",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 11
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5a00bmgjWBBGoYoBBg8hY3H",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 202
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 201
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b68c9+0GaNGzpFttzMZ5qpb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 204
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 203
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -50
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "02282YwayVL+I3q75soajfF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 206
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 205
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1f77c+Y0aVPdrElp8nfoElY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 208
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 207
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f8b01u/5QdOCKAbVQkKe3tc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 210
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 209
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "15407JI+etFkYMjjqQxvJT3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 212
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 211
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d197dthbrlB7oj+e1eEluR1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 214
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 213
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ac46a1ziCVOS6j4dp98bkre",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 216
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 215
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -200
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5ebd5U3hdpHz4IVGIxxoDGV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 218
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 217
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -225
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e52da/7roJGRb4GwdMgCwi/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 220
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 219
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f726a+tw4RMOo3rGJLKZaf9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 222
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 221
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -275
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "49e01gDIqlD4Zvk/6Mb08ak",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 224
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 223
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -300
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a1cc7bnNYVLipAVO7uIk6Ce",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 226
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 225
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_right",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -325
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "22fd6amKLREAYf+91cNCbmd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 228
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 227
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "penggangs",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -97,
+ "y": -135
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f5ec0Tp9e9HPZUNmW1QQHyX",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "folds",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 231
+ },
+ {
+ "__id__": 233
+ },
+ {
+ "__id__": 235
+ },
+ {
+ "__id__": 237
+ },
+ {
+ "__id__": 239
+ },
+ {
+ "__id__": 241
+ },
+ {
+ "__id__": 243
+ },
+ {
+ "__id__": 245
+ },
+ {
+ "__id__": 247
+ },
+ {
+ "__id__": 249
+ },
+ {
+ "__id__": 251
+ },
+ {
+ "__id__": 253
+ },
+ {
+ "__id__": 255
+ },
+ {
+ "__id__": 257
+ },
+ {
+ "__id__": 259
+ },
+ {
+ "__id__": 261
+ },
+ {
+ "__id__": 263
+ },
+ {
+ "__id__": 265
+ },
+ {
+ "__id__": 267
+ },
+ {
+ "__id__": 269
+ },
+ {
+ "__id__": 271
+ },
+ {
+ "__id__": 273
+ },
+ {
+ "__id__": 275
+ },
+ {
+ "__id__": 277
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -263,
+ "y": 150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3a8f4A5AlZMwoPTmo5yU7Et",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8883e1jVYFByrw1eI3XVJGB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 232
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 231
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e2015mnjsROsKx+JLfQ/WVi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 234
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 233
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -50
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8ef71m6O0dDbJ0WQF+JKsJv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 236
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 235
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "089cdmh9DJL043alpsJwBUJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 238
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 237
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "108de5WUWRLX48qyX25CZN9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 240
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 239
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fa17djessxFt7QwPTSLKlQj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 242
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 241
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6ec06zwTBlJ1KR41FJT6WIm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 244
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 243
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "07d998hjMxGl4byoE5TE6U5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 246
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 245
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -200
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "16cb6sxkX5ESY+PjOGtixeG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 248
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 247
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -225
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a60ff8WgG5LYYBUvv93ZA0K",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 250
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 249
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bcbb5SMpGhBVZuJospWodwk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 252
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 251
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 96,
+ "y": -275
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "db7a1SfZspMLKqmewatvZOk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 254
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 253
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "21a74FNLrdF1blHmKxPx319",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 256
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 255
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0891eUQz7xAuJt64dRaLp7S",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 258
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 257
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -50
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4764e4gYatGnI+mQYVS7gX6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 260
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 259
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "231d1S55lhB34ZK7vUARk2/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 262
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 261
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d22410JjEtC5ZRAd17D+lto",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 264
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 263
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f63d48stNZIppRloEC5RhXx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 266
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 265
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "67e8bmy585FJoJGpRkz2ykT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 268
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 267
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "58ab3QKQypGlK4hz/Ja/L5A",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 270
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 269
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -200
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5f124n/3VBHrq00Yjs+qyXX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 272
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 271
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -225
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "372eaKP039Aqok8oJWH7pGN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 274
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 273
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "73439W+x7FH3riQnVHjXYKc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 276
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 275
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "R_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 230
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 48,
+ "y": -275
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "839fePPEOJFD6d+roWVAKUQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 278
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 277
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1b59695e-5540-424c-9039-1f104391aeda"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 280
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -314,
+ "y": 18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d2176MQhWdKiZe8g4ufpnlO",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 283
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 279
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "021fct3AihHKJwi041wa75s",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 281
+ }
+ ],
+ "_prefab": {
+ "__id__": 282
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 280
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 279
+ },
+ "asset": {
+ "__uuid__": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf"
+ },
+ "fileId": "44f6fbrW4tN+KfvWX2OEkjj",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 279
+ },
+ "asset": {
+ "__uuid__": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf"
+ },
+ "fileId": "b5891hnB3xPsZ8btypA8brR",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "HuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 168,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 60,
+ "height": 30
+ },
+ "_children": [
+ {
+ "__id__": 285
+ },
+ {
+ "__id__": 287
+ }
+ ],
+ "_rotationX": -90,
+ "_rotationY": -90,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -131,
+ "y": 21
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "acb7cbwbkNO8LwYksVsO6F8",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sprHu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 284
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 122
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -11.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b8f3cBSnaBKoqCjXI7HHfy8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 286
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 285
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc8aaac9-73a5-48aa-b04c-6679debab83f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sprZimo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 284
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 184,
+ "height": 126
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -11.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f9b232alLNBz7BPJLhHOzUP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 288
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 287
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ecb830a8-95c6-4528-bb97-771d7cd13dc4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "opt",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 290
+ },
+ {
+ "__id__": 292
+ },
+ {
+ "__id__": 294
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -251,
+ "y": 12
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "aeb70TZkLdOSZ/Ssdcf8kct",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 289
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 101
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 29,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3024dBZWkJMdrlORLdp8eON",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 291
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 290
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85a8cdbb-b77e-4d81-b843-9852c08c0215"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 289
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "21f9ctICkZEWqwyE7U7EUc7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 293
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 292
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "op",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 289
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 122
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 86,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3c8a4JOcohF+J15rP9O7U0p",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 295
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 294
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc8aaac9-73a5-48aa-b04c-6679debab83f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 297
+ },
+ {
+ "__id__": 299
+ },
+ {
+ "__id__": 303
+ },
+ {
+ "__id__": 310
+ },
+ {
+ "__id__": 312
+ },
+ {
+ "__id__": 314
+ },
+ {
+ "__id__": 321
+ },
+ {
+ "__id__": 323
+ },
+ {
+ "__id__": 325
+ },
+ {
+ "__id__": 327
+ },
+ {
+ "__id__": 332
+ },
+ {
+ "__id__": 335
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 73
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "71354tuyRZO7LoqO+1pObAa",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 340
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 96,
+ "height": 97
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "01227ZVY2RN24/7FeykjVAy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 298
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 297
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8791fH0UYZMU47oWqrFnVp/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 300
+ },
+ {
+ "__id__": 301
+ },
+ {
+ "__id__": 302
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 299
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 299
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 299
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 299
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBubble",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 40
+ },
+ "_children": [
+ {
+ "__id__": 304
+ },
+ {
+ "__id__": 307
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -75,
+ "y": -19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6237bxumERF1b980d4TU/Rl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 309
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatbg_ld",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 303
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 76
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -200,
+ "y": 12
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a90f5SGk5dETaSKRFOPfH5k",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 305
+ },
+ {
+ "__id__": 306
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 304
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8d68fedf-6682-4a51-8977-b860121d0b71"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 304
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": -15,
+ "_right": -15,
+ "_top": -10.000000000000004,
+ "_bottom": -26,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 350,
+ "_originalHeight": 66
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 139,
+ "g": 71,
+ "b": 21,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 303
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "56a88gzIH5HYaGfp8qpd5ZT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 308
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 307
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好了了了",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 303
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "offline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 63,
+ "height": 41
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -16.1,
+ "y": 29.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f17fcgLAgxGPI+Ny5RxgeEu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 311
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 310
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a230e2f8-3203-4f06-8299-6a187f59b5eb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 37
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -45,
+ "y": 45
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b12a1so9Q5PG72rWTBw1alE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 313
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 312
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a7b08c37-ea5d-4c04-85ae-ec901991e574"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "que",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 25,
+ "height": 25
+ },
+ "_children": [
+ {
+ "__id__": 315
+ },
+ {
+ "__id__": 317
+ },
+ {
+ "__id__": 319
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 32.6,
+ "y": 35
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "860aeKKEZBP/621eYepUuI2",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 314
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3bd07mZvU9GE7GjKUPnKqX5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 316
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 315
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5814d418-f75c-49fa-b3ff-910c85c9c9ba"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 314
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "357f8PcvnRJOqzhQ0pz6MvU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 318
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 317
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "70e14a7e-9eac-46a0-9aab-6e6584e120ab"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 314
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "69267cAW/JNF7oluCrOtKBN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 320
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 319
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d0c01627-4d4d-4e0f-a8cf-872b3965b082"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name_bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "149f1jCRpxGEIhU7E2+sPpl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 322
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 321
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "75180/G8ARE6KFY/5ZHc+SL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 324
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 323
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 230,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -95
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a3dbaKWuuxGSKUSdbh7iLE0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 326
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 325
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xuanpai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 328
+ },
+ {
+ "__id__": 330
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 11,
+ "y": -93
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c0bd7fVB4pDU6pFLdLCPLYH",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xd",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 327
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 112,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3f277fG/WdHwqFxczFMfKuM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 329
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 328
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c6317a07-e5db-4930-a7d5-bd6fe7ef7b5e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xz",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 327
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 114,
+ "height": 35
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d1c3fOsL+dBrLkxAstcl1aY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 331
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 330
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a87ec412-9067-4265-a7f4-a8054f7a1c46"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -27,
+ "y": -23
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9359f9mvUVHLaoZv70/m5s0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 333
+ },
+ {
+ "__id__": 334
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 332
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 332
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voicemsg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 296
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 336
+ },
+ {
+ "__id__": 338
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -43,
+ "y": -37.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1aad7aiukZLo67Rzd9QdNAO",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yyDialog",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 335
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 58
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5bbb6XWIQlKBL9vTrJc+6B9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 337
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 336
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c190547d-93bf-45fa-8e7f-43847fc0ad26"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "adj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 335
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": -0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -34,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1cec4UXNOpL54XSwf94jaRp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 339
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 338
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58ac7267-1489-431b-b1b4-b27995c63e8a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 296
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hupailist",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 342
+ },
+ {
+ "__id__": 344
+ },
+ {
+ "__id__": 346
+ },
+ {
+ "__id__": 348
+ },
+ {
+ "__id__": 350
+ },
+ {
+ "__id__": 352
+ },
+ {
+ "__id__": 354
+ },
+ {
+ "__id__": 356
+ },
+ {
+ "__id__": 358
+ },
+ {
+ "__id__": 360
+ },
+ {
+ "__id__": 362
+ },
+ {
+ "__id__": 364
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -264,
+ "y": 155
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ec20bhtBKdMIqbkYr1xk1pL",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1d11dZpqfdJEJ/3XjCR/tz0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 343
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 342
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -28
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8db8fLJo9FL5oUksRcXLU4x",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 345
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 344
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -56
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a4dffjAJZhLB5O9eM2m6bs1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 347
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 346
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -84
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "af30cfR5jVK9InwKfcBcA1x",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 349
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 348
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 13.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2b92dicff5Fxog9fSPmFdCi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 351
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 350
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -14.9
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bf0b6AI3g1B8aPPzuVyWS7N",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 353
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 352
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -42.9
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1608fVuNt1CI4j/M2/Eylol",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 355
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 354
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -70.9
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "82694AOWb1B1p68cEKYAzPS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 357
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 356
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 26.2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8bbd01vxWxGLL95/ijd8ClF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 359
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 358
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -1.8
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "15b82sfpZ5NoonzjUXIeD7y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 361
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 360
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -29.8
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7160eRGQ3FPxa612nZ4t6Jt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 363
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 362
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 341
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -57.8
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ba6f7NeDxxKxIWzv8IV8ua3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 365
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 364
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "67368907-8fe6-493f-be21-083e0ed0306b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "play_efx",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -265,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0ce86xcdF1Nz5eSGbPhdyjO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 367
+ },
+ {
+ "__id__": 368
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 366
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": false,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 366
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "a812d421-cef6-49b1-88ec-f64a8d3fda71"
+ },
+ {
+ "__uuid__": "0470db5f-e2e7-4a23-985e-087e2faf1e35"
+ },
+ {
+ "__uuid__": "3172929a-6752-4840-b747-9ab45c973a88"
+ },
+ {
+ "__uuid__": "ee5ff482-e2c9-47e9-972a-ee4e4f8f2adb"
+ },
+ {
+ "__uuid__": "ea90eb71-da66-44b9-b343-b577cdb7d53f"
+ },
+ {
+ "__uuid__": "e4237ef8-fd32-4874-9ab0-6f94b5393b8b"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 199
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 32,
+ "_left": 1266,
+ "_right": 90,
+ "_top": 360,
+ "_bottom": 360,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 371
+ },
+ {
+ "__id__": 400
+ },
+ {
+ "__id__": 401
+ },
+ {
+ "__id__": 450
+ },
+ {
+ "__id__": 455
+ },
+ {
+ "__id__": 460
+ },
+ {
+ "__id__": 467
+ },
+ {
+ "__id__": 512
+ },
+ {
+ "__id__": 537
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d153eJkaLRAF6L7FALb4DMm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 540
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "holds",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 372
+ },
+ {
+ "__id__": 374
+ },
+ {
+ "__id__": 376
+ },
+ {
+ "__id__": 378
+ },
+ {
+ "__id__": 380
+ },
+ {
+ "__id__": 382
+ },
+ {
+ "__id__": 384
+ },
+ {
+ "__id__": 386
+ },
+ {
+ "__id__": 388
+ },
+ {
+ "__id__": 390
+ },
+ {
+ "__id__": 392
+ },
+ {
+ "__id__": 394
+ },
+ {
+ "__id__": 396
+ },
+ {
+ "__id__": 398
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -239,
+ "y": 239
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "25b5bfjXOFOXIHjphHkJ3bv",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -12,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3a407h+LvhJ5LEXFXKh0Fqv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 373
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 372
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 38,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "69a81T5TCxG4bqckYWjS9la",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 375
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 374
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 76,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6172fjKH0VI8YxOMrfaRW4m",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 377
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 376
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 114,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4e8e005xPNNHIiMAgQZrW0y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 379
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 378
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 152,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4dce13vUH9PJ4AAd9d0lh2X",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 381
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 380
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 190,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d7d38sCxx1JK7uARnQuIsHu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 383
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 382
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 228,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b8df3zOd3dFn7bvZnr7SASF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 385
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 384
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 266,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fc201NwhZxJkKMe76YiW1Xl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 387
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 386
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 304,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2f398M5EuhGSqVEiPl4LmAf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 389
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 388
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 342,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f52113dmg1C8I8MDIvB+eSB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 391
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 390
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 380,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5dd33glmLNPDIfcgEcPazYY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 393
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 392
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 418,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d093e+wXDlLMY0qlPxxkCzi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 395
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 394
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 456,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d2481MlGN5KA5rPFHHgVZRJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 397
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 396
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_up",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 371
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 59
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 494,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "29717F4rLtMZJHbuuVhXK73",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 399
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 398
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "penggangs",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 198,
+ "y": 239
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4755cNvhHBKXoGKonLO0Jij",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "folds",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 402
+ },
+ {
+ "__id__": 404
+ },
+ {
+ "__id__": 406
+ },
+ {
+ "__id__": 408
+ },
+ {
+ "__id__": 410
+ },
+ {
+ "__id__": 412
+ },
+ {
+ "__id__": 414
+ },
+ {
+ "__id__": 416
+ },
+ {
+ "__id__": 418
+ },
+ {
+ "__id__": 420
+ },
+ {
+ "__id__": 422
+ },
+ {
+ "__id__": 424
+ },
+ {
+ "__id__": 426
+ },
+ {
+ "__id__": 428
+ },
+ {
+ "__id__": 430
+ },
+ {
+ "__id__": 432
+ },
+ {
+ "__id__": 434
+ },
+ {
+ "__id__": 436
+ },
+ {
+ "__id__": 438
+ },
+ {
+ "__id__": 440
+ },
+ {
+ "__id__": 442
+ },
+ {
+ "__id__": 444
+ },
+ {
+ "__id__": 446
+ },
+ {
+ "__id__": 448
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -180,
+ "y": 172
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "618cdK3OIpJmLOh+yagJOlR",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "46ac761I/hMUYWoV1XmibNa",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 403
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 402
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5ea4cbbf-d3ad-469d-8488-e3b5c9e14d66"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "09791neXntLe6hJHP0vpz8Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 405
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 404
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3a4bc43a-320e-496b-84e3-9cd7b192cafa"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3e75bYhoT1BFZR//z9LSk9Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 407
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 406
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cead5d37-33b1-4d99-a054-e64168a887f6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "84ae1/zSBJBwqeGOMA27Zf2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 409
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 408
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "4d42ddcf-8e6c-4396-bf69-26dd2b288e2b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 220,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f2c62ZgTV5Ppo7R8ReEIAOK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 411
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 410
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5ebc8906-0653-4bf2-9325-d4368a3d46db"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 275,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fd693OidiZNiJNVaPmZ1f92",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 413
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 412
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "001488ed-61c9-40a1-a7e0-9152dfe8df0e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 330,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d62d2q07hRKYrfHSAYM/V2p",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 415
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 414
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "836d2a01-b443-4b1a-92ca-642a907122fb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 385,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "925e4Ghm2dHyqbrAJjCThS+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 417
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 416
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ef0b2857-5785-46e2-b02c-63f7171098ab"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 440,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "77c8ceaLlhLTqg0nmg4o7m4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 419
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 418
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 495,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3cdc4D1OpNJ6JzlbB/hW4Vi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 421
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 420
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj10",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 550,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2e284rQ0oVGsb8UvpLs+L3t",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 423
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 422
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj11",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 605,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1c5e55n1AlJiIdUrAMgefpv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 425
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 424
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f2b46GCvwdKU4AEicSdpt8n",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 427
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 426
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5ea4cbbf-d3ad-469d-8488-e3b5c9e14d66"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "45820K65/ZDTL/mFnNVWUCm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 429
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 428
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3a4bc43a-320e-496b-84e3-9cd7b192cafa"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c0c4cf4d/9Chb2VCJ2t0PAJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 431
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 430
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cead5d37-33b1-4d99-a054-e64168a887f6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "516f2zXffVN5KoVtXXY8TL/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 433
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 432
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "4d42ddcf-8e6c-4396-bf69-26dd2b288e2b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 220,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bd2dc/jIw5OBoyK47UKTojX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 435
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 434
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5ebc8906-0653-4bf2-9325-d4368a3d46db"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 275,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "560e8Ushx5FSZvzU+Wcm5Eh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 437
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 436
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "001488ed-61c9-40a1-a7e0-9152dfe8df0e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 330,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4e845HwENRNmo0TJyHCYRHn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 439
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 438
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "836d2a01-b443-4b1a-92ca-642a907122fb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 385,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d8596vJ9nVH1b0FG8/xfIDU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 441
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 440
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ef0b2857-5785-46e2-b02c-63f7171098ab"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 440,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "faddbK2XntNprDHUdfhD7qy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 443
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 442
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 495,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dd6cfJ6VZNMRo+h57al2SUm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 445
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 444
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj10",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 550,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "378b1xgpylHNKDXundAV3Cp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 447
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 446
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj11",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 401
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 605,
+ "y": -66
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "869a24SF/RIYYDfHFlM47Le",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 449
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 448
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b8d90545-c2e4-408b-891b-bc8a6f2f72ac"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 451
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "50cdfS068hOo7qAg9ODJzEr",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 454
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 450
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0bb0aI7JZVKGaXaBbVoT32T",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 452
+ }
+ ],
+ "_prefab": {
+ "__id__": 453
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 451
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 450
+ },
+ "asset": {
+ "__uuid__": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf"
+ },
+ "fileId": "44f6fbrW4tN+KfvWX2OEkjj",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 450
+ },
+ "asset": {
+ "__uuid__": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf"
+ },
+ "fileId": "b5891hnB3xPsZ8btypA8brR",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "HuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 168,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 60,
+ "height": 30
+ },
+ "_children": [
+ {
+ "__id__": 456
+ },
+ {
+ "__id__": 458
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 216
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ca0cb+xAf1CoKI84a9AvkSD",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sprHu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 455
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 122
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -11.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9ff8ee8jTxOCr3FrSkB6V37",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 457
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 456
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc8aaac9-73a5-48aa-b04c-6679debab83f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sprZimo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 455
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 184,
+ "height": 126
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -11.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5d2672MUkVOtr4g84wj4lGf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 459
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 458
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ecb830a8-95c6-4528-bb97-771d7cd13dc4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "opt",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 461
+ },
+ {
+ "__id__": 463
+ },
+ {
+ "__id__": 465
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 166
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c4933kWzPRJSpwHd8Jg2Nk6",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 460
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 101
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 29,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d9907PDxFNAJrvYEM8KHXfX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 462
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 461
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85a8cdbb-b77e-4d81-b843-9852c08c0215"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 460
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1f7140LFmJOdrHgzwYfBYjO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 464
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 463
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "op",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 460
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 122
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 86,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "703b9N9/4VIkpS9uk2yiX+w",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 466
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 465
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc8aaac9-73a5-48aa-b04c-6679debab83f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 468
+ },
+ {
+ "__id__": 470
+ },
+ {
+ "__id__": 474
+ },
+ {
+ "__id__": 481
+ },
+ {
+ "__id__": 483
+ },
+ {
+ "__id__": 485
+ },
+ {
+ "__id__": 487
+ },
+ {
+ "__id__": 494
+ },
+ {
+ "__id__": 496
+ },
+ {
+ "__id__": 498
+ },
+ {
+ "__id__": 503
+ },
+ {
+ "__id__": 506
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 370,
+ "y": 273
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fe0dfcrnYpDC6FZkQQTArUb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 511
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 96,
+ "height": 97
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "41957s92YVEJbz6+/fcIw0t",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 469
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 468
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "173ffMlUnZHjqY8+BV5EHwD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 471
+ },
+ {
+ "__id__": 472
+ },
+ {
+ "__id__": 473
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 470
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 470
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 470
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 470
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBubble",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [
+ {
+ "__id__": 475
+ },
+ {
+ "__id__": 478
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -47,
+ "y": -64
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b9986dT5G5FSI/ahKG7/bXv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 480
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatbg_ld",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 474
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 310,
+ "height": 116
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -144,
+ "y": -31
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b6a80nn2ddFt6UUMoPThwEn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 476
+ },
+ {
+ "__id__": 477
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 475
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "db2e469d-64f7-4fb2-b62d-bf54447a517e"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 475
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": -19,
+ "_right": -11,
+ "_top": -27.000000000000004,
+ "_bottom": -9,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 350,
+ "_originalHeight": 66
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 139,
+ "g": 71,
+ "b": 21,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 474
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 280,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e55818+HhtHh6Qib9aCIrHy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 479
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 478
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 474
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好\n了了了了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 230,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -95
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "65e01W1goFLK52TAQ3CWMfg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 482
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 481
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name_bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cc2bcfmHRBGPLn1OdrTQbnj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 484
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 483
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e888bLTIzlDX6HVYQNFtb9K",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 486
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 485
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "que",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 25,
+ "height": 25
+ },
+ "_children": [
+ {
+ "__id__": 488
+ },
+ {
+ "__id__": 490
+ },
+ {
+ "__id__": 492
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 32.6,
+ "y": 35
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e5398AmNL9E5Z0bdy4rF6Ty",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 487
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c2018K0k2pASr+44jbT86yd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 489
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 488
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5814d418-f75c-49fa-b3ff-910c85c9c9ba"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 487
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "47ea2fP1ehHebn6wRkCZVOg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 491
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 490
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "70e14a7e-9eac-46a0-9aab-6e6584e120ab"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 487
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a0b2cXylMRLqYL8jyMn2Tbu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 493
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 492
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d0c01627-4d4d-4e0f-a8cf-872b3965b082"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "offline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 63,
+ "height": 41
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -16.1,
+ "y": 29.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ce72dEpA4RMCLmPlFemL2Ur",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 495
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 494
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a230e2f8-3203-4f06-8299-6a187f59b5eb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 37
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -45,
+ "y": 45
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "831b2YrOSxCgox3tvOkU5sh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 497
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 496
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a7b08c37-ea5d-4c04-85ae-ec901991e574"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xuanpai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 499
+ },
+ {
+ "__id__": 501
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 11,
+ "y": -93
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "61431s8rH5GmJPf9r+2J2za",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xd",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 498
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 112,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5a008PPaMBJ5LezP4T0grTX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 500
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 499
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c6317a07-e5db-4930-a7d5-bd6fe7ef7b5e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xz",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 498
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 114,
+ "height": 35
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5dc0507iWpNMqAvojUUPO+Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 502
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 501
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a87ec412-9067-4265-a7f4-a8054f7a1c46"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -28,
+ "y": -21
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1be113L2zlHfahGPQGiA4k/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 504
+ },
+ {
+ "__id__": 505
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 503
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 503
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voicemsg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 467
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 507
+ },
+ {
+ "__id__": 509
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -42.9,
+ "y": -34.8
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8b503H59KdD3Z9RqR0YE2G4",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yyDialog",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 506
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 58
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "318cfREK0tF4oF4Hi31/pNC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 508
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 507
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c190547d-93bf-45fa-8e7f-43847fc0ad26"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "adj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 506
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": -0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -34,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "90a01kPbJBCrpvHhr384YeQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 510
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 509
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58ac7267-1489-431b-b1b4-b27995c63e8a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 467
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hupailist",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 513
+ },
+ {
+ "__id__": 515
+ },
+ {
+ "__id__": 517
+ },
+ {
+ "__id__": 519
+ },
+ {
+ "__id__": 521
+ },
+ {
+ "__id__": 523
+ },
+ {
+ "__id__": 525
+ },
+ {
+ "__id__": 527
+ },
+ {
+ "__id__": 529
+ },
+ {
+ "__id__": 531
+ },
+ {
+ "__id__": 533
+ },
+ {
+ "__id__": 535
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -179.3,
+ "y": 92.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5e1b9LZZOdDqa7/UG910MCY",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2c18eoqoZ9DVri1REou5orH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 514
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 513
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "71de9pZfhNIhaQWOGTYCVFH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 516
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 515
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4cc0b+un45AhaJIKIj7SHsc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 518
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 517
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b88883wKPlAHr5KpG6mjOs2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 520
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 519
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 23.2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a2897C1o71CppkMazb732eU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 522
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 521
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 23.2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1a9aaDjWaBF+7IJb1buP7pt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 524
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 523
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 23.2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2b8e2OOIUNHz77Ms8hjAeAc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 526
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 525
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 23.2
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b07bauvNCVKgJiBk2Un7gHD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 528
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 527
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 47.9
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d8bdei3GSVBJLKioPJ5EHZu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 530
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 529
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 47.9
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "291f1Ub6wBAjJO9Dh8eyqjj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 532
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 531
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 47.9
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "80d9caOT7FPm4XReoI24aT7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 534
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 533
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 512
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 47.9
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cbabdefW8lPHI3cnBaxXRHx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 536
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 535
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "play_efx",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d44b0pEPUtAQrPtD4K0Xt+i",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 538
+ },
+ {
+ "__id__": 539
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 537
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": false,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 537
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "a812d421-cef6-49b1-88ec-f64a8d3fda71"
+ },
+ {
+ "__uuid__": "0470db5f-e2e7-4a23-985e-087e2faf1e35"
+ },
+ {
+ "__uuid__": "3172929a-6752-4840-b747-9ab45c973a88"
+ },
+ {
+ "__uuid__": "ee5ff482-e2c9-47e9-972a-ee4e4f8f2adb"
+ },
+ {
+ "__uuid__": "ea90eb71-da66-44b9-b343-b577cdb7d53f"
+ },
+ {
+ "__uuid__": "e4237ef8-fd32-4874-9ab0-6f94b5393b8b"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 370
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 0,
+ "_left": 640,
+ "_right": 640,
+ "_top": 360,
+ "_bottom": 360,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 542
+ },
+ {
+ "__id__": 543
+ },
+ {
+ "__id__": 572
+ },
+ {
+ "__id__": 621
+ },
+ {
+ "__id__": 646
+ },
+ {
+ "__id__": 651
+ },
+ {
+ "__id__": 656
+ },
+ {
+ "__id__": 663
+ },
+ {
+ "__id__": 710
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -511,
+ "y": 15
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bd0d8QThI5O66E9kGEKB0N4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 713
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "penggangs",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 105,
+ "y": 221
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b985bBTDRFApojIfFHd8wgX",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "holds",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 544
+ },
+ {
+ "__id__": 546
+ },
+ {
+ "__id__": 548
+ },
+ {
+ "__id__": 550
+ },
+ {
+ "__id__": 552
+ },
+ {
+ "__id__": 554
+ },
+ {
+ "__id__": 556
+ },
+ {
+ "__id__": 558
+ },
+ {
+ "__id__": 560
+ },
+ {
+ "__id__": 562
+ },
+ {
+ "__id__": 564
+ },
+ {
+ "__id__": 566
+ },
+ {
+ "__id__": 568
+ },
+ {
+ "__id__": 570
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 105,
+ "y": 204
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d81a6hTQ95NzoeWn17/NhbO",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2fd9371JS1ADZhl2U0FKixW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 545
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 544
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1347cWw79VHqpW2DwmMAfLo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 547
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 546
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -50
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4d36aNVp65N0oDXI9Iv3pZ/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 549
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 548
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "11bb3XLsTNIKpq/XzotwGPZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 551
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 550
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ae11fxsarJCS7NjxpuaNpzR",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 553
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 552
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b2c4dEXp7hMhaVu42/4yZiN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 555
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 554
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "46b0d6V92ZNhL5zz/fUuKpq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 557
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 556
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e469bKsVTJEiZepNtnRW1nB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 559
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 558
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -200
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "66f8f9akYBAiI8X+l+w6npg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 561
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 560
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -225
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "20692lvFqpLy4UNAnrQp2aV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 563
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 562
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2bcef2aMQVLbqu0XS3udrzd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 565
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 564
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -275
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6757av8MOVGJIAc7AtXfi6z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 567
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 566
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -300
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "95c68fH7hBNfpKcOuYpD29t",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 569
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 568
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "e_mj_left",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 543
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 24,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -333
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7463c96t25Df77sJ68bibhK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 571
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 570
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "folds",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 573
+ },
+ {
+ "__id__": 575
+ },
+ {
+ "__id__": 577
+ },
+ {
+ "__id__": 579
+ },
+ {
+ "__id__": 581
+ },
+ {
+ "__id__": 583
+ },
+ {
+ "__id__": 585
+ },
+ {
+ "__id__": 587
+ },
+ {
+ "__id__": 589
+ },
+ {
+ "__id__": 591
+ },
+ {
+ "__id__": 593
+ },
+ {
+ "__id__": 595
+ },
+ {
+ "__id__": 597
+ },
+ {
+ "__id__": 599
+ },
+ {
+ "__id__": 601
+ },
+ {
+ "__id__": 603
+ },
+ {
+ "__id__": 605
+ },
+ {
+ "__id__": 607
+ },
+ {
+ "__id__": 609
+ },
+ {
+ "__id__": 611
+ },
+ {
+ "__id__": 613
+ },
+ {
+ "__id__": 615
+ },
+ {
+ "__id__": 617
+ },
+ {
+ "__id__": 619
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 264,
+ "y": 150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "be66ezjlCJMGLKb45q8ZhdK",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "83ca9LYR6hF5ZZYr5dQYf7c",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 574
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 573
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "82377qwpvdF/bgz0kwmQhB+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 576
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 575
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -50
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9ef7b1JhNVH8b2WnOwCr5yV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 578
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 577
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b9b54LgLelIv5YrDBmM/v8d",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 580
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 579
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3590aI5GZ1EBLFQkCJrSQF/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 582
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 581
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "513d0esHdhH1JgASyTG1dmV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 584
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 583
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d122dfy6WdPoaagsthQ3Peu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 586
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 585
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4bb34oF3cNHyYtW1/Xy32ih",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 588
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 587
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -200
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "94373ntCl1P4YtkxoLtI0Ij",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 590
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 589
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -225
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "99343SQRrJNjpQUJyqzvdH7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 592
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 591
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "08c06IUOnJMdpQtL/FNXW8I",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 594
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 593
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -48,
+ "y": -275
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1c26aeQdUVDzZpVv9yj/0UP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 596
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 595
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f8fe1Ap1I1KiIDjIE92z+MT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 598
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 597
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e29874g1NxFbpJlWsuVpq3F",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 600
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 599
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -50
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d7528HIgItI3rf24pcIq+Su",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 602
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 601
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2658a2RfpZEBZFalRMFAtNj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 604
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 603
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "18cdc49jAlOgowttFj9NRld",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 606
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 605
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fb3bctVth5LZZe4051i2lAL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 608
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 607
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6c9bbMQkM5GEY+JpF9WiF7z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 610
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 609
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3ee5cgwyJlCNrlkQsz1Pdxw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 612
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 611
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -200
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4ae06UqTC9HiZmEbLgBa2DI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 614
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 613
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -225
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f967dhYuZFOBr/85j7wn3Vz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 616
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 615
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "17da5dunrRN8oNEw/YIQJ4C",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 618
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 617
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 572
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -96,
+ "y": -275
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0f6beswG8pEbqVItDZNjQAe",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 620
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 619
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hupailist",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 622
+ },
+ {
+ "__id__": 624
+ },
+ {
+ "__id__": 626
+ },
+ {
+ "__id__": 628
+ },
+ {
+ "__id__": 630
+ },
+ {
+ "__id__": 632
+ },
+ {
+ "__id__": 634
+ },
+ {
+ "__id__": 636
+ },
+ {
+ "__id__": 638
+ },
+ {
+ "__id__": 640
+ },
+ {
+ "__id__": 642
+ },
+ {
+ "__id__": 644
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 271,
+ "y": -7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b7f5cXVwR1NY4IvBm2xUebV",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ae8feNdVLdA2Lx4bsSmCZFY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 623
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 622
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -28
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c9181hPW9FL7r0oxzXkIJIB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 625
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 624
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -56
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bc024saXCxMqY3yp2FjjmnW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 627
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 626
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -84
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "11f16fmdq9Ino2+rToyhyDV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 629
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 628
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 12.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "963851pHJJFwIy+KLS2tCOS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 631
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 630
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -15.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "82800kq68JCc556NDj8tyUX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 633
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 632
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -43.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6e0f8qVQ65GWLDo+9kLeoAu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 635
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 634
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -71.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0e8dbLZFjFLk75ql6Uub2fu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 637
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 636
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 22.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cb8819O3SpJSa9sfm09jSHG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 639
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 638
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -5.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "380e8KgZiFBS4AuTOkBpWJV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 641
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 640
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -33.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a9b02tU2ahD6IWT+S6mdc//",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 643
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 642
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "L_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 621
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 49,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -61.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "eede9uq8XJKbpNw6dI3ePJP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 645
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 644
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "87b96191-fa48-423f-b671-8b942f81b8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 647
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 314,
+ "y": 18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dabc7QqPUJC3LEp+hcmZoXs",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 650
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 646
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5b6aepqzuhPtoZE/xewxWTB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 648
+ }
+ ],
+ "_prefab": {
+ "__id__": 649
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 647
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 646
+ },
+ "asset": {
+ "__uuid__": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf"
+ },
+ "fileId": "44f6fbrW4tN+KfvWX2OEkjj",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 646
+ },
+ "asset": {
+ "__uuid__": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf"
+ },
+ "fileId": "b5891hnB3xPsZ8btypA8brR",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "HuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 168,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 60,
+ "height": 30
+ },
+ "_children": [
+ {
+ "__id__": 652
+ },
+ {
+ "__id__": 654
+ }
+ ],
+ "_rotationX": 90,
+ "_rotationY": 90,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 135,
+ "y": 47
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e2dd2ZlaXtOz6WO05WE/rmV",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sprHu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 651
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 122
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -11.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a52f3165/9Dv4RuFoCBOBj5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 653
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 652
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc8aaac9-73a5-48aa-b04c-6679debab83f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sprZimo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 651
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 184,
+ "height": 126
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -11.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "93d067L7pRAbbWtfU4357wN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 655
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 654
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ecb830a8-95c6-4528-bb97-771d7cd13dc4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "opt",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 657
+ },
+ {
+ "__id__": 659
+ },
+ {
+ "__id__": 661
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 199,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b563dSUW4tOwoymCsj+APba",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 656
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 101
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 29,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1cb2f41XUVIBpP2Oh/Qsbnm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 658
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 657
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85a8cdbb-b77e-4d81-b843-9852c08c0215"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 656
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "daf07oexlFE8ozDwJgJjF3m",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 660
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 659
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "op",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 656
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 122
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 86,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6b023AFWRpKtpiUKjKZKPDj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 662
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 661
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc8aaac9-73a5-48aa-b04c-6679debab83f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 664
+ },
+ {
+ "__id__": 666
+ },
+ {
+ "__id__": 670
+ },
+ {
+ "__id__": 677
+ },
+ {
+ "__id__": 679
+ },
+ {
+ "__id__": 681
+ },
+ {
+ "__id__": 688
+ },
+ {
+ "__id__": 690
+ },
+ {
+ "__id__": 692
+ },
+ {
+ "__id__": 694
+ },
+ {
+ "__id__": 699
+ },
+ {
+ "__id__": 703
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -33,
+ "y": 82
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "63402kWwq9BS5tFEttwvAEP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 708
+ },
+ {
+ "__id__": 709
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 96,
+ "height": 97
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a0e52aGXMhGi6mVpoY806pA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 665
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 664
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a66ebIp2e1IHbQpedu4IvI4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 667
+ },
+ {
+ "__id__": 668
+ },
+ {
+ "__id__": 669
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 666
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 666
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 666
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 666
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBubble",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 40
+ },
+ "_children": [
+ {
+ "__id__": 671
+ },
+ {
+ "__id__": 674
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 34,
+ "y": 80
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "25243VGt5BOVbNtPYmCWa5z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 676
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatbg_ld",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 670
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 76
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 200,
+ "y": 12
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e172eseCbtONJ/323fmCgWX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 672
+ },
+ {
+ "__id__": 673
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 671
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "10b2f590-dd13-4057-9ea3-ac53c1487106"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 671
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": -15,
+ "_right": -15,
+ "_top": -10.000000000000004,
+ "_bottom": -26,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 350,
+ "_originalHeight": 66
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 139,
+ "g": 71,
+ "b": 21,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 670
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d0b7781jwBMrYmhpy4yT+pl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 675
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 674
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好了了了",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 670
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "offline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 63,
+ "height": 41
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -16.1,
+ "y": 29.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0c8b6JKkTBEDpvymm7W5bo/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 678
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 677
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a230e2f8-3203-4f06-8299-6a187f59b5eb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 37
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -45,
+ "y": 45
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "df7ddkbmOpDzZ5V2l3BfVxJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 680
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 679
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a7b08c37-ea5d-4c04-85ae-ec901991e574"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "que",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 25,
+ "height": 25
+ },
+ "_children": [
+ {
+ "__id__": 682
+ },
+ {
+ "__id__": 684
+ },
+ {
+ "__id__": 686
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 32.6,
+ "y": 35
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bbbb3ulYiFEMrC8bm/TYX5S",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 681
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7b092EEQO1OVI/I/Q3abopO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 683
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 682
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5814d418-f75c-49fa-b3ff-910c85c9c9ba"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 681
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "920824+jFZPu7PcIdzHEWw6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 685
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 684
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "70e14a7e-9eac-46a0-9aab-6e6584e120ab"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 681
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "609f43elChHaJiuCtN97mD7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 687
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 686
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d0c01627-4d4d-4e0f-a8cf-872b3965b082"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name_bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "00762HX20xIL6JkrteyLIPh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 689
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 688
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b7490rim3pLg55EEsWApl+8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 691
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 690
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 230,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -95
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a51b8De92JP0Y0GRcZBKv//",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 693
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 692
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xuanpai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 695
+ },
+ {
+ "__id__": 697
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 11,
+ "y": -93
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "93573wa0KpHebYqwaUXXdN/",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xd",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 694
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 112,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4a245uDUX9JiKEhq9jdKnU3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 696
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 695
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c6317a07-e5db-4930-a7d5-bd6fe7ef7b5e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xz",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 694
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 114,
+ "height": 35
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7f7dcOrlilD5qhMwi5EGy7O",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 698
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 697
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a87ec412-9067-4265-a7f4-a8054f7a1c46"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 21,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1d2acZOoqRBx7W6H0QcRS42",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 700
+ },
+ {
+ "__id__": 701
+ }
+ ],
+ "_prefab": {
+ "__id__": 702
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 699
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 699
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 699
+ },
+ "asset": {
+ "__uuid__": "88b610e0-ae46-4547-9ba7-7f3d35a09c88"
+ },
+ "fileId": "1d2acZOoqRBx7W6H0QcRS42",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voicemsg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 663
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 704
+ },
+ {
+ "__id__": 706
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 42.2,
+ "y": -40.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e664f5Rzg9CIaGnPyzPPunE",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yyDialog",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 703
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 58
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d7a654wgpZAqZ3MO5P10eOg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 705
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 704
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c190547d-93bf-45fa-8e7f-43847fc0ad26"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "adj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 703
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -0.8,
+ "_scaleY": -0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 36,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "43d1a3CbJlBMJg6mAsg7lxI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 707
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 706
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58ac7267-1489-431b-b1b4-b27995c63e8a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 663
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 663
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -33,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "play_efx",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 541
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 178,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "16ae3QFIFFHi6eekUYJAcec",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 711
+ },
+ {
+ "__id__": 712
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 710
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": false,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 710
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "a812d421-cef6-49b1-88ec-f64a8d3fda71"
+ },
+ {
+ "__uuid__": "0470db5f-e2e7-4a23-985e-087e2faf1e35"
+ },
+ {
+ "__uuid__": "3172929a-6752-4840-b747-9ab45c973a88"
+ },
+ {
+ "__uuid__": "ee5ff482-e2c9-47e9-972a-ee4e4f8f2adb"
+ },
+ {
+ "__uuid__": "ea90eb71-da66-44b9-b343-b577cdb7d53f"
+ },
+ {
+ "__uuid__": "e4237ef8-fd32-4874-9ab0-6f94b5393b8b"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 541
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": 129,
+ "_right": 1266,
+ "_top": 360,
+ "_bottom": 360,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "myself",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 715
+ },
+ {
+ "__id__": 717
+ },
+ {
+ "__id__": 742
+ },
+ {
+ "__id__": 791
+ },
+ {
+ "__id__": 863
+ },
+ {
+ "__id__": 868
+ },
+ {
+ "__id__": 873
+ },
+ {
+ "__id__": 880
+ },
+ {
+ "__id__": 926
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1cc86xGDNlKXqO2I520ht0+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 929
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "penggangs",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.2,
+ "_scaleY": 1.2,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -575,
+ "y": -291
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "80c52YvNOJPNawhoVFpphsI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 716
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 715
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": 65,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hupailist",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 718
+ },
+ {
+ "__id__": 720
+ },
+ {
+ "__id__": 722
+ },
+ {
+ "__id__": 724
+ },
+ {
+ "__id__": 726
+ },
+ {
+ "__id__": 728
+ },
+ {
+ "__id__": 730
+ },
+ {
+ "__id__": 732
+ },
+ {
+ "__id__": 734
+ },
+ {
+ "__id__": 736
+ },
+ {
+ "__id__": 738
+ },
+ {
+ "__id__": 740
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -74
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "78a2dKV9WFDpZY+reW5eivb",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0fd35UNs2JP35qC4RCqusEN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 719
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 718
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "189d0HlVBNB1IDBqOjZoDsB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 721
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 720
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b36288ySqJIf6ngXUnTrcg8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 723
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 722
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1aa5dr/3axAn7Uq/hvKz7E+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 725
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 724
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f72b6DAfwRNqqQqqsqcK4fr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 727
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 726
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c9b40NqI49E8oUhb6s1mfLp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 729
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 728
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "059ecRvs8tPxbl+yKRy4QBr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 731
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 730
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 24
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bef93p2D5VKFJs5qOCv91tP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 733
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 732
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 49
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d4094g6ZJBFr7ld7G1mm6ia",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 735
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 734
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 49
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3f723crkTZL/bi69pIP1FM3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 737
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 736
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 49
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3700394+zVMP6Yz/RePAcG+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 739
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 738
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 717
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 49
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "82947CZ1HJMMYKwv6JRarK2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 741
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 740
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "folds",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 743
+ },
+ {
+ "__id__": 745
+ },
+ {
+ "__id__": 747
+ },
+ {
+ "__id__": 749
+ },
+ {
+ "__id__": 751
+ },
+ {
+ "__id__": 753
+ },
+ {
+ "__id__": 755
+ },
+ {
+ "__id__": 757
+ },
+ {
+ "__id__": 759
+ },
+ {
+ "__id__": 761
+ },
+ {
+ "__id__": 763
+ },
+ {
+ "__id__": 765
+ },
+ {
+ "__id__": 767
+ },
+ {
+ "__id__": 769
+ },
+ {
+ "__id__": 771
+ },
+ {
+ "__id__": 773
+ },
+ {
+ "__id__": 775
+ },
+ {
+ "__id__": 777
+ },
+ {
+ "__id__": 779
+ },
+ {
+ "__id__": 781
+ },
+ {
+ "__id__": 783
+ },
+ {
+ "__id__": 785
+ },
+ {
+ "__id__": 787
+ },
+ {
+ "__id__": 789
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -241,
+ "y": -175
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "918a2HeLyNBa7dgeATcTS8F",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8209cvv+NJLZo6aIR3apENd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 744
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 743
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f23407xt1xFMIXxJ4+ivHPz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 746
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 745
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "94911LJ0XdGR4a9DvwWQHxu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 748
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 747
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "52e20FY1BdHfrF2Bp8vvXW6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 750
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 749
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 220,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "20422IHAL9NcLcdrat70nbU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 752
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 751
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 275,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4a124cZJyZGdYqoePnBoA5V",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 754
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 753
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 330,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "80055R57gZAV62Ha+gHMvE9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 756
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 755
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 385,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "55dceRR/3JKIqaZeZGMZ5w/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 758
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 757
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 440,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a8535yFcMlNKrCxpVAWOjk8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 760
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 759
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 495,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a03dbHnRyxAuLpAudaDeonr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 762
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 761
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj10",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 550,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e1444cuQrZO5Lui0DS1rgO0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 764
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 763
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj11",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 605,
+ "y": 65
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2445ahF089BGJFaZ0z9b/TC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 766
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 765
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fd055UKsKZK2ab653eNx7xN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 768
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 767
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "72644ljLlVLIINv7U2HDSRr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 770
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 769
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b9dc9mMtXVAM69ZTA8F0Z1q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 772
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 771
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "107dfZaP4ZCmJixm5kVAwZU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 774
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 773
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 220,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "54d30oziKxFgLZCAI83q9Rn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 776
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 775
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 275,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c7e9ePmsQJFh4j+TbJidcnO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 778
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 777
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 330,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "354e76OMZRJ94Yr2n0Z3pD2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 780
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 779
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 385,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "473f2RkQfdMVYxNhQWCuNW6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 782
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 781
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 440,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "97cf2UhOZlARKxnsIlyn0hs",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 784
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 783
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 495,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e7b969dE35Jq4oLPXhtrt/l",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 786
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 785
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj10",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 550,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0a931XBwB5BPJpy3voLAtzD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 788
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 787
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mj11",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 742
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 605,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "12f19Z+ExRCLqa9WU39JKHH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 790
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 789
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "holds",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 792
+ },
+ {
+ "__id__": 797
+ },
+ {
+ "__id__": 802
+ },
+ {
+ "__id__": 807
+ },
+ {
+ "__id__": 812
+ },
+ {
+ "__id__": 817
+ },
+ {
+ "__id__": 822
+ },
+ {
+ "__id__": 827
+ },
+ {
+ "__id__": 832
+ },
+ {
+ "__id__": 837
+ },
+ {
+ "__id__": 842
+ },
+ {
+ "__id__": 847
+ },
+ {
+ "__id__": 852
+ },
+ {
+ "__id__": 857
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.1,
+ "_scaleY": 1.1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -273
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5b17bguOP9JWZuf8eay2CiM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 862
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -497,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b278fwn6IZBAIC0j7wM6cl9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 793
+ },
+ {
+ "__id__": 794
+ }
+ ],
+ "_prefab": {
+ "__id__": 796
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 792
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 792
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 795
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 792
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 792
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -422,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "145c4cfE55GlKs1rRXZ7N+Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 798
+ },
+ {
+ "__id__": 799
+ }
+ ],
+ "_prefab": {
+ "__id__": 801
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 797
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 797
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 800
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 797
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 797
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -347,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "40912oNqDFLAZ4ZaKoJo9bg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 803
+ },
+ {
+ "__id__": 804
+ }
+ ],
+ "_prefab": {
+ "__id__": 806
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 802
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 802
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 805
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 802
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 802
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -272,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c1daaaB8gVBk7UOzZ8aMvix",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 808
+ },
+ {
+ "__id__": 809
+ }
+ ],
+ "_prefab": {
+ "__id__": 811
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 807
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 807
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 810
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 807
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 807
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -197,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6c056/GMylOS7TYg5JZwBWh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 813
+ },
+ {
+ "__id__": 814
+ }
+ ],
+ "_prefab": {
+ "__id__": 816
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 812
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 812
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 815
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 812
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 812
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -122,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "06ac3mTs0JMrb7+IlMxbGfh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 818
+ },
+ {
+ "__id__": 819
+ }
+ ],
+ "_prefab": {
+ "__id__": 821
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 817
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 817
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 820
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 817
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 817
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "06ac3mTs0JMrb7+IlMxbGfh",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -47,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1c6d11WGGhDLJkNPGbwil2Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 823
+ },
+ {
+ "__id__": 824
+ }
+ ],
+ "_prefab": {
+ "__id__": 826
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 822
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 822
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 825
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 822
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 822
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 28,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1ec5ehQIw5P2Ywdq/Q0V0zG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 828
+ },
+ {
+ "__id__": 829
+ }
+ ],
+ "_prefab": {
+ "__id__": 831
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 827
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 827
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 830
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 827
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 827
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 103,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "87081vl67FBTbL8USQzJUG/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 833
+ },
+ {
+ "__id__": 834
+ }
+ ],
+ "_prefab": {
+ "__id__": 836
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 832
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 832
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 835
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 832
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 832
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 178,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a39a8IH8gJNX7Z8gNFyHITx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 838
+ },
+ {
+ "__id__": 839
+ }
+ ],
+ "_prefab": {
+ "__id__": 841
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 837
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 837
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 840
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 837
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 837
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 253,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "964d0vyWGlMzo2VzuS9P6MD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 843
+ },
+ {
+ "__id__": 844
+ }
+ ],
+ "_prefab": {
+ "__id__": 846
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 842
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 842
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 845
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 842
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 842
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 328,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1efbflIX/hGro99pz2qS+g1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 848
+ },
+ {
+ "__id__": 849
+ }
+ ],
+ "_prefab": {
+ "__id__": 851
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 847
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 847
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 850
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 847
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 847
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 403,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e3d47nMfPpOH5m8wd3gmSwU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 853
+ },
+ {
+ "__id__": 854
+ }
+ ],
+ "_prefab": {
+ "__id__": 856
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 852
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 852
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 855
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 852
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 852
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "MyMahJong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 791
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 504,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "af080yKnOhJbLMwZlqktmol",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 858
+ },
+ {
+ "__id__": 859
+ }
+ ],
+ "_prefab": {
+ "__id__": 861
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 857
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 857
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 860
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 171,
+ "g": 171,
+ "b": 171,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 857
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onMJClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 857
+ },
+ "asset": {
+ "__uuid__": "8f272adf-0dee-464e-bfc2-bd8bd6f38479"
+ },
+ "fileId": "b278fwn6IZBAIC0j7wM6cl9",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 791
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 16,
+ "_left": 640,
+ "_right": 1197,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 864
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -102
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b5891hnB3xPsZ8btypA8brR",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 867
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 863
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "44f6fbrW4tN+KfvWX2OEkjj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 865
+ }
+ ],
+ "_prefab": {
+ "__id__": 866
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 864
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 863
+ },
+ "asset": {
+ "__uuid__": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf"
+ },
+ "fileId": "44f6fbrW4tN+KfvWX2OEkjj",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 863
+ },
+ "asset": {
+ "__uuid__": "e86fe1d1-4e4d-408c-b543-f6d3be2951bf"
+ },
+ "fileId": "b5891hnB3xPsZ8btypA8brR",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "HuPai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 168,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 60,
+ "height": 30
+ },
+ "_children": [
+ {
+ "__id__": 869
+ },
+ {
+ "__id__": 871
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -194.7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1138d3fiYxO4YWPkCMiSwNd",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sprHu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 868
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 122
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -11.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "038de1suN5PoafIqG9xYPnF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 870
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 869
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc8aaac9-73a5-48aa-b04c-6679debab83f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sprZimo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 868
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 184,
+ "height": 126
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -11.3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8907eo8nypG24qBID9aaboh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 872
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 871
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ecb830a8-95c6-4528-bb97-771d7cd13dc4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "opt",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 874
+ },
+ {
+ "__id__": 876
+ },
+ {
+ "__id__": 878
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -115
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f73ecZuFWlLhKyFuN7FW+pW",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 873
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 101
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 29,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "91c00KrpmNHJbb2C9tZl5lP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 875
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 874
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85a8cdbb-b77e-4d81-b843-9852c08c0215"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 873
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "85af98GZ/VH6aKslH+szzVf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 877
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 876
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "op",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 873
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 110,
+ "height": 122
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 86,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e1fa4jG+XxNPLOs23YQuO/K",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 879
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 878
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc8aaac9-73a5-48aa-b04c-6679debab83f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 881
+ },
+ {
+ "__id__": 883
+ },
+ {
+ "__id__": 887
+ },
+ {
+ "__id__": 894
+ },
+ {
+ "__id__": 896
+ },
+ {
+ "__id__": 898
+ },
+ {
+ "__id__": 905
+ },
+ {
+ "__id__": 907
+ },
+ {
+ "__id__": 909
+ },
+ {
+ "__id__": 911
+ },
+ {
+ "__id__": 916
+ },
+ {
+ "__id__": 919
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -499,
+ "y": -84
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f381cws76lIm7IAgt6rLir6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 924
+ },
+ {
+ "__id__": 925
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 96,
+ "height": 97
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "95df0tYkpxENLxQ6Ls17yhv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 882
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 881
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ccdf6CR4HFGHrRfJY3avl0B",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 884
+ },
+ {
+ "__id__": 885
+ },
+ {
+ "__id__": 886
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 883
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 883
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 883
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 883
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBubble",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 40
+ },
+ "_children": [
+ {
+ "__id__": 888
+ },
+ {
+ "__id__": 891
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 46,
+ "y": -105
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0975bPHqBBIOK8PSyIa2DQg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 893
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatbg_ld",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 887
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 76
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 200,
+ "y": -11
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d4050l9Yq9NgKiQpbd5QpvL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 889
+ },
+ {
+ "__id__": 890
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 888
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "db2e469d-64f7-4fb2-b62d-bf54447a517e"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 888
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": -15,
+ "_right": -15,
+ "_top": -27.000000000000004,
+ "_bottom": -9,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 350,
+ "_originalHeight": 66
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 139,
+ "g": 71,
+ "b": 21,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 887
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0ec557FW0RB+ZfDSiAv5ail",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 892
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 891
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好了了了",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 887
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得太好了了了",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "offline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 63,
+ "height": 41
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -16.1,
+ "y": 29.1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2d9e8oC/NVGd4PWFCAMepVo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 895
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 894
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a230e2f8-3203-4f06-8299-6a187f59b5eb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 37
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -45,
+ "y": 45
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a9cd5O0npdLwo4x15GFxl3X",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 897
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 896
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a7b08c37-ea5d-4c04-85ae-ec901991e574"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "que",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 25,
+ "height": 25
+ },
+ "_children": [
+ {
+ "__id__": 899
+ },
+ {
+ "__id__": 901
+ },
+ {
+ "__id__": 903
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 32.6,
+ "y": 35
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "968c2AKTABLA4SmCg/O+2yJ",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 898
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b9ea6WD+WNO6KqBda/5JZvk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 900
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 899
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5814d418-f75c-49fa-b3ff-910c85c9c9ba"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 898
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ea8afEiDCRBo5T88hM/KLIz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 902
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 901
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "70e14a7e-9eac-46a0-9aab-6e6584e120ab"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 898
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 38,
+ "height": 38
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bc282KIhTVOwJLsYmffUdbD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 904
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 903
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d0c01627-4d4d-4e0f-a8cf-872b3965b082"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name_bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2df47fOj9FLh7zcqZIO0rsM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 906
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 905
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "09e3083b-13a3-44f1-b9eb-b468cdff6aeb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -63
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d5d0aC8Z+tBGL4qTlxFRRGZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 908
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 907
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 230,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66.74,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -95
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "24a52BFyEZOJYSr7sNosiPE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 910
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 909
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xuanpai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 912
+ },
+ {
+ "__id__": 914
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 11,
+ "y": -93
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "86781BFYl5OvaSJpj6R6sd3",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xd",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 911
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 112,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5d465feqSVN6L5J66TCuoEc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 913
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 912
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c6317a07-e5db-4930-a7d5-bd6fe7ef7b5e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "xz",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 911
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 114,
+ "height": 35
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "197ce08ALRMYY55WPCWz6H1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 915
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 914
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a87ec412-9067-4265-a7f4-a8054f7a1c46"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 36
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 24,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "78c8bpQEf5OpbdbCcBZC0lp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 917
+ },
+ {
+ "__id__": 918
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 916
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 916
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "f6874ded-313f-4ce5-a3d4-08925be31265"
+ },
+ {
+ "__uuid__": "0c5946b9-cb83-41b9-af8e-1e882e5c6ca6"
+ },
+ {
+ "__uuid__": "2f267281-0313-4ab5-bb20-2c8c084b9db7"
+ },
+ {
+ "__uuid__": "78b9174d-35ce-4e92-af35-e003f3348d34"
+ },
+ {
+ "__uuid__": "1713f177-ed64-4b6e-8535-a5cea8101f5a"
+ },
+ {
+ "__uuid__": "08ca58e0-b0e7-4cbc-bddc-0e5a54bd8c48"
+ },
+ {
+ "__uuid__": "4acfc9b0-d737-42b1-ade6-8254cbe914d3"
+ },
+ {
+ "__uuid__": "0d1d8c59-b160-4c74-8a8f-9d77877502fa"
+ },
+ {
+ "__uuid__": "10c6b231-c25e-4eab-808c-f107e0e66dff"
+ },
+ {
+ "__uuid__": "7503bd7f-78f1-4c8b-b68b-202bcf26cc40"
+ },
+ {
+ "__uuid__": "336a1d18-1647-4f4d-a297-0f54688e1cfe"
+ },
+ {
+ "__uuid__": "dd06aa46-aac2-48a9-8d16-44de1a1fd36d"
+ },
+ {
+ "__uuid__": "b0a14769-d96d-4be0-b02e-fbddca936daa"
+ },
+ {
+ "__uuid__": "4369d0a6-ab05-48f7-b182-f4da05b42051"
+ },
+ {
+ "__uuid__": "145e2c4b-09c7-4e03-85cc-3a9e0ca4207d"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voicemsg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 880
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 920
+ },
+ {
+ "__id__": 922
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 43.2,
+ "y": -37.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "68a37U6GylCvLYgkkQJYS/s",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yyDialog",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 919
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 113,
+ "height": 58
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a53c0njUbpA/7CFOFBfCj9Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 921
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 920
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c190547d-93bf-45fa-8e7f-43847fc0ad26"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "adj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 919
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 36,
+ "height": 50
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": -0.8,
+ "_scaleY": -0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 36,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "14f54P4o+hOlZtAdd8Z636M",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 923
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 922
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58ac7267-1489-431b-b1b4-b27995c63e8a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 880
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 880
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": 141,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "play_efx",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 714
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -109
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "be48a96Cj1Ooa3ZtzUiZguY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 927
+ },
+ {
+ "__id__": 928
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 926
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": false,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 926
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "a812d421-cef6-49b1-88ec-f64a8d3fda71"
+ },
+ {
+ "__uuid__": "0470db5f-e2e7-4a23-985e-087e2faf1e35"
+ },
+ {
+ "__uuid__": "3172929a-6752-4840-b747-9ab45c973a88"
+ },
+ {
+ "__uuid__": "ee5ff482-e2c9-47e9-972a-ee4e4f8f2adb"
+ },
+ {
+ "__uuid__": "ea90eb71-da66-44b9-b343-b577cdb7d53f"
+ },
+ {
+ "__uuid__": "e4237ef8-fd32-4874-9ab0-6f94b5393b8b"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 714
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ops",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 931
+ },
+ {
+ "__id__": 935
+ },
+ {
+ "__id__": 952
+ },
+ {
+ "__id__": 969
+ },
+ {
+ "__id__": 986
+ },
+ {
+ "__id__": 1003
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -156,
+ "y": -128
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "40cb9MWaixKxo+LfvjCdmIn",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 128,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 930
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1379,
+ "height": 780
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 116,
+ "y": 140
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2d8e3HpDQlPx6dOcCo41jgR",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 932
+ },
+ {
+ "__id__": 933
+ },
+ {
+ "__id__": 934
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 931
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 931
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1379,
+ "height": 780
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 931
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 931
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "op",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 930
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 936
+ },
+ {
+ "__id__": 938
+ },
+ {
+ "__id__": 940
+ },
+ {
+ "__id__": 944
+ },
+ {
+ "__id__": 948
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 490,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e0e59OfJYtAyItVIDyOA1En",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 935
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 101
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -116,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "88b635e6EhA0JXtEfx6uPFy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 937
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 936
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85a8cdbb-b77e-4d81-b843-9852c08c0215"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "opTarget",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 935
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.2,
+ "_scaleY": 1.2,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -116,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "13f77Iqtz5ImqaaLn5H2N60",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 939
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 938
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnPeng",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 935
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 134
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "16807zqB31LMK1vE5cxW/8u",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 941
+ },
+ {
+ "__id__": 942
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 940
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "234dedb0-678d-4893-9486-2e471a0f0a17"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 940
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 943
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 940
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnGang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 935
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ca33aEg1htIeJu767D9MrZj",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 945
+ },
+ {
+ "__id__": 946
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 944
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3479e792-95f8-4d4d-b196-2f8c6a125cd4"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 944
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 947
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 944
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnHu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 935
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 126,
+ "height": 128
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e5e34Okt3VKZ7rHpGxv7evX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 949
+ },
+ {
+ "__id__": 950
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 948
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7a731f97-f192-4f9b-ba2f-a5f7e6fa9b7a"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 948
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 951
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 948
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "op",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 930
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 953
+ },
+ {
+ "__id__": 955
+ },
+ {
+ "__id__": 957
+ },
+ {
+ "__id__": 961
+ },
+ {
+ "__id__": 965
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 291,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f8b80qyMCdD6oF8ieNWDdKL",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 952
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 101
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -116,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c2078vtOh9K0o1DAXfve3ap",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 954
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 953
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85a8cdbb-b77e-4d81-b843-9852c08c0215"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "opTarget",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 952
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.2,
+ "_scaleY": 1.2,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -116,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ffbd1IY7lRGV4owLXFu0p49",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 956
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 955
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnPeng",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 952
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 134
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ef3bcJHhY1KsI7xGZ8X2n/I",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 958
+ },
+ {
+ "__id__": 959
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 957
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "234dedb0-678d-4893-9486-2e471a0f0a17"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 957
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 960
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 957
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnGang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 952
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "87fe2gYrrtOOIAIZ3bQKtz8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 962
+ },
+ {
+ "__id__": 963
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 961
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3479e792-95f8-4d4d-b196-2f8c6a125cd4"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 961
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 964
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 961
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnHu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 952
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 126,
+ "height": 128
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c96d6fmr2pCRLW4SD4xqdRt",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 966
+ },
+ {
+ "__id__": 967
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 965
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7a731f97-f192-4f9b-ba2f-a5f7e6fa9b7a"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 965
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 968
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 965
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "op",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 930
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 970
+ },
+ {
+ "__id__": 972
+ },
+ {
+ "__id__": 974
+ },
+ {
+ "__id__": 978
+ },
+ {
+ "__id__": 982
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d73caipQ1dInZo2QtZZtMl5",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 969
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 101
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -116,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2999bnVAkBD9JUydAuji9AA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 971
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 970
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85a8cdbb-b77e-4d81-b843-9852c08c0215"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "opTarget",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 969
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.2,
+ "_scaleY": 1.2,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -116,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f0463QLa2NLvrEpa/q3/q4t",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 973
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 972
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnPeng",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 969
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 134
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "029b23Gq+hMX7Bf/JIG6Lak",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 975
+ },
+ {
+ "__id__": 976
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 974
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "234dedb0-678d-4893-9486-2e471a0f0a17"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 974
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 977
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 974
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnGang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 969
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f40cc2HA3lE9LuKwY8Z9qiW",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 979
+ },
+ {
+ "__id__": 980
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 978
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3479e792-95f8-4d4d-b196-2f8c6a125cd4"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 978
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 981
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 978
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnHu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 969
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 126,
+ "height": 128
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c61813tTytELbxA4bbkNUH2",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 983
+ },
+ {
+ "__id__": 984
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 982
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7a731f97-f192-4f9b-ba2f-a5f7e6fa9b7a"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 982
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 985
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 982
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "op",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 930
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 987
+ },
+ {
+ "__id__": 989
+ },
+ {
+ "__id__": 991
+ },
+ {
+ "__id__": 995
+ },
+ {
+ "__id__": 999
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -142,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0350aQL3EFIAJ2RsDRzQAIR",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai_bottom",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 986
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 230,
+ "height": 101
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -116,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ec119GrEuhGrYHjnC9brh/k",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 988
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 987
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "85a8cdbb-b77e-4d81-b843-9852c08c0215"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "opTarget",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 986
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1.2,
+ "_scaleY": 1.2,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -116,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "990c7JJEKFFfr74XsIMkYHp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 990
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 989
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnPeng",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 986
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 134
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1fa43A2OupE0o5pOiL6yMqu",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 992
+ },
+ {
+ "__id__": 993
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 991
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "234dedb0-678d-4893-9486-2e471a0f0a17"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 991
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 994
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 991
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnGang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 986
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ec34eTzp49NPLTegjIKsH9Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 996
+ },
+ {
+ "__id__": 997
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 995
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3479e792-95f8-4d4d-b196-2f8c6a125cd4"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 995
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 998
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 995
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnHu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 986
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 126,
+ "height": 128
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -4,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f4ee2YXKXZAh71fJO4etAL0",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1000
+ },
+ {
+ "__id__": 1001
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 999
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7a731f97-f192-4f9b-ba2f-a5f7e6fa9b7a"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 999
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1002
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 999
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnGuo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 930
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 126
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 621,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7b974qjv49MNq5u5TQuBIAX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1004
+ },
+ {
+ "__id__": 1005
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1003
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "28cd14db-6ba3-458d-bcb3-ea53a7adddc3"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1003
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1006
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1003
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJGame",
+ "handler": "onOptionClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dingque",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1008
+ },
+ {
+ "__id__": 1011
+ },
+ {
+ "__id__": 1016
+ },
+ {
+ "__id__": 1021
+ },
+ {
+ "__id__": 1026
+ },
+ {
+ "__id__": 1028
+ },
+ {
+ "__id__": 1030
+ },
+ {
+ "__id__": 1032
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "48a151n5NxFrKMYR/Iq4b7+",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_opacity": 128,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1007
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e1cfenlbJxP8Kxe/pzy7BI6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1009
+ },
+ {
+ "__id__": 1010
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1008
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1008
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1007
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77,
+ "height": 79
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -110,
+ "y": -163
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "116307ENqFIjqQAWpOlvu00",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1012
+ },
+ {
+ "__id__": 1013
+ },
+ {
+ "__id__": 1015
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1011
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3776c26b-553b-419d-b952-a2e0db712436"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1011
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 1014
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "a1aca5ef-b367-4b65-ab8e-e567e039e9c3"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 1011
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "DingQue",
+ "handler": "onQueYiMenClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1011
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "a0a634b2-48b2-4a89-a985-ab8b4c00e172"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1007
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77,
+ "height": 79
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -163
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dd1f0oZvZFEcpU1oKzhBtTo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1017
+ },
+ {
+ "__id__": 1018
+ },
+ {
+ "__id__": 1020
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1016
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b336e47e-89fc-40d9-9048-d4bfa232739c"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1016
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 1019
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "bb5e640f-7f9f-48c5-8695-deb1e57f0a91"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 1016
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "DingQue",
+ "handler": "onQueYiMenClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1016
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "a0a634b2-48b2-4a89-a985-ab8b4c00e172"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1007
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77,
+ "height": 79
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": -163
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "91af1bB/y1AlZLsGm0ocSCp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1022
+ },
+ {
+ "__id__": 1023
+ },
+ {
+ "__id__": 1025
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1021
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1f337ec9-dafc-41c7-9f98-213d943efcb9"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "8aa59a77-ca7f-41f2-8ff5-0978bd1fe4e8"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1021
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [
+ {
+ "__id__": 1024
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "b0ba2ebe-a39f-473f-8de1-4b49c8690940"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 1021
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "DingQue",
+ "handler": "onQueYiMenClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1021
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "a0a634b2-48b2-4a89-a985-ab8b4c00e172"
+ }
+ ],
+ "playOnLoad": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tong_selected",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1007
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 100
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -108,
+ "y": -165
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6eee5nvzXlB77zkLAash37u",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1027
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1026
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "43554c84-ff61-4bb6-aa29-ed8bbc83b320"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tiao_selected",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1007
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 100
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -165
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "34380yuv8VMkYcw2rp/TLft",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1029
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1028
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "43554c84-ff61-4bb6-aa29-ed8bbc83b320"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wan_selected",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1007
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 100
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 111,
+ "y": -165
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bcec930E39CNbH8LBb7Rb7F",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1031
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1030
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "43554c84-ff61-4bb6-aa29-ed8bbc83b320"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tips",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1007
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1033
+ },
+ {
+ "__id__": 1036
+ },
+ {
+ "__id__": 1039
+ },
+ {
+ "__id__": 1042
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fdca1lBo8hML6LK4mNn76gp",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tip",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1032
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 272,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -67
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7cda6aLZgdCQa18/Tpm918m",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1034
+ },
+ {
+ "__id__": 1035
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1033
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "请选择你要缺的花色",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1033
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 134,
+ "g": 134,
+ "b": 134,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tip",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 225,
+ "b": 225,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1032
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 100,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ef69emEMZBN2bmMDcCU0/DB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1037
+ },
+ {
+ "__id__": 1038
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1036
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "已定缺",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1036
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 156,
+ "g": 145,
+ "b": 46,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tip",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 225,
+ "b": 225,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1032
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 71
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "786efJU/eRKHLmHeXgQAxxB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1040
+ },
+ {
+ "__id__": 1041
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1039
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "已定缺",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1039
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 156,
+ "g": 145,
+ "b": 46,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tip",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 225,
+ "b": 225,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1032
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -100,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "91234nPEutMaYgFB5VyDP/7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1043
+ },
+ {
+ "__id__": 1044
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1042
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "已定缺",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1042
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 156,
+ "g": 145,
+ "b": 46,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chupaidrag",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 59,
+ "y": 422
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "64fa3g4FuJCWZmgNO7VfXl7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1046
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1045
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 166
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "replay",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1049
+ },
+ {
+ "__id__": 1051
+ },
+ {
+ "__id__": 1055
+ },
+ {
+ "__id__": 1059
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -72
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8a027u4gexFYIer842T6uto",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "paomadengbeijing",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1048
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "84784jYXcZMHK5lsGiBlwCB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1050
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1049
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "56be11b4-9c6a-4350-b4ab-d660a127e72e"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_pause",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1048
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 42,
+ "height": 54
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -150,
+ "y": -123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "90bca3VhKlLfq+uK+530fP5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1052
+ },
+ {
+ "__id__": 1053
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1051
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "4b48cbcd-ecdf-418a-83d1-a109e527bcf1"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "24697d0f-0baa-431b-82e8-d74c1124a91c"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1051
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1054
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1051
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "ReplayCtrl",
+ "handler": "onBtnPauseClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_play",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1048
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 53
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "319baZgdUNPl5gKBgEBASoB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1056
+ },
+ {
+ "__id__": 1057
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1055
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "926fad4d-58f9-4703-9298-300293e852cc"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "24697d0f-0baa-431b-82e8-d74c1124a91c"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1055
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1058
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1055
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "ReplayCtrl",
+ "handler": "onBtnPlayClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_back",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1048
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 54,
+ "height": 54
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": -123
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "92cf62+v65Lj7lrnizm5r19",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1060
+ },
+ {
+ "__id__": 1061
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1059
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5a4b139c-cf52-4e01-b03c-eea87102060a"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "24697d0f-0baa-431b-82e8-d74c1124a91c"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1059
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1062
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1059
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "ReplayCtrl",
+ "handler": "onBtnBackClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "msg_set_bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 175,
+ "height": 73
+ },
+ "_children": [],
+ "_rotationX": 90,
+ "_rotationY": 90,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 576,
+ "y": 221
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f172bkLhCJBJYBE3pGXlT86",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1064
+ },
+ {
+ "__id__": 1065
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1063
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5e5d01f9-5a85-4abc-9330-a89e7f44dbbb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1063
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": -23.5,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_chat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 57,
+ "height": 51
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 582,
+ "y": 180
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3f3fat+NTdKZKxQCkR5okGO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1067
+ },
+ {
+ "__id__": 1068
+ },
+ {
+ "__id__": 1070
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1066
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "56958185-085b-40b3-8c94-6e58181b7ca5"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1066
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1069
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "56958185-085b-40b3-8c94-6e58181b7ca5"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1066
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onBtnChatClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1066
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 29.5,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_settings",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 54,
+ "height": 55
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 582,
+ "y": 253
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "be8d8JGibdDsaupfZqLPkHd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1072
+ },
+ {
+ "__id__": 1073
+ },
+ {
+ "__id__": 1075
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1071
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ddc89083-5194-4822-a109-4a65e07411d2"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1071
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1074
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1071
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "MJRoom",
+ "handler": "onBtnSettingsClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1071
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 31,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_voice",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 87,
+ "height": 88
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 556,
+ "y": -96
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e3861FEr/VEuIEbRgEw5N6H",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1077
+ },
+ {
+ "__id__": 1078
+ },
+ {
+ "__id__": 1079
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1076
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ff360503-52f4-4bcb-9760-21032e85ef6f"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1076
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "676a445d-bb91-4c54-aa79-f748cd862233"
+ },
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "ff360503-52f4-4bcb-9760-21032e85ef6f"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1076
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1076
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 40.5,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "infobar",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1081
+ },
+ {
+ "__id__": 1083
+ },
+ {
+ "__id__": 1086
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 313
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f6a48Z+WgZLoKG9fqxG+xB7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1091
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wanfa",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1080
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 416.69,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 16
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f8374z9KjFNRI7+r6qULRQu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1082
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1081
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "4番封顶 碰碰胡 将对 自摸加番 换三张",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "time",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1080
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 62.56,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -616,
+ "y": 12
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d57c4W7YiZOyanthbd5iSc3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1084
+ },
+ {
+ "__id__": 1085
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1083
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "21:40",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1083
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 8,
+ "_left": 24,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_room_txt",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 184,
+ "b": 118,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1080
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 25
+ },
+ "_children": [
+ {
+ "__id__": 1087
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -545.3,
+ "y": 13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8add9Yv321NUZbuS/wCZX62",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1089
+ },
+ {
+ "__id__": 1090
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 184,
+ "b": 118,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1086
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 83.42,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 77.1,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "530090FJxREKaasaeajS11U",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1088
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1087
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "123456",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1086
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "房间号",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1086
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 8,
+ "_left": 94.70000000000005,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1080
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "status",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1093
+ },
+ {
+ "__id__": 1095
+ },
+ {
+ "__id__": 1097
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 594,
+ "y": 324
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "315d0kwfxFKfY0Uey+eaF7e",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1099
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "delay",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1092
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 61.13,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -34,
+ "y": 3
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4a15e87WSdProFirn1c6foj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1094
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1093
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "57ms",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "power",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1092
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 44,
+ "height": 20
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -26,
+ "y": 1.6
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "122cbf7l9RK84P4ywEpNCfU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1096
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1095
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d705dbcc-23e3-4069-98da-552ba69bea94"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_power",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1092
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 56,
+ "height": 29
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -2,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b176ad+OEFOfpf/+HdUpDyM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1098
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1097
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "06d4bb9e-6c43-4338-896b-376455357acb"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1092
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 32,
+ "_left": 0,
+ "_right": 46,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 1101
+ },
+ {
+ "__id__": 1105
+ },
+ {
+ "__id__": 1107
+ },
+ {
+ "__id__": 1109
+ },
+ {
+ "__id__": 1111
+ },
+ {
+ "__id__": 1115
+ },
+ {
+ "__id__": 1123
+ },
+ {
+ "__id__": 1131
+ },
+ {
+ "__id__": 1218
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "008164+YfpAvZBR+mA7Nj5b",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_opacity": 128,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a888bP51t9Ipa8S3Q/OFEcU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1102
+ },
+ {
+ "__id__": 1103
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1101
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1101
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1104
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1101
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onBgClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 840,
+ "height": 522
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "82f834ROSdP05Th1u7KG6Pj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1106
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1105
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bce1c001-43f5-4e94-b2ca-8460d5a1960c"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chat_emojibg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 798,
+ "height": 343
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -56
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f60ecGQMq5MNZtdYFX+Zy5b",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1108
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1107
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8ae39b2a-9963-42f5-8988-e5152803f870"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "iptChat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 660,
+ "height": 60
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -71,
+ "y": 207
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ecdc4WPTRVK6q+JT8WvsuZk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1110
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.EditBox",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1109
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_string": "",
+ "_tabIndex": 0,
+ "editingDidBegan": [],
+ "textChanged": [],
+ "editingDidEnded": [],
+ "editingReturn": [],
+ "_N$backgroundImage": {
+ "__uuid__": "3d29250c-190a-49f1-9ca5-21b78b2f378a"
+ },
+ "_N$returnType": 0,
+ "_N$inputFlag": 3,
+ "_N$inputMode": 6,
+ "_N$fontSize": 30,
+ "_N$lineHeight": 40,
+ "_N$fontColor": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_N$placeholder": " 请输入文字",
+ "_N$placeholderFontSize": 20,
+ "_N$placeholderFontColor": {
+ "__type__": "cc.Color",
+ "r": 127.5,
+ "g": 127.5,
+ "b": 127.5,
+ "a": 255
+ },
+ "_N$maxLength": 16,
+ "_N$stayOnTop": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnSend",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 100,
+ "height": 51
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 349,
+ "y": 208
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "afdd0fb+0NNC6tdv8Y5XfrF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1112
+ },
+ {
+ "__id__": 1113
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1111
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1a69f4e8-766e-4685-bb19-a37cd1138f67"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1111
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": {
+ "__uuid__": "a42cfa3a-43b6-49f1-be9b-8839596e9976"
+ },
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1114
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "1a69f4e8-766e-4685-bb19-a37cd1138f67"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1111
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onBtnSendChatClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tabQuick",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 399,
+ "height": 55
+ },
+ "_children": [
+ {
+ "__id__": 1116
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -200,
+ "y": 132
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6dd48M5+d1BKZgp3mpqDBv/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1118
+ },
+ {
+ "__id__": 1119
+ },
+ {
+ "__id__": 1120
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1115
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ffd24VxWB5EwYTp2yMu/98g",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1117
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1116
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "常用语",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1115
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9ea541bf-5c7d-4910-8330-31e7f474c8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1115
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 1115
+ },
+ "sprite": {
+ "__uuid__": "9ea541bf-5c7d-4910-8330-31e7f474c8b0"
+ },
+ "checkedSprite": {
+ "__uuid__": "d0d50645-30a9-4207-9f58-ae6e0d360649"
+ },
+ "checked": true,
+ "groupId": 1001
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1115
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1121
+ },
+ {
+ "__id__": 1122
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1115
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1115
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onTabClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tabEmoji",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 399,
+ "height": 55
+ },
+ "_children": [
+ {
+ "__id__": 1124
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 200,
+ "y": 132
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cac880/rOFFuKsEslYTYKKT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1126
+ },
+ {
+ "__id__": 1127
+ },
+ {
+ "__id__": 1128
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1123
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "68867D0OVVN9YXt3hbD3ivP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1125
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1124
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "表情",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1123
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9ea541bf-5c7d-4910-8330-31e7f474c8b0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "8d571y2U+9AiKntO+TSf0Fb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1123
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 1123
+ },
+ "sprite": {
+ "__uuid__": "9ea541bf-5c7d-4910-8330-31e7f474c8b0"
+ },
+ "checkedSprite": {
+ "__uuid__": "d0d50645-30a9-4207-9f58-ae6e0d360649"
+ },
+ "checked": false,
+ "groupId": 1001
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1123
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1129
+ },
+ {
+ "__id__": 1130
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1123
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1123
+ },
+ "component": "RadioButton",
+ "handler": "onClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onTabClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "quickchatlist",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 184,
+ "g": 184,
+ "b": 184,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 335
+ },
+ "_children": [
+ {
+ "__id__": 1132
+ },
+ {
+ "__id__": 1210
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -1,
+ "y": -60
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "69b8fmYmnVEPa24wLGE8zZE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1217
+ },
+ {
+ "__id__": 1214
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "view",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1131
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 335
+ },
+ "_children": [
+ {
+ "__id__": 1133
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3d5b2l3nMlNY5UnQkGwpUqz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1208
+ },
+ {
+ "__id__": 1209
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "content",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1132
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 560
+ },
+ "_children": [
+ {
+ "__id__": 1134
+ },
+ {
+ "__id__": 1142
+ },
+ {
+ "__id__": 1150
+ },
+ {
+ "__id__": 1158
+ },
+ {
+ "__id__": 1166
+ },
+ {
+ "__id__": 1174
+ },
+ {
+ "__id__": 1182
+ },
+ {
+ "__id__": 1190
+ },
+ {
+ "__id__": 1198
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 152
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d802aCSnadJJrGIUZROFKL9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1206
+ },
+ {
+ "__id__": 1207
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item0",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1135
+ },
+ {
+ "__id__": 1137
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -30.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "20463Rk8MRIur2oMRv/svG7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1140
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1134
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 450,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "16ed29Z4WRFB5PTH6SmIaf7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1136
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1135
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "快点啊,都等到我花儿都谢谢了!",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1134
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2490fvCExJCpKglQPkYpvih",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1138
+ },
+ {
+ "__id__": 1139
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1137
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1137
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1134
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1141
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1134
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1143
+ },
+ {
+ "__id__": 1145
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -91.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "615633Cop1D4rpvkxxg9+WD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1148
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1142
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 480,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "91870V0/RlCUZpo0nvFYtn+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1144
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1143
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "怎么又断线了,网络怎么这么差啊!",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1142
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1607emBfpJBcJxPTHpykB/w",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1146
+ },
+ {
+ "__id__": 1147
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1145
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1145
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1142
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1149
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1142
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1151
+ },
+ {
+ "__id__": 1153
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -152.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "10ff57ZQ7lIMYnZnDoNF4Ce",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1156
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1150
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0a8b8oWPUNEMLQOpJXS0WN1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1152
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1151
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "不要走,决战到天亮!",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1150
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4fe5cfCSJBKa5guOTn2Lg/1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1154
+ },
+ {
+ "__id__": 1155
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1153
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1153
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1150
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1157
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1150
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1159
+ },
+ {
+ "__id__": 1161
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -213.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6af34HcCnpD77ZP7yy7LmMb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1164
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1158
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4d04cAC8sVCmbES3CYvBAWf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1160
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1159
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你的牌打得也太好了!",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1158
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "22984jvu01D2r8fpSRffITD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1162
+ },
+ {
+ "__id__": 1163
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1161
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1161
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1158
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1165
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1158
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1167
+ },
+ {
+ "__id__": 1169
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -274.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0bf406yCJpKr5nxfz+VD8r5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1172
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "68901tW+OxAFIT91fol4Vis",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1168
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1167
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "你是妹妹还是哥哥啊?",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1166
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "89768eLuCdCmaC14fqC3yBC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1170
+ },
+ {
+ "__id__": 1171
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1169
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1169
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1166
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1173
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1166
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1175
+ },
+ {
+ "__id__": 1177
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -335.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "272b40CtZxAUpYcSYWI/8dW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1180
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1174
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 330,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a9851hBgBNF/Z9467YArESI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1176
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1175
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "和你合作真是太愉快了!",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1174
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e8817Jj4ilMoYthzdTPkJBt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1178
+ },
+ {
+ "__id__": 1179
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1177
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1177
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1174
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1181
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1174
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1183
+ },
+ {
+ "__id__": 1185
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -396.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4e20fjyrwRKHpSxA0mpfl10",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1188
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1182
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 360,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "848a538AghMqYmSPio2u2e/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1184
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1183
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "大家好,很高兴见到各位!",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1182
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "383c4hh1iJGGKJGjd5DlRBK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1186
+ },
+ {
+ "__id__": 1187
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1185
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1185
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1182
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1189
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1182
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1191
+ },
+ {
+ "__id__": 1193
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -457.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5fd438OuxtNOq6/LBYFQYXT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1196
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1190
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 540,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f822bAh0yhKgJtocYZF5N7p",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1192
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1191
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "各位,真是不好意思,我得离开一会儿。",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1190
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "edeef+iXB5FvaKDUJmIxK1d",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1194
+ },
+ {
+ "__id__": 1195
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1193
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1193
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1190
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1197
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1190
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "item8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1133
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 61
+ },
+ "_children": [
+ {
+ "__id__": 1199
+ },
+ {
+ "__id__": 1201
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -518.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e42d9qEEhVLJbFrP6MmqWOx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1204
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 73,
+ "b": 47,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1198
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 360,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -364,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e5ad0+TAM5NdJHB5lR20gJE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1200
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1199
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "不要吵了,专心玩游戏吧!",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "playerinfoline",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1198
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 3
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -22
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "26f31Xwj3hK06TsplCXycVW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1202
+ },
+ {
+ "__id__": 1203
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1201
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "feeb6b81-8498-4125-94ce-1528510279c3"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1201
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1133,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1198
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1205
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1198
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onQuickChatItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1133
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 560
+ },
+ "_resize": 0,
+ "_N$layoutType": 2,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1133
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 40,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 721,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1132
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 3
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1132
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 717,
+ "_originalHeight": 402
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "scrollBar",
+ "_objFlags": 0,
+ "_opacity": 0,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 238,
+ "g": 217,
+ "b": 227,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1131
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 12,
+ "height": 335
+ },
+ "_children": [
+ {
+ "__id__": 1211
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 396.5,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2b7f6JmauVBDJvUDhzzuj36",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1213
+ },
+ {
+ "__id__": 1215
+ },
+ {
+ "__id__": 1216
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bar",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 236,
+ "g": 241,
+ "b": 245,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1210
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 10,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -1,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9b0b9KGq7NBkItw+a1cT73P",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1212
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1211
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5c3bb932-6c3c-468f-88a9-c8c61d458641"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Scrollbar",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1210
+ },
+ "_enabled": true,
+ "_scrollView": {
+ "__id__": 1214
+ },
+ "_touching": false,
+ "_opacity": 255,
+ "enableAutoHide": true,
+ "autoHideTime": 1,
+ "_N$handle": {
+ "__id__": 1212
+ },
+ "_N$direction": 1
+ },
+ {
+ "__type__": "cc.ScrollView",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1131
+ },
+ "_enabled": true,
+ "content": {
+ "__id__": 1133
+ },
+ "horizontal": false,
+ "vertical": true,
+ "inertia": true,
+ "brake": 0.75,
+ "elastic": true,
+ "bounceDuration": 0.23,
+ "scrollEvents": [],
+ "cancelInnerEvents": true,
+ "_N$horizontalScrollBar": null,
+ "_N$verticalScrollBar": {
+ "__id__": 1213
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1210
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 37,
+ "_left": 350.07654921020657,
+ "_right": -0.5,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 237
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1210
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5fe5dcaa-b513-4dc5-a166-573627b3a159"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1131
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "emojis",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 335
+ },
+ "_children": [
+ {
+ "__id__": 1219
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -1,
+ "y": -60
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "61dd6XxTDBKLpbZl8w3fz2q",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1218
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 792,
+ "height": 335
+ },
+ "_children": [
+ {
+ "__id__": 1220
+ },
+ {
+ "__id__": 1224
+ },
+ {
+ "__id__": 1228
+ },
+ {
+ "__id__": 1232
+ },
+ {
+ "__id__": 1236
+ },
+ {
+ "__id__": 1240
+ },
+ {
+ "__id__": 1244
+ },
+ {
+ "__id__": 1248
+ },
+ {
+ "__id__": 1252
+ },
+ {
+ "__id__": 1256
+ },
+ {
+ "__id__": 1260
+ },
+ {
+ "__id__": 1264
+ },
+ {
+ "__id__": 1268
+ },
+ {
+ "__id__": 1272
+ },
+ {
+ "__id__": 1276
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e9aac1bZJ5IZL/TPWPXnphJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1280
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "happy",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 111,
+ "height": 121
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -335.5,
+ "y": 112
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "59679TK4sBBNaiXyvJwij+v",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1221
+ },
+ {
+ "__id__": 1222
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1220
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "092833c8-627a-4f92-9774-83e743083685"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1220
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1223
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "angry",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.52
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 112,
+ "height": 116
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -214,
+ "y": 112.18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e701akyLpBMBoDRLsViw4N9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1225
+ },
+ {
+ "__id__": 1226
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1224
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8fe224e5-640d-4a87-99b6-fa1e261713bf"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1224
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1227
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "smile",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 122,
+ "height": 121
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -87,
+ "y": 112
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f8c59ZDgntCOoEUEBsF7oAZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1229
+ },
+ {
+ "__id__": 1230
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1228
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c0371335-9e49-4fb9-93c3-706e70fa6816"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1228
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1231
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "han",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.46
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 115,
+ "height": 129
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 41.5,
+ "y": 113.16
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "06f7b2VNt9G3J2VfpLXRyLr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1233
+ },
+ {
+ "__id__": 1234
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1232
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cc85a55a-6a5f-4376-a1e7-9def6d14f73b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1232
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1235
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhiya",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 112,
+ "height": 120
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 112.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6e4b5XdojlOBZx7hcz819oI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1237
+ },
+ {
+ "__id__": 1238
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1236
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48285984-e828-4033-8a54-dd4e5654f01e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1236
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1239
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "shihua",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 109,
+ "height": 116
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 285.5,
+ "y": 114.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "293064fPplA4YWbNh6dwaG0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1241
+ },
+ {
+ "__id__": 1242
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1240
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9c24b693-4be6-4fee-8fec-9614208b37fc"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1240
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1243
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jiong",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 147,
+ "height": 135
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -334.5,
+ "y": -4
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dde6dhih4tKDpkFhx/MnUlQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1245
+ },
+ {
+ "__id__": 1246
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1244
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3d241371-739e-4441-963c-b0159a01a19e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1244
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1247
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sleep",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.44
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 133,
+ "height": 137
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -203.5,
+ "y": 3.219999999999999
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c47aeamvgJDzZxeH1g9As3n",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1249
+ },
+ {
+ "__id__": 1250
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1248
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cff26fca-aca8-4f1d-9486-ddb04669788b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1248
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1251
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fennu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.42
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 108,
+ "height": 140
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -89,
+ "y": 4.699999999999989
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f14789FPrFKaq/hwtgwE9S2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1253
+ },
+ {
+ "__id__": 1254
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1252
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "74885e9d-0ba7-4c31-ad8a-2f5a2b4fc6e7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1252
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1255
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yun",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 128,
+ "height": 129
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 43,
+ "y": 7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "224ecECwdlA86ihTNrfT35w",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1257
+ },
+ {
+ "__id__": 1258
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1256
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "009b55b1-565e-483a-8a5c-f9195d4cfa76"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1256
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1259
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lihai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 152
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 172,
+ "y": -3.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6d96fJiumFHxrwUE5rVdoAO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1261
+ },
+ {
+ "__id__": 1262
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1260
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "de0c43c2-ba63-44a8-b2e8-ace6b0d571ab"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1260
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1263
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "touxiang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 116
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 294,
+ "y": -4
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e8c3biRYiJN/4tAydpkOG5g",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1265
+ },
+ {
+ "__id__": 1266
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1264
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "50500b39-b2bb-4c1e-838b-b7874b8370a1"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1264
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1267
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "se",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 89,
+ "height": 158
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -332.5,
+ "y": -118.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "46c47JHAbZJSbsTqBX5L3zC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1269
+ },
+ {
+ "__id__": 1270
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1268
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fb284fb4-227c-4d21-bc7c-510f804fa112"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1268
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1271
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "huaixiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 125,
+ "height": 124
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -215.5,
+ "y": -106.5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fe514wQ6kFKYYaU93SerC3z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1273
+ },
+ {
+ "__id__": 1274
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1272
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "59bbd743-7bfd-42bc-84d3-d0bb0898bea5"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1272
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1275
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "shaoxiang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1219
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 121,
+ "height": 127
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -87.5,
+ "y": -105
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bf80bnUx55AJ6ufybT7pb0Z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1277
+ },
+ {
+ "__id__": 1278
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1276
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "d3d93b91-5ef4-40df-9456-d6915b2098a5"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "c08937b5-d001-4d18-8270-cd3ec1f0d4c0"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1276
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1279
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "Chat",
+ "handler": "onEmojiItemClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1219
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 498,
+ "_originalHeight": 150
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "huansanzhang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200,
+ "height": 50
+ },
+ "_children": [
+ {
+ "__id__": 1282
+ },
+ {
+ "__id__": 1284
+ },
+ {
+ "__id__": 1287
+ },
+ {
+ "__id__": 1290
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -107
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4af07wRiG1MOLBXHVWjglKU",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fangkaxiaobeijing",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1281
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 751,
+ "height": 107
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -31
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e92edffGdtDoo00484qJWVu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1283
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1282
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42a50b85-90bb-4955-9d63-ede2418818fa"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1281
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 442,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -110,
+ "y": -33
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d91a8K1sFJHc7G2cJoBwojK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1285
+ },
+ {
+ "__id__": 1286
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1284
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "请选择三张一样花色的牌",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1284
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 232,
+ "b": 235,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1281
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 241,
+ "y": -31
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3a77fIPcMxObYNorobwZ4UP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1288
+ },
+ {
+ "__id__": 1289
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1287
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "718e98bd-522b-4ff0-b5cd-e955aa0d620b"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1287
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1287
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mask",
+ "_objFlags": 0,
+ "_opacity": 0,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1281
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 140
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -201
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b71b5xuESxHHqAoSdBtMpku",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1291
+ },
+ {
+ "__id__": 1292
+ },
+ {
+ "__id__": 1293
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1290
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1290
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 140
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1290
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1290
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "tip_notice",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200,
+ "height": 50
+ },
+ "_children": [
+ {
+ "__id__": 1295
+ },
+ {
+ "__id__": 1297
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 6
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a9cffyNIHpOMbiGZPR9X2Ft",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fangkaxiaobeijing",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1294
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 255,
+ "height": 64
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -10
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "32c3cxOVZ9CNYp8PMDzjUxX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1296
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1295
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42a50b85-90bb-4955-9d63-ede2418818fa"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1294
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -8
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5ca75UNUClHCY0KFG6aviJ3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1298
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1297
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "过胡",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voice",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1300
+ },
+ {
+ "__id__": 1302
+ },
+ {
+ "__id__": 1304
+ },
+ {
+ "__id__": 1319
+ },
+ {
+ "__id__": 1321
+ },
+ {
+ "__id__": 1332
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b74d4Si5AtMmo9MTqa5jus5",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yuyin_bg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1299
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 250,
+ "height": 250
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f32f4b3X5tKt4cqSTSRpq2w",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1301
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1300
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "faf9e5db-6959-4d2b-9a87-461a837d130f"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "recorder",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1299
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 84,
+ "height": 150
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -42,
+ "y": 4
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "35f4ba2OzdFNq8ROd+HhJgN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1303
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1302
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dce56925-2b5d-40fd-9023-28605ac3a8d9"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "volume",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1299
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1305
+ },
+ {
+ "__id__": 1307
+ },
+ {
+ "__id__": 1309
+ },
+ {
+ "__id__": 1311
+ },
+ {
+ "__id__": 1313
+ },
+ {
+ "__id__": 1315
+ },
+ {
+ "__id__": 1317
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 37,
+ "y": -70
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d263e2jh9BOTZS5sCUMOuBj",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "v1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1304
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 27,
+ "height": 13
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1aee5cSzyVLs4aPWFkZi4Iw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1306
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1305
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b1671f1a-3797-4611-a461-430f8836ecc4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "v2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1304
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 31,
+ "height": 35
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a9ac3Mta5hP850hpwGIMk64",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1308
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1307
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "06ab8343-75d9-41b2-9388-165764ded274"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "v3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1304
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 35,
+ "height": 57
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6323bhX6HBHgLckx9smlFxw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1310
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1309
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "69de2f4f-8180-46b7-8455-eb93ffb620f1"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "v4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1304
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 39,
+ "height": 79
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "772a5L3+7BIo52ZnwvxWgac",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1312
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1311
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "bb32a3d6-8237-4434-b9b2-286b9cc07dc1"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "v5",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1304
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 44,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c0322S4h/NCZbuf9hZSTIWo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1314
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1313
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "667a75f9-c138-42c3-b60b-0442b125545e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "v6",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1304
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 48,
+ "height": 125
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "865dctJ5bRIrZvRl3YAaS8P",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1316
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1315
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9d6427da-be3c-40e6-adf5-144216d8db41"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "v7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1304
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 52,
+ "height": 149
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7ecc3v2tqhF0LIeVvB5UCBV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1318
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1317
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "2397833d-46a0-4fff-b8ab-422b96e2c4df"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1299
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 206.95,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -103
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2d7e3q1jFRKyrJL4JDJKX5D",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1320
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1319
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "手指上滑 取消发送",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "voice_failed",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1299
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 1322
+ },
+ {
+ "__id__": 1324
+ },
+ {
+ "__id__": 1326
+ },
+ {
+ "__id__": 1328
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b8e4dBCg2lCHYdsEZHNnK/0",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1331
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1321
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3d58etN2mVLspN0AepelM+H",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1323
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1322
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 43,
+ "b": 43,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1321
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 91
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "335ffejjXZHJaHv/NZ66H4e",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1325
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1324
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "提示",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 43,
+ "b": 43,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1321
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 376.68,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 33
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fae43q5jDBFKb38kGlTLnT+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1327
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1326
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "语音时间小于1秒,不能发送",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1321
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -64
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b88a9lb4ctA0KH9y3HqYDwW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1329
+ },
+ {
+ "__id__": 1330
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1328
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "718e98bd-522b-4ff0-b5cd-e955aa0d620b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1328
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1328
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1321
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1321
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "time",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 255,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1299
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 220,
+ "height": 4
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -125
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f92f96Cs6lFeqrLuIuF2icZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1333
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1332
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "userinfo",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 1335
+ },
+ {
+ "__id__": 1340
+ },
+ {
+ "__id__": 1343
+ },
+ {
+ "__id__": 1346
+ },
+ {
+ "__id__": 1349
+ },
+ {
+ "__id__": 1352
+ },
+ {
+ "__id__": 1356
+ },
+ {
+ "__id__": 1359
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "361f9ipxABL1YeNo9g47lsF",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1362
+ },
+ {
+ "__id__": 1363
+ }
+ ],
+ "_prefab": {
+ "__id__": 1364
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 30,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "67824+gx8RP476ggCmbdH25",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1336
+ },
+ {
+ "__id__": 1337
+ },
+ {
+ "__id__": 1338
+ }
+ ],
+ "_prefab": {
+ "__id__": 1339
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1335
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1335
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1335
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 720
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "f11f9ITrlhJbbqZuUmjNCkT",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 200
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1888drucLhD458pqcbrOINf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1341
+ }
+ ],
+ "_prefab": {
+ "__id__": 1342
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1340
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "53fe9K8U/NBkKtuKqGJLhMF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": 46
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "776cfxUStBDrY/eC8SPyi2y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1344
+ }
+ ],
+ "_prefab": {
+ "__id__": 1345
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1343
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "洛神科技",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "3019eV6xSVDa6PegorwuCts",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ip",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": -7
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "26cd2AA681EObEdC11m2tnI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1347
+ }
+ ],
+ "_prefab": {
+ "__id__": 1348
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1346
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "IP: 171.217.46.219",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "9b7e9yTEBhDpYqg5dnoWF7Y",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "id",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -85,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2d0c3ND2ARC/ZBlaclRtIyt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1350
+ }
+ ],
+ "_prefab": {
+ "__id__": 1351
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1349
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "ID: 103",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "9b7e9yTEBhDpYqg5dnoWF7Y",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -155,
+ "y": 13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6b291hH7s9OOKktX4ML9rAe",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1353
+ },
+ {
+ "__id__": 1354
+ }
+ ],
+ "_prefab": {
+ "__id__": 1355
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1352
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "afc96215-f657-4e45-b5e6-ff5152f52566"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1352
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "6b291hH7s9OOKktX4ML9rAe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sex_female",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -207,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b4defolLmtG0bDEBbVnOKRO",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1357
+ }
+ ],
+ "_prefab": {
+ "__id__": 1358
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1356
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8c2e8172-65aa-4d5f-ad62-5383e3f1f939"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "b4defolLmtG0bDEBbVnOKRO",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "sex_male",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 45,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -207,
+ "y": -38
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5302azh5f5F4ZMQLx9/yUpo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1360
+ }
+ ],
+ "_prefab": {
+ "__id__": 1361
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1359
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ecf2a72a-7f6b-496d-a333-45912d28efcd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "5302azh5f5F4ZMQLx9/yUpo",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1334
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1334
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1334
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 1280,
+ "_originalHeight": 720
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1334
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "28f35eafd5N9KGxdhNM33sJ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "popups",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1366
+ },
+ {
+ "__id__": 1370
+ },
+ {
+ "__id__": 1456
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2b27eWEHTBCI4wr54pS2HSu",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 180,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1365
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4367cyCszZOZaCHYUqPUVFl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1367
+ },
+ {
+ "__id__": 1368
+ },
+ {
+ "__id__": 1369
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1366
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1366
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1366
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1366
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "settings",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1365
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 1371
+ },
+ {
+ "__id__": 1374
+ },
+ {
+ "__id__": 1377
+ },
+ {
+ "__id__": 1381
+ },
+ {
+ "__id__": 1410
+ },
+ {
+ "__id__": 1439
+ },
+ {
+ "__id__": 1446
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "39c9anl2d5OL5VGeL5gZ27Z",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1453
+ },
+ {
+ "__id__": 1454
+ }
+ ],
+ "_prefab": {
+ "__id__": 1455
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting8",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 758,
+ "height": 480
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1a718fsb11BR5SNxc4Zhyde",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1372
+ }
+ ],
+ "_prefab": {
+ "__id__": 1373
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1371
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "8c0802iqbhHaJcTSbt+PYSS",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene16",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 116,
+ "height": 46
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 194
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0d73f7V5nZLzZm8bakrUwQE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1375
+ }
+ ],
+ "_prefab": {
+ "__id__": 1376
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1374
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "abb55ec9-187f-436e-9a1a-5ba431862e87"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "baed3co9T9NjL5lFZivFRrt",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 364,
+ "y": 215
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "51535viAT9CU6sy6cdq0Wbo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1378
+ },
+ {
+ "__id__": 1379
+ }
+ ],
+ "_prefab": {
+ "__id__": 1380
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1377
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1377
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1377
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "45a33fYxkFAsbKNmtW3OrGC",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yinyue",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1382
+ },
+ {
+ "__id__": 1385
+ },
+ {
+ "__id__": 1401
+ },
+ {
+ "__id__": 1405
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -300,
+ "y": -13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8ac05h0unFBlqgzkgff+9Tj",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 1409
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 15,
+ "b": 15,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1381
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6df08xvuxZMMoQEvmuRCCfI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1383
+ }
+ ],
+ "_prefab": {
+ "__id__": 1384
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1382
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "音乐",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "8bed3JDBzZBJLBV8Po3yoBt",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1381
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 1386
+ },
+ {
+ "__id__": 1389
+ },
+ {
+ "__id__": 1395
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 285,
+ "y": 1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "58bb0iHvTNMIaICCyGfbHxb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1399
+ }
+ ],
+ "_prefab": {
+ "__id__": 1400
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Background",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1385
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4ddd7rvX/dFZI1xKon5PdbM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1387
+ }
+ ],
+ "_prefab": {
+ "__id__": 1388
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1386
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7f5d1ce1-ad62-48c3-891d-2feb0457a744"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "8b845+IKV9M4a2Izh+avNmS",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1385
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 1390
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -214,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "203e5sCsvNEibrlNintWgNh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1393
+ }
+ ],
+ "_prefab": {
+ "__id__": 1394
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting12",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1389
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d3669PmzkVBeI6cEK+UrsGk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1391
+ }
+ ],
+ "_prefab": {
+ "__id__": 1392
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1390
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9d456e8d-b4a7-492e-bc9a-bd60dff93263"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "c6320RsoyRMrK+5nylfCSfk",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1389
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "675cdpQXSpDW4MdxVsMmT+Z",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Handle",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1385
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 51,
+ "height": 55
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1.1368683772161603e-13,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e2869ue3uJJKaBI1cP4nI0e",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1396
+ },
+ {
+ "__id__": 1397
+ }
+ ],
+ "_prefab": {
+ "__id__": 1398
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1395
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1395
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 1,
+ "zoomScale": 1,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 1395
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "68039e/Ta1AELsQnpvrSJMh",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Slider",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1385
+ },
+ "_enabled": true,
+ "direction": 0,
+ "slideEvents": [],
+ "_N$handle": {
+ "__id__": 1397
+ },
+ "_N$progress": 0.5
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "b0c35okH09EsKY62dR8Sook",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yy_open",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1381
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a25caJ44eBMEZOh4El4bjSB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1402
+ },
+ {
+ "__id__": 1403
+ }
+ ],
+ "_prefab": {
+ "__id__": 1404
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1401
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c4d40921-9a54-4928-8409-ce5c5c456840"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1401
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1401
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "597719YWJdOEqJahN3Nm9kD",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yy_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1381
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3be95wjeOZLq7QvmI7vMmYT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1406
+ },
+ {
+ "__id__": 1407
+ }
+ ],
+ "_prefab": {
+ "__id__": 1408
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1405
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8ee53e49-397a-4974-b996-923c19d3cf0a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1405
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1405
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "787482SEgFKgbBCoDnBSNyk",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "6bf59JERjtEX6l23jm6J6rK",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "yinxiao",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1411
+ },
+ {
+ "__id__": 1414
+ },
+ {
+ "__id__": 1430
+ },
+ {
+ "__id__": 1434
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -300,
+ "y": 92
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ce631JUcwZDAYY4n4z6WQ/R",
+ "_active": true,
+ "_components": [],
+ "_prefab": {
+ "__id__": 1438
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 175,
+ "g": 15,
+ "b": 15,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1410
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f5d48FaqKhIxZiJziK1TKJ/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1412
+ }
+ ],
+ "_prefab": {
+ "__id__": 1413
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1411
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "音效",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "7d436R3ASpEXJIvTKBLz7zn",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1410
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 1415
+ },
+ {
+ "__id__": 1418
+ },
+ {
+ "__id__": 1424
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 285,
+ "y": 1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "950cfemwNxLM5qDdmM/4OfW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1428
+ }
+ ],
+ "_prefab": {
+ "__id__": 1429
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Background",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1414
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2774f8a7f9KyLrcUVCt20gI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1416
+ }
+ ],
+ "_prefab": {
+ "__id__": 1417
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1415
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7f5d1ce1-ad62-48c3-891d-2feb0457a744"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "6c101PP4VtHCYulvhYmRSEe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "progress",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1414
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [
+ {
+ "__id__": 1419
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -214,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3c86e9nQJdLdI+8eEadVbQf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1422
+ }
+ ],
+ "_prefab": {
+ "__id__": 1423
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting12",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1418
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 430,
+ "height": 32
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d81d1Aa2YVDUbHq0hUMgWCT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1420
+ }
+ ],
+ "_prefab": {
+ "__id__": 1421
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1419
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9d456e8d-b4a7-492e-bc9a-bd60dff93263"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "950e0UG3ndLgLXT+gT4Rjq1",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1418
+ },
+ "_enabled": true,
+ "_type": 0,
+ "_segements": 64
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "33061U5Mh1JOZsx4juteUvN",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Handle",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1414
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 51,
+ "height": 55
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1.1368683772161603e-13,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "25a82M/eppJSJrggB8lUIcb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1425
+ },
+ {
+ "__id__": 1426
+ }
+ ],
+ "_prefab": {
+ "__id__": 1427
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1424
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_type": 1,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1424
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.1,
+ "pressedSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "hoverSprite": {
+ "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+ },
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": true,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "95c85b47-abd5-4ff1-bf7f-7ec7cbb6e596"
+ },
+ "_N$disabledSprite": {
+ "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+ },
+ "_N$target": {
+ "__id__": 1424
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "9d032WLPx9JDq8qHl750kik",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Slider",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1414
+ },
+ "_enabled": true,
+ "direction": 0,
+ "slideEvents": [],
+ "_N$handle": {
+ "__id__": 1426
+ },
+ "_N$progress": 0.5
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "281e2D1L8BH5IP/Oqd6MhrF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yx_open",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1410
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "153b62yvj5DELXqR85PZTQX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1431
+ },
+ {
+ "__id__": 1432
+ }
+ ],
+ "_prefab": {
+ "__id__": 1433
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1430
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c4d40921-9a54-4928-8409-ce5c5c456840"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1430
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1430
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "9f47ahL40pC274twuzs9Tgx",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_yx_close",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1410
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 66
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 580,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e267fzIoB1P0JCwVP4xIBLP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1435
+ },
+ {
+ "__id__": 1436
+ }
+ ],
+ "_prefab": {
+ "__id__": 1437
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1434
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "66a82289-42b1-4fb6-a223-220e32129cfa"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1434
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1434
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "5f545B4LsJIm5Qap+F2GTNU",
+ "sync": false
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "db30dN6Y05KiaIXm1zgDuDZ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_exit",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 288,
+ "height": 77
+ },
+ "_children": [
+ {
+ "__id__": 1440
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -146
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "532ffeM+BFLubCJnWsHaUf9",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1443
+ },
+ {
+ "__id__": 1444
+ }
+ ],
+ "_prefab": {
+ "__id__": 1445
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting10",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1439
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 184,
+ "height": 45
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8fef6MCctNH54qFCAHT95+Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1441
+ }
+ ],
+ "_prefab": {
+ "__id__": 1442
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1440
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "498383c9-347c-434f-84e3-53e4f304d72a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "38782rdbmhM8KY+gY3SV3U3",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1439
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5914f056-b6c1-4bbd-979b-92b5b721c7f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1439
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1439
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "5d80d+s6+ZHjrOPXDKHMBYj",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_sqjsfj",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1370
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 288,
+ "height": 77
+ },
+ "_children": [
+ {
+ "__id__": 1447
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -146
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "de344UZseNDJr0960VQaGxC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1450
+ },
+ {
+ "__id__": 1451
+ }
+ ],
+ "_prefab": {
+ "__id__": 1452
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1446
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 220,
+ "height": 42
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "11ba265Qx5Bk77H1NebZTEX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1448
+ }
+ ],
+ "_prefab": {
+ "__id__": 1449
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1447
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c993886c-1bec-463c-a4dd-baab41d8173f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "11ba265Qx5Bk77H1NebZTEX",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1446
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5914f056-b6c1-4bbd-979b-92b5b721c7f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1446
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1446
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "5d80d+s6+ZHjrOPXDKHMBYj",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1370
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1370
+ }
+ },
+ {
+ "__type__": "4c04fyd89JAZY7qGjvubi+f",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1370
+ },
+ "_enabled": true,
+ "_btnYXOpen": null,
+ "_btnYXClose": null,
+ "_btnYYOpen": null,
+ "_btnYYClose": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1370
+ },
+ "asset": {
+ "__uuid__": "bb4e83c3-ec89-44bc-bd44-70431b9bd933"
+ },
+ "fileId": "4c909j7vh5DkbfELGxXVvmm",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dissolve_notice",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1365
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1457
+ },
+ {
+ "__id__": 1459
+ },
+ {
+ "__id__": 1461
+ },
+ {
+ "__id__": 1464
+ },
+ {
+ "__id__": 1467
+ },
+ {
+ "__id__": 1469
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c77bfkWGS5FbrTwW99PaYpW",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_tankuang_c",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1456
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 758,
+ "height": 480
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ae631oylIdAq6ZlYLFqRDFU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1458
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1457
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "ea0d9383-c0d7-4b7e-9fa8-4d16992991d5"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "setting9",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1456
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 220,
+ "height": 42
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 191
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2fe16+Mi0dLHbyvaXyHGSxG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1460
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1459
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "c993886c-1bec-463c-a4dd-baab41d8173f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "09bfe702-65eb-47f4-9ccb-7593d9233e0d"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_agree",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1456
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 208,
+ "height": 69
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 130,
+ "y": -176
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6ee51GJHRBM6ILJxFZ/7DnU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1462
+ },
+ {
+ "__id__": 1463
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1461
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "4338b286-ca55-4eec-877f-ca22150bc313"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1461
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "4338b286-ca55-4eec-877f-ca22150bc313"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1461
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_reject",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1456
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 208,
+ "height": 69
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -130,
+ "y": -176
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ccd16zo/epIXbDbxYnDW5It",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1465
+ },
+ {
+ "__id__": 1466
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1464
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "7ce05240-d123-4f98-9258-7c67fee072b5"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1464
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "7ce05240-d123-4f98-9258-7c67fee072b5"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1464
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "info",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 133,
+ "g": 54,
+ "b": 54,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1456
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 350.05,
+ "height": 175
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -197,
+ "y": 101
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "08ef9dYv/pAgaC+nH1ow7i3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1468
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1467
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 30,
+ "_lineHeight": 35,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "3分20秒后房间将自动解散\n[已同意]Alex\n[已同意]Chang\n[待确认]Zhang\n[待确认]Rack",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 0,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1456
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 175,
+ "height": 51
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e22f5vluMtKM6dv1MEtb+Nm",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1470
+ },
+ {
+ "__id__": 1471
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1469
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1469
+ },
+ "_enabled": true,
+ "transition": 2,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1469
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "game_over",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 1473
+ },
+ {
+ "__id__": 1475
+ },
+ {
+ "__id__": 1478
+ },
+ {
+ "__id__": 1480
+ },
+ {
+ "__id__": 1482
+ },
+ {
+ "__id__": 1484
+ },
+ {
+ "__id__": 1486
+ },
+ {
+ "__id__": 1490
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "befab0q7eRAtrUFzxqd2wEt",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "helpbg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1472
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "da37euN2OtEeJUFP/Ml4eLh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1474
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1473
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5c16d753-6196-48e1-9f33-bba0dd6ed13d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wanfa",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1472
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 416.69,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -637,
+ "y": 343
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "76f45SfkyhFqrUkvtyYidrY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1476
+ },
+ {
+ "__id__": 1477
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1475
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "4番封顶 碰碰胡 将对 自摸加番 换三张",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1475
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 8,
+ "_left": 3,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "huangzhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1472
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 141,
+ "height": 71
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cda43xY8QhMUJ9Emnt23bzs",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1479
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1478
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a3b4e04d-1fbb-487e-9a70-18596c2a2239"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pingju",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1472
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 141,
+ "height": 77
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8dab43fhWdDopjhCk86wm6c",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1481
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1480
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fe25f3b3-ab7c-48a6-ad17-56de32613c54"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "win",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1472
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 135,
+ "height": 72
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4bbdeQj0+5PGYFB8BnZ2sGC",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1483
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1482
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "db2e51a5-9511-4d64-ac51-951d80da0101"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lose",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1472
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 139,
+ "height": 72
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c569cEltclDE5WBTZtPVFOd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1485
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1484
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5f2ac589-4aa8-49e4-b05e-250966238126"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnReady",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1472
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 208,
+ "height": 69
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -316
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2f91bruJKNCRKuw2kYjbxhx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1487
+ },
+ {
+ "__id__": 1488
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1486
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cedd15d4-6953-4ab8-b2c3-db44e1d961f6"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1486
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1489
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "cedd15d4-6953-4ab8-b2c3-db44e1d961f6"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1486
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "GameOver",
+ "handler": "onBtnReadyClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "result_list",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1472
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1491
+ },
+ {
+ "__id__": 1538
+ },
+ {
+ "__id__": 1585
+ },
+ {
+ "__id__": 1632
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 117,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a902941qXpKSpISmNB8hlyM",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "s1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1490
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1492
+ },
+ {
+ "__id__": 1494
+ },
+ {
+ "__id__": 1496
+ },
+ {
+ "__id__": 1498
+ },
+ {
+ "__id__": 1500
+ },
+ {
+ "__id__": 1502
+ },
+ {
+ "__id__": 1509
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -595,
+ "y": 225
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "82ca6Z+JjBH4pbfx9dsdHuE",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1491
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 18,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "550b3yFxkZGnLGhzy190PHu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1493
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1492
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "username",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1491
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 40,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8e510b/bopM3K9/yxkiTr/3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1495
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1494
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reason",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1491
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 22
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 710,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "85c3d+SFnhPvpneYavjFdNf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1497
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1496
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 22,
+ "_fontSize": 22,
+ "_lineHeight": 22,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮和",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1491
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 770,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e211aXSbIJAfLVN0v9Lkeu5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1499
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1498
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1番",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1491
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34.2,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 880,
+ "y": -17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d81feqK4SBJ+ZL8HnD1SS2n",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1501
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1500
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "+1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1491
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 107
+ },
+ "_children": [
+ {
+ "__id__": 1503
+ },
+ {
+ "__id__": 1505
+ },
+ {
+ "__id__": 1507
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 880,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f1e11TcrJBMq57ytO7SyUss",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1502
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 58,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "20c66XAVZNOZJKY1pJ/9YoV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1504
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1503
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "680dba2f-6219-495f-b96a-6b93e5bfc6be"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1502
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 65,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "72004RadAVJYYGQH3VOG0oQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1506
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1505
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "03a988d2-a7c8-4c62-b205-5e38971143f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1502
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 64,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "33b81yBxmFDzKGD1lnvmPGA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1508
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1507
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "97642bab-67c3-4371-aa43-b4c666583d36"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1491
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1510
+ },
+ {
+ "__id__": 1512
+ },
+ {
+ "__id__": 1514
+ },
+ {
+ "__id__": 1516
+ },
+ {
+ "__id__": 1518
+ },
+ {
+ "__id__": 1520
+ },
+ {
+ "__id__": 1522
+ },
+ {
+ "__id__": 1524
+ },
+ {
+ "__id__": 1526
+ },
+ {
+ "__id__": 1528
+ },
+ {
+ "__id__": 1530
+ },
+ {
+ "__id__": 1532
+ },
+ {
+ "__id__": 1534
+ },
+ {
+ "__id__": 1536
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 66,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1c63eiTYDtPlbI87x3St7GJ",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "563b8agg/pDBZyZmTg0tq9z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1511
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1510
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2cd37aq5pNP7IvEBmNhzQ0a",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1513
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1512
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a5940Db2mFKGLnmjiXWbuYY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1515
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1514
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 225,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1141eZHmypGk6irzbchL8uN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1517
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1516
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 300,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c87a0rqgV9Jlb9GN8rvYaHv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1519
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1518
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 375,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d2c81CAjxxK0IEOBelVNBqc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1521
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1520
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "57501xCrYFM3pQsUFapwtfE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1523
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1522
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 525,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c15f6bnLehNGaRiLePrxyE8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1525
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1524
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 600,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5f313PYgctCX7Ph+172j9zK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1527
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1526
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 675,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "27dabaS5tBDUqP7nb0TmAPl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1529
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1528
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 750,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "18388OLBu9JZJGTcZnk1gzc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1531
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1530
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 825,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a6242X2x4xGk5xlWSP7O7Fz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1533
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1532
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 900,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1f6a7j3zeZL24EEGJj5XVpv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1535
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1534
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1509
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1010,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d5384aBasFF56fTd7hebVfY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1537
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1536
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "s2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1490
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1539
+ },
+ {
+ "__id__": 1541
+ },
+ {
+ "__id__": 1543
+ },
+ {
+ "__id__": 1545
+ },
+ {
+ "__id__": 1547
+ },
+ {
+ "__id__": 1549
+ },
+ {
+ "__id__": 1578
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -595,
+ "y": 100
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9e7fcXcqvdNIKTtAPlVEjcB",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1538
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 18,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e6d140mk0hHaarSTpK7RHys",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1540
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1539
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "username",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1538
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 40,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "acc0ejzw6FHjrOkwzm9DsDM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1542
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1541
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reason",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1538
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 22
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 710,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ba30eP65vVGpaSLDn6MkJcY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1544
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1543
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 22,
+ "_fontSize": 22,
+ "_lineHeight": 22,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮和",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1538
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 770,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d7335DsrqFO3ajGpIDdzJG0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1546
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1545
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1番",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1538
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34.2,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 880,
+ "y": -17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "94115vqdi5NX4Oc+hQiGfwW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1548
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1547
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "+1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1538
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1550
+ },
+ {
+ "__id__": 1552
+ },
+ {
+ "__id__": 1554
+ },
+ {
+ "__id__": 1556
+ },
+ {
+ "__id__": 1558
+ },
+ {
+ "__id__": 1560
+ },
+ {
+ "__id__": 1562
+ },
+ {
+ "__id__": 1564
+ },
+ {
+ "__id__": 1566
+ },
+ {
+ "__id__": 1568
+ },
+ {
+ "__id__": 1570
+ },
+ {
+ "__id__": 1572
+ },
+ {
+ "__id__": 1574
+ },
+ {
+ "__id__": 1576
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 66,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "721f53vTBZCf7f567VY0FW6",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4e5edm8qCdEh7ZXVw2Hsb0q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1551
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1550
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "eee08xP8nxKpaPLYmggDLRq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1553
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1552
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "651bes/VINFcIDZa6ilD6Yw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1555
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1554
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 225,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2f645FJJGRJr6YsQ4hPlBcn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1557
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1556
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 300,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9be00iPPdZEe6iyQLk7z/AN",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1559
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1558
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 375,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "85718iq5sdBepZt73kzEpjs",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1561
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1560
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0a75fega0dDt79QQi7Ga2KV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1563
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1562
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 525,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "de356caAdVG1YTtUiX5Myqh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1565
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1564
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 600,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e4731jMaWNNcb4fcNuQ4IIf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1567
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1566
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 675,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6963c7nxNBOoJSyNA0b0Yaz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1569
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1568
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 750,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3f6eamK5MxFIofQkePQUypm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1571
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1570
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 825,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7debeEQOApEDaaiu0BTIIBE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1573
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1572
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 900,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2609dxsdsBIGrLP3kZqbN0x",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1575
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1574
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1549
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1010,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cdd55+J0q1CQp3ZBi7mYNmp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1577
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1576
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1538
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 107
+ },
+ "_children": [
+ {
+ "__id__": 1579
+ },
+ {
+ "__id__": 1581
+ },
+ {
+ "__id__": 1583
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 880,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2c9e1Bde/tCTaa1LuT7n/3X",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1578
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 58,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "103c1vxWudN8Lg8raR4XiDw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1580
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1579
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "680dba2f-6219-495f-b96a-6b93e5bfc6be"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1578
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 65,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b552eGnIoFHspvAdQ+dZekK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1582
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1581
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "03a988d2-a7c8-4c62-b205-5e38971143f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1578
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 64,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "516721j5tlNSo2yfEH6JB8b",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1584
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1583
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "97642bab-67c3-4371-aa43-b4c666583d36"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "s3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1490
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1586
+ },
+ {
+ "__id__": 1588
+ },
+ {
+ "__id__": 1590
+ },
+ {
+ "__id__": 1592
+ },
+ {
+ "__id__": 1594
+ },
+ {
+ "__id__": 1596
+ },
+ {
+ "__id__": 1625
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -595,
+ "y": -25
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "56a4dvm8YlGJaA09NIhQW+g",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1585
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 18,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "79da90Yd4lEZqzOr1Yk2hFU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1587
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1586
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "username",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1585
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 40,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4dd88Av2AZJGpN36WmKwWmh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1589
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1588
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reason",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1585
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 22
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 710,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bf6bcdwxWVAO7aG5UGS2Kqk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1591
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1590
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 22,
+ "_fontSize": 22,
+ "_lineHeight": 22,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮和",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1585
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 770,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d02f2rTFTRObqUPX1Y2PNCU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1593
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1592
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1番",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1585
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34.2,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 880,
+ "y": -17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "95670x2rx5JWpc500ETZc7u",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1595
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1594
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "+1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1585
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1597
+ },
+ {
+ "__id__": 1599
+ },
+ {
+ "__id__": 1601
+ },
+ {
+ "__id__": 1603
+ },
+ {
+ "__id__": 1605
+ },
+ {
+ "__id__": 1607
+ },
+ {
+ "__id__": 1609
+ },
+ {
+ "__id__": 1611
+ },
+ {
+ "__id__": 1613
+ },
+ {
+ "__id__": 1615
+ },
+ {
+ "__id__": 1617
+ },
+ {
+ "__id__": 1619
+ },
+ {
+ "__id__": 1621
+ },
+ {
+ "__id__": 1623
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 66,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "07953s92S1F44szzs+ed/Ea",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5cc11dI0FtIgabBWLjIchWd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1598
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1597
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c6fdflCyZJJjqeby5P5OLNE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1600
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1599
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bae98czxZpLVLeLX69phrQF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1602
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1601
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 225,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a969bDyah9PlpljJ1iOAsTW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1604
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1603
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 300,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "272341vUl1EgKCyvdGNXNAZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1606
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1605
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 375,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4999dEdYitBoq0FpPmID9+k",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1608
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1607
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "66dbf4gN7RJhLTUIpK3ykaY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1610
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1609
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 525,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c3365sEcElIqZ+XvbQmxad3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1612
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1611
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 600,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "15cfaO/1YZKUadyNlLQbMZS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1614
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1613
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 675,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "de6f5a+DRhIF4ulqzcqcr1e",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1616
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1615
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 750,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "46d37+AiI5JiqhYA1BJC4fX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1618
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1617
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 825,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "843acWYQ3NEpaeDG9scmpAR",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1620
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1619
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 900,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9d94bybDUZGC48m9Bs3WQPU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1622
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1621
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1596
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1010,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a7a9b1O7zxNXqLMEY7nBmvx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1624
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1623
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1585
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 107
+ },
+ "_children": [
+ {
+ "__id__": 1626
+ },
+ {
+ "__id__": 1628
+ },
+ {
+ "__id__": 1630
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 880,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d374aYKKppH75Jg0d8bSjUM",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1625
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 58,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "10e05nNs01EcqZeZFRL7QTq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1627
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1626
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "680dba2f-6219-495f-b96a-6b93e5bfc6be"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1625
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 65,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "300f31kRidNza6ivDd7Ix2+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1629
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1628
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "03a988d2-a7c8-4c62-b205-5e38971143f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1625
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 64,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "015f4SWoxJI2Y/BnlUw/BaB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1631
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1630
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "97642bab-67c3-4371-aa43-b4c666583d36"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "s4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1490
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1633
+ },
+ {
+ "__id__": 1635
+ },
+ {
+ "__id__": 1637
+ },
+ {
+ "__id__": 1639
+ },
+ {
+ "__id__": 1641
+ },
+ {
+ "__id__": 1643
+ },
+ {
+ "__id__": 1672
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -595,
+ "y": -150
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "54e54N8nH1PYomcg0horMej",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1632
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 18,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b20b2JPBeFHZpkYlou3sbj7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1634
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1633
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "username",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1632
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 40,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4188efQp9JPq6CVavoeJsuz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1636
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1635
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reason",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1632
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 66,
+ "height": 22
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 710,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fff32JVIjZIq5JEl+SDx6kz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1638
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1637
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 22,
+ "_fontSize": 22,
+ "_lineHeight": 22,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮和",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fan",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1632
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 46.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 770,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "42053bzjzZJw7S+7mxdf4CH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1640
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1639
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1番",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1632
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34.2,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 880,
+ "y": -17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "86dd0ATfw9P7LMJGKCBqK0P",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1642
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1641
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "+1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1632
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1644
+ },
+ {
+ "__id__": 1646
+ },
+ {
+ "__id__": 1648
+ },
+ {
+ "__id__": 1650
+ },
+ {
+ "__id__": 1652
+ },
+ {
+ "__id__": 1654
+ },
+ {
+ "__id__": 1656
+ },
+ {
+ "__id__": 1658
+ },
+ {
+ "__id__": 1660
+ },
+ {
+ "__id__": 1662
+ },
+ {
+ "__id__": 1664
+ },
+ {
+ "__id__": 1666
+ },
+ {
+ "__id__": 1668
+ },
+ {
+ "__id__": 1670
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.7,
+ "_scaleY": 0.7,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 66,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3dd8727ZKJM6aOsWRniqoxX",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b9678ZwEJZPoLsWrh3YVaNS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1645
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1644
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f10ebe+4aFEOLSdcgBCVm+r",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1647
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1646
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1c119eTBO9CrImfA3G3GWK1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1649
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1648
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 225,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "618c2pQrLNF8qlLKcy2v1wy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1651
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1650
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 300,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b3f3bL62TlIsLBrdpJmhCZy",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1653
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1652
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 375,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e8aacw2NeJM9r/MpEy//vby",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1655
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1654
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3b7ffO4HW1ME7E2bw3p35Nd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1657
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1656
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 525,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7bad1YLO5hCBbLnaOImjtS1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1659
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1658
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 600,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "440cc7meoNEWYTywTYoPQnQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1661
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1660
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 675,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "894a4RTtwdGXbJFuwBGE267",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1663
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1662
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 750,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9c216OM4/5GTbR3FX0UacgK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1665
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1664
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 825,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4560eW0pAZHwpzIiwoa3fSb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1667
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1666
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 900,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5d6ccIQc2dEja1NtsgLMx6U",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1669
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1668
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1643
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1010,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c63309v0e1OobGrRUxF1VLm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1671
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1670
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1632
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 130,
+ "height": 107
+ },
+ "_children": [
+ {
+ "__id__": 1673
+ },
+ {
+ "__id__": 1675
+ },
+ {
+ "__id__": 1677
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 880,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9ebb0aZtD9Kq4x4HMOF5bYY",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1672
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 58,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ea6deCCgmNKb7j5Y5ujAUqp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1674
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1673
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "680dba2f-6219-495f-b96a-6b93e5bfc6be"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1672
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 65,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7dab3U/6f5JdYetnsabuRaA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1676
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1675
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "03a988d2-a7c8-4c62-b205-5e38971143f4"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1672
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 64,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7e437Dp9g9Nj6i3Jrw3WfzQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1678
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1677
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "97642bab-67c3-4371-aa43-b4c666583d36"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "game_over_xlch",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 1680
+ },
+ {
+ "__id__": 1682
+ },
+ {
+ "__id__": 1685
+ },
+ {
+ "__id__": 1687
+ },
+ {
+ "__id__": 1689
+ },
+ {
+ "__id__": 1691
+ },
+ {
+ "__id__": 1693
+ },
+ {
+ "__id__": 1697
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b05dfZLBKtGOpjKYdxpxbNt",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "helpbg",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 167,
+ "g": 167,
+ "b": 167,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1679
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "421ffHSPCFHWbUHDCMhIZrq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1681
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1680
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5c16d753-6196-48e1-9f33-bba0dd6ed13d"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "wanfa",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1679
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 416.69,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -637,
+ "y": 343
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fcfa6b4xxtI8q3aEx7/autK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1683
+ },
+ {
+ "__id__": 1684
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1682
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "4番封顶 碰碰胡 将对 自摸加番 换三张",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1682
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 8,
+ "_left": 3,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "huangzhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1679
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 141,
+ "height": 71
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dad42qhO61N0pplok0a+wQs",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 1686
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1685
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "a3b4e04d-1fbb-487e-9a70-18596c2a2239"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pingju",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1679
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 141,
+ "height": 77
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f16e3pIJRhDmLWDMzHWT3Lh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1688
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1687
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "fe25f3b3-ab7c-48a6-ad17-56de32613c54"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "win",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1679
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 135,
+ "height": 72
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dd33ecFw2lDXYLAStreuNRn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1690
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1689
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "db2e51a5-9511-4d64-ac51-951d80da0101"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "lose",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1679
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 139,
+ "height": 72
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 314
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ba752nqvENAKJA7Mle4rD+f",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1692
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1691
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5f2ac589-4aa8-49e4-b05e-250966238126"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnReady",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1679
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 208,
+ "height": 69
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -316
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1114bxf1jtBwYuJ7dIlJToO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1694
+ },
+ {
+ "__id__": 1695
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1693
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cedd15d4-6953-4ab8-b2c3-db44e1d961f6"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "4201ef1f-4abc-4af0-8e84-e9e776943900"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1693
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 1696
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "cedd15d4-6953-4ab8-b2c3-db44e1d961f6"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 1693
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "GameOver",
+ "handler": "onBtnReadyClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "result_list",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1679
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1698
+ },
+ {
+ "__id__": 1763
+ },
+ {
+ "__id__": 1828
+ },
+ {
+ "__id__": 1893
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 117,
+ "y": 19
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f10eem/iolMo6r4uvH+i9Eo",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "s1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1697
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1699
+ },
+ {
+ "__id__": 1701
+ },
+ {
+ "__id__": 1703
+ },
+ {
+ "__id__": 1705
+ },
+ {
+ "__id__": 1707
+ },
+ {
+ "__id__": 1709
+ },
+ {
+ "__id__": 1738
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -678,
+ "y": 225
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fb56a0bwtRJMpB7eOGysJRK",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1698
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 18,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7de1aVgQB5KqbwmO6TSYatP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1700
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1699
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "username",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1698
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 40,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2229cm76epL/okFrUM7Sd3x",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1702
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1701
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reason",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1698
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 820,
+ "height": 22
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 180,
+ "y": 6
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4708fdWV+pAi6FUimszEI1d",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1704
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1703
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 22,
+ "_fontSize": 22,
+ "_lineHeight": 22,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮和",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1698
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34.2,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1036,
+ "y": -17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c5050LmretJkqz//bybdI5O",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1706
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1705
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "+1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1698
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 42,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1036,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "afc0dYFsAtLV43GcOrC+7zM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1708
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1707
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "86a5d0fd-9685-43d7-8d52-13c20033db5d"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1698
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1710
+ },
+ {
+ "__id__": 1712
+ },
+ {
+ "__id__": 1714
+ },
+ {
+ "__id__": 1716
+ },
+ {
+ "__id__": 1718
+ },
+ {
+ "__id__": 1720
+ },
+ {
+ "__id__": 1722
+ },
+ {
+ "__id__": 1724
+ },
+ {
+ "__id__": 1726
+ },
+ {
+ "__id__": 1728
+ },
+ {
+ "__id__": 1730
+ },
+ {
+ "__id__": 1732
+ },
+ {
+ "__id__": 1734
+ },
+ {
+ "__id__": 1736
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 66,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9904cL1ecBHZpR2zhtWHLl7",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c55b1Ghi3BAHrkTfagC/7Ik",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1711
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1710
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3326evqWF1Lt4eQ7rmemAgE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1713
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1712
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a8351MJcH1K6onRtyGwkDr9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1715
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1714
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 225,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7d832G7HLZLFZqDiVyl7zE3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1717
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1716
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 300,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "600cfuawnNBmZ88YVytj70x",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1719
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1718
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 375,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c6dfa8Rc8pNtrTljKj4q6Ub",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1721
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1720
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dfecfOYdS1MOLRc61QLQdFf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1723
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1722
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 525,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "459faknSIpG262+FdBWV6re",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1725
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1724
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 600,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "96f1fFI+4NNKLOzd1wPOK62",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1727
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1726
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 675,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9037ewGhI9IuailTulGf0M7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1729
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1728
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 750,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a2ea1sntRJO+KMx05rTjFmQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1731
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1730
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 825,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "13215YEa+BL/JJrZv/X6WRP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1733
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1732
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 900,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ef644rnicNHCqOSnPYYt7Fo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1735
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1734
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1709
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 975,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "477adlnBaJMEIFLazNAuCph",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1737
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1736
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hupai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1698
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1739
+ },
+ {
+ "__id__": 1741
+ },
+ {
+ "__id__": 1743
+ },
+ {
+ "__id__": 1745
+ },
+ {
+ "__id__": 1747
+ },
+ {
+ "__id__": 1749
+ },
+ {
+ "__id__": 1751
+ },
+ {
+ "__id__": 1753
+ },
+ {
+ "__id__": 1755
+ },
+ {
+ "__id__": 1757
+ },
+ {
+ "__id__": 1759
+ },
+ {
+ "__id__": 1761
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 690,
+ "y": -84
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a4abcDtNotPLrfCNSywXlYi",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f433fHlBphKF4tsP6uojYvk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1740
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1739
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "22edfK4iXtHToMZEtFLTr5z",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1742
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1741
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "31d62OwRChOCKQciNEA/GhG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1744
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1743
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ee47efxGJRCLKNLU7NyTLvr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1746
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1745
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 220,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a9489jlhF5Ju4I5P8AEBIgk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1748
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1747
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 275,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ad5b5W+YKpLa6E4XYWKSaBQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1750
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1749
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 330,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f1becUPnmpDIaxaIdiL1xKL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1752
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1751
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 384,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "771c7lEkW1BOKww+iwEN55a",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1754
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1753
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 439,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "578abW12G9FD6SLzwBLQJQ/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1756
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1755
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 494,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "123f5y7oZdKbaaOVgL+zJQh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1758
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1757
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 549,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e37d4MoHetBHqISp9amAb2A",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1760
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1759
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1738
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 604,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9e8d3dg15lJHIgAlOA+oGAf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1762
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1761
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "s2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1697
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1764
+ },
+ {
+ "__id__": 1766
+ },
+ {
+ "__id__": 1768
+ },
+ {
+ "__id__": 1770
+ },
+ {
+ "__id__": 1772
+ },
+ {
+ "__id__": 1801
+ },
+ {
+ "__id__": 1826
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -678,
+ "y": 94
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5359ewa3+pCeJO66Ioq4auY",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1763
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 18,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "469aadmJdBDgpVioEgkkAAD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1765
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1764
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "username",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1763
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 40,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "21b3fHBFl5PJaET5frPGBz6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1767
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1766
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reason",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1763
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 820,
+ "height": 22
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 180,
+ "y": 6
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "80269Rjua5BEYUhGZMJDx8F",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1769
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1768
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 22,
+ "_fontSize": 22,
+ "_lineHeight": 22,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮和",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1763
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34.2,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1036,
+ "y": -17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f5f87RpNDBPtIjH7tBhW55a",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1771
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1770
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "+1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1763
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1773
+ },
+ {
+ "__id__": 1775
+ },
+ {
+ "__id__": 1777
+ },
+ {
+ "__id__": 1779
+ },
+ {
+ "__id__": 1781
+ },
+ {
+ "__id__": 1783
+ },
+ {
+ "__id__": 1785
+ },
+ {
+ "__id__": 1787
+ },
+ {
+ "__id__": 1789
+ },
+ {
+ "__id__": 1791
+ },
+ {
+ "__id__": 1793
+ },
+ {
+ "__id__": 1795
+ },
+ {
+ "__id__": 1797
+ },
+ {
+ "__id__": 1799
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 66,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7e536JgdQpOMLJld4b5nUtF",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "10a00s5bJxPsonn4QjH+W1W",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1774
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1773
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8c3c4WGe7RC7a1PlDiSm5ED",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1776
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1775
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c34edyEgnJL9InnUddKn3Jv",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1778
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1777
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 225,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8288aDAwdBFzpbNjXw4Iswh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1780
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1779
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 300,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "02d3bVEvzNAy42ifxZA7Oit",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1782
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1781
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 375,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a5916lfw41OSrvtsE6TEoqq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1784
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1783
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ce3e991+RNB06mcfQNsZ9nI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1786
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1785
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 525,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ce4cbEayshGAaPjlZvNL/0I",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1788
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1787
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 600,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "789f6C2qr1KH4Pu3eI8fCDM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1790
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1789
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 675,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0e81cSyN2BFS7Cq8GNT5nLQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1792
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1791
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 750,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "76b64qGZgJC6qX0DEmwU7AT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1794
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1793
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 825,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1bdf9D95wlAXLPAKGDNgApZ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1796
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1795
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 900,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f67d3chyZtJW4/mBdg3OMva",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1798
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1797
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1772
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 975,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7ff8chGghxPcL8BxJBQGUxV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1800
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1799
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hupai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1763
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1802
+ },
+ {
+ "__id__": 1804
+ },
+ {
+ "__id__": 1806
+ },
+ {
+ "__id__": 1808
+ },
+ {
+ "__id__": 1810
+ },
+ {
+ "__id__": 1812
+ },
+ {
+ "__id__": 1814
+ },
+ {
+ "__id__": 1816
+ },
+ {
+ "__id__": 1818
+ },
+ {
+ "__id__": 1820
+ },
+ {
+ "__id__": 1822
+ },
+ {
+ "__id__": 1824
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 690,
+ "y": -84
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0cc6bL+3WxGx601VYGosXCH",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4e9a6fkdoNB+K0jfQtIHOFe",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1803
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1802
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "82635RpLDpJA4/TpcldnFPu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1805
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1804
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "201eabP369J2bdc9tkVb3tP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1807
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1806
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5be7ax5lXJL7oQHrHMCdK3Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1809
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1808
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 220,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f9857/mI6JG2qHr2yEk9lvz",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1811
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1810
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 275,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7149249hWVDzqENVEM8uGUP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1813
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1812
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 330,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "45093ULTP9Kbb3bSw8/sJvQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1815
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1814
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 384,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9d390zne0tNXp9Y6McsjF4Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1817
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1816
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 439,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "08363P7LqlOAJhZjDHh2K9q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1819
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1818
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 494,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "334c1YM6ZVKG5MKwvBzGwlx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1821
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1820
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 549,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "21042b8Lz9BKZbYbAvJqUq9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1823
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1822
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1801
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 604,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "42d14nq0RlIVKG0wIQPUpsr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1825
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1824
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1763
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 42,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1036,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f7d8fHFvJhNnZ3DOE8ebRLq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1827
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1826
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "86a5d0fd-9685-43d7-8d52-13c20033db5d"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "s3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1697
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1829
+ },
+ {
+ "__id__": 1831
+ },
+ {
+ "__id__": 1833
+ },
+ {
+ "__id__": 1835
+ },
+ {
+ "__id__": 1837
+ },
+ {
+ "__id__": 1866
+ },
+ {
+ "__id__": 1891
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -678,
+ "y": -43
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c955efdq0ZImqGK6cStP+g6",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 18,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6f68btTCO1Mu7f/WVHKmGZo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1830
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1829
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "username",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 40,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6e973myvz1C+7N8Q6doZ9fE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1832
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1831
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reason",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 820,
+ "height": 22
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 180,
+ "y": 6
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bc59c0B9/9Cb4zv9bky4FbU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1834
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1833
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 22,
+ "_fontSize": 22,
+ "_lineHeight": 22,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮和",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34.2,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1036,
+ "y": -17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "be9126ri/NKNbiKP43jBHef",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1836
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1835
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "+1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1838
+ },
+ {
+ "__id__": 1840
+ },
+ {
+ "__id__": 1842
+ },
+ {
+ "__id__": 1844
+ },
+ {
+ "__id__": 1846
+ },
+ {
+ "__id__": 1848
+ },
+ {
+ "__id__": 1850
+ },
+ {
+ "__id__": 1852
+ },
+ {
+ "__id__": 1854
+ },
+ {
+ "__id__": 1856
+ },
+ {
+ "__id__": 1858
+ },
+ {
+ "__id__": 1860
+ },
+ {
+ "__id__": 1862
+ },
+ {
+ "__id__": 1864
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 66,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0464bhgZGdMnZFBHydAEVJr",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b20aemsxnBJG6zh7lxsd4Bi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1839
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1838
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a3a80AjcKVGQ5V81SFxgRVo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1841
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1840
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8dbd7qZ0rZPVYhaAHQeUWp1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1843
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1842
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 225,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ebbddC59h9HtZ8RNf0Oizyb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1845
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1844
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 300,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "31157HJ3vtGF4W4+ZxavyqF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1847
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1846
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 375,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "41ba07Qp+RHzYZyWYxcuYyH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1849
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1848
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f5a5aQn2wpEC66EZdA03aO1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1851
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1850
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 525,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4dd25vFsmtNfK/ffE0HjUzA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1853
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1852
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 600,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "561d8o+2JFIeJG4vags0Ljn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1855
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1854
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 675,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4b4beEjpHVACYDeJsAk2xxb",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1857
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1856
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 750,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "60c28wX2aFBeZ9m+JnPTiBi",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1859
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1858
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 825,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c22a6ZZKn9GP6s96pXnKY1V",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1861
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1860
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 900,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9a846lc+BlOnbcrQ0F8oGjE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1863
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1862
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1837
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 975,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4378fWnQXZB6pOeH8ezONEJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1865
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1864
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hupai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1867
+ },
+ {
+ "__id__": 1869
+ },
+ {
+ "__id__": 1871
+ },
+ {
+ "__id__": 1873
+ },
+ {
+ "__id__": 1875
+ },
+ {
+ "__id__": 1877
+ },
+ {
+ "__id__": 1879
+ },
+ {
+ "__id__": 1881
+ },
+ {
+ "__id__": 1883
+ },
+ {
+ "__id__": 1885
+ },
+ {
+ "__id__": 1887
+ },
+ {
+ "__id__": 1889
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 690,
+ "y": -84
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "52cbaF2xLdBsaQnxyOp4Mhv",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7a5a2yf6FNH4oby9fCe8wZg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1868
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1867
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "37fe0mf6TNNbozJJUGeTJB/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1870
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1869
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c5978bk0UNJWLRjvgczN3tP",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1872
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1871
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3f949kK0u5HMbDNCcOLWb/X",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1874
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1873
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 220,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "39a2dMZSQtPEb6+ySF+vmD1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1876
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1875
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 275,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7339ecIGvBH2orgfowEfoIr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1878
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1877
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 330,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "78d5c8iqDFPFp8cET/VOLf1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1880
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1879
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 384,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fe4813+PMlKa4N03jh4N+6V",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1882
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1881
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 439,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "678b5dg5D5GFLukorEBtUZq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1884
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1883
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 494,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "970b0dz41tEqo50WkwtFbNT",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1886
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1885
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 549,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b59c0Abz0FHaL8cDJg9q8Fw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1888
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1887
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1866
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 604,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "01a96Vq5VpMO6rSQiHtSt5V",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1890
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1889
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1828
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 42,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1036,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0dcb4B+P4dDk5DYw2X4upcw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1892
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1891
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "86a5d0fd-9685-43d7-8d52-13c20033db5d"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "s4",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1697
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1894
+ },
+ {
+ "__id__": 1896
+ },
+ {
+ "__id__": 1898
+ },
+ {
+ "__id__": 1900
+ },
+ {
+ "__id__": 1902
+ },
+ {
+ "__id__": 1931
+ },
+ {
+ "__id__": 1956
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -678,
+ "y": -177
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e8e144tgaFHKbvlAWLYRTza",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zhuang",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1893
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34,
+ "height": 34
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 18,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c3fcf1hmNZE5qQmbKYwjQ1Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1895
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1894
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "username",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1893
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 120,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 40,
+ "y": -18
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "36165//3fhHqLbiRgI7evRq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1897
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1896
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "幼麟游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reason",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1893
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 820,
+ "height": 22
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 180,
+ "y": 6
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0f50fmI2A9PMKne+gmOwuO9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1899
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1898
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 22,
+ "_fontSize": 22,
+ "_lineHeight": 22,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮和",
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1893
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 34.2,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1036,
+ "y": -17
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "31760ji2vxE4aic242C/jNX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1901
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1900
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "+1",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "pai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1893
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1903
+ },
+ {
+ "__id__": 1905
+ },
+ {
+ "__id__": 1907
+ },
+ {
+ "__id__": 1909
+ },
+ {
+ "__id__": 1911
+ },
+ {
+ "__id__": 1913
+ },
+ {
+ "__id__": 1915
+ },
+ {
+ "__id__": 1917
+ },
+ {
+ "__id__": 1919
+ },
+ {
+ "__id__": 1921
+ },
+ {
+ "__id__": 1923
+ },
+ {
+ "__id__": 1925
+ },
+ {
+ "__id__": 1927
+ },
+ {
+ "__id__": 1929
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.6,
+ "_scaleY": 0.6,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 66,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "55dd9pY925JhaE98TlB76T5",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f8571+un7dKqL1RnZphKgii",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1904
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1903
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 75,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c9681L4A+lAGavh/zYXRnyB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1906
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1905
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2876eCAiBBJ+J1stCsCSAHx",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1908
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1907
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 225,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cb41bT0E5ZBZJt5aktTAN5x",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1910
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1909
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 300,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bd00b0kuC9JFbNFDmjpNhQB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1912
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1911
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 375,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "73e027H+TNBraIv4bR0cahU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1914
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1913
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dedc5MO6XFKBb+Iu0CWVGhg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1916
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1915
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 525,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2639dqcNkBM1oyJhEIVLF9x",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1918
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1917
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 600,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6cb2eLVBFJAsq2PVer8SdWo",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1920
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1919
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 675,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "42719uM8EJCfZp6ZY/s0SY/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1922
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1921
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 750,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4caa1byAKtBSImMtMrT3s8o",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1924
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1923
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 825,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "51d83XrAlhJcrgZBX/loEfF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1926
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1925
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 900,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cfe412xDelDSJYbaKL/q4wE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1928
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1927
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "M_character_3",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1902
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 113
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 975,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fff91wCVzRJGKhY7RR1e8F2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1930
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1929
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "42fff579-3e8b-4b57-babb-7ef5e6a31ba9"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hupai",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1893
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1932
+ },
+ {
+ "__id__": 1934
+ },
+ {
+ "__id__": 1936
+ },
+ {
+ "__id__": 1938
+ },
+ {
+ "__id__": 1940
+ },
+ {
+ "__id__": 1942
+ },
+ {
+ "__id__": 1944
+ },
+ {
+ "__id__": 1946
+ },
+ {
+ "__id__": 1948
+ },
+ {
+ "__id__": 1950
+ },
+ {
+ "__id__": 1952
+ },
+ {
+ "__id__": 1954
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.5,
+ "_scaleY": 0.5,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 690,
+ "y": -84
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "120df7DVAxIY5UGLZWAjcg5",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ff481cI3XlLvLIxtqPhNMNF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1933
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1932
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 55,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e2ac6kK3oFKcIjYujp75EWr",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1935
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1934
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 110,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "487fc8jf41AF7hNAMG8BQKc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1937
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1936
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 165,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1bb22RZ0AtLYYgC79iiG1RQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1939
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1938
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 220,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "77a01uNbx1EVZdhnoQ67vza",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1941
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1940
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 275,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "040c6uVn21AH5lLXOpds31J",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1943
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1942
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 330,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "62b6eg6yF9IQ7rTsXhHVGBp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1945
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1944
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 384,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e10814M7LRDUJodDImzTBbj",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1947
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1946
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 439,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "07cf3trwJJEmpoMW/YeE8Pu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1949
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1948
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 494,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "93f80GHGWBLpbLY0v2PIVf9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1951
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1950
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 549,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ad02b1CG1FHfKfwqfFOZOE3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1953
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1952
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "B_bamboo_1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1931
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 55,
+ "height": 84
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 604,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "83c5eDMID5DtavLk8nPCQiX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1955
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1954
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "8532d2cf-5b76-4801-a64f-cf9e12a138f7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "hu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1893
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 42,
+ "height": 44
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1036,
+ "y": -75
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ca6a842gZNPsJzrrcAUoQ0I",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1957
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1956
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "86a5d0fd-9685-43d7-8d52-13c20033db5d"
+ },
+ "_type": 0,
+ "_sizeMode": 2,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "game_result",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 1959
+ },
+ {
+ "__id__": 1961
+ },
+ {
+ "__id__": 1965
+ },
+ {
+ "__id__": 2179
+ },
+ {
+ "__id__": 2183
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f28feuExA9NGqprMhSeCLKD",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 2188
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_jiesuanditu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1958
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e662dvzgGlPU7iw7a8fhfOk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1960
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1959
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "61f45545-f8cb-461e-a7a4-0dc551d1d004"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd7",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1958
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 730
+ },
+ "_children": [
+ {
+ "__id__": 1962
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": -1
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8968fDNBvZJTZHjwDasdxa0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1964
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PopupScene15",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1961
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 226,
+ "height": 54
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 313
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "87db2LJFi1IX4SFzbqTl2WW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1963
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1962
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "999350d5-eb8e-4a6e-9ac3-f1690a3ea842"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1961
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "6fb8913c-4002-42c2-9c10-e9db64c2b2a3"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seats",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1958
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 1966
+ },
+ {
+ "__id__": 2019
+ },
+ {
+ "__id__": 2072
+ },
+ {
+ "__id__": 2125
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "983caacOXNG8Y9DBMmotIRn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2178
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1965
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1967
+ },
+ {
+ "__id__": 1969
+ },
+ {
+ "__id__": 1972
+ },
+ {
+ "__id__": 1976
+ },
+ {
+ "__id__": 1979
+ },
+ {
+ "__id__": 1982
+ },
+ {
+ "__id__": 1985
+ },
+ {
+ "__id__": 1987
+ },
+ {
+ "__id__": 1989
+ },
+ {
+ "__id__": 1991
+ },
+ {
+ "__id__": 1993
+ },
+ {
+ "__id__": 2006
+ },
+ {
+ "__id__": 2008
+ },
+ {
+ "__id__": 2010
+ },
+ {
+ "__id__": 2012
+ },
+ {
+ "__id__": 2014
+ },
+ {
+ "__id__": 2016
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -450,
+ "y": 246
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "06855M8gXlGX6M5G47S3C9b",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2018
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 265,
+ "height": 513
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -254
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b8e2c26Z9NEra/UNTT7tubD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1968
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1967
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b72b5f69-e7e2-4eb0-ae43-d668c5b4609a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 90
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -71,
+ "y": -61
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e5658KPoTFIoqXofzb+0nPH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1970
+ },
+ {
+ "__id__": 1971
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1969
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1969
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -116,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -70,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2a656TzeRxGS50Q7pdky8cX",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1973
+ },
+ {
+ "__id__": 1974
+ },
+ {
+ "__id__": 1975
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1972
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1972
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -110,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1972
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -19,
+ "y": -40
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8682b+GPPVBHYyu6uqmlBsW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1977
+ },
+ {
+ "__id__": 1978
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1976
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "小叶子",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1976
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -19,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "id",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 98.42,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -19,
+ "y": -74
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e4ed3+Q8HJOroj4Qb4x1Dn8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1980
+ },
+ {
+ "__id__": 1981
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1979
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "id:1003",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1979
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -19,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fangzhu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 94,
+ "height": 29
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 30.5,
+ "y": -103
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "305aeZ9TUZAmIIUi66/4tUd",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1983
+ },
+ {
+ "__id__": 1984
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1982
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1517fd6b-e1d5-41e2-9ca6-c0e716735a4f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1982
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -16.5,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 78,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -431
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a0977ltvjpGWKLpgheG+nYD",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1986
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1985
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58c53b75-bfa3-4b1a-b430-9eda7a788ee7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77.86,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -471
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8b238AMx25Fqph52RgHooEG",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1988
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1987
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dayingjia",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 64,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -117,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b95dfVqmcVNu6HmKSPKutmQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1990
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1989
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cf878df7-9ee1-43b4-b87a-d6a457e4f8f6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zuijiapaoshou",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 86,
+ "height": 85
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 85,
+ "y": -463
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9e674VM5uxCkLpUfZouma57",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1992
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1991
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e252d253-751b-4c11-ac0d-879a48159947"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "labels",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 1994
+ },
+ {
+ "__id__": 1996
+ },
+ {
+ "__id__": 1998
+ },
+ {
+ "__id__": 2000
+ },
+ {
+ "__id__": 2002
+ },
+ {
+ "__id__": 2004
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 10,
+ "y": 13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f684cSD0PFCYKZ++uelwFG2",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1993
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -165
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3b036PkzmBE1IrsQBx6jfYQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1995
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1994
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "自摸次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1993
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -210
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "79efbYhGa9Feql6RngIxcdh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1997
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1996
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "接炮次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1993
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -255
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "59dabr+CBtBi7LfOD2s5QN+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 1999
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1998
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1993
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -300
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7abb1Spue9N8YNOlAuYop+A",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2001
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2000
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "暗杠次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1993
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -345
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e4c08rkI+9Dh6yrNrSyxnpK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2003
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2002
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "明杠次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1993
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -390
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0920emTR4xOkLtP6GWv18M1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2005
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2004
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "查叫次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zimocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -152
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f4c7a8JV9hAj6QJtD1VMRnu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2007
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2006
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jiepaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -197
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "37268cBBYxN3Yz7zno62Sch",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2009
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2008
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dianpaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -242
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "702adLjXFJAc7wlmOkH5BkU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2011
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2010
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "angangcishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -287
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8f4ae1b4uZPoovOGHCwcdHI",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2013
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2012
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "minggangcishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -332
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0d2bfpEOlNKFrbugd5SPNg/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2015
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2014
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chajiaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1966
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -377
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0870dqVnjFKzI8vXqMTX5UU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2017
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2016
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1966
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1965
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2020
+ },
+ {
+ "__id__": 2022
+ },
+ {
+ "__id__": 2025
+ },
+ {
+ "__id__": 2029
+ },
+ {
+ "__id__": 2032
+ },
+ {
+ "__id__": 2035
+ },
+ {
+ "__id__": 2038
+ },
+ {
+ "__id__": 2040
+ },
+ {
+ "__id__": 2042
+ },
+ {
+ "__id__": 2044
+ },
+ {
+ "__id__": 2046
+ },
+ {
+ "__id__": 2059
+ },
+ {
+ "__id__": 2061
+ },
+ {
+ "__id__": 2063
+ },
+ {
+ "__id__": 2065
+ },
+ {
+ "__id__": 2067
+ },
+ {
+ "__id__": 2069
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -150,
+ "y": 246
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "964a6+jz75I2pfNADDhqSf4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2071
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 265,
+ "height": 513
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -254
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b3cddR4AiVIApERy1krTBf4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2021
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2020
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b72b5f69-e7e2-4eb0-ae43-d668c5b4609a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 90
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -71,
+ "y": -61
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "50ed29ovH9Cs7yrrhDOLNvg",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2023
+ },
+ {
+ "__id__": 2024
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2022
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2022
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -116,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -70,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "df546acnXFCU5hJscwMQUUq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2026
+ },
+ {
+ "__id__": 2027
+ },
+ {
+ "__id__": 2028
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2025
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2025
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -110,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2025
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -19,
+ "y": -40
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "63ad4Zbq4VEIqYgzQ/Z5Nq/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2030
+ },
+ {
+ "__id__": 2031
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2029
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "小叶子",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2029
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -19,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "id",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 98.42,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -19,
+ "y": -74
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cc589H75VJGjawyPmM/AYPh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2033
+ },
+ {
+ "__id__": 2034
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2032
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "id:1003",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2032
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -19,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fangzhu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 97,
+ "height": 29
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 32,
+ "y": -103
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a3f52dTsndIWZgDjPqC3+Cp",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 2036
+ },
+ {
+ "__id__": 2037
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2035
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1517fd6b-e1d5-41e2-9ca6-c0e716735a4f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2035
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -16.5,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 78,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -431
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dd17bP22nZJQL4BrjltozYn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2039
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2038
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58c53b75-bfa3-4b1a-b430-9eda7a788ee7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77.86,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -471
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "78b49llXjxKwYLqWBIdcjHq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2041
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2040
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dayingjia",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 64,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -117,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "846c9MWLR9J9IAWYFh0OMnA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2043
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2042
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cf878df7-9ee1-43b4-b87a-d6a457e4f8f6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zuijiapaoshou",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 86,
+ "height": 85
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 85,
+ "y": -463
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d8d141kJiNI76Q66oBgrxo4",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2045
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2044
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e252d253-751b-4c11-ac0d-879a48159947"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "labels",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2047
+ },
+ {
+ "__id__": 2049
+ },
+ {
+ "__id__": 2051
+ },
+ {
+ "__id__": 2053
+ },
+ {
+ "__id__": 2055
+ },
+ {
+ "__id__": 2057
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 10,
+ "y": 13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0d17fOncI1BLKfyrlUghpE7",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2046
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -165
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "3cb8dGLvFJFbKpkbacbZD19",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2048
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2047
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "自摸次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2046
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -210
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0ef23Onm3RFc7YXHx28SGJJ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2050
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2049
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "接炮次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2046
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -255
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "44660cDWZRE4IdU86vbN9A6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2052
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2051
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2046
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -300
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c553cpSabFDp6R6/ajwETj2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2054
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2053
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "暗杠次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2046
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -345
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "82a30Zt0bNGUak9STkjzay0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2056
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2055
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "明杠次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2046
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -390
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ec30bltQy5I659On9/wkUK7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2058
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2057
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "查叫次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zimocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -152
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "76971KGMThOoJtOiL4hVuJs",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2060
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2059
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jiepaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -197
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "11405Trq+1DarcKwucYbJtU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2062
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2061
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dianpaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -242
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ef6b6SYcBtMCI7CgDC4bdbw",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2064
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2063
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "angangcishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -287
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "8a86c7jmpJAjaMzKw2+4YMq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2066
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2065
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "minggangcishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -332
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "762d1G+7D5JHKa9oAyrdJpu",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2068
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2067
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chajiaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2019
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -377
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6c03aBQeXVIJZRzbubKY3XF",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2070
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2069
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2019
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1965
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2073
+ },
+ {
+ "__id__": 2075
+ },
+ {
+ "__id__": 2078
+ },
+ {
+ "__id__": 2082
+ },
+ {
+ "__id__": 2085
+ },
+ {
+ "__id__": 2088
+ },
+ {
+ "__id__": 2091
+ },
+ {
+ "__id__": 2093
+ },
+ {
+ "__id__": 2095
+ },
+ {
+ "__id__": 2097
+ },
+ {
+ "__id__": 2099
+ },
+ {
+ "__id__": 2112
+ },
+ {
+ "__id__": 2114
+ },
+ {
+ "__id__": 2116
+ },
+ {
+ "__id__": 2118
+ },
+ {
+ "__id__": 2120
+ },
+ {
+ "__id__": 2122
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 150,
+ "y": 246
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "04b2exEVfREmqbGvwWfG5/U",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2124
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 265,
+ "height": 513
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -254
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cadfeOJdj5PkaA07IYEzP6G",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2074
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2073
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b72b5f69-e7e2-4eb0-ae43-d668c5b4609a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 90
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -71,
+ "y": -61
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "74177tc8WxAF4UIbslUL3vh",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2076
+ },
+ {
+ "__id__": 2077
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2075
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2075
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -116,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -70,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a0198jEoo5Ih4DpCxMLlz0Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2079
+ },
+ {
+ "__id__": 2080
+ },
+ {
+ "__id__": 2081
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2078
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2078
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -110,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2078
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -19,
+ "y": -40
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "23124dc6aNBfIaQz4gMUFMS",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2083
+ },
+ {
+ "__id__": 2084
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2082
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "小叶子",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2082
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -19,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "id",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 98.42,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -19,
+ "y": -74
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "67665NE9mpDEKRULdnkRm0Y",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2086
+ },
+ {
+ "__id__": 2087
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2085
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "id:1003",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2085
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -19,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fangzhu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 97,
+ "height": 29
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 32,
+ "y": -103
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0039al9KoxOEIKjgnOjyRd3",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 2089
+ },
+ {
+ "__id__": 2090
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2088
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1517fd6b-e1d5-41e2-9ca6-c0e716735a4f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2088
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -16.5,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 78,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -431
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "1ebadoaGKZAWpIPHyaLNAJ5",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2092
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2091
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58c53b75-bfa3-4b1a-b430-9eda7a788ee7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77.86,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -471
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d07921LqZJPL60Ge8ROsz0M",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2094
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2093
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dayingjia",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 64,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -117,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "90675q8CZlGYYSFhZgX2SIp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2096
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2095
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cf878df7-9ee1-43b4-b87a-d6a457e4f8f6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zuijiapaoshou",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 86,
+ "height": 85
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 85,
+ "y": -463
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "19eff1fX/NIvKDh8S09WK/I",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2098
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2097
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e252d253-751b-4c11-ac0d-879a48159947"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "labels",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2100
+ },
+ {
+ "__id__": 2102
+ },
+ {
+ "__id__": 2104
+ },
+ {
+ "__id__": 2106
+ },
+ {
+ "__id__": 2108
+ },
+ {
+ "__id__": 2110
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 10,
+ "y": 13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d9f727PW31Az5svmdCcA1wF",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2099
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -165
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0765d6cEpdCqL+5QEG+IzVQ",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2101
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2100
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "自摸次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2099
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -210
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c8228ONmGtHqK9GNqwQnaiq",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2103
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2102
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "接炮次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2099
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -255
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2e819ULRC1H1qrFQbBrztde",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2105
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2104
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2099
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -300
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bdb68NQi2RI37zsdW+A5fIn",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2107
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2106
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "暗杠次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2099
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -345
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b791cflEk5LB7OZ0bTi1zWA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2109
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2108
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "明杠次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2099
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -390
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "52d57+Ve69CCJgEevsjIrm9",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2111
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2110
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "查叫次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zimocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -152
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a7d72SvE9FOjbayYdTyknab",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2113
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2112
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jiepaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -197
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "bf346Uf7jFC6L/hM005xQ/t",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2115
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2114
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dianpaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -242
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6926di7n+ZEcptKgBE9Fg0C",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2117
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2116
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "angangcishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -287
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "64703kiRX1FZ6c6gRfN1/Jm",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2119
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2118
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "minggangcishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -332
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "89056f1R4RFnLX6HsHoeylV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2121
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2120
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chajiaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2072
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -377
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ae6ff0514JKHZyYQupauFum",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2123
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2122
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2072
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "seat",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1965
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2126
+ },
+ {
+ "__id__": 2128
+ },
+ {
+ "__id__": 2131
+ },
+ {
+ "__id__": 2135
+ },
+ {
+ "__id__": 2138
+ },
+ {
+ "__id__": 2141
+ },
+ {
+ "__id__": 2144
+ },
+ {
+ "__id__": 2146
+ },
+ {
+ "__id__": 2148
+ },
+ {
+ "__id__": 2150
+ },
+ {
+ "__id__": 2152
+ },
+ {
+ "__id__": 2165
+ },
+ {
+ "__id__": 2167
+ },
+ {
+ "__id__": 2169
+ },
+ {
+ "__id__": 2171
+ },
+ {
+ "__id__": 2173
+ },
+ {
+ "__id__": 2175
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 450,
+ "y": 246
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b79039S64dNIYwe4+Ymtqyl",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2177
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd2",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 265,
+ "height": 513
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -254
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "302681oDbZMJa11B2h1smul",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2127
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2126
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "b72b5f69-e7e2-4eb0-ae43-d668c5b4609a"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Z_user",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 90
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -71,
+ "y": -61
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "84182LahiVM2pj20MRKBveW",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2129
+ },
+ {
+ "__id__": 2130
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2128
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "48c1d635-cb9e-4f2a-96ec-07c30130e107"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2128
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -116,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "icon",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 80
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -70,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ed4bfM1YtFIM42fvgFRwviB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2132
+ },
+ {
+ "__id__": 2133
+ },
+ {
+ "__id__": 2134
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2131
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "aeae578b-3e35-42a8-aa3f-1bcae5b1a84b"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2131
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -110,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "ed057Bgp8FHlJbGI+ljAN7d",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2131
+ },
+ "_enabled": true
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "name",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 90,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -19,
+ "y": -40
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5b47bZvypFM9LdgfH/cn4qM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2136
+ },
+ {
+ "__id__": 2137
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2135
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "小叶子",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2135
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -19,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "id",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 98.42,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -19,
+ "y": -74
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2c21e3OT0BKxpBWGGe97Hk2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2139
+ },
+ {
+ "__id__": 2140
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2138
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "id:1003",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2138
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -19,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "fangzhu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 97,
+ "height": 29
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 32,
+ "y": -103
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "07d7fcLExBCxKKyg7v5GIY+",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 2142
+ },
+ {
+ "__id__": 2143
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2141
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "1517fd6b-e1d5-41e2-9ca6-c0e716735a4f"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2141
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": -16.5,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "GameEnd1",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 78,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -431
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "55d615NZqJMKrO0fYnOTW6c",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2145
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2144
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "58c53b75-bfa3-4b1a-b430-9eda7a788ee7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "score",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 77.86,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -471
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "ebfb8EMcihP1p6FVOZqmkCM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2147
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2146
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "1000",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dayingjia",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 64,
+ "height": 130
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -117,
+ "y": -58
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fb6e54m2wRGebBcsgGSY3h/",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2149
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2148
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cf878df7-9ee1-43b4-b87a-d6a457e4f8f6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zuijiapaoshou",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 86,
+ "height": 85
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 85,
+ "y": -463
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9ea1arTS+lJTKhaM50G0+EU",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2151
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2150
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "e252d253-751b-4c11-ac0d-879a48159947"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "labels",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2153
+ },
+ {
+ "__id__": 2155
+ },
+ {
+ "__id__": 2157
+ },
+ {
+ "__id__": 2159
+ },
+ {
+ "__id__": 2161
+ },
+ {
+ "__id__": 2163
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 10,
+ "y": 13
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "50f6evjEbVDSLoCNcmluWP3",
+ "_active": true,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2152
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -165
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "15e3auabHVH0qzUK66O8vFs",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2154
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2153
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "自摸次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2152
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -210
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "0e2dco0GctIwrh9Cu3akJzk",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2156
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2155
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "接炮次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2152
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -255
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5b19aefdoBIfLjlekg31gxA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2158
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2157
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "点炮次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2152
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -300
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a0282J/tNhHlIU7fGn15Hc0",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2160
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2159
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "暗杠次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2152
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -345
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9fc254d6SdE67Z0y9l2wlwE",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2162
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2161
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "明杠次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2152
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 150,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -115,
+ "y": -390
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b6db1TiopVE9oBgfuEgYRVc",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2164
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2163
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "查叫次数:",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "zimocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -152
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "00a44BPHhJL4o4UI9HffMEY",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2166
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2165
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jiepaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -197
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5ae03MhBgVPM5SiVNtI0ai8",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2168
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2167
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "dianpaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -242
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "99d26Ew6rpLL5u20cA6mkny",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2170
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2169
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "angangcishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -287
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "e17b6nTyP1No67dYMrNe0sL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2172
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2171
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "minggangcishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -332
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "85ee987NDVCiYQ4ne0IPa+2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2174
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2173
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chajiaocishu",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 100,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2125
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 16.68,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 73,
+ "y": -377
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "399461kT3hMVIJg+8tTxFD1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2176
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2175
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "0",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "820870ltMZNDYlvzr+qCDEJ",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2125
+ },
+ "_enabled": true,
+ "_sprIcon": null,
+ "_zhuang": null,
+ "_ready": null,
+ "_offline": null,
+ "_lblName": null,
+ "_lblScore": null,
+ "_scoreBg": null,
+ "_nddayingjia": null,
+ "_voicemsg": null,
+ "_chatBubble": null,
+ "_emoji": null,
+ "_lastChatTime": -1,
+ "_userName": "",
+ "_score": null,
+ "_dayingjia": false,
+ "_isOffline": false,
+ "_isReady": false,
+ "_isZhuang": false,
+ "_userId": null
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1965
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnClose",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1958
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 75,
+ "height": 76
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -597,
+ "y": 316
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f7f4dGmcBNJjrpeDeuLFMXO",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2180
+ },
+ {
+ "__id__": 2181
+ },
+ {
+ "__id__": 2182
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2179
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "2d167769-a80b-4b3d-89f1-b150fa64008e"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "f71d47b7-0979-48b1-ac1a-206076b00220"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2179
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": {
+ "__uuid__": "8f8b031e-48ad-4814-8eb0-0e51c2961831"
+ },
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 2179
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2179
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 8,
+ "_left": 5.5,
+ "_right": 1199.5,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnShare",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1958
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 292,
+ "height": 76
+ },
+ "_children": [
+ {
+ "__id__": 2184
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.9,
+ "_scaleY": 0.9,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -300
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "44410wVvyhHYpRwUYnLwyQe",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2186
+ },
+ {
+ "__id__": 2187
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2183
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 160,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 5
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "dfbbf04GiNC0amg3pumxjbV",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2185
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2184
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "战绩分享",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2183
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "cccb9d35-4492-48ef-87e1-e550adfca1c6"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2183
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 2183
+ }
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1958
+ },
+ "_enabled": true,
+ "isAlignOnce": false,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "reconnect",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 2190
+ },
+ {
+ "__id__": 2194
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d564btrXDhJ87ITPohiON/M",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 2197
+ }
+ ],
+ "_prefab": {
+ "__id__": 2198
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "mask",
+ "_objFlags": 0,
+ "_opacity": 128,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2189
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "9f7f2vz/uBHEotoWGsYu9HL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2191
+ },
+ {
+ "__id__": 2192
+ },
+ {
+ "__id__": 2193
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2190
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2190
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2190
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 200,
+ "_originalHeight": 150
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "loading_image",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2189
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "f9c54fkU9dNG6pEYGpL4kz2",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2195
+ }
+ ],
+ "_prefab": {
+ "__id__": 2196
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2194
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "30a1da14-4bcc-420c-8f6f-2bf454f76f89"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2189
+ },
+ "asset": null,
+ "fileId": "bde53Yi72tFWK4O4cMxitHf",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2189
+ },
+ "_enabled": true,
+ "isAlignOnce": true,
+ "_alignFlags": 45,
+ "_left": 0,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2189
+ },
+ "asset": null,
+ "fileId": "0dcb940Ce5DNoYOfZ2c25wT",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "alert",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 2200
+ },
+ {
+ "__id__": 2204
+ },
+ {
+ "__id__": 2207
+ },
+ {
+ "__id__": 2210
+ },
+ {
+ "__id__": 2213
+ },
+ {
+ "__id__": 2217
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a1813C8U19BtoVhnKxxRXDo",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 2221
+ }
+ ],
+ "_prefab": {
+ "__id__": 2222
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 30,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "fff29dIo3NEN6Cs5MJWaIXH",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2201
+ },
+ {
+ "__id__": 2202
+ }
+ ],
+ "_prefab": {
+ "__id__": 2203
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2200
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2200
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2199
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "f11f9ITrlhJbbqZuUmjNCkT",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 650,
+ "height": 350
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "43853kZft1BApNuWF/I8Hdp",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2205
+ }
+ ],
+ "_prefab": {
+ "__id__": 2206
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2204
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2199
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "53fe9K8U/NBkKtuKqGJLhMF",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 80,
+ "height": 40
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 124
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cc8f8hrVaFALIOI1teM/vCM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2208
+ }
+ ],
+ "_prefab": {
+ "__id__": 2209
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2207
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 40,
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "提示",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2199
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "3019eV6xSVDa6PegorwuCts",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "content",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 560,
+ "height": 30
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 16
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b2557PvSVhJYYHJebg9jxX1",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2211
+ }
+ ],
+ "_prefab": {
+ "__id__": 2212
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2210
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 30,
+ "_fontSize": 30,
+ "_lineHeight": 30,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 3
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2199
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "9b7e9yTEBhDpYqg5dnoWF7Y",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": -120,
+ "y": -102
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "964d8k4K51LmrXWZ5Fj6ME6",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2214
+ },
+ {
+ "__id__": 2215
+ }
+ ],
+ "_prefab": {
+ "__id__": 2216
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2213
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "718e98bd-522b-4ff0-b5cd-e955aa0d620b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2213
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 2213
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2199
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "544aeNqBd5JbZQHsA5SbIFM",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btn_cancel",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2199
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 0.8,
+ "_scaleY": 0.8,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 120,
+ "y": -102
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "b5b15vpgHdFy7pn0AH8+qnt",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2218
+ },
+ {
+ "__id__": 2219
+ }
+ ],
+ "_prefab": {
+ "__id__": 2220
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2217
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "5df0fb42-67cf-4df8-8ba4-539ef53a3ba7"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2217
+ },
+ "_enabled": true,
+ "transition": 3,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 0.95,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 2217
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2199
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "364dcrZY2JP0JgoFg8PvNfI",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2199
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 2199
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2199
+ },
+ "asset": {
+ "__uuid__": "43cab994-4ae6-4348-ba93-23bdcf03c240"
+ },
+ "fileId": "28f35eafd5N9KGxdhNM33sJ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "WaitingConnection",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 2224
+ },
+ {
+ "__id__": 2228
+ },
+ {
+ "__id__": 2231
+ },
+ {
+ "__id__": 2234
+ },
+ {
+ "__id__": 2237
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a80a3ouOeZBoow032YeLTra",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2240
+ },
+ {
+ "__id__": 2241
+ }
+ ],
+ "_prefab": {
+ "__id__": 2242
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Layout",
+ "_objFlags": 0,
+ "_opacity": 63,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2223
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "cdfa14/PPtMY40VG5Le6neB",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2225
+ },
+ {
+ "__id__": 2226
+ }
+ ],
+ "_prefab": {
+ "__id__": 2227
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2224
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2224
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_resize": 0,
+ "_N$layoutType": 0,
+ "_N$padding": 0,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 0,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 0,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2223
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8b98bNahuFNG6hdvCi1NEQZ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2223
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 400,
+ "height": 250
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "2af02ImZLVE5JqMJ7kEbTBK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2229
+ }
+ ],
+ "_prefab": {
+ "__id__": 2230
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2228
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2223
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "08edc5qMi1GNIOPT1/+Q4CE",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 173,
+ "g": 55,
+ "b": 55,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2223
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 156.95,
+ "height": 25
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 78
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "4e8b5ps/X9PZZQKoosgDZuK",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2232
+ }
+ ],
+ "_prefab": {
+ "__id__": 2233
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2231
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 25,
+ "_fontSize": 25,
+ "_lineHeight": 25,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": " 正在登录游戏",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2223
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "6ca22GIGnND4ZgWPY/knc9m",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "loading_image",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2223
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 102,
+ "height": 102
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "af43aJl/wdK+KHr7tzNww3Q",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2235
+ }
+ ],
+ "_prefab": {
+ "__id__": 2236
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2234
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "33a87e63-83e7-4f98-a40e-96feece06697"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "3dad14aa-1217-43e2-a654-c22ae3a85d84"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2223
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "c3fefzKTgRNL5VgfiSpLfOV",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "jzshazi",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2223
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 30,
+ "height": 31
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7d55ePXXsNGO4kIqh+hrCd7",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2238
+ }
+ ],
+ "_prefab": {
+ "__id__": 2239
+ },
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2237
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "30220141-dcea-4b2c-82ea-f6932b703abd"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "3dad14aa-1217-43e2-a654-c22ae3a85d84"
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2223
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "15461fSawBG87CnfB3s49cE",
+ "sync": false
+ },
+ {
+ "__type__": "10e32jDstpLhIGHWrQEq2vN",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2223
+ },
+ "_enabled": true,
+ "target": {
+ "__id__": 2234
+ },
+ "_isShow": false,
+ "lblContent": {
+ "__id__": 2232
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2223
+ },
+ "_enabled": true,
+ "transition": 0,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 214,
+ "g": 214,
+ "b": 214,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 2223
+ }
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 2223
+ },
+ "asset": {
+ "__uuid__": "d5635cb0-01fd-4876-95ea-dd6b7cd3f1b1"
+ },
+ "fileId": "8f12cJXjThP5ILDjCfdQMUv",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Canvas",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_designResolution": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_fitWidth": false,
+ "_fitHeight": true
+ },
+ {
+ "__type__": "0ecea6X+IFIK5XFdJe38hXa",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "leftAtlas": {
+ "__uuid__": "dc0f12a0-949b-450f-9d67-9f1054b115f8"
+ },
+ "rightAtlas": {
+ "__uuid__": "48bbc34e-d304-4947-a0fc-bba08f27205b"
+ },
+ "bottomAtlas": {
+ "__uuid__": "ab2500fa-9ff8-4489-a1c7-5febd50136b7"
+ },
+ "bottomFoldAtlas": {
+ "__uuid__": "c80abbb2-c412-4736-96c6-734930fa9dd9"
+ },
+ "pengPrefabSelf": {
+ "__uuid__": "d6891d75-4cbd-44cd-88ff-7c3b6387946f"
+ },
+ "pengPrefabLeft": {
+ "__uuid__": "65bb91f9-898a-4f92-a37d-fb84bed2cd5c"
+ },
+ "emptyAtlas": {
+ "__uuid__": "bd489e17-6703-43ae-9f9a-f4962e2b5f6a"
+ },
+ "holdsEmpty": [
+ null,
+ {
+ "__uuid__": "37481f79-c4df-464a-bf6c-a75486171fd6"
+ },
+ {
+ "__uuid__": "fa43d352-05ef-40df-87a8-60ddfc6532d8"
+ },
+ {
+ "__uuid__": "bac6f5f0-d06b-41be-8122-b47ea55c8788"
+ }
+ ],
+ "_sides": [],
+ "_pres": [],
+ "_foldPres": []
+ },
+ {
+ "__type__": "7fa8fcvrqFOj6lhh6xHzd3c",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "gameRoot": {
+ "__id__": 166
+ },
+ "prepareRoot": {
+ "__id__": 12
+ },
+ "_myMJArr": [],
+ "_options": [],
+ "_selectedMJ": null,
+ "_chupaiSprite": [],
+ "_mjcount": null,
+ "_gamecount": null,
+ "_hupaiTips": [],
+ "_hupaiLists": [],
+ "_playEfxs": [],
+ "_opts": []
+ },
+ {
+ "__type__": "c12553sxCxG/on0Bz7rkX0f",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_alert": null,
+ "_btnOK": null,
+ "_btnCancel": null,
+ "_title": null,
+ "_content": null,
+ "_onok": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Node",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "83f79BmjLhN8JiC6Acf/rmA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 2248
+ },
+ {
+ "__id__": 2249
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2247
+ },
+ "_enabled": true,
+ "_spriteFrame": null,
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Animation",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2247
+ },
+ "_enabled": true,
+ "_defaultClip": null,
+ "_clips": [
+ {
+ "__uuid__": "a812d421-cef6-49b1-88ec-f64a8d3fda71"
+ },
+ {
+ "__uuid__": "0470db5f-e2e7-4a23-985e-087e2faf1e35"
+ },
+ {
+ "__uuid__": "3172929a-6752-4840-b747-9ab45c973a88"
+ },
+ {
+ "__uuid__": "ee5ff482-e2c9-47e9-972a-ee4e4f8f2adb"
+ }
+ ],
+ "playOnLoad": false
+ }
+]
\ No newline at end of file
diff --git a/client/assets/scenes/mjgame.fire.meta b/client/assets/scenes/mjgame.fire.meta
new file mode 100755
index 0000000..2457b48
--- /dev/null
+++ b/client/assets/scenes/mjgame.fire.meta
@@ -0,0 +1,7 @@
+{
+ "ver": "1.0.0",
+ "uuid": "d092d418-dcdd-4823-a232-eca65fe76fff",
+ "asyncLoadAssets": false,
+ "autoReleaseAssets": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scenes/start.fire b/client/assets/scenes/start.fire
new file mode 100755
index 0000000..7fbbbdc
--- /dev/null
+++ b/client/assets/scenes/start.fire
@@ -0,0 +1,828 @@
+[
+ {
+ "__type__": "cc.SceneAsset",
+ "_name": "",
+ "_objFlags": 0,
+ "_rawFiles": null,
+ "scene": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Scene",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": null,
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 2
+ }
+ ],
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7898c3aa-75db-4523-8b22-e60bf7d83784",
+ "autoReleaseAssets": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Canvas",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 1
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 5
+ },
+ {
+ "__id__": 7
+ },
+ {
+ "__id__": 9
+ },
+ {
+ "__id__": 19
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 640,
+ "y": 360
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "6e6abYFYfREFIcYMoVh+anM",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 21
+ },
+ {
+ "__id__": 22
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "z_loading",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "05b51jmTw5KA5SKk7IGBSpf",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 4
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 3
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "dc18bcef-c6d8-46b3-81a0-d91ce3ed83ea"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 239.17,
+ "height": 35
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -250
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "a98005ZLh5FfZ/bB+80gd97",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 6
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 35,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "正在连接网络...",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "LOGO",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 883,
+ "height": 228
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "c7eef85xWtO/ZZ1KvYzIvqA",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 8
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 7
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "9fde12b5-e35e-4de7-8014-b96690ef1ff0"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "alert",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 0,
+ "height": 0
+ },
+ "_children": [
+ {
+ "__id__": 10
+ },
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 15
+ }
+ ],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -82
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "d148fne/8tP0ZVFSALmlGyL",
+ "_active": false,
+ "_components": [],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_frame_a",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 9
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 250
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "775aa5ovH9N2YtNF4LdRte3",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 11
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 10
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "397f7028-2225-43bd-9c38-80f857a464cb"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 9
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 317,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 54
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "407b5m/riFEl5GlpuggRWzL",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 13
+ },
+ {
+ "__id__": 14
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "_useOriginalSize": false,
+ "_actualFontSize": 35,
+ "_fontSize": 35,
+ "_lineHeight": 35,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_N$string": "版本过旧\n请下载并安装新版本",
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$overflow": 0
+ },
+ {
+ "__type__": "cc.LabelOutline",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_width": 1
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "public_btn_ok",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 9
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 221,
+ "height": 70
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": -43
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "7daacIsDBVNyatX7N0AhzY+",
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ },
+ {
+ "__id__": 17
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "718e98bd-522b-4ff0-b5cd-e955aa0d620b"
+ },
+ "_type": 0,
+ "_sizeMode": 1,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": {
+ "__uuid__": "0a6fef68-87a0-430b-abe7-82b0526bb5bc"
+ }
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "transition": 1,
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 211,
+ "g": 211,
+ "b": 211,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "pressedSprite": null,
+ "hoverSprite": null,
+ "clickEvents": [
+ {
+ "__id__": 18
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": {
+ "__id__": 15
+ }
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 2
+ },
+ "component": "HotUpdate",
+ "handler": "onBtnDownloadClicked",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "splash",
+ "_objFlags": 0,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_cascadeOpacityEnabled": true,
+ "_parent": {
+ "__id__": 2
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_children": [],
+ "_rotationX": 0,
+ "_rotationY": 0,
+ "_scaleX": 1,
+ "_scaleY": 1,
+ "_position": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_skewX": 0,
+ "_skewY": 0,
+ "_localZOrder": 0,
+ "_globalZOrder": 0,
+ "_tag": -1,
+ "_opacityModifyRGB": false,
+ "_id": "5b193eTByZGlZINitwRK/Jf",
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 20
+ }
+ ],
+ "_prefab": null,
+ "groupIndex": 0
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 19
+ },
+ "_enabled": true,
+ "_spriteFrame": {
+ "__uuid__": "3bbe9370-8b06-4169-a040-117a26958bda"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_atlas": null
+ },
+ {
+ "__type__": "cc.Canvas",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_designResolution": {
+ "__type__": "cc.Size",
+ "width": 1280,
+ "height": 720
+ },
+ "_fitWidth": false,
+ "_fitHeight": true
+ },
+ {
+ "__type__": "b688bZYoFdJxKE2TtdmN5SB",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "label": null,
+ "loadingProgess": {
+ "__id__": 6
+ }
+ }
+]
\ No newline at end of file
diff --git a/client/assets/scenes/start.fire.meta b/client/assets/scenes/start.fire.meta
new file mode 100755
index 0000000..7b88313
--- /dev/null
+++ b/client/assets/scenes/start.fire.meta
@@ -0,0 +1,7 @@
+{
+ "ver": "1.0.0",
+ "uuid": "7898c3aa-75db-4523-8b22-e60bf7d83784",
+ "asyncLoadAssets": false,
+ "autoReleaseAssets": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts.meta b/client/assets/scripts.meta
new file mode 100755
index 0000000..7259168
--- /dev/null
+++ b/client/assets/scripts.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "4734c20c-0db8-4eb2-92ea-e692f4d70934",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/3rdparty.meta b/client/assets/scripts/3rdparty.meta
new file mode 100755
index 0000000..9db3298
--- /dev/null
+++ b/client/assets/scripts/3rdparty.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "187ece21-fb00-4bd5-a93a-61573f5f1a4c",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/3rdparty/socket-io.js b/client/assets/scripts/3rdparty/socket-io.js
new file mode 100755
index 0000000..5367e80
--- /dev/null
+++ b/client/assets/scripts/3rdparty/socket-io.js
@@ -0,0 +1,7254 @@
+if (!CC_JSB && !cc.sys.isNative) {
+ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.io = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) {
+ this.extraHeaders = opts.extraHeaders;
+ }
+ }
+
+ this.open();
+ }
+
+ Socket.priorWebsocketSuccess = false;
+
+ /**
+ * Mix in `Emitter`.
+ */
+
+ Emitter(Socket.prototype);
+
+ /**
+ * Protocol version.
+ *
+ * @api public
+ */
+
+ Socket.protocol = parser.protocol; // this is an int
+
+ /**
+ * Expose deps for legacy compatibility
+ * and standalone browser access.
+ */
+
+ Socket.Socket = Socket;
+ Socket.Transport = _dereq_('./transport');
+ Socket.transports = _dereq_('./transports');
+ Socket.parser = _dereq_('engine.io-parser');
+
+ /**
+ * Creates transport of the given type.
+ *
+ * @param {String} transport name
+ * @return {Transport}
+ * @api private
+ */
+
+ Socket.prototype.createTransport = function (name) {
+ debug('creating transport "%s"', name);
+ var query = clone(this.query);
+
+ // append engine.io protocol identifier
+ query.EIO = parser.protocol;
+
+ // transport name
+ query.transport = name;
+
+ // session id if we already have one
+ if (this.id) query.sid = this.id;
+
+ var transport = new transports[name]({
+ agent: this.agent,
+ hostname: this.hostname,
+ port: this.port,
+ secure: this.secure,
+ path: this.path,
+ query: query,
+ forceJSONP: this.forceJSONP,
+ jsonp: this.jsonp,
+ forceBase64: this.forceBase64,
+ enablesXDR: this.enablesXDR,
+ timestampRequests: this.timestampRequests,
+ timestampParam: this.timestampParam,
+ policyPort: this.policyPort,
+ socket: this,
+ pfx: this.pfx,
+ key: this.key,
+ passphrase: this.passphrase,
+ cert: this.cert,
+ ca: this.ca,
+ ciphers: this.ciphers,
+ rejectUnauthorized: this.rejectUnauthorized,
+ perMessageDeflate: this.perMessageDeflate,
+ extraHeaders: this.extraHeaders
+ });
+
+ return transport;
+ };
+
+ function clone (obj) {
+ var o = {};
+ for (var i in obj) {
+ if (obj.hasOwnProperty(i)) {
+ o[i] = obj[i];
+ }
+ }
+ return o;
+ }
+
+ /**
+ * Initializes transport to use and starts probe.
+ *
+ * @api private
+ */
+ Socket.prototype.open = function () {
+ var transport;
+ if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') != -1) {
+ transport = 'websocket';
+ } else if (0 === this.transports.length) {
+ // Emit error on next tick so it can be listened to
+ var self = this;
+ setTimeout(function() {
+ self.emit('error', 'No transports available');
+ }, 0);
+ return;
+ } else {
+ transport = this.transports[0];
+ }
+ this.readyState = 'opening';
+
+ // Retry with the next transport if the transport is disabled (jsonp: false)
+ try {
+ transport = this.createTransport(transport);
+ } catch (e) {
+ this.transports.shift();
+ this.open();
+ return;
+ }
+
+ transport.open();
+ this.setTransport(transport);
+ };
+
+ /**
+ * Sets the current transport. Disables the existing one (if any).
+ *
+ * @api private
+ */
+
+ Socket.prototype.setTransport = function(transport){
+ debug('setting transport %s', transport.name);
+ var self = this;
+
+ if (this.transport) {
+ debug('clearing existing transport %s', this.transport.name);
+ this.transport.removeAllListeners();
+ }
+
+ // set up transport
+ this.transport = transport;
+
+ // set up transport listeners
+ transport
+ .on('drain', function(){
+ self.onDrain();
+ })
+ .on('packet', function(packet){
+ self.onPacket(packet);
+ })
+ .on('error', function(e){
+ self.onError(e);
+ })
+ .on('close', function(){
+ self.onClose('transport close');
+ });
+ };
+
+ /**
+ * Probes a transport.
+ *
+ * @param {String} transport name
+ * @api private
+ */
+
+ Socket.prototype.probe = function (name) {
+ debug('probing transport "%s"', name);
+ var transport = this.createTransport(name, { probe: 1 })
+ , failed = false
+ , self = this;
+
+ Socket.priorWebsocketSuccess = false;
+
+ function onTransportOpen(){
+ if (self.onlyBinaryUpgrades) {
+ var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;
+ failed = failed || upgradeLosesBinary;
+ }
+ if (failed) return;
+
+ debug('probe transport "%s" opened', name);
+ transport.send([{ type: 'ping', data: 'probe' }]);
+ transport.once('packet', function (msg) {
+ if (failed) return;
+ if ('pong' == msg.type && 'probe' == msg.data) {
+ debug('probe transport "%s" pong', name);
+ self.upgrading = true;
+ self.emit('upgrading', transport);
+ if (!transport) return;
+ Socket.priorWebsocketSuccess = 'websocket' == transport.name;
+
+ debug('pausing current transport "%s"', self.transport.name);
+ self.transport.pause(function () {
+ if (failed) return;
+ if ('closed' == self.readyState) return;
+ debug('changing transport and sending upgrade packet');
+
+ cleanup();
+
+ self.setTransport(transport);
+ transport.send([{ type: 'upgrade' }]);
+ self.emit('upgrade', transport);
+ transport = null;
+ self.upgrading = false;
+ self.flush();
+ });
+ } else {
+ debug('probe transport "%s" failed', name);
+ var err = new Error('probe error');
+ err.transport = transport.name;
+ self.emit('upgradeError', err);
+ }
+ });
+ }
+
+ function freezeTransport() {
+ if (failed) return;
+
+ // Any callback called by transport should be ignored since now
+ failed = true;
+
+ cleanup();
+
+ transport.close();
+ transport = null;
+ }
+
+ //Handle any error that happens while probing
+ function onerror(err) {
+ var error = new Error('probe error: ' + err);
+ error.transport = transport.name;
+
+ freezeTransport();
+
+ debug('probe transport "%s" failed because of error: %s', name, err);
+
+ self.emit('upgradeError', error);
+ }
+
+ function onTransportClose(){
+ onerror("transport closed");
+ }
+
+ //When the socket is closed while we're probing
+ function onclose(){
+ onerror("socket closed");
+ }
+
+ //When the socket is upgraded while we're probing
+ function onupgrade(to){
+ if (transport && to.name != transport.name) {
+ debug('"%s" works - aborting "%s"', to.name, transport.name);
+ freezeTransport();
+ }
+ }
+
+ //Remove all listeners on the transport and on self
+ function cleanup(){
+ transport.removeListener('open', onTransportOpen);
+ transport.removeListener('error', onerror);
+ transport.removeListener('close', onTransportClose);
+ self.removeListener('close', onclose);
+ self.removeListener('upgrading', onupgrade);
+ }
+
+ transport.once('open', onTransportOpen);
+ transport.once('error', onerror);
+ transport.once('close', onTransportClose);
+
+ this.once('close', onclose);
+ this.once('upgrading', onupgrade);
+
+ transport.open();
+
+ };
+
+ /**
+ * Called when connection is deemed open.
+ *
+ * @api public
+ */
+
+ Socket.prototype.onOpen = function () {
+ debug('socket open');
+ this.readyState = 'open';
+ Socket.priorWebsocketSuccess = 'websocket' == this.transport.name;
+ this.emit('open');
+ this.flush();
+
+ // we check for `readyState` in case an `open`
+ // listener already closed the socket
+ if ('open' == this.readyState && this.upgrade && this.transport.pause) {
+ debug('starting upgrade probes');
+ for (var i = 0, l = this.upgrades.length; i < l; i++) {
+ this.probe(this.upgrades[i]);
+ }
+ }
+ };
+
+ /**
+ * Handles a packet.
+ *
+ * @api private
+ */
+
+ Socket.prototype.onPacket = function (packet) {
+ if ('opening' == this.readyState || 'open' == this.readyState) {
+ debug('socket receive: type "%s", data "%s"', packet.type, packet.data);
+
+ this.emit('packet', packet);
+
+ // Socket is live - any packet counts
+ this.emit('heartbeat');
+
+ switch (packet.type) {
+ case 'open':
+ this.onHandshake(parsejson(packet.data));
+ break;
+
+ case 'pong':
+ this.setPing();
+ this.emit('pong');
+ break;
+
+ case 'error':
+ var err = new Error('server error');
+ err.code = packet.data;
+ this.onError(err);
+ break;
+
+ case 'message':
+ this.emit('data', packet.data);
+ this.emit('message', packet.data);
+ break;
+ }
+ } else {
+ debug('packet received with socket readyState "%s"', this.readyState);
+ }
+ };
+
+ /**
+ * Called upon handshake completion.
+ *
+ * @param {Object} handshake obj
+ * @api private
+ */
+
+ Socket.prototype.onHandshake = function (data) {
+ this.emit('handshake', data);
+ this.id = data.sid;
+ this.transport.query.sid = data.sid;
+ this.upgrades = this.filterUpgrades(data.upgrades);
+ this.pingInterval = data.pingInterval;
+ this.pingTimeout = data.pingTimeout;
+ this.onOpen();
+ // In case open handler closes socket
+ if ('closed' == this.readyState) return;
+ this.setPing();
+
+ // Prolong liveness of socket on heartbeat
+ this.removeListener('heartbeat', this.onHeartbeat);
+ this.on('heartbeat', this.onHeartbeat);
+ };
+
+ /**
+ * Resets ping timeout.
+ *
+ * @api private
+ */
+
+ Socket.prototype.onHeartbeat = function (timeout) {
+ clearTimeout(this.pingTimeoutTimer);
+ var self = this;
+ self.pingTimeoutTimer = setTimeout(function () {
+ if ('closed' == self.readyState) return;
+ self.onClose('ping timeout');
+ }, timeout || (self.pingInterval + self.pingTimeout));
+ };
+
+ /**
+ * Pings server every `this.pingInterval` and expects response
+ * within `this.pingTimeout` or closes connection.
+ *
+ * @api private
+ */
+
+ Socket.prototype.setPing = function () {
+ var self = this;
+ clearTimeout(self.pingIntervalTimer);
+ self.pingIntervalTimer = setTimeout(function () {
+ debug('writing ping packet - expecting pong within %sms', self.pingTimeout);
+ self.ping();
+ self.onHeartbeat(self.pingTimeout);
+ }, self.pingInterval);
+ };
+
+ /**
+ * Sends a ping packet.
+ *
+ * @api private
+ */
+
+ Socket.prototype.ping = function () {
+ var self = this;
+ this.sendPacket('ping', function(){
+ self.emit('ping');
+ });
+ };
+
+ /**
+ * Called on `drain` event
+ *
+ * @api private
+ */
+
+ Socket.prototype.onDrain = function() {
+ this.writeBuffer.splice(0, this.prevBufferLen);
+
+ // setting prevBufferLen = 0 is very important
+ // for example, when upgrading, upgrade packet is sent over,
+ // and a nonzero prevBufferLen could cause problems on `drain`
+ this.prevBufferLen = 0;
+
+ if (0 === this.writeBuffer.length) {
+ this.emit('drain');
+ } else {
+ this.flush();
+ }
+ };
+
+ /**
+ * Flush write buffers.
+ *
+ * @api private
+ */
+
+ Socket.prototype.flush = function () {
+ if ('closed' != this.readyState && this.transport.writable &&
+ !this.upgrading && this.writeBuffer.length) {
+ debug('flushing %d packets in socket', this.writeBuffer.length);
+ this.transport.send(this.writeBuffer);
+ // keep track of current length of writeBuffer
+ // splice writeBuffer and callbackBuffer on `drain`
+ this.prevBufferLen = this.writeBuffer.length;
+ this.emit('flush');
+ }
+ };
+
+ /**
+ * Sends a message.
+ *
+ * @param {String} message.
+ * @param {Function} callback function.
+ * @param {Object} options.
+ * @return {Socket} for chaining.
+ * @api public
+ */
+
+ Socket.prototype.write =
+ Socket.prototype.send = function (msg, options, fn) {
+ this.sendPacket('message', msg, options, fn);
+ return this;
+ };
+
+ /**
+ * Sends a packet.
+ *
+ * @param {String} packet type.
+ * @param {String} data.
+ * @param {Object} options.
+ * @param {Function} callback function.
+ * @api private
+ */
+
+ Socket.prototype.sendPacket = function (type, data, options, fn) {
+ if('function' == typeof data) {
+ fn = data;
+ data = undefined;
+ }
+
+ if ('function' == typeof options) {
+ fn = options;
+ options = null;
+ }
+
+ if ('closing' == this.readyState || 'closed' == this.readyState) {
+ return;
+ }
+
+ options = options || {};
+ options.compress = false !== options.compress;
+
+ var packet = {
+ type: type,
+ data: data,
+ options: options
+ };
+ this.emit('packetCreate', packet);
+ this.writeBuffer.push(packet);
+ if (fn) this.once('flush', fn);
+ this.flush();
+ };
+
+ /**
+ * Closes the connection.
+ *
+ * @api private
+ */
+
+ Socket.prototype.close = function () {
+ if ('opening' == this.readyState || 'open' == this.readyState) {
+ this.readyState = 'closing';
+
+ var self = this;
+
+ if (this.writeBuffer.length) {
+ this.once('drain', function() {
+ if (this.upgrading) {
+ waitForUpgrade();
+ } else {
+ close();
+ }
+ });
+ } else if (this.upgrading) {
+ waitForUpgrade();
+ } else {
+ close();
+ }
+ }
+
+ function close() {
+ self.onClose('forced close');
+ debug('socket closing - telling transport to close');
+ self.transport.close();
+ }
+
+ function cleanupAndClose() {
+ self.removeListener('upgrade', cleanupAndClose);
+ self.removeListener('upgradeError', cleanupAndClose);
+ close();
+ }
+
+ function waitForUpgrade() {
+ // wait for upgrade to finish since we can't send packets while pausing a transport
+ self.once('upgrade', cleanupAndClose);
+ self.once('upgradeError', cleanupAndClose);
+ }
+
+ return this;
+ };
+
+ /**
+ * Called upon transport error
+ *
+ * @api private
+ */
+
+ Socket.prototype.onError = function (err) {
+ debug('socket error %j', err);
+ Socket.priorWebsocketSuccess = false;
+ this.emit('error', err);
+ this.onClose('transport error', err);
+ };
+
+ /**
+ * Called upon transport close.
+ *
+ * @api private
+ */
+
+ Socket.prototype.onClose = function (reason, desc) {
+ if ('opening' == this.readyState || 'open' == this.readyState || 'closing' == this.readyState) {
+ debug('socket close with reason: "%s"', reason);
+ var self = this;
+
+ // clear timers
+ clearTimeout(this.pingIntervalTimer);
+ clearTimeout(this.pingTimeoutTimer);
+
+ // stop event from firing again for transport
+ this.transport.removeAllListeners('close');
+
+ // ensure transport won't stay open
+ this.transport.close();
+
+ // ignore further transport communication
+ this.transport.removeAllListeners();
+
+ // set ready state
+ this.readyState = 'closed';
+
+ // clear session id
+ this.id = null;
+
+ // emit close event
+ this.emit('close', reason, desc);
+
+ // clean buffers after, so users can still
+ // grab the buffers on `close` event
+ self.writeBuffer = [];
+ self.prevBufferLen = 0;
+ }
+ };
+
+ /**
+ * Filters upgrades, returning only those matching client transports.
+ *
+ * @param {Array} server upgrades
+ * @api private
+ *
+ */
+
+ Socket.prototype.filterUpgrades = function (upgrades) {
+ var filteredUpgrades = [];
+ for (var i = 0, j = upgrades.length; i';
+ iframe = document.createElement(html);
+ } catch (e) {
+ iframe = document.createElement('iframe');
+ iframe.name = self.iframeId;
+ iframe.src = 'javascript:0';
+ }
+
+ iframe.id = self.iframeId;
+
+ self.form.appendChild(iframe);
+ self.iframe = iframe;
+ }
+
+ initIframe();
+
+ // escape \n to prevent it from being converted into \r\n by some UAs
+ // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side
+ data = data.replace(rEscapedNewline, '\\\n');
+ this.area.value = data.replace(rNewline, '\\n');
+
+ try {
+ this.form.submit();
+ } catch(e) {}
+
+ if (this.iframe.attachEvent) {
+ this.iframe.onreadystatechange = function(){
+ if (self.iframe.readyState == 'complete') {
+ complete();
+ }
+ };
+ } else {
+ this.iframe.onload = complete;
+ }
+ };
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{"./polling":8,"component-inherit":16}],7:[function(_dereq_,module,exports){
+ (function (global){
+ /**
+ * Module requirements.
+ */
+
+ var XMLHttpRequest = _dereq_('xmlhttprequest-ssl');
+ var Polling = _dereq_('./polling');
+ var Emitter = _dereq_('component-emitter');
+ var inherit = _dereq_('component-inherit');
+ var debug = _dereq_('debug')('engine.io-client:polling-xhr');
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = XHR;
+ module.exports.Request = Request;
+
+ /**
+ * Empty function
+ */
+
+ function empty(){}
+
+ /**
+ * XHR Polling constructor.
+ *
+ * @param {Object} opts
+ * @api public
+ */
+
+ function XHR(opts){
+ Polling.call(this, opts);
+
+ if (global.location) {
+ var isSSL = 'https:' == location.protocol;
+ var port = location.port;
+
+ // some user agents have empty `location.port`
+ if (!port) {
+ port = isSSL ? 443 : 80;
+ }
+
+ this.xd = opts.hostname != global.location.hostname ||
+ port != opts.port;
+ this.xs = opts.secure != isSSL;
+ } else {
+ this.extraHeaders = opts.extraHeaders;
+ }
+ }
+
+ /**
+ * Inherits from Polling.
+ */
+
+ inherit(XHR, Polling);
+
+ /**
+ * XHR supports binary
+ */
+
+ XHR.prototype.supportsBinary = true;
+
+ /**
+ * Creates a request.
+ *
+ * @param {String} method
+ * @api private
+ */
+
+ XHR.prototype.request = function(opts){
+ opts = opts || {};
+ opts.uri = this.uri();
+ opts.xd = this.xd;
+ opts.xs = this.xs;
+ opts.agent = this.agent || false;
+ opts.supportsBinary = this.supportsBinary;
+ opts.enablesXDR = this.enablesXDR;
+
+ // SSL options for Node.js client
+ opts.pfx = this.pfx;
+ opts.key = this.key;
+ opts.passphrase = this.passphrase;
+ opts.cert = this.cert;
+ opts.ca = this.ca;
+ opts.ciphers = this.ciphers;
+ opts.rejectUnauthorized = this.rejectUnauthorized;
+
+ // other options for Node.js client
+ opts.extraHeaders = this.extraHeaders;
+
+ return new Request(opts);
+ };
+
+ /**
+ * Sends data.
+ *
+ * @param {String} data to send.
+ * @param {Function} called upon flush.
+ * @api private
+ */
+
+ XHR.prototype.doWrite = function(data, fn){
+ var isBinary = typeof data !== 'string' && data !== undefined;
+ var req = this.request({ method: 'POST', data: data, isBinary: isBinary });
+ var self = this;
+ req.on('success', fn);
+ req.on('error', function(err){
+ self.onError('xhr post error', err);
+ });
+ this.sendXhr = req;
+ };
+
+ /**
+ * Starts a poll cycle.
+ *
+ * @api private
+ */
+
+ XHR.prototype.doPoll = function(){
+ debug('xhr poll');
+ var req = this.request();
+ var self = this;
+ req.on('data', function(data){
+ self.onData(data);
+ });
+ req.on('error', function(err){
+ self.onError('xhr poll error', err);
+ });
+ this.pollXhr = req;
+ };
+
+ /**
+ * Request constructor
+ *
+ * @param {Object} options
+ * @api public
+ */
+
+ function Request(opts){
+ this.method = opts.method || 'GET';
+ this.uri = opts.uri;
+ this.xd = !!opts.xd;
+ this.xs = !!opts.xs;
+ this.async = false !== opts.async;
+ this.data = undefined != opts.data ? opts.data : null;
+ this.agent = opts.agent;
+ this.isBinary = opts.isBinary;
+ this.supportsBinary = opts.supportsBinary;
+ this.enablesXDR = opts.enablesXDR;
+
+ // SSL options for Node.js client
+ this.pfx = opts.pfx;
+ this.key = opts.key;
+ this.passphrase = opts.passphrase;
+ this.cert = opts.cert;
+ this.ca = opts.ca;
+ this.ciphers = opts.ciphers;
+ this.rejectUnauthorized = opts.rejectUnauthorized;
+
+ // other options for Node.js client
+ this.extraHeaders = opts.extraHeaders;
+
+ this.create();
+ }
+
+ /**
+ * Mix in `Emitter`.
+ */
+
+ Emitter(Request.prototype);
+
+ /**
+ * Creates the XHR object and sends the request.
+ *
+ * @api private
+ */
+
+ Request.prototype.create = function(){
+ var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };
+
+ // SSL options for Node.js client
+ opts.pfx = this.pfx;
+ opts.key = this.key;
+ opts.passphrase = this.passphrase;
+ opts.cert = this.cert;
+ opts.ca = this.ca;
+ opts.ciphers = this.ciphers;
+ opts.rejectUnauthorized = this.rejectUnauthorized;
+
+ var xhr = this.xhr = new XMLHttpRequest(opts);
+ var self = this;
+
+ try {
+ debug('xhr open %s: %s', this.method, this.uri);
+ xhr.open(this.method, this.uri, this.async);
+ try {
+ if (this.extraHeaders) {
+ xhr.setDisableHeaderCheck(true);
+ for (var i in this.extraHeaders) {
+ if (this.extraHeaders.hasOwnProperty(i)) {
+ xhr.setRequestHeader(i, this.extraHeaders[i]);
+ }
+ }
+ }
+ } catch (e) {}
+ if (this.supportsBinary) {
+ // This has to be done after open because Firefox is stupid
+ // http://stackoverflow.com/questions/13216903/get-binary-data-with-xmlhttprequest-in-a-firefox-extension
+ xhr.responseType = 'arraybuffer';
+ }
+
+ if ('POST' == this.method) {
+ try {
+ if (this.isBinary) {
+ xhr.setRequestHeader('Content-type', 'application/octet-stream');
+ } else {
+ xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');
+ }
+ } catch (e) {}
+ }
+
+ // ie6 check
+ if ('withCredentials' in xhr) {
+ xhr.withCredentials = true;
+ }
+
+ if (this.hasXDR()) {
+ xhr.onload = function(){
+ self.onLoad();
+ };
+ xhr.onerror = function(){
+ self.onError(xhr.responseText);
+ };
+ } else {
+ xhr.onreadystatechange = function(){
+ if (4 != xhr.readyState) return;
+ if (200 == xhr.status || 1223 == xhr.status) {
+ self.onLoad();
+ } else {
+ // make sure the `error` event handler that's user-set
+ // does not throw in the same tick and gets caught here
+ setTimeout(function(){
+ self.onError(xhr.status);
+ }, 0);
+ }
+ };
+ }
+
+ debug('xhr data %s', this.data);
+ xhr.send(this.data);
+ } catch (e) {
+ // Need to defer since .create() is called directly fhrom the constructor
+ // and thus the 'error' event can only be only bound *after* this exception
+ // occurs. Therefore, also, we cannot throw here at all.
+ setTimeout(function() {
+ self.onError(e);
+ }, 0);
+ return;
+ }
+
+ if (global.document) {
+ this.index = Request.requestsCount++;
+ Request.requests[this.index] = this;
+ }
+ };
+
+ /**
+ * Called upon successful response.
+ *
+ * @api private
+ */
+
+ Request.prototype.onSuccess = function(){
+ this.emit('success');
+ this.cleanup();
+ };
+
+ /**
+ * Called if we have data.
+ *
+ * @api private
+ */
+
+ Request.prototype.onData = function(data){
+ this.emit('data', data);
+ this.onSuccess();
+ };
+
+ /**
+ * Called upon error.
+ *
+ * @api private
+ */
+
+ Request.prototype.onError = function(err){
+ this.emit('error', err);
+ this.cleanup(true);
+ };
+
+ /**
+ * Cleans up house.
+ *
+ * @api private
+ */
+
+ Request.prototype.cleanup = function(fromError){
+ if ('undefined' == typeof this.xhr || null === this.xhr) {
+ return;
+ }
+ // xmlhttprequest
+ if (this.hasXDR()) {
+ this.xhr.onload = this.xhr.onerror = empty;
+ } else {
+ this.xhr.onreadystatechange = empty;
+ }
+
+ if (fromError) {
+ try {
+ this.xhr.abort();
+ } catch(e) {}
+ }
+
+ if (global.document) {
+ delete Request.requests[this.index];
+ }
+
+ this.xhr = null;
+ };
+
+ /**
+ * Called upon load.
+ *
+ * @api private
+ */
+
+ Request.prototype.onLoad = function(){
+ var data;
+ try {
+ var contentType;
+ try {
+ contentType = this.xhr.getResponseHeader('Content-Type').split(';')[0];
+ } catch (e) {}
+ if (contentType === 'application/octet-stream') {
+ data = this.xhr.response;
+ } else {
+ if (!this.supportsBinary) {
+ data = this.xhr.responseText;
+ } else {
+ try {
+ data = String.fromCharCode.apply(null, new Uint8Array(this.xhr.response));
+ } catch (e) {
+ var ui8Arr = new Uint8Array(this.xhr.response);
+ var dataArray = [];
+ for (var idx = 0, length = ui8Arr.length; idx < length; idx++) {
+ dataArray.push(ui8Arr[idx]);
+ }
+
+ data = String.fromCharCode.apply(null, dataArray);
+ }
+ }
+ }
+ } catch (e) {
+ this.onError(e);
+ }
+ if (null != data) {
+ this.onData(data);
+ }
+ };
+
+ /**
+ * Check if it has XDomainRequest.
+ *
+ * @api private
+ */
+
+ Request.prototype.hasXDR = function(){
+ return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR;
+ };
+
+ /**
+ * Aborts the request.
+ *
+ * @api public
+ */
+
+ Request.prototype.abort = function(){
+ this.cleanup();
+ };
+
+ /**
+ * Aborts pending requests when unloading the window. This is needed to prevent
+ * memory leaks (e.g. when using IE) and to ensure that no spurious error is
+ * emitted.
+ */
+
+ if (global.document) {
+ Request.requestsCount = 0;
+ Request.requests = {};
+ if (global.attachEvent) {
+ global.attachEvent('onunload', unloadHandler);
+ } else if (global.addEventListener) {
+ global.addEventListener('beforeunload', unloadHandler, false);
+ }
+ }
+
+ function unloadHandler() {
+ for (var i in Request.requests) {
+ if (Request.requests.hasOwnProperty(i)) {
+ Request.requests[i].abort();
+ }
+ }
+ }
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{"./polling":8,"component-emitter":15,"component-inherit":16,"debug":17,"xmlhttprequest-ssl":10}],8:[function(_dereq_,module,exports){
+ /**
+ * Module dependencies.
+ */
+
+ var Transport = _dereq_('../transport');
+ var parseqs = _dereq_('parseqs');
+ var parser = _dereq_('engine.io-parser');
+ var inherit = _dereq_('component-inherit');
+ var yeast = _dereq_('yeast');
+ var debug = _dereq_('debug')('engine.io-client:polling');
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = Polling;
+
+ /**
+ * Is XHR2 supported?
+ */
+
+ var hasXHR2 = (function() {
+ var XMLHttpRequest = _dereq_('xmlhttprequest-ssl');
+ var xhr = new XMLHttpRequest({ xdomain: false });
+ return null != xhr.responseType;
+ })();
+
+ /**
+ * Polling interface.
+ *
+ * @param {Object} opts
+ * @api private
+ */
+
+ function Polling(opts){
+ var forceBase64 = (opts && opts.forceBase64);
+ if (!hasXHR2 || forceBase64) {
+ this.supportsBinary = false;
+ }
+ Transport.call(this, opts);
+ }
+
+ /**
+ * Inherits from Transport.
+ */
+
+ inherit(Polling, Transport);
+
+ /**
+ * Transport name.
+ */
+
+ Polling.prototype.name = 'polling';
+
+ /**
+ * Opens the socket (triggers polling). We write a PING message to determine
+ * when the transport is open.
+ *
+ * @api private
+ */
+
+ Polling.prototype.doOpen = function(){
+ this.poll();
+ };
+
+ /**
+ * Pauses polling.
+ *
+ * @param {Function} callback upon buffers are flushed and transport is paused
+ * @api private
+ */
+
+ Polling.prototype.pause = function(onPause){
+ var pending = 0;
+ var self = this;
+
+ this.readyState = 'pausing';
+
+ function pause(){
+ debug('paused');
+ self.readyState = 'paused';
+ onPause();
+ }
+
+ if (this.polling || !this.writable) {
+ var total = 0;
+
+ if (this.polling) {
+ debug('we are currently polling - waiting to pause');
+ total++;
+ this.once('pollComplete', function(){
+ debug('pre-pause polling complete');
+ --total || pause();
+ });
+ }
+
+ if (!this.writable) {
+ debug('we are currently writing - waiting to pause');
+ total++;
+ this.once('drain', function(){
+ debug('pre-pause writing complete');
+ --total || pause();
+ });
+ }
+ } else {
+ pause();
+ }
+ };
+
+ /**
+ * Starts polling cycle.
+ *
+ * @api public
+ */
+
+ Polling.prototype.poll = function(){
+ debug('polling');
+ this.polling = true;
+ this.doPoll();
+ this.emit('poll');
+ };
+
+ /**
+ * Overloads onData to detect payloads.
+ *
+ * @api private
+ */
+
+ Polling.prototype.onData = function(data){
+ var self = this;
+ debug('polling got data %s', data);
+ var callback = function(packet, index, total) {
+ // if its the first message we consider the transport open
+ if ('opening' == self.readyState) {
+ self.onOpen();
+ }
+
+ // if its a close packet, we close the ongoing requests
+ if ('close' == packet.type) {
+ self.onClose();
+ return false;
+ }
+
+ // otherwise bypass onData and handle the message
+ self.onPacket(packet);
+ };
+
+ // decode payload
+ parser.decodePayload(data, this.socket.binaryType, callback);
+
+ // if an event did not trigger closing
+ if ('closed' != this.readyState) {
+ // if we got data we're not polling
+ this.polling = false;
+ this.emit('pollComplete');
+
+ if ('open' == this.readyState) {
+ this.poll();
+ } else {
+ debug('ignoring poll - transport state "%s"', this.readyState);
+ }
+ }
+ };
+
+ /**
+ * For polling, send a close packet.
+ *
+ * @api private
+ */
+
+ Polling.prototype.doClose = function(){
+ var self = this;
+
+ function close(){
+ debug('writing close packet');
+ self.write([{ type: 'close' }]);
+ }
+
+ if ('open' == this.readyState) {
+ debug('transport open - closing');
+ close();
+ } else {
+ // in case we're trying to close while
+ // handshaking is in progress (GH-164)
+ debug('transport not open - deferring close');
+ this.once('open', close);
+ }
+ };
+
+ /**
+ * Writes a packets payload.
+ *
+ * @param {Array} data packets
+ * @param {Function} drain callback
+ * @api private
+ */
+
+ Polling.prototype.write = function(packets){
+ var self = this;
+ this.writable = false;
+ var callbackfn = function() {
+ self.writable = true;
+ self.emit('drain');
+ };
+
+ var self = this;
+ parser.encodePayload(packets, this.supportsBinary, function(data) {
+ self.doWrite(data, callbackfn);
+ });
+ };
+
+ /**
+ * Generates uri for connection.
+ *
+ * @api private
+ */
+
+ Polling.prototype.uri = function(){
+ var query = this.query || {};
+ var schema = this.secure ? 'https' : 'http';
+ var port = '';
+
+ // cache busting is forced
+ if (false !== this.timestampRequests) {
+ query[this.timestampParam] = yeast();
+ }
+
+ if (!this.supportsBinary && !query.sid) {
+ query.b64 = 1;
+ }
+
+ query = parseqs.encode(query);
+
+ // avoid port if default for schema
+ if (this.port && (('https' == schema && this.port != 443) ||
+ ('http' == schema && this.port != 80))) {
+ port = ':' + this.port;
+ }
+
+ // prepend ? to query
+ if (query.length) {
+ query = '?' + query;
+ }
+
+ var ipv6 = this.hostname.indexOf(':') !== -1;
+ return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;
+ };
+
+ },{"../transport":4,"component-inherit":16,"debug":17,"engine.io-parser":19,"parseqs":27,"xmlhttprequest-ssl":10,"yeast":30}],9:[function(_dereq_,module,exports){
+ (function (global){
+ /**
+ * Module dependencies.
+ */
+
+ var Transport = _dereq_('../transport');
+ var parser = _dereq_('engine.io-parser');
+ var parseqs = _dereq_('parseqs');
+ var inherit = _dereq_('component-inherit');
+ var yeast = _dereq_('yeast');
+ var debug = _dereq_('debug')('engine.io-client:websocket');
+ var BrowserWebSocket = global.WebSocket || global.MozWebSocket;
+
+ /**
+ * Get either the `WebSocket` or `MozWebSocket` globals
+ * in the browser or try to resolve WebSocket-compatible
+ * interface exposed by `ws` for Node-like environment.
+ */
+
+ var WebSocket = BrowserWebSocket;
+ if (!WebSocket && typeof window === 'undefined') {
+ try {
+ WebSocket = _dereq_('ws');
+ } catch (e) { }
+ }
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = WS;
+
+ /**
+ * WebSocket transport constructor.
+ *
+ * @api {Object} connection options
+ * @api public
+ */
+
+ function WS(opts){
+ var forceBase64 = (opts && opts.forceBase64);
+ if (forceBase64) {
+ this.supportsBinary = false;
+ }
+ this.perMessageDeflate = opts.perMessageDeflate;
+ Transport.call(this, opts);
+ }
+
+ /**
+ * Inherits from Transport.
+ */
+
+ inherit(WS, Transport);
+
+ /**
+ * Transport name.
+ *
+ * @api public
+ */
+
+ WS.prototype.name = 'websocket';
+
+ /*
+ * WebSockets support binary
+ */
+
+ WS.prototype.supportsBinary = true;
+
+ /**
+ * Opens socket.
+ *
+ * @api private
+ */
+
+ WS.prototype.doOpen = function(){
+ if (!this.check()) {
+ // let probe timeout
+ return;
+ }
+
+ var self = this;
+ var uri = this.uri();
+ var protocols = void(0);
+ var opts = {
+ agent: this.agent,
+ perMessageDeflate: this.perMessageDeflate
+ };
+
+ // SSL options for Node.js client
+ opts.pfx = this.pfx;
+ opts.key = this.key;
+ opts.passphrase = this.passphrase;
+ opts.cert = this.cert;
+ opts.ca = this.ca;
+ opts.ciphers = this.ciphers;
+ opts.rejectUnauthorized = this.rejectUnauthorized;
+ if (this.extraHeaders) {
+ opts.headers = this.extraHeaders;
+ }
+
+ this.ws = BrowserWebSocket ? new WebSocket(uri) : new WebSocket(uri, protocols, opts);
+
+ if (this.ws.binaryType === undefined) {
+ this.supportsBinary = false;
+ }
+
+ if (this.ws.supports && this.ws.supports.binary) {
+ this.supportsBinary = true;
+ this.ws.binaryType = 'buffer';
+ } else {
+ this.ws.binaryType = 'arraybuffer';
+ }
+
+ this.addEventListeners();
+ };
+
+ /**
+ * Adds event listeners to the socket
+ *
+ * @api private
+ */
+
+ WS.prototype.addEventListeners = function(){
+ var self = this;
+
+ this.ws.onopen = function(){
+ self.onOpen();
+ };
+ this.ws.onclose = function(){
+ self.onClose();
+ };
+ this.ws.onmessage = function(ev){
+ self.onData(ev.data);
+ };
+ this.ws.onerror = function(e){
+ self.onError('websocket error', e);
+ };
+ };
+
+ /**
+ * Override `onData` to use a timer on iOS.
+ * See: https://gist.github.com/mloughran/2052006
+ *
+ * @api private
+ */
+
+ if ('undefined' != typeof navigator
+ && /iPad|iPhone|iPod/i.test(navigator.userAgent)) {
+ WS.prototype.onData = function(data){
+ var self = this;
+ setTimeout(function(){
+ Transport.prototype.onData.call(self, data);
+ }, 0);
+ };
+ }
+
+ /**
+ * Writes data to socket.
+ *
+ * @param {Array} array of packets.
+ * @api private
+ */
+
+ WS.prototype.write = function(packets){
+ var self = this;
+ this.writable = false;
+
+ // encodePacket efficient as it uses WS framing
+ // no need for encodePayload
+ var total = packets.length;
+ for (var i = 0, l = total; i < l; i++) {
+ (function(packet) {
+ parser.encodePacket(packet, self.supportsBinary, function(data) {
+ if (!BrowserWebSocket) {
+ // always create a new object (GH-437)
+ var opts = {};
+ if (packet.options) {
+ opts.compress = packet.options.compress;
+ }
+
+ if (self.perMessageDeflate) {
+ var len = 'string' == typeof data ? global.Buffer.byteLength(data) : data.length;
+ if (len < self.perMessageDeflate.threshold) {
+ opts.compress = false;
+ }
+ }
+ }
+
+ //Sometimes the websocket has already been closed but the browser didn't
+ //have a chance of informing us about it yet, in that case send will
+ //throw an error
+ try {
+ if (BrowserWebSocket) {
+ // TypeError is thrown when passing the second argument on Safari
+ self.ws.send(data);
+ } else {
+ self.ws.send(data, opts);
+ }
+ } catch (e){
+ debug('websocket closed before onclose event');
+ }
+
+ --total || done();
+ });
+ })(packets[i]);
+ }
+
+ function done(){
+ self.emit('flush');
+
+ // fake drain
+ // defer to next tick to allow Socket to clear writeBuffer
+ setTimeout(function(){
+ self.writable = true;
+ self.emit('drain');
+ }, 0);
+ }
+ };
+
+ /**
+ * Called upon close
+ *
+ * @api private
+ */
+
+ WS.prototype.onClose = function(){
+ Transport.prototype.onClose.call(this);
+ };
+
+ /**
+ * Closes socket.
+ *
+ * @api private
+ */
+
+ WS.prototype.doClose = function(){
+ if (typeof this.ws !== 'undefined') {
+ this.ws.close();
+ }
+ };
+
+ /**
+ * Generates uri for connection.
+ *
+ * @api private
+ */
+
+ WS.prototype.uri = function(){
+ var query = this.query || {};
+ var schema = this.secure ? 'wss' : 'ws';
+ var port = '';
+
+ // avoid port if default for schema
+ if (this.port && (('wss' == schema && this.port != 443)
+ || ('ws' == schema && this.port != 80))) {
+ port = ':' + this.port;
+ }
+
+ // append timestamp to URI
+ if (this.timestampRequests) {
+ query[this.timestampParam] = yeast();
+ }
+
+ // communicate binary support capabilities
+ if (!this.supportsBinary) {
+ query.b64 = 1;
+ }
+
+ query = parseqs.encode(query);
+
+ // prepend ? to query
+ if (query.length) {
+ query = '?' + query;
+ }
+
+ var ipv6 = this.hostname.indexOf(':') !== -1;
+ return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;
+ };
+
+ /**
+ * Feature detection for WebSocket.
+ *
+ * @return {Boolean} whether this transport is available.
+ * @api public
+ */
+
+ WS.prototype.check = function(){
+ return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name);
+ };
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{"../transport":4,"component-inherit":16,"debug":17,"engine.io-parser":19,"parseqs":27,"ws":undefined,"yeast":30}],10:[function(_dereq_,module,exports){
+ // browser shim for xmlhttprequest module
+ var hasCORS = _dereq_('has-cors');
+
+ module.exports = function(opts) {
+ var xdomain = opts.xdomain;
+
+ // scheme must be same when usign XDomainRequest
+ // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
+ var xscheme = opts.xscheme;
+
+ // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.
+ // https://github.com/Automattic/engine.io-client/pull/217
+ var enablesXDR = opts.enablesXDR;
+
+ // XMLHttpRequest can be disabled on IE
+ try {
+ if ('undefined' != typeof XMLHttpRequest && (!xdomain || hasCORS)) {
+ return new XMLHttpRequest();
+ }
+ } catch (e) { }
+
+ // Use XDomainRequest for IE8 if enablesXDR is true
+ // because loading bar keeps flashing when using jsonp-polling
+ // https://github.com/yujiosaka/socke.io-ie8-loading-example
+ try {
+ if ('undefined' != typeof XDomainRequest && !xscheme && enablesXDR) {
+ return new XDomainRequest();
+ }
+ } catch (e) { }
+
+ if (!xdomain) {
+ try {
+ return new ActiveXObject('Microsoft.XMLHTTP');
+ } catch(e) { }
+ }
+ }
+
+ },{"has-cors":22}],11:[function(_dereq_,module,exports){
+ module.exports = after
+
+ function after(count, callback, err_cb) {
+ var bail = false
+ err_cb = err_cb || noop
+ proxy.count = count
+
+ return (count === 0) ? callback() : proxy
+
+ function proxy(err, result) {
+ if (proxy.count <= 0) {
+ throw new Error('after called too many times')
+ }
+ --proxy.count
+
+ // after first error, rest are passed to err_cb
+ if (err) {
+ bail = true
+ callback(err)
+ // future error callbacks will go to error handler
+ callback = err_cb
+ } else if (proxy.count === 0 && !bail) {
+ callback(null, result)
+ }
+ }
+ }
+
+ function noop() {}
+
+ },{}],12:[function(_dereq_,module,exports){
+ /**
+ * An abstraction for slicing an arraybuffer even when
+ * ArrayBuffer.prototype.slice is not supported
+ *
+ * @api public
+ */
+
+ module.exports = function(arraybuffer, start, end) {
+ var bytes = arraybuffer.byteLength;
+ start = start || 0;
+ end = end || bytes;
+
+ if (arraybuffer.slice) { return arraybuffer.slice(start, end); }
+
+ if (start < 0) { start += bytes; }
+ if (end < 0) { end += bytes; }
+ if (end > bytes) { end = bytes; }
+
+ if (start >= bytes || start >= end || bytes === 0) {
+ return new ArrayBuffer(0);
+ }
+
+ var abv = new Uint8Array(arraybuffer);
+ var result = new Uint8Array(end - start);
+ for (var i = start, ii = 0; i < end; i++, ii++) {
+ result[ii] = abv[i];
+ }
+ return result.buffer;
+ };
+
+ },{}],13:[function(_dereq_,module,exports){
+ /*
+ * base64-arraybuffer
+ * https://github.com/niklasvh/base64-arraybuffer
+ *
+ * Copyright (c) 2012 Niklas von Hertzen
+ * Licensed under the MIT license.
+ */
+ (function(chars){
+ "use strict";
+
+ exports.encode = function(arraybuffer) {
+ var bytes = new Uint8Array(arraybuffer),
+ i, len = bytes.length, base64 = "";
+
+ for (i = 0; i < len; i+=3) {
+ base64 += chars[bytes[i] >> 2];
+ base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
+ base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
+ base64 += chars[bytes[i + 2] & 63];
+ }
+
+ if ((len % 3) === 2) {
+ base64 = base64.substring(0, base64.length - 1) + "=";
+ } else if (len % 3 === 1) {
+ base64 = base64.substring(0, base64.length - 2) + "==";
+ }
+
+ return base64;
+ };
+
+ exports.decode = function(base64) {
+ var bufferLength = base64.length * 0.75,
+ len = base64.length, i, p = 0,
+ encoded1, encoded2, encoded3, encoded4;
+
+ if (base64[base64.length - 1] === "=") {
+ bufferLength--;
+ if (base64[base64.length - 2] === "=") {
+ bufferLength--;
+ }
+ }
+
+ var arraybuffer = new ArrayBuffer(bufferLength),
+ bytes = new Uint8Array(arraybuffer);
+
+ for (i = 0; i < len; i+=4) {
+ encoded1 = chars.indexOf(base64[i]);
+ encoded2 = chars.indexOf(base64[i+1]);
+ encoded3 = chars.indexOf(base64[i+2]);
+ encoded4 = chars.indexOf(base64[i+3]);
+
+ bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
+ bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
+ bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
+ }
+
+ return arraybuffer;
+ };
+ })("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
+
+ },{}],14:[function(_dereq_,module,exports){
+ (function (global){
+ /**
+ * Create a blob builder even when vendor prefixes exist
+ */
+
+ var BlobBuilder = global.BlobBuilder
+ || global.WebKitBlobBuilder
+ || global.MSBlobBuilder
+ || global.MozBlobBuilder;
+
+ /**
+ * Check if Blob constructor is supported
+ */
+
+ var blobSupported = (function() {
+ try {
+ var a = new Blob(['hi']);
+ return a.size === 2;
+ } catch(e) {
+ return false;
+ }
+ })();
+
+ /**
+ * Check if Blob constructor supports ArrayBufferViews
+ * Fails in Safari 6, so we need to map to ArrayBuffers there.
+ */
+
+ var blobSupportsArrayBufferView = blobSupported && (function() {
+ try {
+ var b = new Blob([new Uint8Array([1,2])]);
+ return b.size === 2;
+ } catch(e) {
+ return false;
+ }
+ })();
+
+ /**
+ * Check if BlobBuilder is supported
+ */
+
+ var blobBuilderSupported = BlobBuilder
+ && BlobBuilder.prototype.append
+ && BlobBuilder.prototype.getBlob;
+
+ /**
+ * Helper function that maps ArrayBufferViews to ArrayBuffers
+ * Used by BlobBuilder constructor and old browsers that didn't
+ * support it in the Blob constructor.
+ */
+
+ function mapArrayBufferViews(ary) {
+ for (var i = 0; i < ary.length; i++) {
+ var chunk = ary[i];
+ if (chunk.buffer instanceof ArrayBuffer) {
+ var buf = chunk.buffer;
+
+ // if this is a subarray, make a copy so we only
+ // include the subarray region from the underlying buffer
+ if (chunk.byteLength !== buf.byteLength) {
+ var copy = new Uint8Array(chunk.byteLength);
+ copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));
+ buf = copy.buffer;
+ }
+
+ ary[i] = buf;
+ }
+ }
+ }
+
+ function BlobBuilderConstructor(ary, options) {
+ options = options || {};
+
+ var bb = new BlobBuilder();
+ mapArrayBufferViews(ary);
+
+ for (var i = 0; i < ary.length; i++) {
+ bb.append(ary[i]);
+ }
+
+ return (options.type) ? bb.getBlob(options.type) : bb.getBlob();
+ };
+
+ function BlobConstructor(ary, options) {
+ mapArrayBufferViews(ary);
+ return new Blob(ary, options || {});
+ };
+
+ module.exports = (function() {
+ if (blobSupported) {
+ return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;
+ } else if (blobBuilderSupported) {
+ return BlobBuilderConstructor;
+ } else {
+ return undefined;
+ }
+ })();
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{}],15:[function(_dereq_,module,exports){
+
+ /**
+ * Expose `Emitter`.
+ */
+
+ module.exports = Emitter;
+
+ /**
+ * Initialize a new `Emitter`.
+ *
+ * @api public
+ */
+
+ function Emitter(obj) {
+ if (obj) return mixin(obj);
+ };
+
+ /**
+ * Mixin the emitter properties.
+ *
+ * @param {Object} obj
+ * @return {Object}
+ * @api private
+ */
+
+ function mixin(obj) {
+ for (var key in Emitter.prototype) {
+ obj[key] = Emitter.prototype[key];
+ }
+ return obj;
+ }
+
+ /**
+ * Listen on the given `event` with `fn`.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.on =
+ Emitter.prototype.addEventListener = function(event, fn){
+ this._callbacks = this._callbacks || {};
+ (this._callbacks[event] = this._callbacks[event] || [])
+ .push(fn);
+ return this;
+ };
+
+ /**
+ * Adds an `event` listener that will be invoked a single
+ * time then automatically removed.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.once = function(event, fn){
+ var self = this;
+ this._callbacks = this._callbacks || {};
+
+ function on() {
+ self.off(event, on);
+ fn.apply(this, arguments);
+ }
+
+ on.fn = fn;
+ this.on(event, on);
+ return this;
+ };
+
+ /**
+ * Remove the given callback for `event` or all
+ * registered callbacks.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.off =
+ Emitter.prototype.removeListener =
+ Emitter.prototype.removeAllListeners =
+ Emitter.prototype.removeEventListener = function(event, fn){
+ this._callbacks = this._callbacks || {};
+
+ // all
+ if (0 == arguments.length) {
+ this._callbacks = {};
+ return this;
+ }
+
+ // specific event
+ var callbacks = this._callbacks[event];
+ if (!callbacks) return this;
+
+ // remove all handlers
+ if (1 == arguments.length) {
+ delete this._callbacks[event];
+ return this;
+ }
+
+ // remove specific handler
+ var cb;
+ for (var i = 0; i < callbacks.length; i++) {
+ cb = callbacks[i];
+ if (cb === fn || cb.fn === fn) {
+ callbacks.splice(i, 1);
+ break;
+ }
+ }
+ return this;
+ };
+
+ /**
+ * Emit `event` with the given args.
+ *
+ * @param {String} event
+ * @param {Mixed} ...
+ * @return {Emitter}
+ */
+
+ Emitter.prototype.emit = function(event){
+ this._callbacks = this._callbacks || {};
+ var args = [].slice.call(arguments, 1)
+ , callbacks = this._callbacks[event];
+
+ if (callbacks) {
+ callbacks = callbacks.slice(0);
+ for (var i = 0, len = callbacks.length; i < len; ++i) {
+ callbacks[i].apply(this, args);
+ }
+ }
+
+ return this;
+ };
+
+ /**
+ * Return array of callbacks for `event`.
+ *
+ * @param {String} event
+ * @return {Array}
+ * @api public
+ */
+
+ Emitter.prototype.listeners = function(event){
+ this._callbacks = this._callbacks || {};
+ return this._callbacks[event] || [];
+ };
+
+ /**
+ * Check if this emitter has `event` handlers.
+ *
+ * @param {String} event
+ * @return {Boolean}
+ * @api public
+ */
+
+ Emitter.prototype.hasListeners = function(event){
+ return !! this.listeners(event).length;
+ };
+
+ },{}],16:[function(_dereq_,module,exports){
+
+ module.exports = function(a, b){
+ var fn = function(){};
+ fn.prototype = b.prototype;
+ a.prototype = new fn;
+ a.prototype.constructor = a;
+ };
+ },{}],17:[function(_dereq_,module,exports){
+
+ /**
+ * This is the web browser implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+ exports = module.exports = _dereq_('./debug');
+ exports.log = log;
+ exports.formatArgs = formatArgs;
+ exports.save = save;
+ exports.load = load;
+ exports.useColors = useColors;
+ exports.storage = 'undefined' != typeof chrome
+ && 'undefined' != typeof chrome.storage
+ ? chrome.storage.local
+ : localstorage();
+
+ /**
+ * Colors.
+ */
+
+ exports.colors = [
+ 'lightseagreen',
+ 'forestgreen',
+ 'goldenrod',
+ 'dodgerblue',
+ 'darkorchid',
+ 'crimson'
+ ];
+
+ /**
+ * Currently only WebKit-based Web Inspectors, Firefox >= v31,
+ * and the Firebug extension (any Firefox version) are known
+ * to support "%c" CSS customizations.
+ *
+ * TODO: add a `localStorage` variable to explicitly enable/disable colors
+ */
+
+ function useColors() {
+ // is webkit? http://stackoverflow.com/a/16459606/376773
+ return ('WebkitAppearance' in document.documentElement.style) ||
+ // is firebug? http://stackoverflow.com/a/398120/376773
+ (window.console && (console.firebug || (console.exception && console.table))) ||
+ // is firefox >= v31?
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
+ (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31);
+ }
+
+ /**
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
+ */
+
+ exports.formatters.j = function(v) {
+ return JSON.stringify(v);
+ };
+
+
+ /**
+ * Colorize log arguments if enabled.
+ *
+ * @api public
+ */
+
+ function formatArgs() {
+ var args = arguments;
+ var useColors = this.useColors;
+
+ args[0] = (useColors ? '%c' : '')
+ + this.namespace
+ + (useColors ? ' %c' : ' ')
+ + args[0]
+ + (useColors ? '%c ' : ' ')
+ + '+' + exports.humanize(this.diff);
+
+ if (!useColors) return args;
+
+ var c = 'color: ' + this.color;
+ args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));
+
+ // the final "%c" is somewhat tricky, because there could be other
+ // arguments passed either before or after the %c, so we need to
+ // figure out the correct index to insert the CSS into
+ var index = 0;
+ var lastC = 0;
+ args[0].replace(/%[a-z%]/g, function(match) {
+ if ('%%' === match) return;
+ index++;
+ if ('%c' === match) {
+ // we only are interested in the *last* %c
+ // (the user may have provided their own)
+ lastC = index;
+ }
+ });
+
+ args.splice(lastC, 0, c);
+ return args;
+ }
+
+ /**
+ * Invokes `console.log()` when available.
+ * No-op when `console.log` is not a "function".
+ *
+ * @api public
+ */
+
+ function log() {
+ // this hackery is required for IE8/9, where
+ // the `console.log` function doesn't have 'apply'
+ return 'object' === typeof console
+ && console.log
+ && Function.prototype.apply.call(console.log, console, arguments);
+ }
+
+ /**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+
+ function save(namespaces) {
+ try {
+ if (null == namespaces) {
+ exports.storage.removeItem('debug');
+ } else {
+ exports.storage.debug = namespaces;
+ }
+ } catch(e) {}
+ }
+
+ /**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+
+ function load() {
+ var r;
+ try {
+ r = exports.storage.debug;
+ } catch(e) {}
+ return r;
+ }
+
+ /**
+ * Enable namespaces listed in `localStorage.debug` initially.
+ */
+
+ exports.enable(load());
+
+ /**
+ * Localstorage attempts to return the localstorage.
+ *
+ * This is necessary because safari throws
+ * when a user disables cookies/localstorage
+ * and you attempt to access it.
+ *
+ * @return {LocalStorage}
+ * @api private
+ */
+
+ function localstorage(){
+ try {
+ return window.localStorage;
+ } catch (e) {}
+ }
+
+ },{"./debug":18}],18:[function(_dereq_,module,exports){
+
+ /**
+ * This is the common logic for both the Node.js and web browser
+ * implementations of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+ exports = module.exports = debug;
+ exports.coerce = coerce;
+ exports.disable = disable;
+ exports.enable = enable;
+ exports.enabled = enabled;
+ exports.humanize = _dereq_('ms');
+
+ /**
+ * The currently active debug mode names, and names to skip.
+ */
+
+ exports.names = [];
+ exports.skips = [];
+
+ /**
+ * Map of special "%n" handling functions, for the debug "format" argument.
+ *
+ * Valid key names are a single, lowercased letter, i.e. "n".
+ */
+
+ exports.formatters = {};
+
+ /**
+ * Previously assigned color.
+ */
+
+ var prevColor = 0;
+
+ /**
+ * Previous log timestamp.
+ */
+
+ var prevTime;
+
+ /**
+ * Select a color.
+ *
+ * @return {Number}
+ * @api private
+ */
+
+ function selectColor() {
+ return exports.colors[prevColor++ % exports.colors.length];
+ }
+
+ /**
+ * Create a debugger with the given `namespace`.
+ *
+ * @param {String} namespace
+ * @return {Function}
+ * @api public
+ */
+
+ function debug(namespace) {
+
+ // define the `disabled` version
+ function disabled() {
+ }
+ disabled.enabled = false;
+
+ // define the `enabled` version
+ function enabled() {
+
+ var self = enabled;
+
+ // set `diff` timestamp
+ var curr = +new Date();
+ var ms = curr - (prevTime || curr);
+ self.diff = ms;
+ self.prev = prevTime;
+ self.curr = curr;
+ prevTime = curr;
+
+ // add the `color` if not set
+ if (null == self.useColors) self.useColors = exports.useColors();
+ if (null == self.color && self.useColors) self.color = selectColor();
+
+ var args = Array.prototype.slice.call(arguments);
+
+ args[0] = exports.coerce(args[0]);
+
+ if ('string' !== typeof args[0]) {
+ // anything else let's inspect with %o
+ args = ['%o'].concat(args);
+ }
+
+ // apply any `formatters` transformations
+ var index = 0;
+ args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {
+ // if we encounter an escaped % then don't increase the array index
+ if (match === '%%') return match;
+ index++;
+ var formatter = exports.formatters[format];
+ if ('function' === typeof formatter) {
+ var val = args[index];
+ match = formatter.call(self, val);
+
+ // now we need to remove `args[index]` since it's inlined in the `format`
+ args.splice(index, 1);
+ index--;
+ }
+ return match;
+ });
+
+ if ('function' === typeof exports.formatArgs) {
+ args = exports.formatArgs.apply(self, args);
+ }
+ var logFn = enabled.log || exports.log || console.log.bind(console);
+ logFn.apply(self, args);
+ }
+ enabled.enabled = true;
+
+ var fn = exports.enabled(namespace) ? enabled : disabled;
+
+ fn.namespace = namespace;
+
+ return fn;
+ }
+
+ /**
+ * Enables a debug mode by namespaces. This can include modes
+ * separated by a colon and wildcards.
+ *
+ * @param {String} namespaces
+ * @api public
+ */
+
+ function enable(namespaces) {
+ exports.save(namespaces);
+
+ var split = (namespaces || '').split(/[\s,]+/);
+ var len = split.length;
+
+ for (var i = 0; i < len; i++) {
+ if (!split[i]) continue; // ignore empty strings
+ namespaces = split[i].replace(/\*/g, '.*?');
+ if (namespaces[0] === '-') {
+ exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
+ } else {
+ exports.names.push(new RegExp('^' + namespaces + '$'));
+ }
+ }
+ }
+
+ /**
+ * Disable debug output.
+ *
+ * @api public
+ */
+
+ function disable() {
+ exports.enable('');
+ }
+
+ /**
+ * Returns true if the given mode name is enabled, false otherwise.
+ *
+ * @param {String} name
+ * @return {Boolean}
+ * @api public
+ */
+
+ function enabled(name) {
+ var i, len;
+ for (i = 0, len = exports.skips.length; i < len; i++) {
+ if (exports.skips[i].test(name)) {
+ return false;
+ }
+ }
+ for (i = 0, len = exports.names.length; i < len; i++) {
+ if (exports.names[i].test(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Coerce `val`.
+ *
+ * @param {Mixed} val
+ * @return {Mixed}
+ * @api private
+ */
+
+ function coerce(val) {
+ if (val instanceof Error) return val.stack || val.message;
+ return val;
+ }
+
+ },{"ms":25}],19:[function(_dereq_,module,exports){
+ (function (global){
+ /**
+ * Module dependencies.
+ */
+
+ var keys = _dereq_('./keys');
+ var hasBinary = _dereq_('has-binary');
+ var sliceBuffer = _dereq_('arraybuffer.slice');
+ var base64encoder = _dereq_('base64-arraybuffer');
+ var after = _dereq_('after');
+ var utf8 = _dereq_('utf8');
+
+ /**
+ * Check if we are running an android browser. That requires us to use
+ * ArrayBuffer with polling transports...
+ *
+ * http://ghinda.net/jpeg-blob-ajax-android/
+ */
+
+ var isAndroid = navigator.userAgent.match(/Android/i);
+
+ /**
+ * Check if we are running in PhantomJS.
+ * Uploading a Blob with PhantomJS does not work correctly, as reported here:
+ * https://github.com/ariya/phantomjs/issues/11395
+ * @type boolean
+ */
+ var isPhantomJS = /PhantomJS/i.test(navigator.userAgent);
+
+ /**
+ * When true, avoids using Blobs to encode payloads.
+ * @type boolean
+ */
+ var dontSendBlobs = isAndroid || isPhantomJS;
+
+ /**
+ * Current protocol version.
+ */
+
+ exports.protocol = 3;
+
+ /**
+ * Packet types.
+ */
+
+ var packets = exports.packets = {
+ open: 0 // non-ws
+ , close: 1 // non-ws
+ , ping: 2
+ , pong: 3
+ , message: 4
+ , upgrade: 5
+ , noop: 6
+ };
+
+ var packetslist = keys(packets);
+
+ /**
+ * Premade error packet.
+ */
+
+ var err = { type: 'error', data: 'parser error' };
+
+ /**
+ * Create a blob api even for blob builder when vendor prefixes exist
+ */
+
+ var Blob = _dereq_('blob');
+
+ /**
+ * Encodes a packet.
+ *
+ * [ ]
+ *
+ * Example:
+ *
+ * 5hello world
+ * 3
+ * 4
+ *
+ * Binary is encoded in an identical principle
+ *
+ * @api private
+ */
+
+ exports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {
+ if ('function' == typeof supportsBinary) {
+ callback = supportsBinary;
+ supportsBinary = false;
+ }
+
+ if ('function' == typeof utf8encode) {
+ callback = utf8encode;
+ utf8encode = null;
+ }
+
+ var data = (packet.data === undefined)
+ ? undefined
+ : packet.data.buffer || packet.data;
+
+ if (global.ArrayBuffer && data instanceof ArrayBuffer) {
+ return encodeArrayBuffer(packet, supportsBinary, callback);
+ } else if (Blob && data instanceof global.Blob) {
+ return encodeBlob(packet, supportsBinary, callback);
+ }
+
+ // might be an object with { base64: true, data: dataAsBase64String }
+ if (data && data.base64) {
+ return encodeBase64Object(packet, callback);
+ }
+
+ // Sending data as a utf-8 string
+ var encoded = packets[packet.type];
+
+ // data fragment is optional
+ if (undefined !== packet.data) {
+ encoded += utf8encode ? utf8.encode(String(packet.data)) : String(packet.data);
+ }
+
+ return callback('' + encoded);
+
+ };
+
+ function encodeBase64Object(packet, callback) {
+ // packet data is an object { base64: true, data: dataAsBase64String }
+ var message = 'b' + exports.packets[packet.type] + packet.data.data;
+ return callback(message);
+ }
+
+ /**
+ * Encode packet helpers for binary types
+ */
+
+ function encodeArrayBuffer(packet, supportsBinary, callback) {
+ if (!supportsBinary) {
+ return exports.encodeBase64Packet(packet, callback);
+ }
+
+ var data = packet.data;
+ var contentArray = new Uint8Array(data);
+ var resultBuffer = new Uint8Array(1 + data.byteLength);
+
+ resultBuffer[0] = packets[packet.type];
+ for (var i = 0; i < contentArray.length; i++) {
+ resultBuffer[i+1] = contentArray[i];
+ }
+
+ return callback(resultBuffer.buffer);
+ }
+
+ function encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {
+ if (!supportsBinary) {
+ return exports.encodeBase64Packet(packet, callback);
+ }
+
+ var fr = new FileReader();
+ fr.onload = function() {
+ packet.data = fr.result;
+ exports.encodePacket(packet, supportsBinary, true, callback);
+ };
+ return fr.readAsArrayBuffer(packet.data);
+ }
+
+ function encodeBlob(packet, supportsBinary, callback) {
+ if (!supportsBinary) {
+ return exports.encodeBase64Packet(packet, callback);
+ }
+
+ if (dontSendBlobs) {
+ return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);
+ }
+
+ var length = new Uint8Array(1);
+ length[0] = packets[packet.type];
+ var blob = new Blob([length.buffer, packet.data]);
+
+ return callback(blob);
+ }
+
+ /**
+ * Encodes a packet with binary data in a base64 string
+ *
+ * @param {Object} packet, has `type` and `data`
+ * @return {String} base64 encoded message
+ */
+
+ exports.encodeBase64Packet = function(packet, callback) {
+ var message = 'b' + exports.packets[packet.type];
+ if (Blob && packet.data instanceof global.Blob) {
+ var fr = new FileReader();
+ fr.onload = function() {
+ var b64 = fr.result.split(',')[1];
+ callback(message + b64);
+ };
+ return fr.readAsDataURL(packet.data);
+ }
+
+ var b64data;
+ try {
+ b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));
+ } catch (e) {
+ // iPhone Safari doesn't let you apply with typed arrays
+ var typed = new Uint8Array(packet.data);
+ var basic = new Array(typed.length);
+ for (var i = 0; i < typed.length; i++) {
+ basic[i] = typed[i];
+ }
+ b64data = String.fromCharCode.apply(null, basic);
+ }
+ message += global.btoa(b64data);
+ return callback(message);
+ };
+
+ /**
+ * Decodes a packet. Changes format to Blob if requested.
+ *
+ * @return {Object} with `type` and `data` (if any)
+ * @api private
+ */
+
+ exports.decodePacket = function (data, binaryType, utf8decode) {
+ // String data
+ if (typeof data == 'string' || data === undefined) {
+ if (data.charAt(0) == 'b') {
+ return exports.decodeBase64Packet(data.substr(1), binaryType);
+ }
+
+ if (utf8decode) {
+ try {
+ data = utf8.decode(data);
+ } catch (e) {
+ return err;
+ }
+ }
+ var type = data.charAt(0);
+
+ if (Number(type) != type || !packetslist[type]) {
+ return err;
+ }
+
+ if (data.length > 1) {
+ return { type: packetslist[type], data: data.substring(1) };
+ } else {
+ return { type: packetslist[type] };
+ }
+ }
+
+ var asArray = new Uint8Array(data);
+ var type = asArray[0];
+ var rest = sliceBuffer(data, 1);
+ if (Blob && binaryType === 'blob') {
+ rest = new Blob([rest]);
+ }
+ return { type: packetslist[type], data: rest };
+ };
+
+ /**
+ * Decodes a packet encoded in a base64 string
+ *
+ * @param {String} base64 encoded message
+ * @return {Object} with `type` and `data` (if any)
+ */
+
+ exports.decodeBase64Packet = function(msg, binaryType) {
+ var type = packetslist[msg.charAt(0)];
+ if (!global.ArrayBuffer) {
+ return { type: type, data: { base64: true, data: msg.substr(1) } };
+ }
+
+ var data = base64encoder.decode(msg.substr(1));
+
+ if (binaryType === 'blob' && Blob) {
+ data = new Blob([data]);
+ }
+
+ return { type: type, data: data };
+ };
+
+ /**
+ * Encodes multiple messages (payload).
+ *
+ * :data
+ *
+ * Example:
+ *
+ * 11:hello world2:hi
+ *
+ * If any contents are binary, they will be encoded as base64 strings. Base64
+ * encoded strings are marked with a b before the length specifier
+ *
+ * @param {Array} packets
+ * @api private
+ */
+
+ exports.encodePayload = function (packets, supportsBinary, callback) {
+ if (typeof supportsBinary == 'function') {
+ callback = supportsBinary;
+ supportsBinary = null;
+ }
+
+ var isBinary = hasBinary(packets);
+
+ if (supportsBinary && isBinary) {
+ if (Blob && !dontSendBlobs) {
+ return exports.encodePayloadAsBlob(packets, callback);
+ }
+
+ return exports.encodePayloadAsArrayBuffer(packets, callback);
+ }
+
+ if (!packets.length) {
+ return callback('0:');
+ }
+
+ function setLengthHeader(message) {
+ return message.length + ':' + message;
+ }
+
+ function encodeOne(packet, doneCallback) {
+ exports.encodePacket(packet, !isBinary ? false : supportsBinary, true, function(message) {
+ doneCallback(null, setLengthHeader(message));
+ });
+ }
+
+ map(packets, encodeOne, function(err, results) {
+ return callback(results.join(''));
+ });
+ };
+
+ /**
+ * Async array map using after
+ */
+
+ function map(ary, each, done) {
+ var result = new Array(ary.length);
+ var next = after(ary.length, done);
+
+ var eachWithIndex = function(i, el, cb) {
+ each(el, function(error, msg) {
+ result[i] = msg;
+ cb(error, result);
+ });
+ };
+
+ for (var i = 0; i < ary.length; i++) {
+ eachWithIndex(i, ary[i], next);
+ }
+ }
+
+ /*
+ * Decodes data when a payload is maybe expected. Possible binary contents are
+ * decoded from their base64 representation
+ *
+ * @param {String} data, callback method
+ * @api public
+ */
+
+ exports.decodePayload = function (data, binaryType, callback) {
+ if (typeof data != 'string') {
+ return exports.decodePayloadAsBinary(data, binaryType, callback);
+ }
+
+ if (typeof binaryType === 'function') {
+ callback = binaryType;
+ binaryType = null;
+ }
+
+ var packet;
+ if (data == '') {
+ // parser error - ignoring payload
+ return callback(err, 0, 1);
+ }
+
+ var length = ''
+ , n, msg;
+
+ for (var i = 0, l = data.length; i < l; i++) {
+ var chr = data.charAt(i);
+
+ if (':' != chr) {
+ length += chr;
+ } else {
+ if ('' == length || (length != (n = Number(length)))) {
+ // parser error - ignoring payload
+ return callback(err, 0, 1);
+ }
+
+ msg = data.substr(i + 1, n);
+
+ if (length != msg.length) {
+ // parser error - ignoring payload
+ return callback(err, 0, 1);
+ }
+
+ if (msg.length) {
+ packet = exports.decodePacket(msg, binaryType, true);
+
+ if (err.type == packet.type && err.data == packet.data) {
+ // parser error in individual packet - ignoring payload
+ return callback(err, 0, 1);
+ }
+
+ var ret = callback(packet, i + n, l);
+ if (false === ret) return;
+ }
+
+ // advance cursor
+ i += n;
+ length = '';
+ }
+ }
+
+ if (length != '') {
+ // parser error - ignoring payload
+ return callback(err, 0, 1);
+ }
+
+ };
+
+ /**
+ * Encodes multiple messages (payload) as binary.
+ *
+ * <1 = binary, 0 = string>[...]
+ *
+ * Example:
+ * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers
+ *
+ * @param {Array} packets
+ * @return {ArrayBuffer} encoded payload
+ * @api private
+ */
+
+ exports.encodePayloadAsArrayBuffer = function(packets, callback) {
+ if (!packets.length) {
+ return callback(new ArrayBuffer(0));
+ }
+
+ function encodeOne(packet, doneCallback) {
+ exports.encodePacket(packet, true, true, function(data) {
+ return doneCallback(null, data);
+ });
+ }
+
+ map(packets, encodeOne, function(err, encodedPackets) {
+ var totalLength = encodedPackets.reduce(function(acc, p) {
+ var len;
+ if (typeof p === 'string'){
+ len = p.length;
+ } else {
+ len = p.byteLength;
+ }
+ return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2
+ }, 0);
+
+ var resultArray = new Uint8Array(totalLength);
+
+ var bufferIndex = 0;
+ encodedPackets.forEach(function(p) {
+ var isString = typeof p === 'string';
+ var ab = p;
+ if (isString) {
+ var view = new Uint8Array(p.length);
+ for (var i = 0; i < p.length; i++) {
+ view[i] = p.charCodeAt(i);
+ }
+ ab = view.buffer;
+ }
+
+ if (isString) { // not true binary
+ resultArray[bufferIndex++] = 0;
+ } else { // true binary
+ resultArray[bufferIndex++] = 1;
+ }
+
+ var lenStr = ab.byteLength.toString();
+ for (var i = 0; i < lenStr.length; i++) {
+ resultArray[bufferIndex++] = parseInt(lenStr[i]);
+ }
+ resultArray[bufferIndex++] = 255;
+
+ var view = new Uint8Array(ab);
+ for (var i = 0; i < view.length; i++) {
+ resultArray[bufferIndex++] = view[i];
+ }
+ });
+
+ return callback(resultArray.buffer);
+ });
+ };
+
+ /**
+ * Encode as Blob
+ */
+
+ exports.encodePayloadAsBlob = function(packets, callback) {
+ function encodeOne(packet, doneCallback) {
+ exports.encodePacket(packet, true, true, function(encoded) {
+ var binaryIdentifier = new Uint8Array(1);
+ binaryIdentifier[0] = 1;
+ if (typeof encoded === 'string') {
+ var view = new Uint8Array(encoded.length);
+ for (var i = 0; i < encoded.length; i++) {
+ view[i] = encoded.charCodeAt(i);
+ }
+ encoded = view.buffer;
+ binaryIdentifier[0] = 0;
+ }
+
+ var len = (encoded instanceof ArrayBuffer)
+ ? encoded.byteLength
+ : encoded.size;
+
+ var lenStr = len.toString();
+ var lengthAry = new Uint8Array(lenStr.length + 1);
+ for (var i = 0; i < lenStr.length; i++) {
+ lengthAry[i] = parseInt(lenStr[i]);
+ }
+ lengthAry[lenStr.length] = 255;
+
+ if (Blob) {
+ var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);
+ doneCallback(null, blob);
+ }
+ });
+ }
+
+ map(packets, encodeOne, function(err, results) {
+ return callback(new Blob(results));
+ });
+ };
+
+ /*
+ * Decodes data when a payload is maybe expected. Strings are decoded by
+ * interpreting each byte as a key code for entries marked to start with 0. See
+ * description of encodePayloadAsBinary
+ *
+ * @param {ArrayBuffer} data, callback method
+ * @api public
+ */
+
+ exports.decodePayloadAsBinary = function (data, binaryType, callback) {
+ if (typeof binaryType === 'function') {
+ callback = binaryType;
+ binaryType = null;
+ }
+
+ var bufferTail = data;
+ var buffers = [];
+
+ var numberTooLong = false;
+ while (bufferTail.byteLength > 0) {
+ var tailArray = new Uint8Array(bufferTail);
+ var isString = tailArray[0] === 0;
+ var msgLength = '';
+
+ for (var i = 1; ; i++) {
+ if (tailArray[i] == 255) break;
+
+ if (msgLength.length > 310) {
+ numberTooLong = true;
+ break;
+ }
+
+ msgLength += tailArray[i];
+ }
+
+ if(numberTooLong) return callback(err, 0, 1);
+
+ bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);
+ msgLength = parseInt(msgLength);
+
+ var msg = sliceBuffer(bufferTail, 0, msgLength);
+ if (isString) {
+ try {
+ msg = String.fromCharCode.apply(null, new Uint8Array(msg));
+ } catch (e) {
+ // iPhone Safari doesn't let you apply to typed arrays
+ var typed = new Uint8Array(msg);
+ msg = '';
+ for (var i = 0; i < typed.length; i++) {
+ msg += String.fromCharCode(typed[i]);
+ }
+ }
+ }
+
+ buffers.push(msg);
+ bufferTail = sliceBuffer(bufferTail, msgLength);
+ }
+
+ var total = buffers.length;
+ buffers.forEach(function(buffer, i) {
+ callback(exports.decodePacket(buffer, binaryType, true), i, total);
+ });
+ };
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{"./keys":20,"after":11,"arraybuffer.slice":12,"base64-arraybuffer":13,"blob":14,"has-binary":21,"utf8":29}],20:[function(_dereq_,module,exports){
+
+ /**
+ * Gets the keys for an object.
+ *
+ * @return {Array} keys
+ * @api private
+ */
+
+ module.exports = Object.keys || function keys (obj){
+ var arr = [];
+ var has = Object.prototype.hasOwnProperty;
+
+ for (var i in obj) {
+ if (has.call(obj, i)) {
+ arr.push(i);
+ }
+ }
+ return arr;
+ };
+
+ },{}],21:[function(_dereq_,module,exports){
+ (function (global){
+
+ /*
+ * Module requirements.
+ */
+
+ var isArray = _dereq_('isarray');
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = hasBinary;
+
+ /**
+ * Checks for binary data.
+ *
+ * Right now only Buffer and ArrayBuffer are supported..
+ *
+ * @param {Object} anything
+ * @api public
+ */
+
+ function hasBinary(data) {
+
+ function _hasBinary(obj) {
+ if (!obj) return false;
+
+ if ( (global.Buffer && global.Buffer.isBuffer(obj)) ||
+ (global.ArrayBuffer && obj instanceof ArrayBuffer) ||
+ (global.Blob && obj instanceof Blob) ||
+ (global.File && obj instanceof File)
+ ) {
+ return true;
+ }
+
+ if (isArray(obj)) {
+ for (var i = 0; i < obj.length; i++) {
+ if (_hasBinary(obj[i])) {
+ return true;
+ }
+ }
+ } else if (obj && 'object' == typeof obj) {
+ if (obj.toJSON) {
+ obj = obj.toJSON();
+ }
+
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key) && _hasBinary(obj[key])) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ return _hasBinary(data);
+ }
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{"isarray":24}],22:[function(_dereq_,module,exports){
+
+ /**
+ * Module exports.
+ *
+ * Logic borrowed from Modernizr:
+ *
+ * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js
+ */
+
+ try {
+ module.exports = typeof XMLHttpRequest !== 'undefined' &&
+ 'withCredentials' in new XMLHttpRequest();
+ } catch (err) {
+ // if XMLHttp support is disabled in IE then it will throw
+ // when trying to create
+ module.exports = false;
+ }
+
+ },{}],23:[function(_dereq_,module,exports){
+
+ var indexOf = [].indexOf;
+
+ module.exports = function(arr, obj){
+ if (indexOf) return arr.indexOf(obj);
+ for (var i = 0; i < arr.length; ++i) {
+ if (arr[i] === obj) return i;
+ }
+ return -1;
+ };
+ },{}],24:[function(_dereq_,module,exports){
+ module.exports = Array.isArray || function (arr) {
+ return Object.prototype.toString.call(arr) == '[object Array]';
+ };
+
+ },{}],25:[function(_dereq_,module,exports){
+ /**
+ * Helpers.
+ */
+
+ var s = 1000;
+ var m = s * 60;
+ var h = m * 60;
+ var d = h * 24;
+ var y = d * 365.25;
+
+ /**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} options
+ * @return {String|Number}
+ * @api public
+ */
+
+ module.exports = function(val, options){
+ options = options || {};
+ if ('string' == typeof val) return parse(val);
+ return options.long
+ ? long(val)
+ : short(val);
+ };
+
+ /**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+ function parse(str) {
+ str = '' + str;
+ if (str.length > 10000) return;
+ var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);
+ if (!match) return;
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s;
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n;
+ }
+ }
+
+ /**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+ function short(ms) {
+ if (ms >= d) return Math.round(ms / d) + 'd';
+ if (ms >= h) return Math.round(ms / h) + 'h';
+ if (ms >= m) return Math.round(ms / m) + 'm';
+ if (ms >= s) return Math.round(ms / s) + 's';
+ return ms + 'ms';
+ }
+
+ /**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+ function long(ms) {
+ return plural(ms, d, 'day')
+ || plural(ms, h, 'hour')
+ || plural(ms, m, 'minute')
+ || plural(ms, s, 'second')
+ || ms + ' ms';
+ }
+
+ /**
+ * Pluralization helper.
+ */
+
+ function plural(ms, n, name) {
+ if (ms < n) return;
+ if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
+ return Math.ceil(ms / n) + ' ' + name + 's';
+ }
+
+ },{}],26:[function(_dereq_,module,exports){
+ (function (global){
+ /**
+ * JSON parse.
+ *
+ * @see Based on jQuery#parseJSON (MIT) and JSON2
+ * @api private
+ */
+
+ var rvalidchars = /^[\],:{}\s]*$/;
+ var rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
+ var rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
+ var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
+ var rtrimLeft = /^\s+/;
+ var rtrimRight = /\s+$/;
+
+ module.exports = function parsejson(data) {
+ if ('string' != typeof data || !data) {
+ return null;
+ }
+
+ data = data.replace(rtrimLeft, '').replace(rtrimRight, '');
+
+ // Attempt to parse using the native JSON parser first
+ if (global.JSON && JSON.parse) {
+ return JSON.parse(data);
+ }
+
+ if (rvalidchars.test(data.replace(rvalidescape, '@')
+ .replace(rvalidtokens, ']')
+ .replace(rvalidbraces, ''))) {
+ return (new Function('return ' + data))();
+ }
+ };
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{}],27:[function(_dereq_,module,exports){
+ /**
+ * Compiles a querystring
+ * Returns string representation of the object
+ *
+ * @param {Object}
+ * @api private
+ */
+
+ exports.encode = function (obj) {
+ var str = '';
+
+ for (var i in obj) {
+ if (obj.hasOwnProperty(i)) {
+ if (str.length) str += '&';
+ str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);
+ }
+ }
+
+ return str;
+ };
+
+ /**
+ * Parses a simple querystring into an object
+ *
+ * @param {String} qs
+ * @api private
+ */
+
+ exports.decode = function(qs){
+ var qry = {};
+ var pairs = qs.split('&');
+ for (var i = 0, l = pairs.length; i < l; i++) {
+ var pair = pairs[i].split('=');
+ qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
+ }
+ return qry;
+ };
+
+ },{}],28:[function(_dereq_,module,exports){
+ /**
+ * Parses an URI
+ *
+ * @author Steven Levithan (MIT license)
+ * @api private
+ */
+
+ var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
+
+ var parts = [
+ 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'
+ ];
+
+ module.exports = function parseuri(str) {
+ var src = str,
+ b = str.indexOf('['),
+ e = str.indexOf(']');
+
+ if (b != -1 && e != -1) {
+ str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);
+ }
+
+ var m = re.exec(str || ''),
+ uri = {},
+ i = 14;
+
+ while (i--) {
+ uri[parts[i]] = m[i] || '';
+ }
+
+ if (b != -1 && e != -1) {
+ uri.source = src;
+ uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');
+ uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');
+ uri.ipv6uri = true;
+ }
+
+ return uri;
+ };
+
+ },{}],29:[function(_dereq_,module,exports){
+ (function (global){
+ /*! https://mths.be/utf8js v2.0.0 by @mathias */
+ ;(function(root) {
+
+ // Detect free variables `exports`
+ var freeExports = typeof exports == 'object' && exports;
+
+ // Detect free variable `module`
+ var freeModule = typeof module == 'object' && module &&
+ module.exports == freeExports && module;
+
+ // Detect free variable `global`, from Node.js or Browserified code,
+ // and use it as `root`
+ var freeGlobal = typeof global == 'object' && global;
+ if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
+ root = freeGlobal;
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ var stringFromCharCode = String.fromCharCode;
+
+ // Taken from https://mths.be/punycode
+ function ucs2decode(string) {
+ var output = [];
+ var counter = 0;
+ var length = string.length;
+ var value;
+ var extra;
+ while (counter < length) {
+ value = string.charCodeAt(counter++);
+ if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
+ // high surrogate, and there is a next character
+ extra = string.charCodeAt(counter++);
+ if ((extra & 0xFC00) == 0xDC00) { // low surrogate
+ output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
+ } else {
+ // unmatched surrogate; only append this code unit, in case the next
+ // code unit is the high surrogate of a surrogate pair
+ output.push(value);
+ counter--;
+ }
+ } else {
+ output.push(value);
+ }
+ }
+ return output;
+ }
+
+ // Taken from https://mths.be/punycode
+ function ucs2encode(array) {
+ var length = array.length;
+ var index = -1;
+ var value;
+ var output = '';
+ while (++index < length) {
+ value = array[index];
+ if (value > 0xFFFF) {
+ value -= 0x10000;
+ output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
+ value = 0xDC00 | value & 0x3FF;
+ }
+ output += stringFromCharCode(value);
+ }
+ return output;
+ }
+
+ function checkScalarValue(codePoint) {
+ if (codePoint >= 0xD800 && codePoint <= 0xDFFF) {
+ throw Error(
+ 'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +
+ ' is not a scalar value'
+ );
+ }
+ }
+ /*--------------------------------------------------------------------------*/
+
+ function createByte(codePoint, shift) {
+ return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);
+ }
+
+ function encodeCodePoint(codePoint) {
+ if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence
+ return stringFromCharCode(codePoint);
+ }
+ var symbol = '';
+ if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence
+ symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);
+ }
+ else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence
+ checkScalarValue(codePoint);
+ symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);
+ symbol += createByte(codePoint, 6);
+ }
+ else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence
+ symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);
+ symbol += createByte(codePoint, 12);
+ symbol += createByte(codePoint, 6);
+ }
+ symbol += stringFromCharCode((codePoint & 0x3F) | 0x80);
+ return symbol;
+ }
+
+ function utf8encode(string) {
+ var codePoints = ucs2decode(string);
+ var length = codePoints.length;
+ var index = -1;
+ var codePoint;
+ var byteString = '';
+ while (++index < length) {
+ codePoint = codePoints[index];
+ byteString += encodeCodePoint(codePoint);
+ }
+ return byteString;
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ function readContinuationByte() {
+ if (byteIndex >= byteCount) {
+ throw Error('Invalid byte index');
+ }
+
+ var continuationByte = byteArray[byteIndex] & 0xFF;
+ byteIndex++;
+
+ if ((continuationByte & 0xC0) == 0x80) {
+ return continuationByte & 0x3F;
+ }
+
+ // If we end up here, it’s not a continuation byte
+ throw Error('Invalid continuation byte');
+ }
+
+ function decodeSymbol() {
+ var byte1;
+ var byte2;
+ var byte3;
+ var byte4;
+ var codePoint;
+
+ if (byteIndex > byteCount) {
+ throw Error('Invalid byte index');
+ }
+
+ if (byteIndex == byteCount) {
+ return false;
+ }
+
+ // Read first byte
+ byte1 = byteArray[byteIndex] & 0xFF;
+ byteIndex++;
+
+ // 1-byte sequence (no continuation bytes)
+ if ((byte1 & 0x80) == 0) {
+ return byte1;
+ }
+
+ // 2-byte sequence
+ if ((byte1 & 0xE0) == 0xC0) {
+ var byte2 = readContinuationByte();
+ codePoint = ((byte1 & 0x1F) << 6) | byte2;
+ if (codePoint >= 0x80) {
+ return codePoint;
+ } else {
+ throw Error('Invalid continuation byte');
+ }
+ }
+
+ // 3-byte sequence (may include unpaired surrogates)
+ if ((byte1 & 0xF0) == 0xE0) {
+ byte2 = readContinuationByte();
+ byte3 = readContinuationByte();
+ codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;
+ if (codePoint >= 0x0800) {
+ checkScalarValue(codePoint);
+ return codePoint;
+ } else {
+ throw Error('Invalid continuation byte');
+ }
+ }
+
+ // 4-byte sequence
+ if ((byte1 & 0xF8) == 0xF0) {
+ byte2 = readContinuationByte();
+ byte3 = readContinuationByte();
+ byte4 = readContinuationByte();
+ codePoint = ((byte1 & 0x0F) << 0x12) | (byte2 << 0x0C) |
+ (byte3 << 0x06) | byte4;
+ if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {
+ return codePoint;
+ }
+ }
+
+ throw Error('Invalid UTF-8 detected');
+ }
+
+ var byteArray;
+ var byteCount;
+ var byteIndex;
+ function utf8decode(byteString) {
+ byteArray = ucs2decode(byteString);
+ byteCount = byteArray.length;
+ byteIndex = 0;
+ var codePoints = [];
+ var tmp;
+ while ((tmp = decodeSymbol()) !== false) {
+ codePoints.push(tmp);
+ }
+ return ucs2encode(codePoints);
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ var utf8 = {
+ 'version': '2.0.0',
+ 'encode': utf8encode,
+ 'decode': utf8decode
+ };
+
+ // Some AMD build optimizers, like r.js, check for specific condition patterns
+ // like the following:
+ if (
+ typeof define == 'function' &&
+ typeof define.amd == 'object' &&
+ define.amd
+ ) {
+ define(function() {
+ return utf8;
+ });
+ } else if (freeExports && !freeExports.nodeType) {
+ if (freeModule) { // in Node.js or RingoJS v0.8.0+
+ freeModule.exports = utf8;
+ } else { // in Narwhal or RingoJS v0.7.0-
+ var object = {};
+ var hasOwnProperty = object.hasOwnProperty;
+ for (var key in utf8) {
+ hasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);
+ }
+ }
+ } else { // in Rhino or a web browser
+ root.utf8 = utf8;
+ }
+
+ }(this));
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{}],30:[function(_dereq_,module,exports){
+ 'use strict';
+
+ var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')
+ , length = 64
+ , map = {}
+ , seed = 0
+ , i = 0
+ , prev;
+
+ /**
+ * Return a string representing the specified number.
+ *
+ * @param {Number} num The number to convert.
+ * @returns {String} The string representation of the number.
+ * @api public
+ */
+ function encode(num) {
+ var encoded = '';
+
+ do {
+ encoded = alphabet[num % length] + encoded;
+ num = Math.floor(num / length);
+ } while (num > 0);
+
+ return encoded;
+ }
+
+ /**
+ * Return the integer value specified by the given string.
+ *
+ * @param {String} str The string to convert.
+ * @returns {Number} The integer value represented by the string.
+ * @api public
+ */
+ function decode(str) {
+ var decoded = 0;
+
+ for (i = 0; i < str.length; i++) {
+ decoded = decoded * length + map[str.charAt(i)];
+ }
+
+ return decoded;
+ }
+
+ /**
+ * Yeast: A tiny growing id generator.
+ *
+ * @returns {String} A unique id.
+ * @api public
+ */
+ function yeast() {
+ var now = encode(+new Date());
+
+ if (now !== prev) return seed = 0, prev = now;
+ return now +'.'+ encode(seed++);
+ }
+
+ //
+ // Map each character to its index.
+ //
+ for (; i < length; i++) map[alphabet[i]] = i;
+
+ //
+ // Expose the `yeast`, `encode` and `decode` functions.
+ //
+ yeast.encode = encode;
+ yeast.decode = decode;
+ module.exports = yeast;
+
+ },{}],31:[function(_dereq_,module,exports){
+
+ /**
+ * Module dependencies.
+ */
+
+ var url = _dereq_('./url');
+ var parser = _dereq_('socket.io-parser');
+ var Manager = _dereq_('./manager');
+ var debug = _dereq_('debug')('socket.io-client');
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = exports = lookup;
+
+ /**
+ * Managers cache.
+ */
+
+ var cache = exports.managers = {};
+
+ /**
+ * Looks up an existing `Manager` for multiplexing.
+ * If the user summons:
+ *
+ * `io('http://localhost/a');`
+ * `io('http://localhost/b');`
+ *
+ * We reuse the existing instance based on same scheme/port/host,
+ * and we initialize sockets for each namespace.
+ *
+ * @api public
+ */
+
+ function lookup(uri, opts) {
+ if (typeof uri == 'object') {
+ opts = uri;
+ uri = undefined;
+ }
+
+ opts = opts || {};
+
+ var parsed = url(uri);
+ var source = parsed.source;
+ var id = parsed.id;
+ var path = parsed.path;
+ var sameNamespace = cache[id] && path in cache[id].nsps;
+ var newConnection = opts.forceNew || opts['force new connection'] ||
+ false === opts.multiplex || sameNamespace;
+
+ var io;
+
+ if (newConnection) {
+ debug('ignoring socket cache for %s', source);
+ io = Manager(source, opts);
+ } else {
+ if (!cache[id]) {
+ debug('new io instance for %s', source);
+ cache[id] = Manager(source, opts);
+ }
+ io = cache[id];
+ }
+
+ return io.socket(parsed.path);
+ }
+
+ /**
+ * Protocol version.
+ *
+ * @api public
+ */
+
+ exports.protocol = parser.protocol;
+
+ /**
+ * `connect`.
+ *
+ * @param {String} uri
+ * @api public
+ */
+
+ exports.connect = lookup;
+
+ /**
+ * Expose constructors for standalone build.
+ *
+ * @api public
+ */
+
+ exports.Manager = _dereq_('./manager');
+ exports.Socket = _dereq_('./socket');
+
+ },{"./manager":32,"./socket":34,"./url":35,"debug":39,"socket.io-parser":47}],32:[function(_dereq_,module,exports){
+
+ /**
+ * Module dependencies.
+ */
+
+ var eio = _dereq_('engine.io-client');
+ var Socket = _dereq_('./socket');
+ var Emitter = _dereq_('component-emitter');
+ var parser = _dereq_('socket.io-parser');
+ var on = _dereq_('./on');
+ var bind = _dereq_('component-bind');
+ var debug = _dereq_('debug')('socket.io-client:manager');
+ var indexOf = _dereq_('indexof');
+ var Backoff = _dereq_('backo2');
+
+ /**
+ * IE6+ hasOwnProperty
+ */
+
+ var has = Object.prototype.hasOwnProperty;
+
+ /**
+ * Module exports
+ */
+
+ module.exports = Manager;
+
+ /**
+ * `Manager` constructor.
+ *
+ * @param {String} engine instance or engine uri/opts
+ * @param {Object} options
+ * @api public
+ */
+
+ function Manager(uri, opts){
+ if (!(this instanceof Manager)) return new Manager(uri, opts);
+ if (uri && ('object' == typeof uri)) {
+ opts = uri;
+ uri = undefined;
+ }
+ opts = opts || {};
+
+ opts.path = opts.path || '/socket.io';
+ this.nsps = {};
+ this.subs = [];
+ this.opts = opts;
+ this.reconnection(opts.reconnection !== false);
+ this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);
+ this.reconnectionDelay(opts.reconnectionDelay || 1000);
+ this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);
+ this.randomizationFactor(opts.randomizationFactor || 0.5);
+ this.backoff = new Backoff({
+ min: this.reconnectionDelay(),
+ max: this.reconnectionDelayMax(),
+ jitter: this.randomizationFactor()
+ });
+ this.timeout(null == opts.timeout ? 20000 : opts.timeout);
+ this.readyState = 'closed';
+ this.uri = uri;
+ this.connecting = [];
+ this.lastPing = null;
+ this.encoding = false;
+ this.packetBuffer = [];
+ this.encoder = new parser.Encoder();
+ this.decoder = new parser.Decoder();
+ this.autoConnect = opts.autoConnect !== false;
+ if (this.autoConnect) this.open();
+ }
+
+ /**
+ * Propagate given event to sockets and emit on `this`
+ *
+ * @api private
+ */
+
+ Manager.prototype.emitAll = function() {
+ this.emit.apply(this, arguments);
+ for (var nsp in this.nsps) {
+ if (has.call(this.nsps, nsp)) {
+ this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);
+ }
+ }
+ };
+
+ /**
+ * Update `socket.id` of all sockets
+ *
+ * @api private
+ */
+
+ Manager.prototype.updateSocketIds = function(){
+ for (var nsp in this.nsps) {
+ if (has.call(this.nsps, nsp)) {
+ this.nsps[nsp].id = this.engine.id;
+ }
+ }
+ };
+
+ /**
+ * Mix in `Emitter`.
+ */
+
+ Emitter(Manager.prototype);
+
+ /**
+ * Sets the `reconnection` config.
+ *
+ * @param {Boolean} true/false if it should automatically reconnect
+ * @return {Manager} self or value
+ * @api public
+ */
+
+ Manager.prototype.reconnection = function(v){
+ if (!arguments.length) return this._reconnection;
+ this._reconnection = !!v;
+ return this;
+ };
+
+ /**
+ * Sets the reconnection attempts config.
+ *
+ * @param {Number} max reconnection attempts before giving up
+ * @return {Manager} self or value
+ * @api public
+ */
+
+ Manager.prototype.reconnectionAttempts = function(v){
+ if (!arguments.length) return this._reconnectionAttempts;
+ this._reconnectionAttempts = v;
+ return this;
+ };
+
+ /**
+ * Sets the delay between reconnections.
+ *
+ * @param {Number} delay
+ * @return {Manager} self or value
+ * @api public
+ */
+
+ Manager.prototype.reconnectionDelay = function(v){
+ if (!arguments.length) return this._reconnectionDelay;
+ this._reconnectionDelay = v;
+ this.backoff && this.backoff.setMin(v);
+ return this;
+ };
+
+ Manager.prototype.randomizationFactor = function(v){
+ if (!arguments.length) return this._randomizationFactor;
+ this._randomizationFactor = v;
+ this.backoff && this.backoff.setJitter(v);
+ return this;
+ };
+
+ /**
+ * Sets the maximum delay between reconnections.
+ *
+ * @param {Number} delay
+ * @return {Manager} self or value
+ * @api public
+ */
+
+ Manager.prototype.reconnectionDelayMax = function(v){
+ if (!arguments.length) return this._reconnectionDelayMax;
+ this._reconnectionDelayMax = v;
+ this.backoff && this.backoff.setMax(v);
+ return this;
+ };
+
+ /**
+ * Sets the connection timeout. `false` to disable
+ *
+ * @return {Manager} self or value
+ * @api public
+ */
+
+ Manager.prototype.timeout = function(v){
+ if (!arguments.length) return this._timeout;
+ this._timeout = v;
+ return this;
+ };
+
+ /**
+ * Starts trying to reconnect if reconnection is enabled and we have not
+ * started reconnecting yet
+ *
+ * @api private
+ */
+
+ Manager.prototype.maybeReconnectOnOpen = function() {
+ // Only try to reconnect if it's the first time we're connecting
+ if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {
+ // keeps reconnection from firing twice for the same reconnection loop
+ this.reconnect();
+ }
+ };
+
+
+ /**
+ * Sets the current transport `socket`.
+ *
+ * @param {Function} optional, callback
+ * @return {Manager} self
+ * @api public
+ */
+
+ Manager.prototype.open =
+ Manager.prototype.connect = function(fn){
+ debug('readyState %s', this.readyState);
+ if (~this.readyState.indexOf('open')) return this;
+
+ debug('opening %s', this.uri);
+ this.engine = eio(this.uri, this.opts);
+ var socket = this.engine;
+ var self = this;
+ this.readyState = 'opening';
+ this.skipReconnect = false;
+
+ // emit `open`
+ var openSub = on(socket, 'open', function() {
+ self.onopen();
+ fn && fn();
+ });
+
+ // emit `connect_error`
+ var errorSub = on(socket, 'error', function(data){
+ debug('connect_error');
+ self.cleanup();
+ self.readyState = 'closed';
+ self.emitAll('connect_error', data);
+ if (fn) {
+ var err = new Error('Connection error');
+ err.data = data;
+ fn(err);
+ } else {
+ // Only do this if there is no fn to handle the error
+ self.maybeReconnectOnOpen();
+ }
+ });
+
+ // emit `connect_timeout`
+ if (false !== this._timeout) {
+ var timeout = this._timeout;
+ debug('connect attempt will timeout after %d', timeout);
+
+ // set timer
+ var timer = setTimeout(function(){
+ debug('connect attempt timed out after %d', timeout);
+ openSub.destroy();
+ socket.close();
+ socket.emit('error', 'timeout');
+ self.emitAll('connect_timeout', timeout);
+ }, timeout);
+
+ this.subs.push({
+ destroy: function(){
+ clearTimeout(timer);
+ }
+ });
+ }
+
+ this.subs.push(openSub);
+ this.subs.push(errorSub);
+
+ return this;
+ };
+
+ /**
+ * Called upon transport open.
+ *
+ * @api private
+ */
+
+ Manager.prototype.onopen = function(){
+ debug('open');
+
+ // clear old subs
+ this.cleanup();
+
+ // mark as open
+ this.readyState = 'open';
+ this.emit('open');
+
+ // add new subs
+ var socket = this.engine;
+ this.subs.push(on(socket, 'data', bind(this, 'ondata')));
+ this.subs.push(on(socket, 'ping', bind(this, 'onping')));
+ this.subs.push(on(socket, 'pong', bind(this, 'onpong')));
+ this.subs.push(on(socket, 'error', bind(this, 'onerror')));
+ this.subs.push(on(socket, 'close', bind(this, 'onclose')));
+ this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));
+ };
+
+ /**
+ * Called upon a ping.
+ *
+ * @api private
+ */
+
+ Manager.prototype.onping = function(){
+ this.lastPing = new Date;
+ this.emitAll('ping');
+ };
+
+ /**
+ * Called upon a packet.
+ *
+ * @api private
+ */
+
+ Manager.prototype.onpong = function(){
+ this.emitAll('pong', new Date - this.lastPing);
+ };
+
+ /**
+ * Called with data.
+ *
+ * @api private
+ */
+
+ Manager.prototype.ondata = function(data){
+ this.decoder.add(data);
+ };
+
+ /**
+ * Called when parser fully decodes a packet.
+ *
+ * @api private
+ */
+
+ Manager.prototype.ondecoded = function(packet) {
+ this.emit('packet', packet);
+ };
+
+ /**
+ * Called upon socket error.
+ *
+ * @api private
+ */
+
+ Manager.prototype.onerror = function(err){
+ debug('error', err);
+ this.emitAll('error', err);
+ };
+
+ /**
+ * Creates a new socket for the given `nsp`.
+ *
+ * @return {Socket}
+ * @api public
+ */
+
+ Manager.prototype.socket = function(nsp){
+ var socket = this.nsps[nsp];
+ if (!socket) {
+ socket = new Socket(this, nsp);
+ this.nsps[nsp] = socket;
+ var self = this;
+ socket.on('connecting', onConnecting);
+ socket.on('connect', function(){
+ socket.id = self.engine.id;
+ });
+
+ if (this.autoConnect) {
+ // manually call here since connecting evnet is fired before listening
+ onConnecting();
+ }
+ }
+
+ function onConnecting() {
+ if (!~indexOf(self.connecting, socket)) {
+ self.connecting.push(socket);
+ }
+ }
+
+ return socket;
+ };
+
+ /**
+ * Called upon a socket close.
+ *
+ * @param {Socket} socket
+ */
+
+ Manager.prototype.destroy = function(socket){
+ var index = indexOf(this.connecting, socket);
+ if (~index) this.connecting.splice(index, 1);
+ if (this.connecting.length) return;
+
+ this.close();
+ };
+
+ /**
+ * Writes a packet.
+ *
+ * @param {Object} packet
+ * @api private
+ */
+
+ Manager.prototype.packet = function(packet){
+ debug('writing packet %j', packet);
+ var self = this;
+
+ if (!self.encoding) {
+ // encode, then write to engine with result
+ self.encoding = true;
+ this.encoder.encode(packet, function(encodedPackets) {
+ for (var i = 0; i < encodedPackets.length; i++) {
+ self.engine.write(encodedPackets[i], packet.options);
+ }
+ self.encoding = false;
+ self.processPacketQueue();
+ });
+ } else { // add packet to the queue
+ self.packetBuffer.push(packet);
+ }
+ };
+
+ /**
+ * If packet buffer is non-empty, begins encoding the
+ * next packet in line.
+ *
+ * @api private
+ */
+
+ Manager.prototype.processPacketQueue = function() {
+ if (this.packetBuffer.length > 0 && !this.encoding) {
+ var pack = this.packetBuffer.shift();
+ this.packet(pack);
+ }
+ };
+
+ /**
+ * Clean up transport subscriptions and packet buffer.
+ *
+ * @api private
+ */
+
+ Manager.prototype.cleanup = function(){
+ debug('cleanup');
+
+ var sub;
+ while (sub = this.subs.shift()) sub.destroy();
+
+ this.packetBuffer = [];
+ this.encoding = false;
+ this.lastPing = null;
+
+ this.decoder.destroy();
+ };
+
+ /**
+ * Close the current socket.
+ *
+ * @api private
+ */
+
+ Manager.prototype.close =
+ Manager.prototype.disconnect = function(){
+ debug('disconnect');
+ this.skipReconnect = true;
+ this.reconnecting = false;
+ if ('opening' == this.readyState) {
+ // `onclose` will not fire because
+ // an open event never happened
+ this.cleanup();
+ }
+ this.backoff.reset();
+ this.readyState = 'closed';
+ if (this.engine) this.engine.close();
+ };
+
+ /**
+ * Called upon engine close.
+ *
+ * @api private
+ */
+
+ Manager.prototype.onclose = function(reason){
+ debug('onclose');
+
+ this.cleanup();
+ this.backoff.reset();
+ this.readyState = 'closed';
+ this.emit('close', reason);
+
+ if (this._reconnection && !this.skipReconnect) {
+ this.reconnect();
+ }
+ };
+
+ /**
+ * Attempt a reconnection.
+ *
+ * @api private
+ */
+
+ Manager.prototype.reconnect = function(){
+ if (this.reconnecting || this.skipReconnect) return this;
+
+ var self = this;
+
+ if (this.backoff.attempts >= this._reconnectionAttempts) {
+ debug('reconnect failed');
+ this.backoff.reset();
+ this.emitAll('reconnect_failed');
+ this.reconnecting = false;
+ } else {
+ var delay = this.backoff.duration();
+ debug('will wait %dms before reconnect attempt', delay);
+
+ this.reconnecting = true;
+ var timer = setTimeout(function(){
+ if (self.skipReconnect) return;
+
+ debug('attempting reconnect');
+ self.emitAll('reconnect_attempt', self.backoff.attempts);
+ self.emitAll('reconnecting', self.backoff.attempts);
+
+ // check again for the case socket closed in above events
+ if (self.skipReconnect) return;
+
+ self.open(function(err){
+ if (err) {
+ debug('reconnect attempt error');
+ self.reconnecting = false;
+ self.reconnect();
+ self.emitAll('reconnect_error', err.data);
+ } else {
+ debug('reconnect success');
+ self.onreconnect();
+ }
+ });
+ }, delay);
+
+ this.subs.push({
+ destroy: function(){
+ clearTimeout(timer);
+ }
+ });
+ }
+ };
+
+ /**
+ * Called upon successful reconnect.
+ *
+ * @api private
+ */
+
+ Manager.prototype.onreconnect = function(){
+ var attempt = this.backoff.attempts;
+ this.reconnecting = false;
+ this.backoff.reset();
+ this.updateSocketIds();
+ this.emitAll('reconnect', attempt);
+ };
+
+ },{"./on":33,"./socket":34,"backo2":36,"component-bind":37,"component-emitter":38,"debug":39,"engine.io-client":1,"indexof":42,"socket.io-parser":47}],33:[function(_dereq_,module,exports){
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = on;
+
+ /**
+ * Helper for subscriptions.
+ *
+ * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`
+ * @param {String} event name
+ * @param {Function} callback
+ * @api public
+ */
+
+ function on(obj, ev, fn) {
+ obj.on(ev, fn);
+ return {
+ destroy: function(){
+ obj.removeListener(ev, fn);
+ }
+ };
+ }
+
+ },{}],34:[function(_dereq_,module,exports){
+
+ /**
+ * Module dependencies.
+ */
+
+ var parser = _dereq_('socket.io-parser');
+ var Emitter = _dereq_('component-emitter');
+ var toArray = _dereq_('to-array');
+ var on = _dereq_('./on');
+ var bind = _dereq_('component-bind');
+ var debug = _dereq_('debug')('socket.io-client:socket');
+ var hasBin = _dereq_('has-binary');
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = exports = Socket;
+
+ /**
+ * Internal events (blacklisted).
+ * These events can't be emitted by the user.
+ *
+ * @api private
+ */
+
+ var events = {
+ connect: 1,
+ connect_error: 1,
+ connect_timeout: 1,
+ connecting: 1,
+ disconnect: 1,
+ error: 1,
+ reconnect: 1,
+ reconnect_attempt: 1,
+ reconnect_failed: 1,
+ reconnect_error: 1,
+ reconnecting: 1,
+ ping: 1,
+ pong: 1
+ };
+
+ /**
+ * Shortcut to `Emitter#emit`.
+ */
+
+ var emit = Emitter.prototype.emit;
+
+ /**
+ * `Socket` constructor.
+ *
+ * @api public
+ */
+
+ function Socket(io, nsp){
+ this.io = io;
+ this.nsp = nsp;
+ this.json = this; // compat
+ this.ids = 0;
+ this.acks = {};
+ this.receiveBuffer = [];
+ this.sendBuffer = [];
+ this.connected = false;
+ this.disconnected = true;
+ if (this.io.autoConnect) this.open();
+ }
+
+ /**
+ * Mix in `Emitter`.
+ */
+
+ Emitter(Socket.prototype);
+
+ /**
+ * Subscribe to open, close and packet events
+ *
+ * @api private
+ */
+
+ Socket.prototype.subEvents = function() {
+ if (this.subs) return;
+
+ var io = this.io;
+ this.subs = [
+ on(io, 'open', bind(this, 'onopen')),
+ on(io, 'packet', bind(this, 'onpacket')),
+ on(io, 'close', bind(this, 'onclose'))
+ ];
+ };
+
+ /**
+ * "Opens" the socket.
+ *
+ * @api public
+ */
+
+ Socket.prototype.open =
+ Socket.prototype.connect = function(){
+ if (this.connected) return this;
+
+ this.subEvents();
+ this.io.open(); // ensure open
+ if ('open' == this.io.readyState) this.onopen();
+ this.emit('connecting');
+ return this;
+ };
+
+ /**
+ * Sends a `message` event.
+ *
+ * @return {Socket} self
+ * @api public
+ */
+
+ Socket.prototype.send = function(){
+ var args = toArray(arguments);
+ args.unshift('message');
+ this.emit.apply(this, args);
+ return this;
+ };
+
+ /**
+ * Override `emit`.
+ * If the event is in `events`, it's emitted normally.
+ *
+ * @param {String} event name
+ * @return {Socket} self
+ * @api public
+ */
+
+ Socket.prototype.emit = function(ev){
+ if (events.hasOwnProperty(ev)) {
+ emit.apply(this, arguments);
+ return this;
+ }
+
+ var args = toArray(arguments);
+ var parserType = parser.EVENT; // default
+ if (hasBin(args)) { parserType = parser.BINARY_EVENT; } // binary
+ var packet = { type: parserType, data: args };
+
+ packet.options = {};
+ packet.options.compress = !this.flags || false !== this.flags.compress;
+
+ // event ack callback
+ if ('function' == typeof args[args.length - 1]) {
+ debug('emitting packet with ack id %d', this.ids);
+ this.acks[this.ids] = args.pop();
+ packet.id = this.ids++;
+ }
+
+ if (this.connected) {
+ this.packet(packet);
+ } else {
+ this.sendBuffer.push(packet);
+ }
+
+ delete this.flags;
+
+ return this;
+ };
+
+ /**
+ * Sends a packet.
+ *
+ * @param {Object} packet
+ * @api private
+ */
+
+ Socket.prototype.packet = function(packet){
+ packet.nsp = this.nsp;
+ this.io.packet(packet);
+ };
+
+ /**
+ * Called upon engine `open`.
+ *
+ * @api private
+ */
+
+ Socket.prototype.onopen = function(){
+ debug('transport is open - connecting');
+
+ // write connect packet if necessary
+ if ('/' != this.nsp) {
+ this.packet({ type: parser.CONNECT });
+ }
+ };
+
+ /**
+ * Called upon engine `close`.
+ *
+ * @param {String} reason
+ * @api private
+ */
+
+ Socket.prototype.onclose = function(reason){
+ debug('close (%s)', reason);
+ this.connected = false;
+ this.disconnected = true;
+ delete this.id;
+ this.emit('disconnect', reason);
+ };
+
+ /**
+ * Called with socket packet.
+ *
+ * @param {Object} packet
+ * @api private
+ */
+
+ Socket.prototype.onpacket = function(packet){
+ if (packet.nsp != this.nsp) return;
+
+ switch (packet.type) {
+ case parser.CONNECT:
+ this.onconnect();
+ break;
+
+ case parser.EVENT:
+ this.onevent(packet);
+ break;
+
+ case parser.BINARY_EVENT:
+ this.onevent(packet);
+ break;
+
+ case parser.ACK:
+ this.onack(packet);
+ break;
+
+ case parser.BINARY_ACK:
+ this.onack(packet);
+ break;
+
+ case parser.DISCONNECT:
+ this.ondisconnect();
+ break;
+
+ case parser.ERROR:
+ this.emit('error', packet.data);
+ break;
+ }
+ };
+
+ /**
+ * Called upon a server event.
+ *
+ * @param {Object} packet
+ * @api private
+ */
+
+ Socket.prototype.onevent = function(packet){
+ var args = packet.data || [];
+ debug('emitting event %j', args);
+
+ if (null != packet.id) {
+ debug('attaching ack callback to event');
+ args.push(this.ack(packet.id));
+ }
+
+ if (this.connected) {
+ emit.apply(this, args);
+ } else {
+ this.receiveBuffer.push(args);
+ }
+ };
+
+ /**
+ * Produces an ack callback to emit with an event.
+ *
+ * @api private
+ */
+
+ Socket.prototype.ack = function(id){
+ var self = this;
+ var sent = false;
+ return function(){
+ // prevent double callbacks
+ if (sent) return;
+ sent = true;
+ var args = toArray(arguments);
+ debug('sending ack %j', args);
+
+ var type = hasBin(args) ? parser.BINARY_ACK : parser.ACK;
+ self.packet({
+ type: type,
+ id: id,
+ data: args
+ });
+ };
+ };
+
+ /**
+ * Called upon a server acknowlegement.
+ *
+ * @param {Object} packet
+ * @api private
+ */
+
+ Socket.prototype.onack = function(packet){
+ var ack = this.acks[packet.id];
+ if ('function' == typeof ack) {
+ debug('calling ack %s with %j', packet.id, packet.data);
+ ack.apply(this, packet.data);
+ delete this.acks[packet.id];
+ } else {
+ debug('bad ack %s', packet.id);
+ }
+ };
+
+ /**
+ * Called upon server connect.
+ *
+ * @api private
+ */
+
+ Socket.prototype.onconnect = function(){
+ this.connected = true;
+ this.disconnected = false;
+ this.emit('connect');
+ this.emitBuffered();
+ };
+
+ /**
+ * Emit buffered events (received and emitted).
+ *
+ * @api private
+ */
+
+ Socket.prototype.emitBuffered = function(){
+ var i;
+ for (i = 0; i < this.receiveBuffer.length; i++) {
+ emit.apply(this, this.receiveBuffer[i]);
+ }
+ this.receiveBuffer = [];
+
+ for (i = 0; i < this.sendBuffer.length; i++) {
+ this.packet(this.sendBuffer[i]);
+ }
+ this.sendBuffer = [];
+ };
+
+ /**
+ * Called upon server disconnect.
+ *
+ * @api private
+ */
+
+ Socket.prototype.ondisconnect = function(){
+ debug('server disconnect (%s)', this.nsp);
+ this.destroy();
+ this.onclose('io server disconnect');
+ };
+
+ /**
+ * Called upon forced client/server side disconnections,
+ * this method ensures the manager stops tracking us and
+ * that reconnections don't get triggered for this.
+ *
+ * @api private.
+ */
+
+ Socket.prototype.destroy = function(){
+ if (this.subs) {
+ // clean subscriptions to avoid reconnections
+ for (var i = 0; i < this.subs.length; i++) {
+ this.subs[i].destroy();
+ }
+ this.subs = null;
+ }
+
+ this.io.destroy(this);
+ };
+
+ /**
+ * Disconnects the socket manually.
+ *
+ * @return {Socket} self
+ * @api public
+ */
+
+ Socket.prototype.close =
+ Socket.prototype.disconnect = function(){
+ if (this.connected) {
+ debug('performing disconnect (%s)', this.nsp);
+ this.packet({ type: parser.DISCONNECT });
+ }
+
+ // remove socket from pool
+ this.destroy();
+
+ if (this.connected) {
+ // fire events
+ this.onclose('io client disconnect');
+ }
+ return this;
+ };
+
+ /**
+ * Sets the compress flag.
+ *
+ * @param {Boolean} if `true`, compresses the sending data
+ * @return {Socket} self
+ * @api public
+ */
+
+ Socket.prototype.compress = function(compress){
+ this.flags = this.flags || {};
+ this.flags.compress = compress;
+ return this;
+ };
+
+ },{"./on":33,"component-bind":37,"component-emitter":38,"debug":39,"has-binary":41,"socket.io-parser":47,"to-array":51}],35:[function(_dereq_,module,exports){
+ (function (global){
+
+ /**
+ * Module dependencies.
+ */
+
+ var parseuri = _dereq_('parseuri');
+ var debug = _dereq_('debug')('socket.io-client:url');
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = url;
+
+ /**
+ * URL parser.
+ *
+ * @param {String} url
+ * @param {Object} An object meant to mimic window.location.
+ * Defaults to window.location.
+ * @api public
+ */
+
+ function url(uri, loc){
+ var obj = uri;
+
+ // default to window.location
+ var loc = loc || global.location;
+ if (null == uri) uri = loc.protocol + '//' + loc.host;
+
+ // relative path support
+ if ('string' == typeof uri) {
+ if ('/' == uri.charAt(0)) {
+ if ('/' == uri.charAt(1)) {
+ uri = loc.protocol + uri;
+ } else {
+ uri = loc.host + uri;
+ }
+ }
+
+ if (!/^(https?|wss?):\/\//.test(uri)) {
+ debug('protocol-less url %s', uri);
+ if ('undefined' != typeof loc) {
+ uri = loc.protocol + '//' + uri;
+ } else {
+ uri = 'https://' + uri;
+ }
+ }
+
+ // parse
+ debug('parse %s', uri);
+ obj = parseuri(uri);
+ }
+
+ // make sure we treat `localhost:80` and `localhost` equally
+ if (!obj.port) {
+ if (/^(http|ws)$/.test(obj.protocol)) {
+ obj.port = '80';
+ }
+ else if (/^(http|ws)s$/.test(obj.protocol)) {
+ obj.port = '443';
+ }
+ }
+
+ obj.path = obj.path || '/';
+
+ var ipv6 = obj.host.indexOf(':') !== -1;
+ var host = ipv6 ? '[' + obj.host + ']' : obj.host;
+
+ // define unique id
+ obj.id = obj.protocol + '://' + host + ':' + obj.port;
+ // define href
+ obj.href = obj.protocol + '://' + host + (loc && loc.port == obj.port ? '' : (':' + obj.port));
+
+ return obj;
+ }
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{"debug":39,"parseuri":45}],36:[function(_dereq_,module,exports){
+
+ /**
+ * Expose `Backoff`.
+ */
+
+ module.exports = Backoff;
+
+ /**
+ * Initialize backoff timer with `opts`.
+ *
+ * - `min` initial timeout in milliseconds [100]
+ * - `max` max timeout [10000]
+ * - `jitter` [0]
+ * - `factor` [2]
+ *
+ * @param {Object} opts
+ * @api public
+ */
+
+ function Backoff(opts) {
+ opts = opts || {};
+ this.ms = opts.min || 100;
+ this.max = opts.max || 10000;
+ this.factor = opts.factor || 2;
+ this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
+ this.attempts = 0;
+ }
+
+ /**
+ * Return the backoff duration.
+ *
+ * @return {Number}
+ * @api public
+ */
+
+ Backoff.prototype.duration = function(){
+ var ms = this.ms * Math.pow(this.factor, this.attempts++);
+ if (this.jitter) {
+ var rand = Math.random();
+ var deviation = Math.floor(rand * this.jitter * ms);
+ ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
+ }
+ return Math.min(ms, this.max) | 0;
+ };
+
+ /**
+ * Reset the number of attempts.
+ *
+ * @api public
+ */
+
+ Backoff.prototype.reset = function(){
+ this.attempts = 0;
+ };
+
+ /**
+ * Set the minimum duration
+ *
+ * @api public
+ */
+
+ Backoff.prototype.setMin = function(min){
+ this.ms = min;
+ };
+
+ /**
+ * Set the maximum duration
+ *
+ * @api public
+ */
+
+ Backoff.prototype.setMax = function(max){
+ this.max = max;
+ };
+
+ /**
+ * Set the jitter
+ *
+ * @api public
+ */
+
+ Backoff.prototype.setJitter = function(jitter){
+ this.jitter = jitter;
+ };
+
+
+ },{}],37:[function(_dereq_,module,exports){
+ /**
+ * Slice reference.
+ */
+
+ var slice = [].slice;
+
+ /**
+ * Bind `obj` to `fn`.
+ *
+ * @param {Object} obj
+ * @param {Function|String} fn or string
+ * @return {Function}
+ * @api public
+ */
+
+ module.exports = function(obj, fn){
+ if ('string' == typeof fn) fn = obj[fn];
+ if ('function' != typeof fn) throw new Error('bind() requires a function');
+ var args = slice.call(arguments, 2);
+ return function(){
+ return fn.apply(obj, args.concat(slice.call(arguments)));
+ }
+ };
+
+ },{}],38:[function(_dereq_,module,exports){
+
+ /**
+ * Expose `Emitter`.
+ */
+
+ module.exports = Emitter;
+
+ /**
+ * Initialize a new `Emitter`.
+ *
+ * @api public
+ */
+
+ function Emitter(obj) {
+ if (obj) return mixin(obj);
+ };
+
+ /**
+ * Mixin the emitter properties.
+ *
+ * @param {Object} obj
+ * @return {Object}
+ * @api private
+ */
+
+ function mixin(obj) {
+ for (var key in Emitter.prototype) {
+ obj[key] = Emitter.prototype[key];
+ }
+ return obj;
+ }
+
+ /**
+ * Listen on the given `event` with `fn`.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.on =
+ Emitter.prototype.addEventListener = function(event, fn){
+ this._callbacks = this._callbacks || {};
+ (this._callbacks['$' + event] = this._callbacks['$' + event] || [])
+ .push(fn);
+ return this;
+ };
+
+ /**
+ * Adds an `event` listener that will be invoked a single
+ * time then automatically removed.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.once = function(event, fn){
+ function on() {
+ this.off(event, on);
+ fn.apply(this, arguments);
+ }
+
+ on.fn = fn;
+ this.on(event, on);
+ return this;
+ };
+
+ /**
+ * Remove the given callback for `event` or all
+ * registered callbacks.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.off =
+ Emitter.prototype.removeListener =
+ Emitter.prototype.removeAllListeners =
+ Emitter.prototype.removeEventListener = function(event, fn){
+ this._callbacks = this._callbacks || {};
+
+ // all
+ if (0 == arguments.length) {
+ this._callbacks = {};
+ return this;
+ }
+
+ // specific event
+ var callbacks = this._callbacks['$' + event];
+ if (!callbacks) return this;
+
+ // remove all handlers
+ if (1 == arguments.length) {
+ delete this._callbacks['$' + event];
+ return this;
+ }
+
+ // remove specific handler
+ var cb;
+ for (var i = 0; i < callbacks.length; i++) {
+ cb = callbacks[i];
+ if (cb === fn || cb.fn === fn) {
+ callbacks.splice(i, 1);
+ break;
+ }
+ }
+ return this;
+ };
+
+ /**
+ * Emit `event` with the given args.
+ *
+ * @param {String} event
+ * @param {Mixed} ...
+ * @return {Emitter}
+ */
+
+ Emitter.prototype.emit = function(event){
+ this._callbacks = this._callbacks || {};
+ var args = [].slice.call(arguments, 1)
+ , callbacks = this._callbacks['$' + event];
+
+ if (callbacks) {
+ callbacks = callbacks.slice(0);
+ for (var i = 0, len = callbacks.length; i < len; ++i) {
+ callbacks[i].apply(this, args);
+ }
+ }
+
+ return this;
+ };
+
+ /**
+ * Return array of callbacks for `event`.
+ *
+ * @param {String} event
+ * @return {Array}
+ * @api public
+ */
+
+ Emitter.prototype.listeners = function(event){
+ this._callbacks = this._callbacks || {};
+ return this._callbacks['$' + event] || [];
+ };
+
+ /**
+ * Check if this emitter has `event` handlers.
+ *
+ * @param {String} event
+ * @return {Boolean}
+ * @api public
+ */
+
+ Emitter.prototype.hasListeners = function(event){
+ return !! this.listeners(event).length;
+ };
+
+ },{}],39:[function(_dereq_,module,exports){
+ arguments[4][17][0].apply(exports,arguments)
+ },{"./debug":40,"dup":17}],40:[function(_dereq_,module,exports){
+ arguments[4][18][0].apply(exports,arguments)
+ },{"dup":18,"ms":44}],41:[function(_dereq_,module,exports){
+ (function (global){
+
+ /*
+ * Module requirements.
+ */
+
+ var isArray = _dereq_('isarray');
+
+ /**
+ * Module exports.
+ */
+
+ module.exports = hasBinary;
+
+ /**
+ * Checks for binary data.
+ *
+ * Right now only Buffer and ArrayBuffer are supported..
+ *
+ * @param {Object} anything
+ * @api public
+ */
+
+ function hasBinary(data) {
+
+ function _hasBinary(obj) {
+ if (!obj) return false;
+
+ if ( (global.Buffer && global.Buffer.isBuffer && global.Buffer.isBuffer(obj)) ||
+ (global.ArrayBuffer && obj instanceof ArrayBuffer) ||
+ (global.Blob && obj instanceof Blob) ||
+ (global.File && obj instanceof File)
+ ) {
+ return true;
+ }
+
+ if (isArray(obj)) {
+ for (var i = 0; i < obj.length; i++) {
+ if (_hasBinary(obj[i])) {
+ return true;
+ }
+ }
+ } else if (obj && 'object' == typeof obj) {
+ // see: https://github.com/Automattic/has-binary/pull/4
+ if (obj.toJSON && 'function' == typeof obj.toJSON) {
+ obj = obj.toJSON();
+ }
+
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key) && _hasBinary(obj[key])) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ return _hasBinary(data);
+ }
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{"isarray":43}],42:[function(_dereq_,module,exports){
+ arguments[4][23][0].apply(exports,arguments)
+ },{"dup":23}],43:[function(_dereq_,module,exports){
+ arguments[4][24][0].apply(exports,arguments)
+ },{"dup":24}],44:[function(_dereq_,module,exports){
+ arguments[4][25][0].apply(exports,arguments)
+ },{"dup":25}],45:[function(_dereq_,module,exports){
+ arguments[4][28][0].apply(exports,arguments)
+ },{"dup":28}],46:[function(_dereq_,module,exports){
+ (function (global){
+ /*global Blob,File*/
+
+ /**
+ * Module requirements
+ */
+
+ var isArray = _dereq_('isarray');
+ var isBuf = _dereq_('./is-buffer');
+
+ /**
+ * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.
+ * Anything with blobs or files should be fed through removeBlobs before coming
+ * here.
+ *
+ * @param {Object} packet - socket.io event packet
+ * @return {Object} with deconstructed packet and list of buffers
+ * @api public
+ */
+
+ exports.deconstructPacket = function(packet){
+ var buffers = [];
+ var packetData = packet.data;
+
+ function _deconstructPacket(data) {
+ if (!data) return data;
+
+ if (isBuf(data)) {
+ var placeholder = { _placeholder: true, num: buffers.length };
+ buffers.push(data);
+ return placeholder;
+ } else if (isArray(data)) {
+ var newData = new Array(data.length);
+ for (var i = 0; i < data.length; i++) {
+ newData[i] = _deconstructPacket(data[i]);
+ }
+ return newData;
+ } else if ('object' == typeof data && !(data instanceof Date)) {
+ var newData = {};
+ for (var key in data) {
+ newData[key] = _deconstructPacket(data[key]);
+ }
+ return newData;
+ }
+ return data;
+ }
+
+ var pack = packet;
+ pack.data = _deconstructPacket(packetData);
+ pack.attachments = buffers.length; // number of binary 'attachments'
+ return {packet: pack, buffers: buffers};
+ };
+
+ /**
+ * Reconstructs a binary packet from its placeholder packet and buffers
+ *
+ * @param {Object} packet - event packet with placeholders
+ * @param {Array} buffers - binary buffers to put in placeholder positions
+ * @return {Object} reconstructed packet
+ * @api public
+ */
+
+ exports.reconstructPacket = function(packet, buffers) {
+ var curPlaceHolder = 0;
+
+ function _reconstructPacket(data) {
+ if (data && data._placeholder) {
+ var buf = buffers[data.num]; // appropriate buffer (should be natural order anyway)
+ return buf;
+ } else if (isArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ data[i] = _reconstructPacket(data[i]);
+ }
+ return data;
+ } else if (data && 'object' == typeof data) {
+ for (var key in data) {
+ data[key] = _reconstructPacket(data[key]);
+ }
+ return data;
+ }
+ return data;
+ }
+
+ packet.data = _reconstructPacket(packet.data);
+ packet.attachments = undefined; // no longer useful
+ return packet;
+ };
+
+ /**
+ * Asynchronously removes Blobs or Files from data via
+ * FileReader's readAsArrayBuffer method. Used before encoding
+ * data as msgpack. Calls callback with the blobless data.
+ *
+ * @param {Object} data
+ * @param {Function} callback
+ * @api private
+ */
+
+ exports.removeBlobs = function(data, callback) {
+ function _removeBlobs(obj, curKey, containingObject) {
+ if (!obj) return obj;
+
+ // convert any blob
+ if ((global.Blob && obj instanceof Blob) ||
+ (global.File && obj instanceof File)) {
+ pendingBlobs++;
+
+ // async filereader
+ var fileReader = new FileReader();
+ fileReader.onload = function() { // this.result == arraybuffer
+ if (containingObject) {
+ containingObject[curKey] = this.result;
+ }
+ else {
+ bloblessData = this.result;
+ }
+
+ // if nothing pending its callback time
+ if(! --pendingBlobs) {
+ callback(bloblessData);
+ }
+ };
+
+ fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer
+ } else if (isArray(obj)) { // handle array
+ for (var i = 0; i < obj.length; i++) {
+ _removeBlobs(obj[i], i, obj);
+ }
+ } else if (obj && 'object' == typeof obj && !isBuf(obj)) { // and object
+ for (var key in obj) {
+ _removeBlobs(obj[key], key, obj);
+ }
+ }
+ }
+
+ var pendingBlobs = 0;
+ var bloblessData = data;
+ _removeBlobs(bloblessData);
+ if (!pendingBlobs) {
+ callback(bloblessData);
+ }
+ };
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{"./is-buffer":48,"isarray":43}],47:[function(_dereq_,module,exports){
+
+ /**
+ * Module dependencies.
+ */
+
+ var debug = _dereq_('debug')('socket.io-parser');
+ var json = _dereq_('json3');
+ var isArray = _dereq_('isarray');
+ var Emitter = _dereq_('component-emitter');
+ var binary = _dereq_('./binary');
+ var isBuf = _dereq_('./is-buffer');
+
+ /**
+ * Protocol version.
+ *
+ * @api public
+ */
+
+ exports.protocol = 4;
+
+ /**
+ * Packet types.
+ *
+ * @api public
+ */
+
+ exports.types = [
+ 'CONNECT',
+ 'DISCONNECT',
+ 'EVENT',
+ 'BINARY_EVENT',
+ 'ACK',
+ 'BINARY_ACK',
+ 'ERROR'
+ ];
+
+ /**
+ * Packet type `connect`.
+ *
+ * @api public
+ */
+
+ exports.CONNECT = 0;
+
+ /**
+ * Packet type `disconnect`.
+ *
+ * @api public
+ */
+
+ exports.DISCONNECT = 1;
+
+ /**
+ * Packet type `event`.
+ *
+ * @api public
+ */
+
+ exports.EVENT = 2;
+
+ /**
+ * Packet type `ack`.
+ *
+ * @api public
+ */
+
+ exports.ACK = 3;
+
+ /**
+ * Packet type `error`.
+ *
+ * @api public
+ */
+
+ exports.ERROR = 4;
+
+ /**
+ * Packet type 'binary event'
+ *
+ * @api public
+ */
+
+ exports.BINARY_EVENT = 5;
+
+ /**
+ * Packet type `binary ack`. For acks with binary arguments.
+ *
+ * @api public
+ */
+
+ exports.BINARY_ACK = 6;
+
+ /**
+ * Encoder constructor.
+ *
+ * @api public
+ */
+
+ exports.Encoder = Encoder;
+
+ /**
+ * Decoder constructor.
+ *
+ * @api public
+ */
+
+ exports.Decoder = Decoder;
+
+ /**
+ * A socket.io Encoder instance
+ *
+ * @api public
+ */
+
+ function Encoder() {}
+
+ /**
+ * Encode a packet as a single string if non-binary, or as a
+ * buffer sequence, depending on packet type.
+ *
+ * @param {Object} obj - packet object
+ * @param {Function} callback - function to handle encodings (likely engine.write)
+ * @return Calls callback with Array of encodings
+ * @api public
+ */
+
+ Encoder.prototype.encode = function(obj, callback){
+ debug('encoding packet %j', obj);
+
+ if (exports.BINARY_EVENT == obj.type || exports.BINARY_ACK == obj.type) {
+ encodeAsBinary(obj, callback);
+ }
+ else {
+ var encoding = encodeAsString(obj);
+ callback([encoding]);
+ }
+ };
+
+ /**
+ * Encode packet as string.
+ *
+ * @param {Object} packet
+ * @return {String} encoded
+ * @api private
+ */
+
+ function encodeAsString(obj) {
+ var str = '';
+ var nsp = false;
+
+ // first is type
+ str += obj.type;
+
+ // attachments if we have them
+ if (exports.BINARY_EVENT == obj.type || exports.BINARY_ACK == obj.type) {
+ str += obj.attachments;
+ str += '-';
+ }
+
+ // if we have a namespace other than `/`
+ // we append it followed by a comma `,`
+ if (obj.nsp && '/' != obj.nsp) {
+ nsp = true;
+ str += obj.nsp;
+ }
+
+ // immediately followed by the id
+ if (null != obj.id) {
+ if (nsp) {
+ str += ',';
+ nsp = false;
+ }
+ str += obj.id;
+ }
+
+ // json data
+ if (null != obj.data) {
+ if (nsp) str += ',';
+ str += json.stringify(obj.data);
+ }
+
+ debug('encoded %j as %s', obj, str);
+ return str;
+ }
+
+ /**
+ * Encode packet as 'buffer sequence' by removing blobs, and
+ * deconstructing packet into object with placeholders and
+ * a list of buffers.
+ *
+ * @param {Object} packet
+ * @return {Buffer} encoded
+ * @api private
+ */
+
+ function encodeAsBinary(obj, callback) {
+
+ function writeEncoding(bloblessData) {
+ var deconstruction = binary.deconstructPacket(bloblessData);
+ var pack = encodeAsString(deconstruction.packet);
+ var buffers = deconstruction.buffers;
+
+ buffers.unshift(pack); // add packet info to beginning of data list
+ callback(buffers); // write all the buffers
+ }
+
+ binary.removeBlobs(obj, writeEncoding);
+ }
+
+ /**
+ * A socket.io Decoder instance
+ *
+ * @return {Object} decoder
+ * @api public
+ */
+
+ function Decoder() {
+ this.reconstructor = null;
+ }
+
+ /**
+ * Mix in `Emitter` with Decoder.
+ */
+
+ Emitter(Decoder.prototype);
+
+ /**
+ * Decodes an ecoded packet string into packet JSON.
+ *
+ * @param {String} obj - encoded packet
+ * @return {Object} packet
+ * @api public
+ */
+
+ Decoder.prototype.add = function(obj) {
+ var packet;
+ if ('string' == typeof obj) {
+ packet = decodeString(obj);
+ if (exports.BINARY_EVENT == packet.type || exports.BINARY_ACK == packet.type) { // binary packet's json
+ this.reconstructor = new BinaryReconstructor(packet);
+
+ // no attachments, labeled binary but no binary data to follow
+ if (this.reconstructor.reconPack.attachments === 0) {
+ this.emit('decoded', packet);
+ }
+ } else { // non-binary full packet
+ this.emit('decoded', packet);
+ }
+ }
+ else if (isBuf(obj) || obj.base64) { // raw binary data
+ if (!this.reconstructor) {
+ throw new Error('got binary data when not reconstructing a packet');
+ } else {
+ packet = this.reconstructor.takeBinaryData(obj);
+ if (packet) { // received final buffer
+ this.reconstructor = null;
+ this.emit('decoded', packet);
+ }
+ }
+ }
+ else {
+ throw new Error('Unknown type: ' + obj);
+ }
+ };
+
+ /**
+ * Decode a packet String (JSON data)
+ *
+ * @param {String} str
+ * @return {Object} packet
+ * @api private
+ */
+
+ function decodeString(str) {
+ var p = {};
+ var i = 0;
+
+ // look up type
+ p.type = Number(str.charAt(0));
+ if (null == exports.types[p.type]) return error();
+
+ // look up attachments if type binary
+ if (exports.BINARY_EVENT == p.type || exports.BINARY_ACK == p.type) {
+ var buf = '';
+ while (str.charAt(++i) != '-') {
+ buf += str.charAt(i);
+ if (i == str.length) break;
+ }
+ if (buf != Number(buf) || str.charAt(i) != '-') {
+ throw new Error('Illegal attachments');
+ }
+ p.attachments = Number(buf);
+ }
+
+ // look up namespace (if any)
+ if ('/' == str.charAt(i + 1)) {
+ p.nsp = '';
+ while (++i) {
+ var c = str.charAt(i);
+ if (',' == c) break;
+ p.nsp += c;
+ if (i == str.length) break;
+ }
+ } else {
+ p.nsp = '/';
+ }
+
+ // look up id
+ var next = str.charAt(i + 1);
+ if ('' !== next && Number(next) == next) {
+ p.id = '';
+ while (++i) {
+ var c = str.charAt(i);
+ if (null == c || Number(c) != c) {
+ --i;
+ break;
+ }
+ p.id += str.charAt(i);
+ if (i == str.length) break;
+ }
+ p.id = Number(p.id);
+ }
+
+ // look up json data
+ if (str.charAt(++i)) {
+ try {
+ p.data = json.parse(str.substr(i));
+ } catch(e){
+ return error();
+ }
+ }
+
+ debug('decoded %s as %j', str, p);
+ return p;
+ }
+
+ /**
+ * Deallocates a parser's resources
+ *
+ * @api public
+ */
+
+ Decoder.prototype.destroy = function() {
+ if (this.reconstructor) {
+ this.reconstructor.finishedReconstruction();
+ }
+ };
+
+ /**
+ * A manager of a binary event's 'buffer sequence'. Should
+ * be constructed whenever a packet of type BINARY_EVENT is
+ * decoded.
+ *
+ * @param {Object} packet
+ * @return {BinaryReconstructor} initialized reconstructor
+ * @api private
+ */
+
+ function BinaryReconstructor(packet) {
+ this.reconPack = packet;
+ this.buffers = [];
+ }
+
+ /**
+ * Method to be called when binary data received from connection
+ * after a BINARY_EVENT packet.
+ *
+ * @param {Buffer | ArrayBuffer} binData - the raw binary data received
+ * @return {null | Object} returns null if more binary data is expected or
+ * a reconstructed packet object if all buffers have been received.
+ * @api private
+ */
+
+ BinaryReconstructor.prototype.takeBinaryData = function(binData) {
+ this.buffers.push(binData);
+ if (this.buffers.length == this.reconPack.attachments) { // done with buffer list
+ var packet = binary.reconstructPacket(this.reconPack, this.buffers);
+ this.finishedReconstruction();
+ return packet;
+ }
+ return null;
+ };
+
+ /**
+ * Cleans up binary packet reconstruction variables.
+ *
+ * @api private
+ */
+
+ BinaryReconstructor.prototype.finishedReconstruction = function() {
+ this.reconPack = null;
+ this.buffers = [];
+ };
+
+ function error(data){
+ return {
+ type: exports.ERROR,
+ data: 'parser error'
+ };
+ }
+
+ },{"./binary":46,"./is-buffer":48,"component-emitter":49,"debug":39,"isarray":43,"json3":50}],48:[function(_dereq_,module,exports){
+ (function (global){
+
+ module.exports = isBuf;
+
+ /**
+ * Returns true if obj is a buffer or an arraybuffer.
+ *
+ * @api private
+ */
+
+ function isBuf(obj) {
+ return (global.Buffer && global.Buffer.isBuffer(obj)) ||
+ (global.ArrayBuffer && obj instanceof ArrayBuffer);
+ }
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{}],49:[function(_dereq_,module,exports){
+ arguments[4][15][0].apply(exports,arguments)
+ },{"dup":15}],50:[function(_dereq_,module,exports){
+ (function (global){
+ /*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */
+ ;(function () {
+ // Detect the `define` function exposed by asynchronous module loaders. The
+ // strict `define` check is necessary for compatibility with `r.js`.
+ var isLoader = typeof define === "function" && define.amd;
+
+ // A set of types used to distinguish objects from primitives.
+ var objectTypes = {
+ "function": true,
+ "object": true
+ };
+
+ // Detect the `exports` object exposed by CommonJS implementations.
+ var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
+
+ // Use the `global` object exposed by Node (including Browserify via
+ // `insert-module-globals`), Narwhal, and Ringo as the default context,
+ // and the `window` object in browsers. Rhino exports a `global` function
+ // instead.
+ var root = objectTypes[typeof window] && window || this,
+ freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && typeof global == "object" && global;
+
+ if (freeGlobal && (freeGlobal["global"] === freeGlobal || freeGlobal["window"] === freeGlobal || freeGlobal["self"] === freeGlobal)) {
+ root = freeGlobal;
+ }
+
+ // Public: Initializes JSON 3 using the given `context` object, attaching the
+ // `stringify` and `parse` functions to the specified `exports` object.
+ function runInContext(context, exports) {
+ context || (context = root["Object"]());
+ exports || (exports = root["Object"]());
+
+ // Native constructor aliases.
+ var Number = context["Number"] || root["Number"],
+ String = context["String"] || root["String"],
+ Object = context["Object"] || root["Object"],
+ Date = context["Date"] || root["Date"],
+ SyntaxError = context["SyntaxError"] || root["SyntaxError"],
+ TypeError = context["TypeError"] || root["TypeError"],
+ Math = context["Math"] || root["Math"],
+ nativeJSON = context["JSON"] || root["JSON"];
+
+ // Delegate to the native `stringify` and `parse` implementations.
+ if (typeof nativeJSON == "object" && nativeJSON) {
+ exports.stringify = nativeJSON.stringify;
+ exports.parse = nativeJSON.parse;
+ }
+
+ // Convenience aliases.
+ var objectProto = Object.prototype,
+ getClass = objectProto.toString,
+ isProperty, forEach, undef;
+
+ // Test the `Date#getUTC*` methods. Based on work by @Yaffle.
+ var isExtended = new Date(-3509827334573292);
+ try {
+ // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical
+ // results for certain dates in Opera >= 10.53.
+ isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 &&
+ // Safari < 2.0.2 stores the internal millisecond time value correctly,
+ // but clips the values returned by the date methods to the range of
+ // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).
+ isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;
+ } catch (exception) {}
+
+ // Internal: Determines whether the native `JSON.stringify` and `parse`
+ // implementations are spec-compliant. Based on work by Ken Snyder.
+ function has(name) {
+ if (has[name] !== undef) {
+ // Return cached feature test result.
+ return has[name];
+ }
+ var isSupported;
+ if (name == "bug-string-char-index") {
+ // IE <= 7 doesn't support accessing string characters using square
+ // bracket notation. IE 8 only supports this for primitives.
+ isSupported = "a"[0] != "a";
+ } else if (name == "json") {
+ // Indicates whether both `JSON.stringify` and `JSON.parse` are
+ // supported.
+ isSupported = has("json-stringify") && has("json-parse");
+ } else {
+ var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';
+ // Test `JSON.stringify`.
+ if (name == "json-stringify") {
+ var stringify = exports.stringify, stringifySupported = typeof stringify == "function" && isExtended;
+ if (stringifySupported) {
+ // A test function object with a custom `toJSON` method.
+ (value = function () {
+ return 1;
+ }).toJSON = value;
+ try {
+ stringifySupported =
+ // Firefox 3.1b1 and b2 serialize string, number, and boolean
+ // primitives as object literals.
+ stringify(0) === "0" &&
+ // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object
+ // literals.
+ stringify(new Number()) === "0" &&
+ stringify(new String()) == '""' &&
+ // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or
+ // does not define a canonical JSON representation (this applies to
+ // objects with `toJSON` properties as well, *unless* they are nested
+ // within an object or array).
+ stringify(getClass) === undef &&
+ // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and
+ // FF 3.1b3 pass this test.
+ stringify(undef) === undef &&
+ // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,
+ // respectively, if the value is omitted entirely.
+ stringify() === undef &&
+ // FF 3.1b1, 2 throw an error if the given value is not a number,
+ // string, array, object, Boolean, or `null` literal. This applies to
+ // objects with custom `toJSON` methods as well, unless they are nested
+ // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`
+ // methods entirely.
+ stringify(value) === "1" &&
+ stringify([value]) == "[1]" &&
+ // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of
+ // `"[null]"`.
+ stringify([undef]) == "[null]" &&
+ // YUI 3.0.0b1 fails to serialize `null` literals.
+ stringify(null) == "null" &&
+ // FF 3.1b1, 2 halts serialization if an array contains a function:
+ // `[1, true, getClass, 1]` serializes as "[1,true,],". FF 3.1b3
+ // elides non-JSON values from objects and arrays, unless they
+ // define custom `toJSON` methods.
+ stringify([undef, getClass, null]) == "[null,null,null]" &&
+ // Simple serialization test. FF 3.1b1 uses Unicode escape sequences
+ // where character escape codes are expected (e.g., `\b` => `\u0008`).
+ stringify({ "a": [value, true, false, null, "\x00\b\n\f\r\t"] }) == serialized &&
+ // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.
+ stringify(null, value) === "1" &&
+ stringify([1, 2], null, 1) == "[\n 1,\n 2\n]" &&
+ // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly
+ // serialize extended years.
+ stringify(new Date(-8.64e15)) == '"-271821-04-20T00:00:00.000Z"' &&
+ // The milliseconds are optional in ES 5, but required in 5.1.
+ stringify(new Date(8.64e15)) == '"+275760-09-13T00:00:00.000Z"' &&
+ // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative
+ // four-digit years instead of six-digit years. Credits: @Yaffle.
+ stringify(new Date(-621987552e5)) == '"-000001-01-01T00:00:00.000Z"' &&
+ // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond
+ // values less than 1000. Credits: @Yaffle.
+ stringify(new Date(-1)) == '"1969-12-31T23:59:59.999Z"';
+ } catch (exception) {
+ stringifySupported = false;
+ }
+ }
+ isSupported = stringifySupported;
+ }
+ // Test `JSON.parse`.
+ if (name == "json-parse") {
+ var parse = exports.parse;
+ if (typeof parse == "function") {
+ try {
+ // FF 3.1b1, b2 will throw an exception if a bare literal is provided.
+ // Conforming implementations should also coerce the initial argument to
+ // a string prior to parsing.
+ if (parse("0") === 0 && !parse(false)) {
+ // Simple parsing test.
+ value = parse(serialized);
+ var parseSupported = value["a"].length == 5 && value["a"][0] === 1;
+ if (parseSupported) {
+ try {
+ // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.
+ parseSupported = !parse('"\t"');
+ } catch (exception) {}
+ if (parseSupported) {
+ try {
+ // FF 4.0 and 4.0.1 allow leading `+` signs and leading
+ // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow
+ // certain octal literals.
+ parseSupported = parse("01") !== 1;
+ } catch (exception) {}
+ }
+ if (parseSupported) {
+ try {
+ // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal
+ // points. These environments, along with FF 3.1b1 and 2,
+ // also allow trailing commas in JSON objects and arrays.
+ parseSupported = parse("1.") !== 1;
+ } catch (exception) {}
+ }
+ }
+ }
+ } catch (exception) {
+ parseSupported = false;
+ }
+ }
+ isSupported = parseSupported;
+ }
+ }
+ return has[name] = !!isSupported;
+ }
+
+ if (!has("json")) {
+ // Common `[[Class]]` name aliases.
+ var functionClass = "[object Function]",
+ dateClass = "[object Date]",
+ numberClass = "[object Number]",
+ stringClass = "[object String]",
+ arrayClass = "[object Array]",
+ booleanClass = "[object Boolean]";
+
+ // Detect incomplete support for accessing string characters by index.
+ var charIndexBuggy = has("bug-string-char-index");
+
+ // Define additional utility methods if the `Date` methods are buggy.
+ if (!isExtended) {
+ var floor = Math.floor;
+ // A mapping between the months of the year and the number of days between
+ // January 1st and the first of the respective month.
+ var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+ // Internal: Calculates the number of days between the Unix epoch and the
+ // first day of the given month.
+ var getDay = function (year, month) {
+ return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);
+ };
+ }
+
+ // Internal: Determines if a property is a direct property of the given
+ // object. Delegates to the native `Object#hasOwnProperty` method.
+ if (!(isProperty = objectProto.hasOwnProperty)) {
+ isProperty = function (property) {
+ var members = {}, constructor;
+ if ((members.__proto__ = null, members.__proto__ = {
+ // The *proto* property cannot be set multiple times in recent
+ // versions of Firefox and SeaMonkey.
+ "toString": 1
+ }, members).toString != getClass) {
+ // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but
+ // supports the mutable *proto* property.
+ isProperty = function (property) {
+ // Capture and break the object's prototype chain (see section 8.6.2
+ // of the ES 5.1 spec). The parenthesized expression prevents an
+ // unsafe transformation by the Closure Compiler.
+ var original = this.__proto__, result = property in (this.__proto__ = null, this);
+ // Restore the original prototype chain.
+ this.__proto__ = original;
+ return result;
+ };
+ } else {
+ // Capture a reference to the top-level `Object` constructor.
+ constructor = members.constructor;
+ // Use the `constructor` property to simulate `Object#hasOwnProperty` in
+ // other environments.
+ isProperty = function (property) {
+ var parent = (this.constructor || constructor).prototype;
+ return property in this && !(property in parent && this[property] === parent[property]);
+ };
+ }
+ members = null;
+ return isProperty.call(this, property);
+ };
+ }
+
+ // Internal: Normalizes the `for...in` iteration algorithm across
+ // environments. Each enumerated key is yielded to a `callback` function.
+ forEach = function (object, callback) {
+ var size = 0, Properties, members, property;
+
+ // Tests for bugs in the current environment's `for...in` algorithm. The
+ // `valueOf` property inherits the non-enumerable flag from
+ // `Object.prototype` in older versions of IE, Netscape, and Mozilla.
+ (Properties = function () {
+ this.valueOf = 0;
+ }).prototype.valueOf = 0;
+
+ // Iterate over a new instance of the `Properties` class.
+ members = new Properties();
+ for (property in members) {
+ // Ignore all properties inherited from `Object.prototype`.
+ if (isProperty.call(members, property)) {
+ size++;
+ }
+ }
+ Properties = members = null;
+
+ // Normalize the iteration algorithm.
+ if (!size) {
+ // A list of non-enumerable properties inherited from `Object.prototype`.
+ members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"];
+ // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable
+ // properties.
+ forEach = function (object, callback) {
+ var isFunction = getClass.call(object) == functionClass, property, length;
+ var hasProperty = !isFunction && typeof object.constructor != "function" && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty;
+ for (property in object) {
+ // Gecko <= 1.0 enumerates the `prototype` property of functions under
+ // certain conditions; IE does not.
+ if (!(isFunction && property == "prototype") && hasProperty.call(object, property)) {
+ callback(property);
+ }
+ }
+ // Manually invoke the callback for each non-enumerable property.
+ for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property));
+ };
+ } else if (size == 2) {
+ // Safari <= 2.0.4 enumerates shadowed properties twice.
+ forEach = function (object, callback) {
+ // Create a set of iterated properties.
+ var members = {}, isFunction = getClass.call(object) == functionClass, property;
+ for (property in object) {
+ // Store each property name to prevent double enumeration. The
+ // `prototype` property of functions is not enumerated due to cross-
+ // environment inconsistencies.
+ if (!(isFunction && property == "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) {
+ callback(property);
+ }
+ }
+ };
+ } else {
+ // No bugs detected; use the standard `for...in` algorithm.
+ forEach = function (object, callback) {
+ var isFunction = getClass.call(object) == functionClass, property, isConstructor;
+ for (property in object) {
+ if (!(isFunction && property == "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) {
+ callback(property);
+ }
+ }
+ // Manually invoke the callback for the `constructor` property due to
+ // cross-environment inconsistencies.
+ if (isConstructor || isProperty.call(object, (property = "constructor"))) {
+ callback(property);
+ }
+ };
+ }
+ return forEach(object, callback);
+ };
+
+ // Public: Serializes a JavaScript `value` as a JSON string. The optional
+ // `filter` argument may specify either a function that alters how object and
+ // array members are serialized, or an array of strings and numbers that
+ // indicates which properties should be serialized. The optional `width`
+ // argument may be either a string or number that specifies the indentation
+ // level of the output.
+ if (!has("json-stringify")) {
+ // Internal: A map of control characters and their escaped equivalents.
+ var Escapes = {
+ 92: "\\\\",
+ 34: '\\"',
+ 8: "\\b",
+ 12: "\\f",
+ 10: "\\n",
+ 13: "\\r",
+ 9: "\\t"
+ };
+
+ // Internal: Converts `value` into a zero-padded string such that its
+ // length is at least equal to `width`. The `width` must be <= 6.
+ var leadingZeroes = "000000";
+ var toPaddedString = function (width, value) {
+ // The `|| 0` expression is necessary to work around a bug in
+ // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.
+ return (leadingZeroes + (value || 0)).slice(-width);
+ };
+
+ // Internal: Double-quotes a string `value`, replacing all ASCII control
+ // characters (characters with code unit values between 0 and 31) with
+ // their escaped equivalents. This is an implementation of the
+ // `Quote(value)` operation defined in ES 5.1 section 15.12.3.
+ var unicodePrefix = "\\u00";
+ var quote = function (value) {
+ var result = '"', index = 0, length = value.length, useCharIndex = !charIndexBuggy || length > 10;
+ var symbols = useCharIndex && (charIndexBuggy ? value.split("") : value);
+ for (; index < length; index++) {
+ var charCode = value.charCodeAt(index);
+ // If the character is a control character, append its Unicode or
+ // shorthand escape sequence; otherwise, append the character as-is.
+ switch (charCode) {
+ case 8: case 9: case 10: case 12: case 13: case 34: case 92:
+ result += Escapes[charCode];
+ break;
+ default:
+ if (charCode < 32) {
+ result += unicodePrefix + toPaddedString(2, charCode.toString(16));
+ break;
+ }
+ result += useCharIndex ? symbols[index] : value.charAt(index);
+ }
+ }
+ return result + '"';
+ };
+
+ // Internal: Recursively serializes an object. Implements the
+ // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.
+ var serialize = function (property, object, callback, properties, whitespace, indentation, stack) {
+ var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result;
+ try {
+ // Necessary for host object support.
+ value = object[property];
+ } catch (exception) {}
+ if (typeof value == "object" && value) {
+ className = getClass.call(value);
+ if (className == dateClass && !isProperty.call(value, "toJSON")) {
+ if (value > -1 / 0 && value < 1 / 0) {
+ // Dates are serialized according to the `Date#toJSON` method
+ // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15
+ // for the ISO 8601 date time string format.
+ if (getDay) {
+ // Manually compute the year, month, date, hours, minutes,
+ // seconds, and milliseconds if the `getUTC*` methods are
+ // buggy. Adapted from @Yaffle's `date-shim` project.
+ date = floor(value / 864e5);
+ for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++);
+ for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++);
+ date = 1 + date - getDay(year, month);
+ // The `time` value specifies the time within the day (see ES
+ // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used
+ // to compute `A modulo B`, as the `%` operator does not
+ // correspond to the `modulo` operation for negative numbers.
+ time = (value % 864e5 + 864e5) % 864e5;
+ // The hours, minutes, seconds, and milliseconds are obtained by
+ // decomposing the time within the day. See section 15.9.1.10.
+ hours = floor(time / 36e5) % 24;
+ minutes = floor(time / 6e4) % 60;
+ seconds = floor(time / 1e3) % 60;
+ milliseconds = time % 1e3;
+ } else {
+ year = value.getUTCFullYear();
+ month = value.getUTCMonth();
+ date = value.getUTCDate();
+ hours = value.getUTCHours();
+ minutes = value.getUTCMinutes();
+ seconds = value.getUTCSeconds();
+ milliseconds = value.getUTCMilliseconds();
+ }
+ // Serialize extended years correctly.
+ value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) +
+ "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) +
+ // Months, dates, hours, minutes, and seconds should have two
+ // digits; milliseconds should have three.
+ "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) +
+ // Milliseconds are optional in ES 5.0, but required in 5.1.
+ "." + toPaddedString(3, milliseconds) + "Z";
+ } else {
+ value = null;
+ }
+ } else if (typeof value.toJSON == "function" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, "toJSON"))) {
+ // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the
+ // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3
+ // ignores all `toJSON` methods on these objects unless they are
+ // defined directly on an instance.
+ value = value.toJSON(property);
+ }
+ }
+ if (callback) {
+ // If a replacement function was provided, call it to obtain the value
+ // for serialization.
+ value = callback.call(object, property, value);
+ }
+ if (value === null) {
+ return "null";
+ }
+ className = getClass.call(value);
+ if (className == booleanClass) {
+ // Booleans are represented literally.
+ return "" + value;
+ } else if (className == numberClass) {
+ // JSON numbers must be finite. `Infinity` and `NaN` are serialized as
+ // `"null"`.
+ return value > -1 / 0 && value < 1 / 0 ? "" + value : "null";
+ } else if (className == stringClass) {
+ // Strings are double-quoted and escaped.
+ return quote("" + value);
+ }
+ // Recursively serialize objects and arrays.
+ if (typeof value == "object") {
+ // Check for cyclic structures. This is a linear search; performance
+ // is inversely proportional to the number of unique nested objects.
+ for (length = stack.length; length--;) {
+ if (stack[length] === value) {
+ // Cyclic structures cannot be serialized by `JSON.stringify`.
+ throw TypeError();
+ }
+ }
+ // Add the object to the stack of traversed objects.
+ stack.push(value);
+ results = [];
+ // Save the current indentation level and indent one additional level.
+ prefix = indentation;
+ indentation += whitespace;
+ if (className == arrayClass) {
+ // Recursively serialize array elements.
+ for (index = 0, length = value.length; index < length; index++) {
+ element = serialize(index, value, callback, properties, whitespace, indentation, stack);
+ results.push(element === undef ? "null" : element);
+ }
+ result = results.length ? (whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : ("[" + results.join(",") + "]")) : "[]";
+ } else {
+ // Recursively serialize object members. Members are selected from
+ // either a user-specified list of property names, or the object
+ // itself.
+ forEach(properties || value, function (property) {
+ var element = serialize(property, value, callback, properties, whitespace, indentation, stack);
+ if (element !== undef) {
+ // According to ES 5.1 section 15.12.3: "If `gap` {whitespace}
+ // is not the empty string, let `member` {quote(property) + ":"}
+ // be the concatenation of `member` and the `space` character."
+ // The "`space` character" refers to the literal space
+ // character, not the `space` {width} argument provided to
+ // `JSON.stringify`.
+ results.push(quote(property) + ":" + (whitespace ? " " : "") + element);
+ }
+ });
+ result = results.length ? (whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : ("{" + results.join(",") + "}")) : "{}";
+ }
+ // Remove the object from the traversed object stack.
+ stack.pop();
+ return result;
+ }
+ };
+
+ // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.
+ exports.stringify = function (source, filter, width) {
+ var whitespace, callback, properties, className;
+ if (objectTypes[typeof filter] && filter) {
+ if ((className = getClass.call(filter)) == functionClass) {
+ callback = filter;
+ } else if (className == arrayClass) {
+ // Convert the property names array into a makeshift set.
+ properties = {};
+ for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((className = getClass.call(value)), className == stringClass || className == numberClass) && (properties[value] = 1));
+ }
+ }
+ if (width) {
+ if ((className = getClass.call(width)) == numberClass) {
+ // Convert the `width` to an integer and create a string containing
+ // `width` number of space characters.
+ if ((width -= width % 1) > 0) {
+ for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " ");
+ }
+ } else if (className == stringClass) {
+ whitespace = width.length <= 10 ? width : width.slice(0, 10);
+ }
+ }
+ // Opera <= 7.54u2 discards the values associated with empty string keys
+ // (`""`) only if they are used directly within an object member list
+ // (e.g., `!("" in { "": 1})`).
+ return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []);
+ };
+ }
+
+ // Public: Parses a JSON source string.
+ if (!has("json-parse")) {
+ var fromCharCode = String.fromCharCode;
+
+ // Internal: A map of escaped control characters and their unescaped
+ // equivalents.
+ var Unescapes = {
+ 92: "\\",
+ 34: '"',
+ 47: "/",
+ 98: "\b",
+ 116: "\t",
+ 110: "\n",
+ 102: "\f",
+ 114: "\r"
+ };
+
+ // Internal: Stores the parser state.
+ var Index, Source;
+
+ // Internal: Resets the parser state and throws a `SyntaxError`.
+ var abort = function () {
+ Index = Source = null;
+ throw SyntaxError();
+ };
+
+ // Internal: Returns the next token, or `"$"` if the parser has reached
+ // the end of the source string. A token may be a string, number, `null`
+ // literal, or Boolean literal.
+ var lex = function () {
+ var source = Source, length = source.length, value, begin, position, isSigned, charCode;
+ while (Index < length) {
+ charCode = source.charCodeAt(Index);
+ switch (charCode) {
+ case 9: case 10: case 13: case 32:
+ // Skip whitespace tokens, including tabs, carriage returns, line
+ // feeds, and space characters.
+ Index++;
+ break;
+ case 123: case 125: case 91: case 93: case 58: case 44:
+ // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at
+ // the current position.
+ value = charIndexBuggy ? source.charAt(Index) : source[Index];
+ Index++;
+ return value;
+ case 34:
+ // `"` delimits a JSON string; advance to the next character and
+ // begin parsing the string. String tokens are prefixed with the
+ // sentinel `@` character to distinguish them from punctuators and
+ // end-of-string tokens.
+ for (value = "@", Index++; Index < length;) {
+ charCode = source.charCodeAt(Index);
+ if (charCode < 32) {
+ // Unescaped ASCII control characters (those with a code unit
+ // less than the space character) are not permitted.
+ abort();
+ } else if (charCode == 92) {
+ // A reverse solidus (`\`) marks the beginning of an escaped
+ // control character (including `"`, `\`, and `/`) or Unicode
+ // escape sequence.
+ charCode = source.charCodeAt(++Index);
+ switch (charCode) {
+ case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114:
+ // Revive escaped control characters.
+ value += Unescapes[charCode];
+ Index++;
+ break;
+ case 117:
+ // `\u` marks the beginning of a Unicode escape sequence.
+ // Advance to the first character and validate the
+ // four-digit code point.
+ begin = ++Index;
+ for (position = Index + 4; Index < position; Index++) {
+ charCode = source.charCodeAt(Index);
+ // A valid sequence comprises four hexdigits (case-
+ // insensitive) that form a single hexadecimal value.
+ if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {
+ // Invalid Unicode escape sequence.
+ abort();
+ }
+ }
+ // Revive the escaped character.
+ value += fromCharCode("0x" + source.slice(begin, Index));
+ break;
+ default:
+ // Invalid escape sequence.
+ abort();
+ }
+ } else {
+ if (charCode == 34) {
+ // An unescaped double-quote character marks the end of the
+ // string.
+ break;
+ }
+ charCode = source.charCodeAt(Index);
+ begin = Index;
+ // Optimize for the common case where a string is valid.
+ while (charCode >= 32 && charCode != 92 && charCode != 34) {
+ charCode = source.charCodeAt(++Index);
+ }
+ // Append the string as-is.
+ value += source.slice(begin, Index);
+ }
+ }
+ if (source.charCodeAt(Index) == 34) {
+ // Advance to the next character and return the revived string.
+ Index++;
+ return value;
+ }
+ // Unterminated string.
+ abort();
+ default:
+ // Parse numbers and literals.
+ begin = Index;
+ // Advance past the negative sign, if one is specified.
+ if (charCode == 45) {
+ isSigned = true;
+ charCode = source.charCodeAt(++Index);
+ }
+ // Parse an integer or floating-point value.
+ if (charCode >= 48 && charCode <= 57) {
+ // Leading zeroes are interpreted as octal literals.
+ if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) {
+ // Illegal octal literal.
+ abort();
+ }
+ isSigned = false;
+ // Parse the integer component.
+ for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++);
+ // Floats cannot contain a leading decimal point; however, this
+ // case is already accounted for by the parser.
+ if (source.charCodeAt(Index) == 46) {
+ position = ++Index;
+ // Parse the decimal component.
+ for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);
+ if (position == Index) {
+ // Illegal trailing decimal.
+ abort();
+ }
+ Index = position;
+ }
+ // Parse exponents. The `e` denoting the exponent is
+ // case-insensitive.
+ charCode = source.charCodeAt(Index);
+ if (charCode == 101 || charCode == 69) {
+ charCode = source.charCodeAt(++Index);
+ // Skip past the sign following the exponent, if one is
+ // specified.
+ if (charCode == 43 || charCode == 45) {
+ Index++;
+ }
+ // Parse the exponential component.
+ for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);
+ if (position == Index) {
+ // Illegal empty exponent.
+ abort();
+ }
+ Index = position;
+ }
+ // Coerce the parsed value to a JavaScript number.
+ return +source.slice(begin, Index);
+ }
+ // A negative sign may only precede numbers.
+ if (isSigned) {
+ abort();
+ }
+ // `true`, `false`, and `null` literals.
+ if (source.slice(Index, Index + 4) == "true") {
+ Index += 4;
+ return true;
+ } else if (source.slice(Index, Index + 5) == "false") {
+ Index += 5;
+ return false;
+ } else if (source.slice(Index, Index + 4) == "null") {
+ Index += 4;
+ return null;
+ }
+ // Unrecognized token.
+ abort();
+ }
+ }
+ // Return the sentinel `$` character if the parser has reached the end
+ // of the source string.
+ return "$";
+ };
+
+ // Internal: Parses a JSON `value` token.
+ var get = function (value) {
+ var results, hasMembers;
+ if (value == "$") {
+ // Unexpected end of input.
+ abort();
+ }
+ if (typeof value == "string") {
+ if ((charIndexBuggy ? value.charAt(0) : value[0]) == "@") {
+ // Remove the sentinel `@` character.
+ return value.slice(1);
+ }
+ // Parse object and array literals.
+ if (value == "[") {
+ // Parses a JSON array, returning a new JavaScript array.
+ results = [];
+ for (;; hasMembers || (hasMembers = true)) {
+ value = lex();
+ // A closing square bracket marks the end of the array literal.
+ if (value == "]") {
+ break;
+ }
+ // If the array literal contains elements, the current token
+ // should be a comma separating the previous element from the
+ // next.
+ if (hasMembers) {
+ if (value == ",") {
+ value = lex();
+ if (value == "]") {
+ // Unexpected trailing `,` in array literal.
+ abort();
+ }
+ } else {
+ // A `,` must separate each array element.
+ abort();
+ }
+ }
+ // Elisions and leading commas are not permitted.
+ if (value == ",") {
+ abort();
+ }
+ results.push(get(value));
+ }
+ return results;
+ } else if (value == "{") {
+ // Parses a JSON object, returning a new JavaScript object.
+ results = {};
+ for (;; hasMembers || (hasMembers = true)) {
+ value = lex();
+ // A closing curly brace marks the end of the object literal.
+ if (value == "}") {
+ break;
+ }
+ // If the object literal contains members, the current token
+ // should be a comma separator.
+ if (hasMembers) {
+ if (value == ",") {
+ value = lex();
+ if (value == "}") {
+ // Unexpected trailing `,` in object literal.
+ abort();
+ }
+ } else {
+ // A `,` must separate each object member.
+ abort();
+ }
+ }
+ // Leading commas are not permitted, object property names must be
+ // double-quoted strings, and a `:` must separate each property
+ // name and value.
+ if (value == "," || typeof value != "string" || (charIndexBuggy ? value.charAt(0) : value[0]) != "@" || lex() != ":") {
+ abort();
+ }
+ results[value.slice(1)] = get(lex());
+ }
+ return results;
+ }
+ // Unexpected token encountered.
+ abort();
+ }
+ return value;
+ };
+
+ // Internal: Updates a traversed object member.
+ var update = function (source, property, callback) {
+ var element = walk(source, property, callback);
+ if (element === undef) {
+ delete source[property];
+ } else {
+ source[property] = element;
+ }
+ };
+
+ // Internal: Recursively traverses a parsed JSON object, invoking the
+ // `callback` function for each value. This is an implementation of the
+ // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.
+ var walk = function (source, property, callback) {
+ var value = source[property], length;
+ if (typeof value == "object" && value) {
+ // `forEach` can't be used to traverse an array in Opera <= 8.54
+ // because its `Object#hasOwnProperty` implementation returns `false`
+ // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`).
+ if (getClass.call(value) == arrayClass) {
+ for (length = value.length; length--;) {
+ update(value, length, callback);
+ }
+ } else {
+ forEach(value, function (property) {
+ update(value, property, callback);
+ });
+ }
+ }
+ return callback.call(source, property, value);
+ };
+
+ // Public: `JSON.parse`. See ES 5.1 section 15.12.2.
+ exports.parse = function (source, callback) {
+ var result, value;
+ Index = 0;
+ Source = "" + source;
+ result = get(lex());
+ // If a JSON string contains multiple tokens, it is invalid.
+ if (lex() != "$") {
+ abort();
+ }
+ // Reset the parser state.
+ Index = Source = null;
+ return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[""] = result, value), "", callback) : result;
+ };
+ }
+ }
+
+ exports["runInContext"] = runInContext;
+ return exports;
+ }
+
+ if (freeExports && !isLoader) {
+ // Export for CommonJS environments.
+ runInContext(root, freeExports);
+ } else {
+ // Export for web browsers and JavaScript engines.
+ var nativeJSON = root.JSON,
+ previousJSON = root["JSON3"],
+ isRestored = false;
+
+ var JSON3 = runInContext(root, (root["JSON3"] = {
+ // Public: Restores the original value of the global `JSON` object and
+ // returns a reference to the `JSON3` object.
+ "noConflict": function () {
+ if (!isRestored) {
+ isRestored = true;
+ root.JSON = nativeJSON;
+ root["JSON3"] = previousJSON;
+ nativeJSON = previousJSON = null;
+ }
+ return JSON3;
+ }
+ }));
+
+ root.JSON = {
+ "parse": JSON3.parse,
+ "stringify": JSON3.stringify
+ };
+ }
+
+ // Export for asynchronous module loaders.
+ if (isLoader) {
+ define(function () {
+ return JSON3;
+ });
+ }
+ }).call(this);
+
+ }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {})
+ },{}],51:[function(_dereq_,module,exports){
+ module.exports = toArray
+
+ function toArray(list, index) {
+ var array = []
+
+ index = index || 0
+
+ for (var i = index || 0; i < list.length; i++) {
+ array[i - index] = list[i]
+ }
+
+ return array
+ }
+
+ },{}]},{},[31])(31)
+ });
+}
diff --git a/client/assets/scripts/3rdparty/socket-io.js.meta b/client/assets/scripts/3rdparty/socket-io.js.meta
new file mode 100755
index 0000000..f05229b
--- /dev/null
+++ b/client/assets/scripts/3rdparty/socket-io.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "39329d2f-3dcd-4821-87e1-f05ae6c5c359",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/AnysdkMgr.js b/client/assets/scripts/AnysdkMgr.js
new file mode 100755
index 0000000..7b404ad
--- /dev/null
+++ b/client/assets/scripts/AnysdkMgr.js
@@ -0,0 +1,128 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _isCapturing:false,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+
+ init:function(){
+ this.ANDROID_API = "com/babykylin/NativeAPI";
+ this.IOS_API = "AppController";
+ },
+
+ getBatteryPercent:function(){
+ if(cc.sys.isNative){
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ return jsb.reflection.callStaticMethod(this.ANDROID_API, "getBatteryPercent", "()F");
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ return jsb.reflection.callStaticMethod(this.IOS_API, "getBatteryPercent");
+ }
+ }
+ return 0.9;
+ },
+
+ login:function(){
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod(this.ANDROID_API, "Login", "()V");
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod(this.IOS_API, "login");
+ }
+ else{
+ console.log("platform:" + cc.sys.os + " dosn't implement share.");
+ }
+ },
+
+ share:function(title,desc){
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod(this.ANDROID_API, "Share", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",cc.vv.SI.appweb,title,desc);
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod(this.IOS_API, "share:shareTitle:shareDesc:",cc.vv.SI.appweb,title,desc);
+ }
+ else{
+ console.log("platform:" + cc.sys.os + " dosn't implement share.");
+ }
+ },
+
+ shareResult:function(){
+ if(this._isCapturing){
+ return;
+ }
+ this._isCapturing = true;
+ var size = cc.director.getWinSize();
+ var currentDate = new Date();
+ var fileName = "result_share.jpg";
+ var fullPath = jsb.fileUtils.getWritablePath() + fileName;
+ if(jsb.fileUtils.isFileExist(fullPath)){
+ jsb.fileUtils.removeFile(fullPath);
+ }
+ var texture = new cc.RenderTexture(Math.floor(size.width), Math.floor(size.height));
+ texture.setPosition(cc.p(size.width/2, size.height/2));
+ texture.begin();
+ cc.director.getRunningScene().visit();
+ texture.end();
+ texture.saveToFile(fileName, cc.IMAGE_FORMAT_JPG);
+
+ var self = this;
+ var tryTimes = 0;
+ var fn = function(){
+ if(jsb.fileUtils.isFileExist(fullPath)){
+ var height = 100;
+ var scale = height/size.height;
+ var width = Math.floor(size.width * scale);
+
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod(self.ANDROID_API, "ShareIMG", "(Ljava/lang/String;II)V",fullPath,width,height);
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod(self.IOS_API, "shareIMG:width:height:",fullPath,width,height);
+ }
+ else{
+ console.log("platform:" + cc.sys.os + " dosn't implement share.");
+ }
+ self._isCapturing = false;
+ }
+ else{
+ tryTimes++;
+ if(tryTimes > 10){
+ console.log("time out...");
+ return;
+ }
+ setTimeout(fn,50);
+ }
+ }
+ setTimeout(fn,50);
+ },
+
+ onLoginResp:function(code){
+ var fn = function(ret){
+ if(ret.errcode == 0){
+ cc.sys.localStorage.setItem("wx_account",ret.account);
+ cc.sys.localStorage.setItem("wx_sign",ret.sign);
+ }
+ cc.vv.userMgr.onAuth(ret);
+ }
+ cc.vv.http.sendRequest("/wechat_auth",{code:code,os:cc.sys.os},fn);
+ },
+});
diff --git a/client/assets/scripts/AnysdkMgr.js.meta b/client/assets/scripts/AnysdkMgr.js.meta
new file mode 100755
index 0000000..21e6ca9
--- /dev/null
+++ b/client/assets/scripts/AnysdkMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "f58ce6ba-96ba-4364-948d-b3604606ac4d",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/AudioMgr.js b/client/assets/scripts/AudioMgr.js
new file mode 100755
index 0000000..961628f
--- /dev/null
+++ b/client/assets/scripts/AudioMgr.js
@@ -0,0 +1,99 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ bgmVolume:1.0,
+ sfxVolume:1.0,
+
+ bgmAudioID:-1,
+ },
+
+ // use this for initialization
+ init: function () {
+ var t = cc.sys.localStorage.getItem("bgmVolume");
+ if(t != null){
+ this.bgmVolume = parseFloat(t);
+ }
+
+ var t = cc.sys.localStorage.getItem("sfxVolume");
+ if(t != null){
+ this.sfxVolume = parseFloat(t);
+ }
+
+ cc.game.on(cc.game.EVENT_HIDE, function () {
+ console.log("cc.audioEngine.pauseAll");
+ cc.audioEngine.pauseAll();
+ });
+ cc.game.on(cc.game.EVENT_SHOW, function () {
+ console.log("cc.audioEngine.resumeAll");
+ cc.audioEngine.resumeAll();
+ });
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+
+ getUrl:function(url){
+ return cc.url.raw("resources/sounds/" + url);
+ },
+
+ playBGM(url){
+ var audioUrl = this.getUrl(url);
+ console.log(audioUrl);
+ if(this.bgmAudioID >= 0){
+ cc.audioEngine.stop(this.bgmAudioID);
+ }
+ this.bgmAudioID = cc.audioEngine.play(audioUrl,true,this.bgmVolume);
+ },
+
+ playSFX(url){
+ var audioUrl = this.getUrl(url);
+ if(this.sfxVolume > 0){
+ var audioId = cc.audioEngine.play(audioUrl,false,this.sfxVolume);
+ }
+ },
+
+ setSFXVolume:function(v){
+ if(this.sfxVolume != v){
+ cc.sys.localStorage.setItem("sfxVolume",v);
+ this.sfxVolume = v;
+ }
+ },
+
+ setBGMVolume:function(v,force){
+ if(this.bgmAudioID >= 0){
+ if(v > 0){
+ cc.audioEngine.resume(this.bgmAudioID);
+ }
+ else{
+ cc.audioEngine.pause(this.bgmAudioID);
+ }
+ //cc.audioEngine.setVolume(this.bgmAudioID,this.bgmVolume);
+ }
+ if(this.bgmVolume != v || force){
+ cc.sys.localStorage.setItem("bgmVolume",v);
+ this.bgmVolume = v;
+ cc.audioEngine.setVolume(this.bgmAudioID,v);
+ }
+ },
+
+ pauseAll:function(){
+ cc.audioEngine.pauseAll();
+ },
+
+ resumeAll:function(){
+ cc.audioEngine.resumeAll();
+ }
+});
diff --git a/client/assets/scripts/AudioMgr.js.meta b/client/assets/scripts/AudioMgr.js.meta
new file mode 100755
index 0000000..98e9e0a
--- /dev/null
+++ b/client/assets/scripts/AudioMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "55caea5c-a6f1-4ae6-bd00-c797fc8ecb38",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/GameNetMgr.js b/client/assets/scripts/GameNetMgr.js
new file mode 100755
index 0000000..673c72b
--- /dev/null
+++ b/client/assets/scripts/GameNetMgr.js
@@ -0,0 +1,674 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ dataEventHandler:null,
+ roomId:null,
+ maxNumOfGames:0,
+ numOfGames:0,
+ numOfMJ:0,
+ seatIndex:-1,
+ seats:null,
+ turn:-1,
+ button:-1,
+ dingque:-1,
+ chupai:-1,
+ isDingQueing:false,
+ isHuanSanZhang:false,
+ gamestate:"",
+ isOver:false,
+ dissoveData:null,
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ reset:function(){
+ this.turn = -1;
+ this.chupai = -1,
+ this.dingque = -1;
+ this.button = -1;
+ this.gamestate = "";
+ this.dingque = -1;
+ this.isDingQueing = false;
+ this.isHuanSanZhang = false;
+ this.curaction = null;
+ for(var i = 0; i < this.seats.length; ++i){
+ this.seats[i].holds = [];
+ this.seats[i].folds = [];
+ this.seats[i].pengs = [];
+ this.seats[i].angangs = [];
+ this.seats[i].diangangs = [];
+ this.seats[i].wangangs = [];
+ this.seats[i].dingque = -1;
+ this.seats[i].ready = false;
+ this.seats[i].hued = false;
+ this.seats[i].huanpais = null;
+ this.huanpaimethod = -1;
+ }
+ },
+
+ clear:function(){
+ this.dataEventHandler = null;
+ if(this.isOver == null){
+ this.seats = null;
+ this.roomId = null;
+ this.maxNumOfGames = 0;
+ this.numOfGames = 0;
+ }
+ },
+
+ dispatchEvent(event,data){
+ if(this.dataEventHandler){
+ this.dataEventHandler.emit(event,data);
+ }
+ },
+
+ getSeatIndexByID:function(userId){
+ for(var i = 0; i < this.seats.length; ++i){
+ var s = this.seats[i];
+ if(s.userid == userId){
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ isOwner:function(){
+ return this.seatIndex == 0;
+ },
+
+ getSeatByID:function(userId){
+ var seatIndex = this.getSeatIndexByID(userId);
+ var seat = this.seats[seatIndex];
+ return seat;
+ },
+
+ getSelfData:function(){
+ return this.seats[this.seatIndex];
+ },
+
+ getLocalIndex:function(index){
+ var ret = (index - this.seatIndex + 4) % 4;
+ return ret;
+ },
+
+ prepareReplay:function(roomInfo,detailOfGame){
+ this.roomId = roomInfo.id;
+ this.seats = roomInfo.seats;
+ this.turn = detailOfGame.base_info.button;
+ var baseInfo = detailOfGame.base_info;
+ for(var i = 0; i < this.seats.length; ++i){
+ var s = this.seats[i];
+ s.seatindex = i;
+ s.score = null;
+ s.holds = baseInfo.game_seats[i];
+ s.pengs = [];
+ s.angangs = [];
+ s.diangangs = [];
+ s.wangangs = [];
+ s.folds = [];
+ console.log(s);
+ if(cc.vv.userMgr.userId == s.userid){
+ this.seatIndex = i;
+ }
+ }
+ this.conf = {
+ type:baseInfo.type,
+ }
+ if(this.conf.type == null){
+ this.conf.type == "xzdd";
+ }
+ },
+
+ getWanfa:function(){
+ var conf = this.conf;
+ if(conf && conf.maxGames!=null && conf.maxFan!=null){
+ var strArr = [];
+ strArr.push(conf.maxGames + "局");
+ strArr.push(conf.maxFan + "番封顶");
+ if(conf.hsz){
+ strArr.push("换三张");
+ }
+ if(conf.zimo == 1){
+ strArr.push("自摸加番");
+ }
+ else{
+ strArr.push("自摸加底");
+ }
+ if(conf.jiangdui){
+ strArr.push("将对");
+ }
+ if(conf.dianganghua == 1){
+ strArr.push("点杠花(自摸)");
+ }
+ else{
+ strArr.push("点杠花(放炮)");
+ }
+ if(conf.menqing){
+ strArr.push("门清、中张");
+ }
+ if(conf.tiandihu){
+ strArr.push("天地胡");
+ }
+ return strArr.join(" ");
+ }
+ return "";
+ },
+
+ initHandlers:function(){
+ var self = this;
+ cc.vv.net.addHandler("login_result",function(data){
+ console.log(data);
+ if(data.errcode === 0){
+ var data = data.data;
+ self.roomId = data.roomid;
+ self.conf = data.conf;
+ self.maxNumOfGames = data.conf.maxGames;
+ self.numOfGames = data.numofgames;
+ self.seats = data.seats;
+ self.seatIndex = self.getSeatIndexByID(cc.vv.userMgr.userId);
+ self.isOver = false;
+ }
+ else{
+ console.log(data.errmsg);
+ }
+ self.dispatchEvent('login_result');
+ });
+
+ cc.vv.net.addHandler("login_finished",function(data){
+ console.log("login_finished");
+ cc.director.loadScene("mjgame",function(){
+ cc.vv.net.ping();
+ cc.vv.wc.hide();
+ });
+ self.dispatchEvent("login_finished");
+ });
+
+ cc.vv.net.addHandler("exit_result",function(data){
+ self.roomId = null;
+ self.turn = -1;
+ self.dingque = -1;
+ self.isDingQueing = false;
+ self.seats = null;
+ });
+
+ cc.vv.net.addHandler("exit_notify_push",function(data){
+ var userId = data;
+ var s = self.getSeatByID(userId);
+ if(s != null){
+ s.userid = 0;
+ s.name = "";
+ self.dispatchEvent("user_state_changed",s);
+ }
+ });
+
+ cc.vv.net.addHandler("dispress_push",function(data){
+ self.roomId = null;
+ self.turn = -1;
+ self.dingque = -1;
+ self.isDingQueing = false;
+ self.seats = null;
+ });
+
+ cc.vv.net.addHandler("disconnect",function(data){
+ if(self.roomId == null){
+ cc.vv.wc.show('正在返回游戏大厅');
+ cc.director.loadScene("hall");
+ }
+ else{
+ if(self.isOver == false){
+ cc.vv.userMgr.oldRoomId = self.roomId;
+ self.dispatchEvent("disconnect");
+ }
+ else{
+ self.roomId = null;
+ }
+ }
+ });
+
+ cc.vv.net.addHandler("new_user_comes_push",function(data){
+ //console.log(data);
+ var seatIndex = data.seatindex;
+ var needCheckIp = false;
+ if(self.seats[seatIndex].userid > 0){
+ self.seats[seatIndex].online = true;
+ if(self.seats[seatIndex].ip != data.ip){
+ self.seats[seatIndex].ip = data.ip;
+ needCheckIp = true;
+ }
+ }
+ else{
+ data.online = true;
+ self.seats[seatIndex] = data;
+ needCheckIp = true;
+ }
+ self.dispatchEvent('new_user',self.seats[seatIndex]);
+
+ if(needCheckIp){
+ self.dispatchEvent('check_ip',self.seats[seatIndex]);
+ }
+ });
+
+ cc.vv.net.addHandler("user_state_push",function(data){
+ //console.log(data);
+ var userId = data.userid;
+ var seat = self.getSeatByID(userId);
+ seat.online = data.online;
+ self.dispatchEvent('user_state_changed',seat);
+ });
+
+ cc.vv.net.addHandler("user_ready_push",function(data){
+ //console.log(data);
+ var userId = data.userid;
+ var seat = self.getSeatByID(userId);
+ seat.ready = data.ready;
+ self.dispatchEvent('user_state_changed',seat);
+ });
+
+ cc.vv.net.addHandler("game_holds_push",function(data){
+ var seat = self.seats[self.seatIndex];
+ console.log(data);
+ seat.holds = data;
+
+ for(var i = 0; i < self.seats.length; ++i){
+ var s = self.seats[i];
+ if(s.folds == null){
+ s.folds = [];
+ }
+ if(s.pengs == null){
+ s.pengs = [];
+ }
+ if(s.angangs == null){
+ s.angangs = [];
+ }
+ if(s.diangangs == null){
+ s.diangangs = [];
+ }
+ if(s.wangangs == null){
+ s.wangangs = [];
+ }
+ s.ready = false;
+ }
+ self.dispatchEvent('game_holds');
+ });
+
+ cc.vv.net.addHandler("game_begin_push",function(data){
+ console.log('game_action_push');
+ console.log(data);
+ self.button = data;
+ self.turn = self.button;
+ self.gamestate = "begin";
+ self.dispatchEvent('game_begin');
+ });
+
+ cc.vv.net.addHandler("game_playing_push",function(data){
+ console.log('game_playing_push');
+ self.gamestate = "playing";
+ self.dispatchEvent('game_playing');
+ });
+
+ cc.vv.net.addHandler("game_sync_push",function(data){
+ console.log("game_sync_push");
+ console.log(data);
+ self.numOfMJ = data.numofmj;
+ self.gamestate = data.state;
+ if(self.gamestate == "dingque"){
+ self.isDingQueing = true;
+ }
+ else if(self.gamestate == "huanpai"){
+ self.isHuanSanZhang = true;
+ }
+ self.turn = data.turn;
+ self.button = data.button;
+ self.chupai = data.chuPai;
+ self.huanpaimethod = data.huanpaimethod;
+ for(var i = 0; i < 4; ++i){
+ var seat = self.seats[i];
+ var sd = data.seats[i];
+ seat.holds = sd.holds;
+ seat.folds = sd.folds;
+ seat.angangs = sd.angangs;
+ seat.diangangs = sd.diangangs;
+ seat.wangangs = sd.wangangs;
+ seat.pengs = sd.pengs;
+ seat.dingque = sd.que;
+ seat.hued = sd.hued;
+ seat.iszimo = sd.iszimo;
+ seat.huinfo = sd.huinfo;
+ seat.huanpais = sd.huanpais;
+ if(i == self.seatIndex){
+ self.dingque = sd.que;
+ }
+ }
+ self.dispatchEvent('game_sync');
+ });
+
+ cc.vv.net.addHandler("game_dingque_push",function(data){
+ self.isDingQueing = true;
+ self.isHuanSanZhang = false;
+ self.gamestate = 'dingque';
+ self.dispatchEvent('game_dingque');
+ });
+
+ cc.vv.net.addHandler("game_huanpai_push",function(data){
+ self.isHuanSanZhang = true;
+ self.dispatchEvent('game_huanpai');
+ });
+
+ cc.vv.net.addHandler("hangang_notify_push",function(data){
+ self.dispatchEvent('hangang_notify',data);
+ });
+
+ cc.vv.net.addHandler("game_action_push",function(data){
+ self.curaction = data;
+ console.log(data);
+ self.dispatchEvent('game_action',data);
+ });
+
+ cc.vv.net.addHandler("game_chupai_push",function(data){
+ console.log('game_chupai_push');
+ //console.log(data);
+ var turnUserID = data;
+ var si = self.getSeatIndexByID(turnUserID);
+ self.doTurnChange(si);
+ });
+
+ cc.vv.net.addHandler("game_num_push",function(data){
+ self.numOfGames = data;
+ self.dispatchEvent('game_num',data);
+ });
+
+ cc.vv.net.addHandler("game_over_push",function(data){
+ console.log('game_over_push');
+ var results = data.results;
+ for(var i = 0; i < self.seats.length; ++i){
+ self.seats[i].score = results.length == 0? 0:results[i].totalscore;
+ }
+ self.dispatchEvent('game_over',results);
+ if(data.endinfo){
+ self.isOver = true;
+ self.dispatchEvent('game_end',data.endinfo);
+ }
+ self.reset();
+ for(var i = 0; i < self.seats.length; ++i){
+ self.dispatchEvent('user_state_changed',self.seats[i]);
+ }
+ });
+
+ cc.vv.net.addHandler("mj_count_push",function(data){
+ console.log('mj_count_push');
+ self.numOfMJ = data;
+ //console.log(data);
+ self.dispatchEvent('mj_count',data);
+ });
+
+ cc.vv.net.addHandler("hu_push",function(data){
+ console.log('hu_push');
+ console.log(data);
+ self.doHu(data);
+ });
+
+ cc.vv.net.addHandler("game_chupai_notify_push",function(data){
+ var userId = data.userId;
+ var pai = data.pai;
+ var si = self.getSeatIndexByID(userId);
+ self.doChupai(si,pai);
+ });
+
+ cc.vv.net.addHandler("game_mopai_push",function(data){
+ console.log('game_mopai_push');
+ self.doMopai(self.seatIndex,data);
+ });
+
+ cc.vv.net.addHandler("guo_notify_push",function(data){
+ console.log('guo_notify_push');
+ var userId = data.userId;
+ var pai = data.pai;
+ var si = self.getSeatIndexByID(userId);
+ self.doGuo(si,pai);
+ });
+
+ cc.vv.net.addHandler("guo_result",function(data){
+ console.log('guo_result');
+ self.dispatchEvent('guo_result');
+ });
+
+ cc.vv.net.addHandler("guohu_push",function(data){
+ console.log('guohu_push');
+ self.dispatchEvent("push_notice",{info:"过胡",time:1.5});
+ });
+
+ cc.vv.net.addHandler("huanpai_notify",function(data){
+ var seat = self.getSeatByID(data.si);
+ seat.huanpais = data.huanpais;
+ self.dispatchEvent('huanpai_notify',seat);
+ });
+
+ cc.vv.net.addHandler("game_huanpai_over_push",function(data){
+ console.log('game_huanpai_over_push');
+ var info = "";
+ var method = data.method;
+ if(method == 0){
+ info = "换对家牌";
+ }
+ else if(method == 1){
+ info = "换下家牌";
+ }
+ else{
+ info = "换上家牌";
+ }
+ self.huanpaimethod = method;
+ cc.vv.gameNetMgr.isHuanSanZhang = false;
+ self.dispatchEvent("game_huanpai_over");
+ self.dispatchEvent("push_notice",{info:info,time:2});
+ });
+
+ cc.vv.net.addHandler("peng_notify_push",function(data){
+ console.log('peng_notify_push');
+ console.log(data);
+ var userId = data.userid;
+ var pai = data.pai;
+ var si = self.getSeatIndexByID(userId);
+ self.doPeng(si,data.pai);
+ });
+
+ cc.vv.net.addHandler("gang_notify_push",function(data){
+ console.log('gang_notify_push');
+ console.log(data);
+ var userId = data.userid;
+ var pai = data.pai;
+ var si = self.getSeatIndexByID(userId);
+ self.doGang(si,pai,data.gangtype);
+ });
+
+ cc.vv.net.addHandler("game_dingque_notify_push",function(data){
+ self.dispatchEvent('game_dingque_notify',data);
+ });
+
+ cc.vv.net.addHandler("game_dingque_finish_push",function(data){
+ for(var i = 0; i < data.length; ++i){
+ self.seats[i].dingque = data[i];
+ if(i == self.seatIndex){
+ self.dingque = data[i];
+ }
+ }
+ self.dispatchEvent('game_dingque_finish',data);
+ });
+
+
+ cc.vv.net.addHandler("chat_push",function(data){
+ self.dispatchEvent("chat_push",data);
+ });
+
+ cc.vv.net.addHandler("quick_chat_push",function(data){
+ self.dispatchEvent("quick_chat_push",data);
+ });
+
+ cc.vv.net.addHandler("emoji_push",function(data){
+ self.dispatchEvent("emoji_push",data);
+ });
+
+ cc.vv.net.addHandler("dissolve_notice_push",function(data){
+ console.log("dissolve_notice_push");
+ console.log(data);
+ self.dissoveData = data;
+ self.dispatchEvent("dissolve_notice",data);
+ });
+
+ cc.vv.net.addHandler("dissolve_cancel_push",function(data){
+ self.dissoveData = null;
+ self.dispatchEvent("dissolve_cancel",data);
+ });
+
+ cc.vv.net.addHandler("voice_msg_push",function(data){
+ self.dispatchEvent("voice_msg",data);
+ });
+ },
+
+ doGuo:function(seatIndex,pai){
+ var seatData = this.seats[seatIndex];
+ var folds = seatData.folds;
+ folds.push(pai);
+ this.dispatchEvent('guo_notify',seatData);
+ },
+
+ doMopai:function(seatIndex,pai){
+ var seatData = this.seats[seatIndex];
+ if(seatData.holds){
+ seatData.holds.push(pai);
+ this.dispatchEvent('game_mopai',{seatIndex:seatIndex,pai:pai});
+ }
+ },
+
+ doChupai:function(seatIndex,pai){
+ this.chupai = pai;
+ var seatData = this.seats[seatIndex];
+ if(seatData.holds){
+ var idx = seatData.holds.indexOf(pai);
+ seatData.holds.splice(idx,1);
+ }
+ this.dispatchEvent('game_chupai_notify',{seatData:seatData,pai:pai});
+ },
+
+ doPeng:function(seatIndex,pai){
+ var seatData = this.seats[seatIndex];
+ //移除手牌
+ if(seatData.holds){
+ for(var i = 0; i < 2; ++i){
+ var idx = seatData.holds.indexOf(pai);
+ seatData.holds.splice(idx,1);
+ }
+ }
+
+ //更新碰牌数据
+ var pengs = seatData.pengs;
+ pengs.push(pai);
+
+ this.dispatchEvent('peng_notify',seatData);
+ },
+
+ getGangType:function(seatData,pai){
+ if(seatData.pengs.indexOf(pai) != -1){
+ return "wangang";
+ }
+ else{
+ var cnt = 0;
+ for(var i = 0; i < seatData.holds.length; ++i){
+ if(seatData.holds[i] == pai){
+ cnt++;
+ }
+ }
+ if(cnt == 3){
+ return "diangang";
+ }
+ else{
+ return "angang";
+ }
+ }
+ },
+
+ doGang:function(seatIndex,pai,gangtype){
+ var seatData = this.seats[seatIndex];
+
+ if(!gangtype){
+ gangtype = this.getGangType(seatData,pai);
+ }
+
+ if(gangtype == "wangang"){
+ if(seatData.pengs.indexOf(pai) != -1){
+ var idx = seatData.pengs.indexOf(pai);
+ if(idx != -1){
+ seatData.pengs.splice(idx,1);
+ }
+ }
+ seatData.wangangs.push(pai);
+ }
+ if(seatData.holds){
+ for(var i = 0; i <= 4; ++i){
+ var idx = seatData.holds.indexOf(pai);
+ if(idx == -1){
+ //如果没有找到,表示移完了,直接跳出循环
+ break;
+ }
+ seatData.holds.splice(idx,1);
+ }
+ }
+ if(gangtype == "angang"){
+ seatData.angangs.push(pai);
+ }
+ else if(gangtype == "diangang"){
+ seatData.diangangs.push(pai);
+ }
+ this.dispatchEvent('gang_notify',{seatData:seatData,gangtype:gangtype});
+ },
+
+ doHu:function(data){
+ this.dispatchEvent('hupai',data);
+ },
+
+ doTurnChange:function(si){
+ var data = {
+ last:this.turn,
+ turn:si,
+ }
+ this.turn = si;
+ this.dispatchEvent('game_chupai',data);
+ },
+
+ connectGameServer:function(data){
+ this.dissoveData = null;
+ cc.vv.net.ip = data.ip + ":" + data.port;
+ console.log(cc.vv.net.ip);
+ var self = this;
+
+ var onConnectOK = function(){
+ console.log("onConnectOK");
+ var sd = {
+ token:data.token,
+ roomid:data.roomid,
+ time:data.time,
+ sign:data.sign,
+ };
+ cc.vv.net.send("login",sd);
+ };
+
+ var onConnectFailed = function(){
+ console.log("failed.");
+ cc.vv.wc.hide();
+ };
+ cc.vv.wc.show("正在进入房间");
+ cc.vv.net.connect(onConnectOK,onConnectFailed);
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/GameNetMgr.js.meta b/client/assets/scripts/GameNetMgr.js.meta
new file mode 100755
index 0000000..15bb047
--- /dev/null
+++ b/client/assets/scripts/GameNetMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "95456e7d-4c04-4a64-b328-1c6a97a18d8d",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/Global.js b/client/assets/scripts/Global.js
new file mode 100755
index 0000000..531da09
--- /dev/null
+++ b/client/assets/scripts/Global.js
@@ -0,0 +1,12 @@
+var Global = cc.Class({
+ extends: cc.Component,
+ statics: {
+ isstarted:false,
+ netinited:false,
+ userguid:0,
+ nickname:"",
+ money:0,
+ lv:0,
+ roomId:0,
+ },
+});
\ No newline at end of file
diff --git a/client/assets/scripts/Global.js.meta b/client/assets/scripts/Global.js.meta
new file mode 100755
index 0000000..d76ec63
--- /dev/null
+++ b/client/assets/scripts/Global.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "24e30649-2e07-47de-bb35-4750afa8df14",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/HTTP.js b/client/assets/scripts/HTTP.js
new file mode 100755
index 0000000..d21c6cd
--- /dev/null
+++ b/client/assets/scripts/HTTP.js
@@ -0,0 +1,58 @@
+var URL = "http://127.0.0.1:9000";
+
+var HTTP = cc.Class({
+ extends: cc.Component,
+
+ statics:{
+ sessionId : 0,
+ userId : 0,
+ master_url:URL,
+ url:URL,
+ sendRequest : function(path,data,handler,extraUrl){
+ var xhr = cc.loader.getXMLHttpRequest();
+ xhr.timeout = 5000;
+ var str = "?";
+ for(var k in data){
+ if(str != "?"){
+ str += "&";
+ }
+ str += k + "=" + data[k];
+ }
+ if(extraUrl == null){
+ extraUrl = HTTP.url;
+ }
+ var requestURL = extraUrl + path + encodeURI(str);
+ console.log("RequestURL:" + requestURL);
+ xhr.open("GET",requestURL, true);
+ if (cc.sys.isNative){
+ xhr.setRequestHeader("Accept-Encoding","gzip,deflate","text/html;charset=UTF-8");
+ }
+
+ xhr.onreadystatechange = function() {
+ if(xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)){
+ console.log("http res("+ xhr.responseText.length + "):" + xhr.responseText);
+ try {
+ var ret = JSON.parse(xhr.responseText);
+ if(handler !== null){
+ handler(ret);
+ } /* code */
+ } catch (e) {
+ console.log("err:" + e);
+ //handler(null);
+ }
+ finally{
+ if(cc.vv && cc.vv.wc){
+ // cc.vv.wc.hide();
+ }
+ }
+ }
+ };
+
+ if(cc.vv && cc.vv.wc){
+ //cc.vv.wc.show();
+ }
+ xhr.send();
+ return xhr;
+ },
+ },
+});
\ No newline at end of file
diff --git a/client/assets/scripts/HTTP.js.meta b/client/assets/scripts/HTTP.js.meta
new file mode 100755
index 0000000..585e570
--- /dev/null
+++ b/client/assets/scripts/HTTP.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "90ae6d49-e76e-4940-8b79-b5a17735c7b6",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/MahjongMgr.js b/client/assets/scripts/MahjongMgr.js
new file mode 100755
index 0000000..5c81709
--- /dev/null
+++ b/client/assets/scripts/MahjongMgr.js
@@ -0,0 +1,194 @@
+var mahjongSprites = [];
+
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ leftAtlas:{
+ default:null,
+ type:cc.SpriteAtlas
+ },
+
+ rightAtlas:{
+ default:null,
+ type:cc.SpriteAtlas
+ },
+
+ bottomAtlas:{
+ default:null,
+ type:cc.SpriteAtlas
+ },
+
+ bottomFoldAtlas:{
+ default:null,
+ type:cc.SpriteAtlas
+ },
+
+ pengPrefabSelf:{
+ default:null,
+ type:cc.Prefab
+ },
+
+ pengPrefabLeft:{
+ default:null,
+ type:cc.Prefab
+ },
+
+ emptyAtlas:{
+ default:null,
+ type:cc.SpriteAtlas
+ },
+
+ holdsEmpty:{
+ default:[],
+ type:[cc.SpriteFrame]
+ },
+
+ _sides:null,
+ _pres:null,
+ _foldPres:null,
+ },
+
+ onLoad:function(){
+ if(cc.vv == null){
+ return;
+ }
+ this._sides = ["myself","right","up","left"];
+ this._pres = ["M_","R_","B_","L_"];
+ this._foldPres = ["B_","R_","B_","L_"];
+ cc.vv.mahjongmgr = this;
+ //筒
+ for(var i = 1; i < 10; ++i){
+ mahjongSprites.push("dot_" + i);
+ }
+
+ //条
+ for(var i = 1; i < 10; ++i){
+ mahjongSprites.push("bamboo_" + i);
+ }
+
+ //万
+ for(var i = 1; i < 10; ++i){
+ mahjongSprites.push("character_" + i);
+ }
+
+ //中、发、白
+ mahjongSprites.push("red");
+ mahjongSprites.push("green");
+ mahjongSprites.push("white");
+
+ //东西南北风
+ mahjongSprites.push("wind_east");
+ mahjongSprites.push("wind_west");
+ mahjongSprites.push("wind_south");
+ mahjongSprites.push("wind_north");
+ },
+
+ getMahjongSpriteByID:function(id){
+ return mahjongSprites[id];
+ },
+
+ getMahjongType:function(id){
+ if(id >= 0 && id < 9){
+ return 0;
+ }
+ else if(id >= 9 && id < 18){
+ return 1;
+ }
+ else if(id >= 18 && id < 27){
+ return 2;
+ }
+ },
+
+ getSpriteFrameByMJID:function(pre,mjid){
+ var spriteFrameName = this.getMahjongSpriteByID(mjid);
+ spriteFrameName = pre + spriteFrameName;
+ if(pre == "M_"){
+ return this.bottomAtlas.getSpriteFrame(spriteFrameName);
+ }
+ else if(pre == "B_"){
+ return this.bottomFoldAtlas.getSpriteFrame(spriteFrameName);
+ }
+ else if(pre == "L_"){
+ return this.leftAtlas.getSpriteFrame(spriteFrameName);
+ }
+ else if(pre == "R_"){
+ return this.rightAtlas.getSpriteFrame(spriteFrameName);
+ }
+ },
+
+ getAudioURLByMJID:function(id){
+ var realId = 0;
+ if(id >= 0 && id < 9){
+ realId = id + 21;
+ }
+ else if(id >= 9 && id < 18){
+ realId = id - 8;
+ }
+ else if(id >= 18 && id < 27){
+ realId = id - 7;
+ }
+ return "nv/" + realId + ".mp3";
+ },
+
+ getEmptySpriteFrame:function(side){
+ if(side == "up"){
+ return this.emptyAtlas.getSpriteFrame("e_mj_b_up");
+ }
+ else if(side == "myself"){
+ return this.emptyAtlas.getSpriteFrame("e_mj_b_bottom");
+ }
+ else if(side == "left"){
+ return this.emptyAtlas.getSpriteFrame("e_mj_b_left");
+ }
+ else if(side == "right"){
+ return this.emptyAtlas.getSpriteFrame("e_mj_b_right");
+ }
+ },
+
+ getHoldsEmptySpriteFrame:function(side){
+ if(side == "up"){
+ return this.emptyAtlas.getSpriteFrame("e_mj_up");
+ }
+ else if(side == "myself"){
+ return null;
+ }
+ else if(side == "left"){
+ return this.emptyAtlas.getSpriteFrame("e_mj_left");
+ }
+ else if(side == "right"){
+ return this.emptyAtlas.getSpriteFrame("e_mj_right");
+ }
+ },
+
+ sortMJ:function(mahjongs,dingque){
+ var self = this;
+ mahjongs.sort(function(a,b){
+ if(dingque >= 0){
+ var t1 = self.getMahjongType(a);
+ var t2 = self.getMahjongType(b);
+ if(t1 != t2){
+ if(dingque == t1){
+ return 1;
+ }
+ else if(dingque == t2){
+ return -1;
+ }
+ }
+ }
+ return a - b;
+ });
+ },
+
+ getSide:function(localIndex){
+ return this._sides[localIndex];
+ },
+
+ getPre:function(localIndex){
+ return this._pres[localIndex];
+ },
+
+ getFoldPre:function(localIndex){
+ return this._foldPres[localIndex];
+ }
+});
diff --git a/client/assets/scripts/MahjongMgr.js.meta b/client/assets/scripts/MahjongMgr.js.meta
new file mode 100755
index 0000000..074f132
--- /dev/null
+++ b/client/assets/scripts/MahjongMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "0eceae97-f881-482b-95c5-7497b7f215da",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/Net.js b/client/assets/scripts/Net.js
new file mode 100755
index 0000000..0def524
--- /dev/null
+++ b/client/assets/scripts/Net.js
@@ -0,0 +1,179 @@
+if(window.io == null){
+ window.io = require("socket-io");
+}
+
+var Global = cc.Class({
+ extends: cc.Component,
+ statics: {
+ ip:"",
+ sio:null,
+ isPinging:false,
+ fnDisconnect:null,
+ handlers:{},
+ addHandler:function(event,fn){
+ if(this.handlers[event]){
+ console.log("event:" + event + "' handler has been registered.");
+ return;
+ }
+
+ var handler = function(data){
+ //console.log(event + "(" + typeof(data) + "):" + (data? data.toString():"null"));
+ if(event != "disconnect" && typeof(data) == "string"){
+ data = JSON.parse(data);
+ }
+ fn(data);
+ };
+
+ this.handlers[event] = handler;
+ if(this.sio){
+ console.log("register:function " + event);
+ this.sio.on(event,handler);
+ }
+ },
+ connect:function(fnConnect,fnError) {
+ var self = this;
+
+ var opts = {
+ 'reconnection':false,
+ 'force new connection': true,
+ 'transports':['websocket', 'polling']
+ }
+ this.sio = window.io.connect(this.ip,opts);
+ this.sio.on('reconnect',function(){
+ console.log('reconnection');
+ });
+ this.sio.on('connect',function(data){
+ self.sio.connected = true;
+ fnConnect(data);
+ });
+
+ this.sio.on('disconnect',function(data){
+ console.log("disconnect");
+ self.sio.connected = false;
+ self.close();
+ });
+
+ this.sio.on('connect_failed',function (){
+ console.log('connect_failed');
+ });
+
+ for(var key in this.handlers){
+ var value = this.handlers[key];
+ if(typeof(value) == "function"){
+ if(key == 'disconnect'){
+ this.fnDisconnect = value;
+ }
+ else{
+ console.log("register:function " + key);
+ this.sio.on(key,value);
+ }
+ }
+ }
+
+ this.startHearbeat();
+ },
+
+ startHearbeat:function(){
+ this.sio.on('game_pong',function(){
+ console.log('game_pong');
+ self.lastRecieveTime = Date.now();
+ self.delayMS = self.lastRecieveTime - self.lastSendTime;
+ console.log(self.delayMS);
+ });
+ this.lastRecieveTime = Date.now();
+ var self = this;
+ console.log(1);
+ if(!self.isPinging){
+ self.isPinging = true;
+ cc.game.on(cc.game.EVENT_HIDE,function(){
+ self.ping();
+ });
+ setInterval(function(){
+ if(self.sio){
+ self.ping();
+ }
+ }.bind(this),5000);
+ setInterval(function(){
+ if(self.sio){
+ if(Date.now() - self.lastRecieveTime > 10000){
+ self.close();
+ }
+ }
+ }.bind(this),500);
+ }
+ },
+ send:function(event,data){
+ if(this.sio.connected){
+ if(data != null && (typeof(data) == "object")){
+ data = JSON.stringify(data);
+ //console.log(data);
+ }
+ this.sio.emit(event,data);
+ }
+ },
+
+ ping:function(){
+ if(this.sio){
+ this.lastSendTime = Date.now();
+ this.send('game_ping');
+ }
+ },
+
+ close:function(){
+ console.log('close');
+ this.delayMS = null;
+ if(this.sio && this.sio.connected){
+ this.sio.connected = false;
+ this.sio.disconnect();
+ }
+ this.sio = null;
+ if(this.fnDisconnect){
+ this.fnDisconnect();
+ this.fnDisconnect = null;
+ }
+ },
+
+ test:function(fnResult){
+ var xhr = null;
+ var fn = function(ret){
+ fnResult(ret.isonline);
+ xhr = null;
+ }
+
+ var arr = this.ip.split(':');
+ var data = {
+ account:cc.vv.userMgr.account,
+ sign:cc.vv.userMgr.sign,
+ ip:arr[0],
+ port:arr[1],
+ }
+ xhr = cc.vv.http.sendRequest("/is_server_online",data,fn);
+ setTimeout(function(){
+ if(xhr){
+ xhr.abort();
+ fnResult(false);
+ }
+ },1500);
+ /*
+ var opts = {
+ 'reconnection':false,
+ 'force new connection': true,
+ 'transports':['websocket', 'polling']
+ }
+ var self = this;
+ this.testsio = window.io.connect(this.ip,opts);
+ this.testsio.on('connect',function(){
+ console.log('connect');
+ self.testsio.close();
+ self.testsio = null;
+ fnResult(true);
+ });
+ this.testsio.on('connect_error',function(){
+ console.log('connect_failed');
+ self.testsio = null;
+ fnResult(false);
+ });
+ */
+ }
+ },
+});
\ No newline at end of file
diff --git a/client/assets/scripts/Net.js.meta b/client/assets/scripts/Net.js.meta
new file mode 100755
index 0000000..75984f8
--- /dev/null
+++ b/client/assets/scripts/Net.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "b1cc9c91-775e-425e-a160-d2f4c6299524",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/ReplayMgr.js b/client/assets/scripts/ReplayMgr.js
new file mode 100755
index 0000000..7cf616a
--- /dev/null
+++ b/client/assets/scripts/ReplayMgr.js
@@ -0,0 +1,108 @@
+var ACTION_CHUPAI = 1;
+var ACTION_MOPAI = 2;
+var ACTION_PENG = 3;
+var ACTION_GANG = 4;
+var ACTION_HU = 5;
+
+
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _lastAction:null,
+ _actionRecords:null,
+ _currentIndex:0,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+
+ },
+
+ clear:function(){
+ this._lastAction = null;
+ this._actionRecords = null;
+ this._currentIndex = 0;
+ },
+
+ init:function(data){
+ this._actionRecords = data.action_records;
+ if(this._actionRecords == null){
+ this._actionRecords = {};
+ }
+ this._currentIndex = 0;
+ this._lastAction = null;
+ },
+
+ isReplay:function(){
+ return this._actionRecords != null;
+ },
+
+ getNextAction:function(){
+ if(this._currentIndex >= this._actionRecords.length){
+ return null;
+ }
+
+ var si = this._actionRecords[this._currentIndex++];
+ var action = this._actionRecords[this._currentIndex++];
+ var pai = this._actionRecords[this._currentIndex++];
+ return {si:si,type:action,pai:pai};
+ },
+
+ takeAction:function(){
+ var action = this.getNextAction();
+ if(this._lastAction != null && this._lastAction.type == ACTION_CHUPAI){
+ if(action != null && action.type != ACTION_PENG && action.type != ACTION_GANG && action.type != ACTION_HU){
+ cc.vv.gameNetMgr.doGuo(this._lastAction.si,this._lastAction.pai);
+ }
+ }
+ this._lastAction = action;
+ if(action == null){
+ return -1;
+ }
+ var nextActionDelay = 1.0;
+ if(action.type == ACTION_CHUPAI){
+ //console.log("chupai");
+ cc.vv.gameNetMgr.doChupai(action.si,action.pai);
+ return 1.0;
+ }
+ else if(action.type == ACTION_MOPAI){
+ //console.log("mopai");
+ cc.vv.gameNetMgr.doMopai(action.si,action.pai);
+ cc.vv.gameNetMgr.doTurnChange(action.si);
+ return 0.5;
+ }
+ else if(action.type == ACTION_PENG){
+ //console.log("peng");
+ cc.vv.gameNetMgr.doPeng(action.si,action.pai);
+ cc.vv.gameNetMgr.doTurnChange(action.si);
+ return 1.0;
+ }
+ else if(action.type == ACTION_GANG){
+ //console.log("gang");
+ cc.vv.gameNetMgr.dispatchEvent('hangang_notify',action.si);
+ cc.vv.gameNetMgr.doGang(action.si,action.pai);
+ cc.vv.gameNetMgr.doTurnChange(action.si);
+ return 1.0;
+ }
+ else if(action.type == ACTION_HU){
+ //console.log("hu");
+ cc.vv.gameNetMgr.doHu({seatindex:action.si,hupai:action.pai,iszimo:false});
+ return 1.5;
+ }
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/ReplayMgr.js.meta b/client/assets/scripts/ReplayMgr.js.meta
new file mode 100755
index 0000000..1359f46
--- /dev/null
+++ b/client/assets/scripts/ReplayMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "1a6a1a7c-e8d1-4be8-a644-6429dbbbbb6d",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/UserMgr.js b/client/assets/scripts/UserMgr.js
new file mode 100755
index 0000000..bf37e06
--- /dev/null
+++ b/client/assets/scripts/UserMgr.js
@@ -0,0 +1,189 @@
+cc.Class({
+ extends: cc.Component,
+ properties: {
+ account:null,
+ userId:null,
+ userName:null,
+ lv:0,
+ exp:0,
+ coins:0,
+ gems:0,
+ sign:0,
+ ip:"",
+ sex:0,
+ roomData:null,
+
+ oldRoomId:null,
+ },
+
+ guestAuth:function(){
+ var account = cc.args["account"];
+ if(account == null){
+ account = cc.sys.localStorage.getItem("account");
+ }
+
+ if(account == null){
+ account = Date.now();
+ cc.sys.localStorage.setItem("account",account);
+ }
+
+ cc.vv.http.sendRequest("/guest",{account:account},this.onAuth);
+ },
+
+ onAuth:function(ret){
+ var self = cc.vv.userMgr;
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ self.account = ret.account;
+ self.sign = ret.sign;
+ cc.vv.http.url = "http://" + cc.vv.SI.hall;
+ self.login();
+ }
+ },
+
+ login:function(){
+ var self = this;
+ var onLogin = function(ret){
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ if(!ret.userid){
+ //jump to register user info.
+ cc.director.loadScene("createrole");
+ }
+ else{
+ console.log(ret);
+ self.account = ret.account;
+ self.userId = ret.userid;
+ self.userName = ret.name;
+ self.lv = ret.lv;
+ self.exp = ret.exp;
+ self.coins = ret.coins;
+ self.gems = ret.gems;
+ self.roomData = ret.roomid;
+ self.sex = ret.sex;
+ self.ip = ret.ip;
+ cc.director.loadScene("hall");
+ }
+ }
+ };
+ cc.vv.wc.show("正在登录游戏");
+ cc.vv.http.sendRequest("/login",{account:this.account,sign:this.sign},onLogin);
+ },
+
+ create:function(name){
+ var self = this;
+ var onCreate = function(ret){
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ self.login();
+ }
+ };
+
+ var data = {
+ account:this.account,
+ sign:this.sign,
+ name:name
+ };
+ cc.vv.http.sendRequest("/create_user",data,onCreate);
+ },
+
+ enterRoom:function(roomId,callback){
+ var self = this;
+ var onEnter = function(ret){
+ if(ret.errcode !== 0){
+ if(ret.errcode == -1){
+ setTimeout(function(){
+ self.enterRoom(roomId,callback);
+ },5000);
+ }
+ else{
+ cc.vv.wc.hide();
+ if(callback != null){
+ callback(ret);
+ }
+ }
+ }
+ else{
+ cc.vv.wc.hide();
+ if(callback != null){
+ callback(ret);
+ }
+ cc.vv.gameNetMgr.connectGameServer(ret);
+ }
+ };
+
+ var data = {
+ account:cc.vv.userMgr.account,
+ sign:cc.vv.userMgr.sign,
+ roomid:roomId
+ };
+ cc.vv.wc.show("正在进入房间 " + roomId);
+ cc.vv.http.sendRequest("/enter_private_room",data,onEnter);
+ },
+ getHistoryList:function(callback){
+ var self = this;
+ var onGet = function(ret){
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ console.log(ret.history);
+ if(callback != null){
+ callback(ret.history);
+ }
+ }
+ };
+
+ var data = {
+ account:cc.vv.userMgr.account,
+ sign:cc.vv.userMgr.sign,
+ };
+ cc.vv.http.sendRequest("/get_history_list",data,onGet);
+ },
+ getGamesOfRoom:function(uuid,callback){
+ var self = this;
+ var onGet = function(ret){
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ console.log(ret.data);
+ callback(ret.data);
+ }
+ };
+
+ var data = {
+ account:cc.vv.userMgr.account,
+ sign:cc.vv.userMgr.sign,
+ uuid:uuid,
+ };
+ cc.vv.http.sendRequest("/get_games_of_room",data,onGet);
+ },
+
+ getDetailOfGame:function(uuid,index,callback){
+ var self = this;
+ var onGet = function(ret){
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ console.log(ret.data);
+ callback(ret.data);
+ }
+ };
+
+ var data = {
+ account:cc.vv.userMgr.account,
+ sign:cc.vv.userMgr.sign,
+ uuid:uuid,
+ index:index,
+ };
+ cc.vv.http.sendRequest("/get_detail_of_game",data,onGet);
+ }
+});
diff --git a/client/assets/scripts/UserMgr.js.meta b/client/assets/scripts/UserMgr.js.meta
new file mode 100755
index 0000000..695fc3e
--- /dev/null
+++ b/client/assets/scripts/UserMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "74d78241-a877-4329-8ea1-72463662e2fe",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/Utils.js b/client/assets/scripts/Utils.js
new file mode 100755
index 0000000..64ce5de
--- /dev/null
+++ b/client/assets/scripts/Utils.js
@@ -0,0 +1,57 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ addClickEvent:function(node,target,component,handler){
+ console.log(component + ":" + handler);
+ var eventHandler = new cc.Component.EventHandler();
+ eventHandler.target = target;
+ eventHandler.component = component;
+ eventHandler.handler = handler;
+
+ var clickEvents = node.getComponent(cc.Button).clickEvents;
+ clickEvents.push(eventHandler);
+ },
+
+ addSlideEvent:function(node,target,component,handler){
+ var eventHandler = new cc.Component.EventHandler();
+ eventHandler.target = target;
+ eventHandler.component = component;
+ eventHandler.handler = handler;
+
+ var slideEvents = node.getComponent(cc.Slider).slideEvents;
+ slideEvents.push(eventHandler);
+ },
+
+ addEscEvent:function(node){
+ cc.eventManager.addListener({
+ event: cc.EventListener.KEYBOARD,
+ onKeyPressed: function(keyCode, event){
+ },
+ onKeyReleased: function(keyCode, event){
+ if(keyCode == cc.KEY.back){
+ cc.vv.alert.show('提示','确定要退出游戏吗?',function(){
+ cc.game.end();
+ },true);
+ }
+ }
+ }, node);
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/Utils.js.meta b/client/assets/scripts/Utils.js.meta
new file mode 100755
index 0000000..e16f482
--- /dev/null
+++ b/client/assets/scripts/Utils.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "b717fcf0-c348-4dcc-8aaf-35b6f5b7dc31",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/VoiceMgr.js b/client/assets/scripts/VoiceMgr.js
new file mode 100755
index 0000000..a64f855
--- /dev/null
+++ b/client/assets/scripts/VoiceMgr.js
@@ -0,0 +1,265 @@
+var radix = 12;
+var base = 128 - radix;
+function crypto(value){
+ value -= base;
+ var h = Math.floor(value/radix) + base;
+ var l = value%radix + base;
+ return String.fromCharCode(h) + String.fromCharCode(l);
+}
+
+var encodermap = {}
+var decodermap = {}
+for(var i = 0; i < 256; ++i){
+ var code = null;
+ var v = i + 1;
+ if(v >= base){
+ code = crypto(v);
+ }
+ else{
+ code = String.fromCharCode(v);
+ }
+
+ encodermap[i] = code;
+ decodermap[code] = i;
+}
+
+function encode(data){
+ var content = "";
+ var len = data.length;
+ var a = (len >> 24) & 0xff;
+ var b = (len >> 16) & 0xff;
+ var c = (len >> 8) & 0xff;
+ var d = len & 0xff;
+ content += encodermap[a];
+ content += encodermap[b];
+ content += encodermap[c];
+ content += encodermap[d];
+ for(var i = 0; i < data.length; ++i){
+ content += encodermap[data[i]];
+ }
+ return content;
+}
+
+function getCode(content,index){
+ var c = content.charCodeAt(index);
+ if(c >= base){
+ c = content.charAt(index) + content.charAt(index + 1);
+ }
+ else{
+ c = content.charAt(index);
+ }
+ return c;
+}
+function decode(content){
+ var index = 0;
+ var len = 0;
+ for(var i = 0; i < 4; ++i){
+ var c = getCode(content,index);
+ index += c.length;
+ var v = decodermap[c];
+ len |= v << (3-i)*8;
+ }
+
+ var newData = new Uint8Array(len);
+ var cnt = 0;
+ while(index < content.length){
+ var c = getCode(content,index);
+ index += c.length;
+ newData[cnt] = decodermap[c];
+ cnt++;
+ }
+ return newData;
+}
+
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ onPlayCallback:null,
+ _voiceMediaPath:null,
+ },
+
+ // use this for initialization
+ init: function () {
+ /*
+ var url = cc.url.raw("resources/test.amr");
+ var fileData = jsb.fileUtils.getDataFromFile(url);
+ var content = "";
+ var sep = "";
+ for(var i = 0; i < fileData.length; ++i){
+ content += sep + fileData[i];
+ sep = ",";
+ }
+
+ var url = cc.url.raw("resources/test.txt");
+ jsb.fileUtils.writeStringToFile(content,url);
+
+ var url = cc.url.raw("resources/test2.amrs");
+ var content = encode(fileData);
+ jsb.fileUtils.writeStringToFile(content,url);
+
+ var url = cc.url.raw("resources/test2.amr");
+ jsb.fileUtils.writeDataToFile(decode(content),url);
+ */
+
+ if(cc.sys.isNative){
+ this._voiceMediaPath = jsb.fileUtils.getWritablePath() + "/voicemsgs/";
+ this.setStorageDir(this._voiceMediaPath);
+ }
+ },
+
+ prepare:function(filename){
+ if(!cc.sys.isNative){
+ return;
+ }
+ cc.vv.audioMgr.pauseAll();
+ this.clearCache(filename);
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod("com/babykylin/VoiceRecorder", "prepare", "(Ljava/lang/String;)V",filename);
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod("VoiceSDK", "prepareRecord:",filename);
+ }
+ },
+
+ release:function(){
+ if(!cc.sys.isNative){
+ return;
+ }
+ cc.vv.audioMgr.resumeAll();
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod("com/babykylin/VoiceRecorder", "release", "()V");
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod("VoiceSDK", "finishRecord");
+ }
+ },
+
+ cancel:function(){
+ if(!cc.sys.isNative){
+ return;
+ }
+ cc.vv.audioMgr.resumeAll();
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod("com/babykylin/VoiceRecorder", "cancel", "()V");
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod("VoiceSDK", "cancelRecord");
+ }
+ },
+
+ writeVoice:function(filename,voiceData){
+ if(!cc.sys.isNative){
+ return;
+ }
+ if(voiceData && voiceData.length > 0){
+ var fileData = decode(voiceData);
+ var url = this._voiceMediaPath + filename;
+ this.clearCache(filename);
+ jsb.fileUtils.writeDataToFile(fileData,url);
+ }
+ },
+
+ clearCache:function(filename){
+ if(cc.sys.isNative){
+ var url = this._voiceMediaPath + filename;
+ //console.log("check file:" + url);
+ if(jsb.fileUtils.isFileExist(url)){
+ //console.log("remove:" + url);
+ jsb.fileUtils.removeFile(url);
+ }
+ if(jsb.fileUtils.isFileExist(url + ".wav")){
+ //console.log("remove:" + url + ".wav");
+ jsb.fileUtils.removeFile(url + ".wav");
+ }
+ }
+ },
+
+ play:function(filename){
+ if(!cc.sys.isNative){
+ return;
+ }
+ cc.vv.audioMgr.pauseAll();
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod("com/babykylin/VoicePlayer", "play", "(Ljava/lang/String;)V",filename);
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod("VoiceSDK", "play:",filename);
+ }
+ else{
+ }
+ },
+
+ stop:function(){
+ if(!cc.sys.isNative){
+ return;
+ }
+ cc.vv.audioMgr.resumeAll();
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod("com/babykylin/VoicePlayer", "stop", "()V");
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod("VoiceSDK", "stopPlay");
+ }
+ else{
+ }
+ },
+
+ getVoiceLevel:function(maxLevel){
+ return Math.floor(Math.random() * maxLevel + 1);
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ return jsb.reflection.callStaticMethod("com/babykylin/VoiceRecorder", "getVoiceLevel", "(I)I",maxLevel);
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ }
+ else{
+ return Math.floor(Math.random() * maxLevel + 1);
+ }
+ },
+
+ getVoiceData:function(filename){
+ if(cc.sys.isNative){
+ var url = this._voiceMediaPath + filename;
+ console.log("getVoiceData:" + url);
+ var fileData = jsb.fileUtils.getDataFromFile(url);
+ if(fileData){
+ var content = encode(fileData);
+ return content;
+ }
+ }
+ return "";
+ },
+
+ download:function(){
+
+ },
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+
+ setStorageDir:function(dir){
+ if(!cc.sys.isNative){
+ return;
+ }
+ if(cc.sys.os == cc.sys.OS_ANDROID){
+ jsb.reflection.callStaticMethod("com/babykylin/VoiceRecorder", "setStorageDir", "(Ljava/lang/String;)V",dir);
+ }
+ else if(cc.sys.os == cc.sys.OS_IOS){
+ jsb.reflection.callStaticMethod("VoiceSDK", "setStorageDir:",dir);
+ if(!jsb.fileUtils.isDirectoryExist(dir)){
+ jsb.fileUtils.createDirectory(dir);
+ }
+ }
+ }
+});
diff --git a/client/assets/scripts/VoiceMgr.js.meta b/client/assets/scripts/VoiceMgr.js.meta
new file mode 100755
index 0000000..5996448
--- /dev/null
+++ b/client/assets/scripts/VoiceMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "1f06645b-2c0c-4a18-966d-90314eda4abf",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components.meta b/client/assets/scripts/components.meta
new file mode 100755
index 0000000..6d22cfb
--- /dev/null
+++ b/client/assets/scripts/components.meta
@@ -0,0 +1,6 @@
+{
+ "ver": "1.0.1",
+ "uuid": "8a998931-01bf-4b06-adc1-433bf2a620d8",
+ "isGroup": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Alert.js b/client/assets/scripts/components/Alert.js
new file mode 100755
index 0000000..a7ddf37
--- /dev/null
+++ b/client/assets/scripts/components/Alert.js
@@ -0,0 +1,78 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _alert:null,
+ _btnOK:null,
+ _btnCancel:null,
+ _title:null,
+ _content:null,
+ _onok:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+ this._alert = cc.find("Canvas/alert");
+ this._title = cc.find("Canvas/alert/title").getComponent(cc.Label);
+ this._content = cc.find("Canvas/alert/content").getComponent(cc.Label);
+
+ this._btnOK = cc.find("Canvas/alert/btn_ok");
+ this._btnCancel = cc.find("Canvas/alert/btn_cancel");
+
+ cc.vv.utils.addClickEvent(this._btnOK,this.node,"Alert","onBtnClicked");
+ cc.vv.utils.addClickEvent(this._btnCancel,this.node,"Alert","onBtnClicked");
+
+ this._alert.active = false;
+ cc.vv.alert = this;
+ },
+
+ onBtnClicked:function(event){
+ if(event.target.name == "btn_ok"){
+ if(this._onok){
+ this._onok();
+ }
+ }
+ this._alert.active = false;
+ this._onok = null;
+ },
+
+ show:function(title,content,onok,needcancel){
+ this._alert.active = true;
+ this._onok = onok;
+ this._title.string = title;
+ this._content.string = content;
+ if(needcancel){
+ this._btnCancel.active = true;
+ this._btnOK.x = -150;
+ this._btnCancel.x = 150;
+ }
+ else{
+ this._btnCancel.active = false;
+ this._btnOK.x = 0;
+ }
+ },
+
+ onDestory:function(){
+ if(cc.vv){
+ cc.vv.alert = null;
+ }
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/Alert.js.meta b/client/assets/scripts/components/Alert.js.meta
new file mode 100755
index 0000000..b6f7630
--- /dev/null
+++ b/client/assets/scripts/components/Alert.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "c1255dec-c42c-46fe-89f4-073eeb917d1f",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/AppStart.js b/client/assets/scripts/components/AppStart.js
new file mode 100755
index 0000000..376d014
--- /dev/null
+++ b/client/assets/scripts/components/AppStart.js
@@ -0,0 +1,193 @@
+function urlParse(){
+ var params = {};
+ if(window.location == null){
+ return params;
+ }
+ var name,value;
+ var str=window.location.href; //取得整个地址栏
+ var num=str.indexOf("?")
+ str=str.substr(num+1); //取得所有参数 stringvar.substr(start [, length ]
+
+ var arr=str.split("&"); //各个参数放到数组里
+ for(var i=0;i < arr.length;i++){
+ num=arr[i].indexOf("=");
+ if(num>0){
+ name=arr[i].substring(0,num);
+ value=arr[i].substr(num+1);
+ params[name]=value;
+ }
+ }
+ return params;
+}
+
+function initMgr(){
+ cc.vv = {};
+ var UserMgr = require("UserMgr");
+ cc.vv.userMgr = new UserMgr();
+
+ var ReplayMgr = require("ReplayMgr");
+ cc.vv.replayMgr = new ReplayMgr();
+
+ cc.vv.http = require("HTTP");
+ cc.vv.global = require("Global");
+ cc.vv.net = require("Net");
+
+ var GameNetMgr = require("GameNetMgr");
+ cc.vv.gameNetMgr = new GameNetMgr();
+ cc.vv.gameNetMgr.initHandlers();
+
+ var AnysdkMgr = require("AnysdkMgr");
+ cc.vv.anysdkMgr = new AnysdkMgr();
+ cc.vv.anysdkMgr.init();
+
+ var VoiceMgr = require("VoiceMgr");
+ cc.vv.voiceMgr = new VoiceMgr();
+ cc.vv.voiceMgr.init();
+
+ var AudioMgr = require("AudioMgr");
+ cc.vv.audioMgr = new AudioMgr();
+ cc.vv.audioMgr.init();
+
+ var Utils = require("Utils");
+ cc.vv.utils = new Utils();
+
+ //var MJUtil = require("MJUtil");
+ //cc.vv.mjutil = new MJUtil();
+
+ cc.args = urlParse();
+}
+
+
+
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ label: {
+ default: null,
+ type:cc.Label
+ },
+
+ loadingProgess:cc.Label,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(!cc.sys.isNative && cc.sys.isMobile){
+ var cvs = this.node.getComponent(cc.Canvas);
+ cvs.fitHeight = true;
+ cvs.fitWidth = true;
+ }
+ initMgr();
+ console.log('haha');
+ this._mainScene = 'loading';
+ this.showSplash(function(){
+ var url = cc.url.raw('resources/ver/cv.txt');
+ cc.loader.load(url,function(err,data){
+ cc.VERSION = data;
+ console.log('current core version:' + cc.VERSION);
+ this.getServerInfo();
+ }.bind(this));
+ }.bind(this));
+ },
+
+ onBtnDownloadClicked:function(){
+ cc.sys.openURL(cc.vv.SI.appweb);
+ },
+
+ showSplash:function(callback){
+ var self = this;
+ var SHOW_TIME = 3000;
+ var FADE_TIME = 500;
+ this._splash = cc.find("Canvas/splash");
+ if(true || cc.sys.os != cc.sys.OS_IOS || !cc.sys.isNative){
+ this._splash.active = true;
+ if(this._splash.getComponent(cc.Sprite).spriteFrame == null){
+ callback();
+ return;
+ }
+ var t = Date.now();
+ var fn = function(){
+ var dt = Date.now() - t;
+ if(dt < SHOW_TIME){
+ setTimeout(fn,33);
+ }
+ else {
+ var op = (1 - ((dt - SHOW_TIME) / FADE_TIME)) * 255;
+ if(op < 0){
+ self._splash.opacity = 0;
+ callback();
+ }
+ else{
+ self._splash.opacity = op;
+ setTimeout(fn,33);
+ }
+ }
+ };
+ setTimeout(fn,33);
+ }
+ else{
+ this._splash.active = false;
+ callback();
+ }
+ },
+
+ getServerInfo:function(){
+ var self = this;
+ var onGetVersion = function(ret){
+ if(ret.version == null){
+ console.log("error.");
+ }
+ else{
+ cc.vv.SI = ret;
+ if(ret.version != cc.VERSION){
+ cc.find("Canvas/alert").active = true;
+ }
+ else{
+ cc.director.loadScene(self._mainScene);
+ }
+ }
+ };
+
+ var xhr = null;
+ var complete = false;
+ var fnRequest = function(){
+ self.loadingProgess.string = "正在连接服务器";
+ xhr = cc.vv.http.sendRequest("/get_serverinfo",null,function(ret){
+ xhr = null;
+ complete = true;
+ onGetVersion(ret);
+ });
+ setTimeout(fn,5000);
+ }
+
+ var fn = function(){
+ if(!complete){
+ if(xhr){
+ xhr.abort();
+ self.loadingProgess.string = "连接失败,即将重试";
+ setTimeout(function(){
+ fnRequest();
+ },5000);
+ }
+ else{
+ fnRequest();
+ }
+ }
+ };
+ fn();
+ },
+ log:function(content){
+ this.label.string += content + '\n';
+ },
+});
diff --git a/client/assets/scripts/components/AppStart.js.meta b/client/assets/scripts/components/AppStart.js.meta
new file mode 100755
index 0000000..011cf40
--- /dev/null
+++ b/client/assets/scripts/components/AppStart.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "b688b658-a057-49c4-a136-4ed766379481",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Chat.js b/client/assets/scripts/components/Chat.js
new file mode 100755
index 0000000..f8136a1
--- /dev/null
+++ b/client/assets/scripts/components/Chat.js
@@ -0,0 +1,104 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _chatRoot:null,
+ _tabQuick:null,
+ _tabEmoji:null,
+ _iptChat:null,
+
+ _quickChatInfo:null,
+ _btnChat:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ cc.vv.chat = this;
+
+ this._btnChat = this.node.getChildByName("btn_chat");
+ this._btnChat.active = cc.vv.replayMgr.isReplay() == false;
+
+ this._chatRoot = this.node.getChildByName("chat");
+ this._chatRoot.active = false;
+
+ this._tabQuick = this._chatRoot.getChildByName("quickchatlist");
+ this._tabEmoji = this._chatRoot.getChildByName("emojis");
+
+ this._iptChat = this._chatRoot.getChildByName("iptChat").getComponent(cc.EditBox);
+
+
+ this._quickChatInfo = {};
+ this._quickChatInfo["item0"] = {index:0,content:"快点啊,都等到我花儿都谢谢了!",sound:"fix_msg_1.mp3"};
+ this._quickChatInfo["item1"] = {index:1,content:"怎么又断线了,网络怎么这么差啊!",sound:"fix_msg_2.mp3"};
+ this._quickChatInfo["item2"] = {index:2,content:"不要走,决战到天亮!",sound:"fix_msg_3.mp3"};
+ this._quickChatInfo["item3"] = {index:3,content:"你的牌打得也太好了!",sound:"fix_msg_4.mp3"};
+ this._quickChatInfo["item4"] = {index:4,content:"你是妹妹还是哥哥啊?",sound:"fix_msg_5.mp3"};
+ this._quickChatInfo["item5"] = {index:5,content:"和你合作真是太愉快了!",sound:"fix_msg_6.mp3"};
+ this._quickChatInfo["item6"] = {index:6,content:"大家好,很高兴见到各位!",sound:"fix_msg_7.mp3"};
+ this._quickChatInfo["item7"] = {index:7,content:"各位,真是不好意思,我得离开一会儿。",sound:"fix_msg_8.mp3"};
+ this._quickChatInfo["item8"] = {index:8,content:"不要吵了,专心玩游戏吧!",sound:"fix_msg_9.mp3"};
+ },
+
+ getQuickChatInfo(index){
+ var key = "item" + index;
+ return this._quickChatInfo[key];
+ },
+
+ onBtnChatClicked:function(){
+ this._chatRoot.active = true;
+ },
+
+ onBgClicked:function(){
+ this._chatRoot.active = false;
+ },
+
+ onTabClicked:function(event){
+ if(event.target.name == "tabQuick"){
+ this._tabQuick.active = true;
+ this._tabEmoji.active = false;
+ }
+ else if(event.target.name == "tabEmoji"){
+ this._tabQuick.active = false;
+ this._tabEmoji.active = true;
+ }
+ },
+
+ onQuickChatItemClicked:function(event){
+ this._chatRoot.active = false;
+ var info = this._quickChatInfo[event.target.name];
+ cc.vv.net.send("quick_chat",info.index);
+ },
+
+ onEmojiItemClicked:function(event){
+ console.log(event.target.name);
+ this._chatRoot.active = false;
+ cc.vv.net.send("emoji",event.target.name);
+ },
+
+ onBtnSendChatClicked:function(){
+ this._chatRoot.active = false;
+ if(this._iptChat.string == ""){
+ return;
+ }
+ cc.vv.net.send("chat",this._iptChat.string);
+ this._iptChat.string = "";
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/Chat.js.meta b/client/assets/scripts/components/Chat.js.meta
new file mode 100755
index 0000000..8e353c9
--- /dev/null
+++ b/client/assets/scripts/components/Chat.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "58f27af1-bacb-4db1-8951-5f77ebc8df17",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/CheckBox.js b/client/assets/scripts/components/CheckBox.js
new file mode 100755
index 0000000..e42d560
--- /dev/null
+++ b/client/assets/scripts/components/CheckBox.js
@@ -0,0 +1,46 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ target:cc.Node,
+ sprite:cc.SpriteFrame,
+ checkedSprite:cc.SpriteFrame,
+ checked:false,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ this.refresh();
+ },
+
+ onClicked:function(){
+ this.checked = !this.checked;
+ this.refresh();
+ },
+
+ refresh:function(){
+ var targetSprite = this.target.getComponent(cc.Sprite);
+ if(this.checked){
+ targetSprite.spriteFrame = this.checkedSprite;
+ }
+ else{
+ targetSprite.spriteFrame = this.sprite;
+ }
+ }
+
+
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/CheckBox.js.meta b/client/assets/scripts/components/CheckBox.js.meta
new file mode 100755
index 0000000..1b302ea
--- /dev/null
+++ b/client/assets/scripts/components/CheckBox.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "dc9e585c-7a01-4116-96e1-d02c14170f15",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/CreateRole.js b/client/assets/scripts/components/CreateRole.js
new file mode 100755
index 0000000..5f0f989
--- /dev/null
+++ b/client/assets/scripts/components/CreateRole.js
@@ -0,0 +1,77 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ inputName:cc.EditBox,
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ onRandomBtnClicked:function(){
+ var names = [
+ "上官",
+ "欧阳",
+ "东方",
+ "端木",
+ "独孤",
+ "司马",
+ "南宫",
+ "夏侯",
+ "诸葛",
+ "皇甫",
+ "长孙",
+ "宇文",
+ "轩辕",
+ "东郭",
+ "子车",
+ "东阳",
+ "子言",
+ ];
+
+ var names2 = [
+ "雀圣",
+ "赌侠",
+ "赌圣",
+ "稳赢",
+ "不输",
+ "好运",
+ "自摸",
+ "有钱",
+ "土豪",
+ ];
+ var idx = Math.floor(Math.random() * (names.length - 1));
+ var idx2 = Math.floor(Math.random() * (names2.length - 1));
+ this.inputName.string = names[idx] + names2[idx2];
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(!cc.sys.isNative && cc.sys.isMobile){
+ var cvs = this.node.getComponent(cc.Canvas);
+ cvs.fitHeight = true;
+ cvs.fitWidth = true;
+ }
+ this.onRandomBtnClicked();
+ },
+
+ onBtnConfirmClicked:function(){
+ var name = this.inputName.string;
+ if(name == ""){
+ console.log("invalid name.");
+ return;
+ }
+ console.log(name);
+ cc.vv.userMgr.create(name);
+ }
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/CreateRole.js.meta b/client/assets/scripts/components/CreateRole.js.meta
new file mode 100755
index 0000000..749910b
--- /dev/null
+++ b/client/assets/scripts/components/CreateRole.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "5d56b158-cbf4-446f-bee9-402abd60787a",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/CreateRoom.js b/client/assets/scripts/components/CreateRoom.js
new file mode 100755
index 0000000..7a702e0
--- /dev/null
+++ b/client/assets/scripts/components/CreateRoom.js
@@ -0,0 +1,171 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _leixingxuanze: null,
+ _gamelist: null,
+ _currentGame: null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+
+ this._gamelist = this.node.getChildByName('game_list');
+
+ this._leixingxuanze = [];
+ var t = this.node.getChildByName("leixingxuanze");
+ for (var i = 0; i < t.childrenCount; ++i) {
+ var n = t.children[i].getComponent("RadioButton");
+ if (n != null) {
+ this._leixingxuanze.push(n);
+ }
+ }
+ },
+
+ onBtnBack: function () {
+ this.node.active = false;
+ },
+
+ onBtnOK: function () {
+ var usedTypes = ['xzdd', 'xlch'];
+ var type = this.getType();
+ if (usedTypes.indexOf(type) == -1) {
+ return;
+ }
+
+ this.node.active = false;
+ this.createRoom();
+ },
+
+ getType: function () {
+ var type = 0;
+ for (var i = 0; i < this._leixingxuanze.length; ++i) {
+ if (this._leixingxuanze[i].checked) {
+ type = i;
+ break;
+ }
+ }
+ if (type == 0) {
+ return 'xzdd';
+ }
+ else if (type == 1) {
+ return 'xlch';
+ }
+ return 'xzdd';
+ },
+
+ getSelectedOfRadioGroup(groupRoot) {
+ console.log(groupRoot);
+ var t = this._currentGame.getChildByName(groupRoot);
+
+ var arr = [];
+ for (var i = 0; i < t.children.length; ++i) {
+ var n = t.children[i].getComponent("RadioButton");
+ if (n != null) {
+ arr.push(n);
+ }
+ }
+ var selected = 0;
+ for (var i = 0; i < arr.length; ++i) {
+ if (arr[i].checked) {
+ selected = i;
+ break;
+ }
+ }
+ return selected;
+ },
+
+ createRoom: function () {
+ var self = this;
+ var onCreate = function (ret) {
+ if (ret.errcode !== 0) {
+ cc.vv.wc.hide();
+ //console.log(ret.errmsg);
+ if (ret.errcode == 2222) {
+ cc.vv.alert.show("提示", "钻石不足,创建房间失败!");
+ }
+ else {
+ cc.vv.alert.show("提示", "创建房间失败,错误码:" + ret.errcode);
+ }
+ }
+ else {
+ cc.vv.gameNetMgr.connectGameServer(ret);
+ }
+ };
+
+ var type = this.getType();
+ var conf = null;
+ if (type == 'xzdd') {
+ conf = this.constructSCMJConf();
+ }
+ else if (type == 'xlch') {
+ conf = this.constructSCMJConf();
+ }
+ conf.type = type;
+
+ var data = {
+ account: cc.vv.userMgr.account,
+ sign: cc.vv.userMgr.sign,
+ conf: JSON.stringify(conf)
+ };
+ console.log(data);
+ cc.vv.wc.show("正在创建房间");
+ cc.vv.http.sendRequest("/create_private_room", data, onCreate);
+ },
+
+ constructSCMJConf: function () {
+
+ var wanfaxuanze = this._currentGame.getChildByName('wanfaxuanze');
+ var huansanzhang = wanfaxuanze.children[0].getComponent('CheckBox').checked;
+ var jiangdui = wanfaxuanze.children[1].getComponent('CheckBox').checked;
+ var menqing = wanfaxuanze.children[2].getComponent('CheckBox').checked;
+ var tiandihu = wanfaxuanze.children[3].getComponent('CheckBox').checked;
+
+ var difen = this.getSelectedOfRadioGroup('difenxuanze');
+ var zimo = this.getSelectedOfRadioGroup('zimojiacheng');
+ var zuidafanshu = this.getSelectedOfRadioGroup('zuidafanshu');
+ var jushuxuanze = this.getSelectedOfRadioGroup('xuanzejushu');
+ var dianganghua = this.getSelectedOfRadioGroup('dianganghua');
+
+ var conf = {
+ difen:difen,
+ zimo:zimo,
+ jiangdui:jiangdui,
+ huansanzhang:huansanzhang,
+ zuidafanshu:zuidafanshu,
+ jushuxuanze:jushuxuanze,
+ dianganghua:dianganghua,
+ menqing:menqing,
+ tiandihu:tiandihu,
+ };
+ return conf;
+ },
+
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+
+ var type = this.getType();
+ if (this.lastType != type) {
+ this.lastType = type;
+ for (var i = 0; i < this._gamelist.childrenCount; ++i) {
+ this._gamelist.children[i].active = false;
+ }
+
+ var game = this._gamelist.getChildByName(type);
+ if (game) {
+ game.active = true;
+ }
+ this._currentGame = game;
+ }
+ },
+});
\ No newline at end of file
diff --git a/client/assets/scripts/components/CreateRoom.js.meta b/client/assets/scripts/components/CreateRoom.js.meta
new file mode 100755
index 0000000..7d990fd
--- /dev/null
+++ b/client/assets/scripts/components/CreateRoom.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "eec071ec-2f8a-419f-9fcf-893dd26017b0",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/DingQue.js b/client/assets/scripts/components/DingQue.js
new file mode 100755
index 0000000..3eb2703
--- /dev/null
+++ b/client/assets/scripts/components/DingQue.js
@@ -0,0 +1,187 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ queYiMen:null,
+ tips:[],
+ selected:[],
+ dingques:[],
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ // use this for initialization
+ start: function () {
+ if(cc.vv == null){
+ return;
+ }
+ this.initView();
+ this.initDingQue();
+ this.initEventHandlers();
+ },
+
+ initView:function(){
+ var gameChild = this.node.getChildByName("game");
+ this.queYiMen = gameChild.getChildByName("dingque");
+ this.queYiMen.active = cc.vv.gameNetMgr.isDingQueing;
+
+ var arr = ["myself","right","up","left"];
+ for(var i = 0; i < arr.length; ++i){
+ var side = gameChild.getChildByName(arr[i]);
+ var seat = side.getChildByName("seat");
+ var dingque = seat.getChildByName("que");
+ this.dingques.push(dingque);
+ }
+ this.reset();
+
+ var tips = this.queYiMen.getChildByName("tips");
+ for(var i = 0; i < tips.childrenCount; ++i){
+ var n = tips.children[i];
+ this.tips.push(n.getComponent(cc.Label));
+ }
+
+ if(cc.vv.gameNetMgr.gamestate == "dingque"){
+ this.showDingQueChoice();
+ }
+ },
+
+ initEventHandlers:function(){
+ var self = this;
+ this.node.on('game_dingque',function(data){
+ self.showDingQueChoice();
+ });
+
+ this.node.on('game_dingque_notify',function(data){
+ var seatIndex = cc.vv.gameNetMgr.getSeatIndexByID(data.detail);
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(seatIndex);
+ console.log("game_dingque_notify:" + localIndex);
+ self.tips[localIndex].node.active = true;
+ });
+
+ this.node.on('game_dingque_finish',function(){
+ //通知每一个玩家定缺的花色
+ self.queYiMen.active = false;
+ cc.vv.gameNetMgr.isDingQueing = false;
+ self.initDingQue();
+ });
+ },
+
+ showDingQueChoice:function(){
+ this.queYiMen.active = true;
+ var sd = cc.vv.gameNetMgr.getSelfData();
+ var typeCounts = [0,0,0];
+ for(var i = 0; i < sd.holds.length; ++i){
+ var pai = sd.holds[i];
+ var type = cc.vv.mahjongmgr.getMahjongType(pai);
+ typeCounts[type]++;
+ }
+
+ var min = 65535;
+ var minIndex = 0;
+ for(var i = 0; i < typeCounts.length; ++i){
+ if(typeCounts[i] < min){
+ min = typeCounts[i];
+ minIndex = i;
+ }
+ }
+
+ var arr = ["tong","tiao","wan"];
+ for(var i = 0; i < arr.length; ++i){
+ var node = this.queYiMen.getChildByName(arr[i]);
+ if(minIndex == i){
+ node.getComponent(cc.Animation).play("dingque_tuijian");
+ }
+ else{
+ node.getComponent(cc.Animation).stop();
+ }
+ //this.queYiMen.getChildByName(arr[i]).getChildByName('jian').active = minIndex == i;
+ }
+
+ this.reset();
+ for(var i = 0; i < this.tips.length; ++i){
+ var n = this.tips[i];
+ if(i > 0){
+ n.node.active = false;
+ }
+ else{
+ n.node.active = true;
+ }
+ }
+ },
+
+ initDingQue:function(){
+ var arr = ["tong","tiao","wan"];
+ var data = cc.vv.gameNetMgr.seats;
+ for(var i = 0; i < data.length; ++i){
+ var que = data[i].dingque;
+ if(que == null || que < 0 || que >= arr.length){
+ que = null;
+ }
+ else{
+ que = arr[que];
+ }
+
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(i);
+ if(que){
+ this.dingques[localIndex].getChildByName(que).active = true;
+ }
+ }
+ },
+
+ reset:function(){
+ this.setInteractable(true);
+
+ this.selected.push(this.queYiMen.getChildByName("tong_selected"));
+ this.selected.push(this.queYiMen.getChildByName("tiao_selected"));
+ this.selected.push(this.queYiMen.getChildByName("wan_selected"));
+ for(var i = 0; i < this.selected.length; ++i){
+ this.selected[i].active = false;
+ }
+
+ for(var i = 0; i < this.dingques.length; ++i){
+ for(var j = 0; j < this.dingques[i].children.length; ++j){
+ this.dingques[i].children[j].active = false;
+ }
+ }
+ },
+
+ onQueYiMenClicked:function(event){
+ var type = 0;
+ if(event.target.name == "tong"){
+ type = 0;
+ }
+ else if(event.target.name == "tiao"){
+ type = 1;
+ }
+ else if(event.target.name == "wan"){
+ type = 2;
+ }
+
+ for(var i = 0; i < this.selected.length; ++i){
+ this.selected[i].active = false;
+ }
+ this.selected[type].active = true;
+ cc.vv.gameNetMgr.dingque = type;
+ cc.vv.net.send("dingque",type);
+
+ //this.setInteractable(false);
+ },
+
+ setInteractable:function(value){
+ this.queYiMen.getChildByName("tong").getComponent(cc.Button).interactable = value;
+ this.queYiMen.getChildByName("tiao").getComponent(cc.Button).interactable = value;
+ this.queYiMen.getChildByName("wan").getComponent(cc.Button).interactable = value;
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/DingQue.js.meta b/client/assets/scripts/components/DingQue.js.meta
new file mode 100755
index 0000000..b594050
--- /dev/null
+++ b/client/assets/scripts/components/DingQue.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "90758d9a-c0d2-459e-86c2-fe664614b06a",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Folds.js b/client/assets/scripts/components/Folds.js
new file mode 100755
index 0000000..00c2ca9
--- /dev/null
+++ b/client/assets/scripts/components/Folds.js
@@ -0,0 +1,126 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _folds:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ this.initView();
+ this.initEventHandler();
+
+ this.initAllFolds();
+ },
+
+ initView:function(){
+ this._folds = {};
+ var game = this.node.getChildByName("game");
+ var sides = ["myself","right","up","left"];
+ for(var i = 0; i < sides.length; ++i){
+ var sideName = sides[i];
+ var sideRoot = game.getChildByName(sideName);
+ var folds = [];
+ var foldRoot = sideRoot.getChildByName("folds");
+ for(var j = 0; j < foldRoot.children.length; ++j){
+ var n = foldRoot.children[j];
+ n.active = false;
+ var sprite = n.getComponent(cc.Sprite);
+ sprite.spriteFrame = null;
+ folds.push(sprite);
+ }
+ this._folds[sideName] = folds;
+ }
+
+ this.hideAllFolds();
+ },
+
+ hideAllFolds:function(){
+ for(var k in this._folds){
+ var f = this._folds[i];
+ for(var i in f){
+ f[i].node.active = false;
+ }
+ }
+ },
+
+ initEventHandler:function(){
+ var self = this;
+ this.node.on('game_begin',function(data){
+ self.initAllFolds();
+ });
+
+ this.node.on('game_sync',function(data){
+ self.initAllFolds();
+ });
+
+ this.node.on('game_chupai_notify',function(data){
+ self.initFolds(data.detail);
+ });
+
+ this.node.on('guo_notify',function(data){
+ self.initFolds(data.detail);
+ });
+ },
+
+ initAllFolds:function(){
+ var seats = cc.vv.gameNetMgr.seats;
+ for(var i in seats){
+ this.initFolds(seats[i]);
+ }
+ },
+
+ initFolds:function(seatData){
+ var folds = seatData.folds;
+ if(folds == null){
+ return;
+ }
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(seatData.seatindex);
+ var pre = cc.vv.mahjongmgr.getFoldPre(localIndex);
+ var side = cc.vv.mahjongmgr.getSide(localIndex);
+
+ var foldsSprites = this._folds[side];
+ for(var i = 0; i < foldsSprites.length; ++i){
+ var index = i;
+ if(side == "right" || side == "up"){
+ index = foldsSprites.length - i - 1;
+ }
+ var sprite = foldsSprites[index];
+ sprite.node.active = true;
+ this.setSpriteFrameByMJID(pre,sprite,folds[i]);
+ }
+ for(var i = folds.length; i < foldsSprites.length; ++i){
+ var index = i;
+ if(side == "right" || side == "up"){
+ index = foldsSprites.length - i - 1;
+ }
+ var sprite = foldsSprites[index];
+
+ sprite.spriteFrame = null;
+ sprite.node.active = false;
+ }
+ },
+
+ setSpriteFrameByMJID:function(pre,sprite,mjid){
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID(pre,mjid);
+ sprite.node.active = true;
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/Folds.js.meta b/client/assets/scripts/components/Folds.js.meta
new file mode 100755
index 0000000..909a8c3
--- /dev/null
+++ b/client/assets/scripts/components/Folds.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "0bf637a2-6441-4c59-b5b4-de8f217aa6b9",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/GameOver.js b/client/assets/scripts/components/GameOver.js
new file mode 100755
index 0000000..96657e2
--- /dev/null
+++ b/client/assets/scripts/components/GameOver.js
@@ -0,0 +1,626 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _gameover:null,
+ _gameresult:null,
+ _seats:[],
+ _isGameEnd:false,
+ _pingju:null,
+ _win:null,
+ _lose:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+ if(cc.vv.gameNetMgr.conf == null){
+ return;
+ }
+ if(cc.vv.gameNetMgr.conf.type == "xzdd"){
+ this._gameover = this.node.getChildByName("game_over");
+ }
+ else{
+ this._gameover = this.node.getChildByName("game_over_xlch");
+ }
+
+ this._gameover.active = false;
+
+ this._pingju = this._gameover.getChildByName("pingju");
+ this._win = this._gameover.getChildByName("win");
+ this._lose = this._gameover.getChildByName("lose");
+
+ this._gameresult = this.node.getChildByName("game_result");
+
+ var wanfa = this._gameover.getChildByName("wanfa").getComponent(cc.Label);
+ wanfa.string = cc.vv.gameNetMgr.getWanfa();
+
+ var listRoot = this._gameover.getChildByName("result_list");
+ for(var i = 1; i <= 4; ++i){
+ var s = "s" + i;
+ var sn = listRoot.getChildByName(s);
+ var viewdata = {};
+ viewdata.username = sn.getChildByName('username').getComponent(cc.Label);
+ viewdata.reason = sn.getChildByName('reason').getComponent(cc.Label);
+
+ var f = sn.getChildByName('fan');
+ if(f != null){
+ viewdata.fan = f.getComponent(cc.Label);
+ }
+
+ viewdata.score = sn.getChildByName('score').getComponent(cc.Label);
+ viewdata.hu = sn.getChildByName('hu');
+ viewdata.mahjongs = sn.getChildByName('pai');
+ viewdata.zhuang = sn.getChildByName('zhuang');
+ viewdata.hupai = sn.getChildByName('hupai');
+ viewdata._pengandgang = [];
+ this._seats.push(viewdata);
+ }
+
+ //初始化网络事件监听器
+ var self = this;
+ this.node.on('game_over',function(data){self.onGameOver(data.detail);});
+
+ this.node.on('game_end',function(data){self._isGameEnd = true;});
+ },
+
+ onGameOver(data){
+ if(cc.vv.gameNetMgr.conf.type == "xzdd"){
+ this.onGameOver_XZDD(data);
+ }
+ else{
+ this.onGameOver_XLCH(data);
+ }
+ },
+
+ onGameOver_XZDD(data){
+ console.log(data);
+ if(data.length == 0){
+ this._gameresult.active = true;
+ return;
+ }
+ this._gameover.active = true;
+ this._pingju.active = false;
+ this._win.active = false;
+ this._lose.active = false;
+
+ var myscore = data[cc.vv.gameNetMgr.seatIndex].score;
+ if(myscore > 0){
+ this._win.active = true;
+ }
+ else if(myscore < 0){
+ this._lose.active = true;
+ }
+ else{
+ this._pingju.active = true;
+ }
+
+
+ //显示玩家信息
+ for(var i = 0; i < 4; ++i){
+ var seatView = this._seats[i];
+ var userData = data[i];
+ var hued = false;
+ //胡牌的玩家才显示 是否清一色 根xn的字样
+ var numOfGangs = userData.angangs.length + userData.wangangs.length + userData.diangangs.length;
+ var numOfGen = userData.numofgen;
+ var actionArr = [];
+ var is7pairs = false;
+ var ischadajiao = false;
+ for(var j = 0; j < userData.actions.length; ++j){
+ var ac = userData.actions[j];
+ if(ac.type == "zimo" || ac.type == "ganghua" || ac.type == "dianganghua" || ac.type == "hu" || ac.type == "gangpaohu" || ac.type == "qiangganghu" || ac.type == "chadajiao"){
+ if(userData.pattern == "7pairs"){
+ actionArr.push("七对");
+ }
+ else if(userData.pattern == "l7pairs"){
+ actionArr.push("龙七对");
+ }
+ else if(userData.pattern == "j7pairs"){
+ actionArr.push("将七对");
+ }
+ else if(userData.pattern == "duidui"){
+ actionArr.push("碰碰胡");
+ }
+ else if(userData.pattern == "jiangdui"){
+ actionArr.push("将对");
+ }
+
+ if(ac.type == "zimo"){
+ actionArr.push("自摸");
+ }
+ else if(ac.type == "ganghua"){
+ actionArr.push("杠上花");
+ }
+ else if(ac.type == "dianganghua"){
+ actionArr.push("点杠花");
+ }
+ else if(ac.type == "gangpaohu"){
+ actionArr.push("杠炮胡");
+ }
+ else if(ac.type == "qiangganghu"){
+ actionArr.push("抢杠胡");
+ }
+ else if(ac.type == "chadajiao"){
+ ischadajiao = true;
+ }
+ hued = true;
+ }
+ else if(ac.type == "fangpao"){
+ actionArr.push("放炮");
+ }
+ else if(ac.type == "angang"){
+ actionArr.push("暗杠");
+ }
+ else if(ac.type == "diangang"){
+ actionArr.push("明杠");
+ }
+ else if(ac.type == "wangang"){
+ actionArr.push("弯杠");
+ }
+ else if(ac.type == "fanggang"){
+ actionArr.push("放杠");
+ }
+ else if(ac.type == "zhuanshougang"){
+ actionArr.push("转手杠");
+ }
+ else if(ac.type == "beiqianggang"){
+ actionArr.push("被抢杠");
+ }
+ else if(ac.type == "beichadajiao"){
+ actionArr.push("被查叫");
+ }
+ }
+
+ if(hued){
+ if(userData.qingyise){
+ actionArr.push("清一色");
+ }
+
+ if(userData.menqing){
+ actionArr.push("门清");
+ }
+
+ if(userData.zhongzhang){
+ actionArr.push("中张");
+ }
+
+ if(userData.jingouhu){
+ actionArr.push("金钩胡");
+ }
+
+ if(userData.haidihu){
+ actionArr.push("海底胡");
+ }
+
+ if(userData.tianhu){
+ actionArr.push("天胡");
+ }
+
+ if(userData.dihu){
+ actionArr.push("地胡");
+ }
+
+ if(numOfGen > 0){
+ actionArr.push("根x" + numOfGen);
+ }
+
+ if(ischadajiao){
+ actionArr.push("查大叫");
+ }
+ }
+
+ for(var o = 0; o < 3;++o){
+ seatView.hu.children[o].active = false;
+ }
+ if(userData.huorder >= 0){
+ seatView.hu.children[userData.huorder].active = true;
+ }
+
+ seatView.username.string = cc.vv.gameNetMgr.seats[i].name;
+ seatView.zhuang.active = cc.vv.gameNetMgr.button == i;
+ seatView.reason.string = actionArr.join("、");
+
+ //胡牌的玩家才有番
+ var fan = 0;
+ if(hued){
+ fan = userData.fan;
+ }
+ seatView.fan.string = fan + "番";
+
+ //
+ if(userData.score > 0){
+ seatView.score.string = "+" + userData.score;
+ }
+ else{
+ seatView.score.string = userData.score;
+ }
+
+
+ var hupai = -1;
+ if(hued){
+ hupai = userData.holds.pop();
+ }
+
+ cc.vv.mahjongmgr.sortMJ(userData.holds,userData.dingque);
+
+ //胡牌不参与排序
+ if(hued){
+ userData.holds.push(hupai);
+ }
+
+ //隐藏所有牌
+ for(var k = 0; k < seatView.mahjongs.childrenCount; ++k){
+ var n = seatView.mahjongs.children[k];
+ n.active = false;
+ }
+
+ var lackingNum = (userData.pengs.length + numOfGangs)*3;
+ //显示相关的牌
+ for(var k = 0; k < userData.holds.length; ++k){
+ var pai = userData.holds[k];
+ var n = seatView.mahjongs.children[k + lackingNum];
+ n.active = true;
+ var sprite = n.getComponent(cc.Sprite);
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("M_",pai);
+ }
+
+
+ for(var k = 0; k < seatView._pengandgang.length; ++k){
+ seatView._pengandgang[k].active = false;
+ }
+
+ //初始化杠牌
+ var index = 0;
+ var gangs = userData.angangs;
+ for(var k = 0; k < gangs.length; ++k){
+ var mjid = gangs[k];
+ this.initPengAndGangs(seatView,index,mjid,"angang");
+ index++;
+ }
+
+ var gangs = userData.diangangs;
+ for(var k = 0; k < gangs.length; ++k){
+ var mjid = gangs[k];
+ this.initPengAndGangs(seatView,index,mjid,"diangang");
+ index++;
+ }
+
+ var gangs = userData.wangangs;
+ for(var k = 0; k < gangs.length; ++k){
+ var mjid = gangs[k];
+ this.initPengAndGangs(seatView,index,mjid,"wangang");
+ index++;
+ }
+
+ //初始化碰牌
+ var pengs = userData.pengs
+ if(pengs){
+ for(var k = 0; k < pengs.length; ++k){
+ var mjid = pengs[k];
+ this.initPengAndGangs(seatView,index,mjid,"peng");
+ index++;
+ }
+ }
+ }
+ },
+ onGameOver_XLCH:function(data){
+ console.log(data);
+ if(data.length == 0){
+ this._gameresult.active = true;
+ return;
+ }
+ this._gameover.active = true;
+ this._pingju.active = false;
+ this._win.active = false;
+ this._lose.active = false;
+
+ var myscore = data[cc.vv.gameNetMgr.seatIndex].score;
+ if(myscore > 0){
+ this._win.active = true;
+ }
+ else if(myscore < 0){
+ this._lose.active = true;
+ }
+ else{
+ this._pingju.active = true;
+ }
+
+ //显示玩家信息
+ for(var i = 0; i < 4; ++i){
+ var seatView = this._seats[i];
+ var userData = data[i];
+ var hued = false;
+ var actionArr = [];
+ var is7pairs = false;
+ var ischadajiao = false;
+ var hupaiRoot = seatView.hupai;
+
+ for(var j = 0; j < hupaiRoot.children.length; ++j){
+ hupaiRoot.children[j].active = false;
+ }
+
+ var hi = 0;
+ for(var j = 0; j < userData.huinfo.length; ++j){
+ var info = userData.huinfo[j];
+ hued = hued || info.ishupai;
+ if(info.ishupai){
+ if(hi < hupaiRoot.children.length){
+ var hupaiView = hupaiRoot.children[hi];
+ hupaiView.active = true;
+ hupaiView.getComponent(cc.Sprite).spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("B_",info.pai);
+ hi++;
+ }
+ }
+
+ var str = ""
+ var sep = "";
+
+ var dataseat = userData;
+ if(!info.ishupai){
+ if(info.action == "fangpao"){
+ str = "放炮";
+ }
+ else if(info.action == "gangpao"){
+ str = "杠上炮";
+ }
+ else if(info.action == "beiqianggang"){
+ str = "被抢杠";
+ }
+ else{
+ str = "被查大叫";
+ }
+
+ dataseat = data[info.target];
+ info = dataseat.huinfo[info.index];
+ }
+ else{
+ if(info.action == "hu"){
+ str = "接炮胡"
+ }
+ else if(info.action == "zimo"){
+ str = "自摸";
+ }
+ else if(info.action == "ganghua"){
+ str = "杠上花";
+ }
+ else if(info.action == "dianganghua"){
+ str = "点杠花";
+ }
+ else if(info.action == "gangpaohu"){
+ str = "杠炮胡";
+ }
+ else if(info.action == "qiangganghu"){
+ str = "抢杠胡";
+ }
+ else if(info.action == "chadajiao"){
+ str = "查大叫";
+ }
+ }
+
+ str += "(";
+
+ if(info.pattern == "7pairs"){
+ str += "七对";
+ sep = "、"
+ }
+ else if(info.pattern == "l7pairs"){
+ str += "龙七对";
+ sep = "、"
+ }
+ else if(info.pattern == "j7pairs"){
+ str += "将七对";
+ sep = "、"
+ }
+ else if(info.pattern == "duidui"){
+ str += "碰碰胡";
+ sep = "、"
+ }
+ else if(info.pattern == "jiangdui"){
+ str += "将对";
+ sep = "、"
+ }
+
+ if(info.haidihu){
+ str += sep + "海底胡";
+ sep = "、";
+ }
+
+ if(info.tianhu){
+ str += sep + "天胡";
+ sep = "、";
+ }
+
+ if(info.dihu){
+ str += sep + "地胡";
+ sep = "、";
+ }
+
+ if(dataseat.qingyise){
+ str += sep + "清一色";
+ sep = "、";
+ }
+
+ if(dataseat.menqing){
+ str += sep + "门清";
+ sep = "、";
+ }
+
+ if(dataseat.jingouhu){
+ str += sep + "金钩胡";
+ sep = "、";
+ }
+
+ if(dataseat.zhongzhang){
+ str += sep + "中张";
+ sep = "、";
+ }
+
+ if(info.numofgen > 0){
+ str += sep + "根x" + info.numofgen;
+ sep = "、";
+ }
+
+ if(sep == ""){
+ str += "平胡";
+ }
+
+ str += "、" + info.fan + "番";
+
+ str += ")";
+ actionArr.push(str);
+ }
+
+ seatView.hu.active = hued;
+
+ if(userData.angangs.length){
+ actionArr.push("暗杠x" + userData.angangs.length);
+ }
+
+ if(userData.diangangs.length){
+ actionArr.push("明杠x" + userData.diangangs.length);
+ }
+
+ if(userData.wangangs.length){
+ actionArr.push("巴杠x" + userData.wangangs.length);
+ }
+
+ seatView.username.string = cc.vv.gameNetMgr.seats[i].name;
+ seatView.zhuang.active = cc.vv.gameNetMgr.button == i;
+ seatView.reason.string = actionArr.join("、");
+
+ //
+ if(userData.score > 0){
+ seatView.score.string = "+" + userData.score;
+ }
+ else{
+ seatView.score.string = userData.score;
+ }
+
+ //隐藏所有牌
+ for(var k = 0; k < seatView.mahjongs.childrenCount; ++k){
+ var n = seatView.mahjongs.children[k];
+ n.active = false;
+ }
+
+ cc.vv.mahjongmgr.sortMJ(userData.holds,userData.dingque);
+
+ var numOfGangs = userData.angangs.length + userData.wangangs.length + userData.diangangs.length;
+
+ var lackingNum = (userData.pengs.length + numOfGangs)*3;
+ //显示相关的牌
+ for(var k = 0; k < userData.holds.length; ++k){
+ var pai = userData.holds[k];
+ var n = seatView.mahjongs.children[k + lackingNum];
+ n.active = true;
+ var sprite = n.getComponent(cc.Sprite);
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("M_",pai);
+ }
+
+
+ for(var k = 0; k < seatView._pengandgang.length; ++k){
+ seatView._pengandgang[k].active = false;
+ }
+
+ //初始化杠牌
+ var index = 0;
+ var gangs = userData.angangs;
+ for(var k = 0; k < gangs.length; ++k){
+ var mjid = gangs[k];
+ this.initPengAndGangs(seatView,index,mjid,"angang");
+ index++;
+ }
+
+ var gangs = userData.diangangs;
+ for(var k = 0; k < gangs.length; ++k){
+ var mjid = gangs[k];
+ this.initPengAndGangs(seatView,index,mjid,"diangang");
+ index++;
+ }
+
+ var gangs = userData.wangangs;
+ for(var k = 0; k < gangs.length; ++k){
+ var mjid = gangs[k];
+ this.initPengAndGangs(seatView,index,mjid,"wangang");
+ index++;
+ }
+
+ //初始化碰牌
+ var pengs = userData.pengs
+ if(pengs){
+ for(var k = 0; k < pengs.length; ++k){
+ var mjid = pengs[k];
+ this.initPengAndGangs(seatView,index,mjid,"peng");
+ index++;
+ }
+ }
+ }
+ },
+
+ initPengAndGangs:function(seatView,index,mjid,flag){
+ var pgroot = null;
+ if(seatView._pengandgang.length <= index){
+ pgroot = cc.instantiate(cc.vv.mahjongmgr.pengPrefabSelf);
+ seatView._pengandgang.push(pgroot);
+ seatView.mahjongs.addChild(pgroot);
+ }
+ else{
+ pgroot = seatView._pengandgang[index];
+ pgroot.active = true;
+ }
+
+ var sprites = pgroot.getComponentsInChildren(cc.Sprite);
+ for(var s = 0; s < sprites.length; ++s){
+ var sprite = sprites[s];
+ if(sprite.node.name == "gang"){
+ var isGang = flag != "peng";
+ sprite.node.active = isGang;
+ sprite.node.scaleX = 1.0;
+ sprite.node.scaleY = 1.0;
+ if(flag == "angang"){
+ sprite.spriteFrame = cc.vv.mahjongmgr.getEmptySpriteFrame("myself");
+ sprite.node.scaleX = 1.4;
+ sprite.node.scaleY = 1.4;
+ }
+ else{
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("B_",mjid);
+ }
+ }
+ else{
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("B_",mjid);
+ }
+ }
+ pgroot.x = index * 55 * 3 + index * 10;
+ },
+
+ onBtnReadyClicked:function(){
+ console.log("onBtnReadyClicked");
+ if(this._isGameEnd){
+ this._gameresult.active = true;
+ }
+ else{
+ cc.vv.net.send('ready');
+ }
+ this._gameover.active = false;
+ },
+
+ onBtnShareClicked:function(){
+ console.log("onBtnShareClicked");
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/GameOver.js.meta b/client/assets/scripts/components/GameOver.js.meta
new file mode 100755
index 0000000..76cfeeb
--- /dev/null
+++ b/client/assets/scripts/components/GameOver.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "facfd963-9f1e-45fa-b143-02ae506e6a9a",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/GameResult.js b/client/assets/scripts/components/GameResult.js
new file mode 100755
index 0000000..31e0b01
--- /dev/null
+++ b/client/assets/scripts/components/GameResult.js
@@ -0,0 +1,95 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _gameresult:null,
+ _seats:[],
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ this._gameresult = this.node.getChildByName("game_result");
+ //this._gameresult.active = false;
+
+ var seats = this._gameresult.getChildByName("seats");
+ for(var i = 0; i < seats.children.length; ++i){
+ this._seats.push(seats.children[i].getComponent("Seat"));
+ }
+
+ var btnClose = cc.find("Canvas/game_result/btnClose");
+ if(btnClose){
+ cc.vv.utils.addClickEvent(btnClose,this.node,"GameResult","onBtnCloseClicked");
+ }
+
+ var btnShare = cc.find("Canvas/game_result/btnShare");
+ if(btnShare){
+ cc.vv.utils.addClickEvent(btnShare,this.node,"GameResult","onBtnShareClicked");
+ }
+
+ //初始化网络事件监听器
+ var self = this;
+ this.node.on('game_end',function(data){self.onGameEnd(data.detail);});
+ },
+
+ showResult:function(seat,info,isZuiJiaPaoShou){
+ seat.node.getChildByName("zuijiapaoshou").active = isZuiJiaPaoShou;
+
+ seat.node.getChildByName("zimocishu").getComponent(cc.Label).string = info.numzimo;
+ seat.node.getChildByName("jiepaocishu").getComponent(cc.Label).string = info.numjiepao;
+ seat.node.getChildByName("dianpaocishu").getComponent(cc.Label).string = info.numdianpao;
+ seat.node.getChildByName("angangcishu").getComponent(cc.Label).string = info.numangang;
+ seat.node.getChildByName("minggangcishu").getComponent(cc.Label).string = info.numminggang;
+ seat.node.getChildByName("chajiaocishu").getComponent(cc.Label).string = info.numchadajiao;
+ },
+
+ onGameEnd:function(endinfo){
+ var seats = cc.vv.gameNetMgr.seats;
+ var maxscore = -1;
+ var maxdianpao = 0;
+ var dianpaogaoshou = -1;
+ for(var i = 0; i < seats.length; ++i){
+ var seat = seats[i];
+ if(seat.score > maxscore){
+ maxscore = seat.score;
+ }
+ if(endinfo[i].numdianpao > maxdianpao){
+ maxdianpao = endinfo[i].numdianpao;
+ dianpaogaoshou = i;
+ }
+ }
+
+ for(var i = 0; i < seats.length; ++i){
+ var seat = seats[i];
+ var isBigwin = false;
+ if(seat.score > 0){
+ isBigwin = seat.score == maxscore;
+ }
+ this._seats[i].setInfo(seat.name,seat.score, isBigwin);
+ this._seats[i].setID(seat.userid);
+ var isZuiJiaPaoShou = dianpaogaoshou == i;
+ this.showResult(this._seats[i],endinfo[i],isZuiJiaPaoShou);
+ }
+ },
+
+ onBtnCloseClicked:function(){
+ cc.vv.wc.show('正在返回游戏大厅');
+ cc.director.loadScene("hall");
+ },
+
+ onBtnShareClicked:function(){
+ cc.vv.anysdkMgr.shareResult();
+ }
+});
diff --git a/client/assets/scripts/components/GameResult.js.meta b/client/assets/scripts/components/GameResult.js.meta
new file mode 100755
index 0000000..6c10e79
--- /dev/null
+++ b/client/assets/scripts/components/GameResult.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "2b08df29-9b45-410c-b625-64875f2ee3d2",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Hall.js b/client/assets/scripts/components/Hall.js
new file mode 100755
index 0000000..2d5ad8f
--- /dev/null
+++ b/client/assets/scripts/components/Hall.js
@@ -0,0 +1,241 @@
+var Net = require("Net")
+var Global = require("Global")
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ lblName:cc.Label,
+ lblMoney:cc.Label,
+ lblGems:cc.Label,
+ lblID:cc.Label,
+ lblNotice:cc.Label,
+ joinGameWin:cc.Node,
+ createRoomWin:cc.Node,
+ settingsWin:cc.Node,
+ helpWin:cc.Node,
+ xiaoxiWin:cc.Node,
+ btnJoinGame:cc.Node,
+ btnReturnGame:cc.Node,
+ sprHeadImg:cc.Sprite,
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ initNetHandlers:function(){
+ var self = this;
+ },
+
+ onShare:function(){
+ cc.vv.anysdkMgr.share("天天麻将","天天麻将,包含了血战到底、血流成河等多种四川流行麻将玩法。");
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(!cc.sys.isNative && cc.sys.isMobile){
+ var cvs = this.node.getComponent(cc.Canvas);
+ cvs.fitHeight = true;
+ cvs.fitWidth = true;
+ }
+ if(!cc.vv){
+ cc.director.loadScene("loading");
+ return;
+ }
+ this.initLabels();
+
+ if(cc.vv.gameNetMgr.roomId == null){
+ this.btnJoinGame.active = true;
+ this.btnReturnGame.active = false;
+ }
+ else{
+ this.btnJoinGame.active = false;
+ this.btnReturnGame.active = true;
+ }
+
+ //var params = cc.vv.args;
+ var roomId = cc.vv.userMgr.oldRoomId
+ if( roomId != null){
+ cc.vv.userMgr.oldRoomId = null;
+ cc.vv.userMgr.enterRoom(roomId);
+ }
+
+ var imgLoader = this.sprHeadImg.node.getComponent("ImageLoader");
+ imgLoader.setUserID(cc.vv.userMgr.userId);
+ cc.vv.utils.addClickEvent(this.sprHeadImg.node,this.node,"Hall","onBtnClicked");
+
+
+ this.addComponent("UserInfoShow");
+
+ this.initButtonHandler("Canvas/right_bottom/btn_shezhi");
+ this.initButtonHandler("Canvas/right_bottom/btn_help");
+ this.initButtonHandler("Canvas/right_bottom/btn_xiaoxi");
+ this.helpWin.addComponent("OnBack");
+ this.xiaoxiWin.addComponent("OnBack");
+
+ if(!cc.vv.userMgr.notice){
+ cc.vv.userMgr.notice = {
+ version:null,
+ msg:"数据请求中...",
+ }
+ }
+
+ if(!cc.vv.userMgr.gemstip){
+ cc.vv.userMgr.gemstip = {
+ version:null,
+ msg:"数据请求中...",
+ }
+ }
+
+ this.lblNotice.string = cc.vv.userMgr.notice.msg;
+
+ this.refreshInfo();
+ this.refreshNotice();
+ this.refreshGemsTip();
+
+ cc.vv.audioMgr.playBGM("bgMain.mp3");
+
+ cc.vv.utils.addEscEvent(this.node);
+ },
+
+ refreshInfo:function(){
+ var self = this;
+ var onGet = function(ret){
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ if(ret.gems != null){
+ this.lblGems.string = ret.gems;
+ }
+ }
+ };
+
+ var data = {
+ account:cc.vv.userMgr.account,
+ sign:cc.vv.userMgr.sign,
+ };
+ cc.vv.http.sendRequest("/get_user_status",data,onGet.bind(this));
+ },
+
+ refreshGemsTip:function(){
+ var self = this;
+ var onGet = function(ret){
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ cc.vv.userMgr.gemstip.version = ret.version;
+ cc.vv.userMgr.gemstip.msg = ret.msg.replace("","\n");
+ }
+ };
+
+ var data = {
+ account:cc.vv.userMgr.account,
+ sign:cc.vv.userMgr.sign,
+ type:"fkgm",
+ version:cc.vv.userMgr.gemstip.version
+ };
+ cc.vv.http.sendRequest("/get_message",data,onGet.bind(this));
+ },
+
+ refreshNotice:function(){
+ var self = this;
+ var onGet = function(ret){
+ if(ret.errcode !== 0){
+ console.log(ret.errmsg);
+ }
+ else{
+ cc.vv.userMgr.notice.version = ret.version;
+ cc.vv.userMgr.notice.msg = ret.msg;
+ this.lblNotice.string = ret.msg;
+ }
+ };
+
+ var data = {
+ account:cc.vv.userMgr.account,
+ sign:cc.vv.userMgr.sign,
+ type:"notice",
+ version:cc.vv.userMgr.notice.version
+ };
+ cc.vv.http.sendRequest("/get_message",data,onGet.bind(this));
+ },
+
+ initButtonHandler:function(btnPath){
+ var btn = cc.find(btnPath);
+ cc.vv.utils.addClickEvent(btn,this.node,"Hall","onBtnClicked");
+ },
+
+
+
+ initLabels:function(){
+ this.lblName.string = cc.vv.userMgr.userName;
+ this.lblMoney.string = cc.vv.userMgr.coins;
+ this.lblGems.string = cc.vv.userMgr.gems;
+ this.lblID.string = "ID:" + cc.vv.userMgr.userId;
+ },
+
+ onBtnClicked:function(event){
+ if(event.target.name == "btn_shezhi"){
+ this.settingsWin.active = true;
+ }
+ else if(event.target.name == "btn_help"){
+ this.helpWin.active = true;
+ }
+ else if(event.target.name == "btn_xiaoxi"){
+ this.xiaoxiWin.active = true;
+ }
+ else if(event.target.name == "head"){
+ cc.vv.userinfoShow.show(cc.vv.userMgr.userName,cc.vv.userMgr.userId,this.sprHeadImg,cc.vv.userMgr.sex,cc.vv.userMgr.ip);
+ }
+ },
+
+ onJoinGameClicked:function(){
+ this.joinGameWin.active = true;
+ },
+
+ onReturnGameClicked:function(){
+ cc.vv.wc.show('正在返回游戏房间');
+ cc.director.loadScene("mjgame");
+ },
+
+ onBtnAddGemsClicked:function(){
+ cc.vv.alert.show("提示",cc.vv.userMgr.gemstip.msg,function(){
+ this.onBtnTaobaoClicked();
+ }.bind(this));
+ this.refreshInfo();
+ },
+
+ onCreateRoomClicked:function(){
+ if(cc.vv.gameNetMgr.roomId != null){
+ cc.vv.alert.show("提示","房间已经创建!\n必须解散当前房间才能创建新的房间");
+ return;
+ }
+ console.log("onCreateRoomClicked");
+ this.createRoomWin.active = true;
+ },
+
+ onBtnTaobaoClicked:function(){
+ cc.sys.openURL('https://shop596732896.taobao.com/');
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ var x = this.lblNotice.node.x;
+ x -= dt*100;
+ if(x + this.lblNotice.node.width < -1000){
+ x = 500;
+ }
+ this.lblNotice.node.x = x;
+
+ if(cc.vv && cc.vv.userMgr.roomData != null){
+ cc.vv.userMgr.enterRoom(cc.vv.userMgr.roomData);
+ cc.vv.userMgr.roomData = null;
+ }
+ },
+});
diff --git a/client/assets/scripts/components/Hall.js.meta b/client/assets/scripts/components/Hall.js.meta
new file mode 100755
index 0000000..370f536
--- /dev/null
+++ b/client/assets/scripts/components/Hall.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "6edb38e3-c7e1-417a-94b5-9a4d71283176",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/History.js b/client/assets/scripts/components/History.js
new file mode 100755
index 0000000..15d87c6
--- /dev/null
+++ b/client/assets/scripts/components/History.js
@@ -0,0 +1,224 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ HistoryItemPrefab:{
+ default:null,
+ type:cc.Prefab,
+ },
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _history:null,
+ _viewlist:null,
+ _content:null,
+ _viewitemTemp:null,
+ _historyData:null,
+ _curRoomInfo:null,
+ _emptyTip:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ this._history = this.node.getChildByName("history");
+ this._history.active = false;
+
+ this._emptyTip = this._history.getChildByName("emptyTip");
+ this._emptyTip.active = true;
+
+ this._viewlist = this._history.getChildByName("viewlist");
+ this._content = cc.find("view/content",this._viewlist);
+
+ this._viewitemTemp = this._content.children[0];
+ this._content.removeChild(this._viewitemTemp);
+
+ var node = cc.find("Canvas/btn_zhanji");
+ this.addClickEvent(node,this.node,"History","onBtnHistoryClicked");
+
+ var node = cc.find("Canvas/history/btn_back");
+ this.addClickEvent(node,this.node,"History","onBtnBackClicked");
+ },
+
+ addClickEvent:function(node,target,component,handler){
+ var eventHandler = new cc.Component.EventHandler();
+ eventHandler.target = target;
+ eventHandler.component = component;
+ eventHandler.handler = handler;
+
+ var clickEvents = node.getComponent(cc.Button).clickEvents;
+ clickEvents.push(eventHandler);
+ },
+
+ onBtnBackClicked:function(){
+ if(this._curRoomInfo == null){
+ this._historyData = null;
+ this._history.active = false;
+ }
+ else{
+ this.initRoomHistoryList(this._historyData);
+ }
+ },
+
+ onBtnHistoryClicked:function(){
+ this._history.active = true;
+ var self = this;
+ cc.vv.userMgr.getHistoryList(function(data){
+ data.sort(function(a,b){
+ return a.time < b.time;
+ });
+ self._historyData = data;
+ for(var i = 0; i < data.length; ++i){
+ for(var j = 0; j < 4; ++j){
+ var s = data[i].seats[j];
+ s.name = new Buffer(s.name,'base64').toString();
+ }
+ }
+ self.initRoomHistoryList(data);
+ });
+ },
+
+ dateFormat:function(time){
+ var date = new Date(time);
+ var datetime = "{0}-{1}-{2} {3}:{4}:{5}";
+ var year = date.getFullYear();
+ var month = date.getMonth() + 1;
+ month = month >= 10? month : ("0"+month);
+ var day = date.getDate();
+ day = day >= 10? day : ("0"+day);
+ var h = date.getHours();
+ h = h >= 10? h : ("0"+h);
+ var m = date.getMinutes();
+ m = m >= 10? m : ("0"+m);
+ var s = date.getSeconds();
+ s = s >= 10? s : ("0"+s);
+ datetime = datetime.format(year,month,day,h,m,s);
+ return datetime;
+ },
+
+ initRoomHistoryList:function(data){
+ for(var i = 0; i < data.length; ++i){
+ var node = this.getViewItem(i);
+ node.idx = i;
+ var titleId = "" + (i + 1);
+ node.getChildByName("title").getComponent(cc.Label).string = titleId;
+ node.getChildByName("roomNo").getComponent(cc.Label).string = "房间ID:" + data[i].id;
+ var datetime = this.dateFormat(data[i].time * 1000);
+ node.getChildByName("time").getComponent(cc.Label).string = datetime;
+
+ var btnOp = node.getChildByName("btnOp");
+ btnOp.idx = i;
+ btnOp.getChildByName("Label").getComponent(cc.Label).string = "详情";
+
+ for(var j = 0; j < 4; ++j){
+ var s = data[i].seats[j];
+ var info = s.name + ":" + s.score;
+ //console.log(info);
+ node.getChildByName("info" + j).getComponent(cc.Label).string = info;
+ }
+ }
+ this._emptyTip.active = data.length == 0;
+ this.shrinkContent(data.length);
+ this._curRoomInfo = null;
+ },
+
+ initGameHistoryList:function(roomInfo,data){
+ data.sort(function(a,b){
+ return a.create_time < b.create_time;
+ });
+ for(var i = 0; i < data.length; ++i){
+ var node = this.getViewItem(i);
+ var idx = data.length - i - 1;
+ node.idx = idx;
+ var titleId = "" + (idx + 1);
+ node.getChildByName("title").getComponent(cc.Label).string = titleId;
+ node.getChildByName("roomNo").getComponent(cc.Label).string = "房间ID:" + roomInfo.id;
+ var datetime = this.dateFormat(data[i].create_time * 1000);
+ node.getChildByName("time").getComponent(cc.Label).string = datetime;
+
+ var btnOp = node.getChildByName("btnOp");
+ btnOp.idx = idx;
+ btnOp.getChildByName("Label").getComponent(cc.Label).string = "回放";
+
+ var result = JSON.parse(data[i].result);
+ for(var j = 0; j < 4; ++j){
+ var s = roomInfo.seats[j];
+ var info = s.name + ":" + result[j];
+ //console.log(info);
+ node.getChildByName("info" + j).getComponent(cc.Label).string = info;
+ }
+ }
+ this.shrinkContent(data.length);
+ this._curRoomInfo = roomInfo;
+ },
+
+ getViewItem:function(index){
+ var content = this._content;
+ if(content.childrenCount > index){
+ return content.children[index];
+ }
+ var node = cc.instantiate(this._viewitemTemp);
+ content.addChild(node);
+ return node;
+ },
+ shrinkContent:function(num){
+ while(this._content.childrenCount > num){
+ var lastOne = this._content.children[this._content.childrenCount -1];
+ this._content.removeChild(lastOne,true);
+ }
+ },
+
+ getGameListOfRoom:function(idx){
+ var self = this;
+ var roomInfo = this._historyData[idx];
+ cc.vv.userMgr.getGamesOfRoom(roomInfo.uuid,function(data){
+ if(data != null && data.length > 0){
+ self.initGameHistoryList(roomInfo,data);
+ }
+ });
+ },
+
+ getDetailOfGame:function(idx){
+ var self = this;
+ var roomUUID = this._curRoomInfo.uuid;
+ cc.vv.userMgr.getDetailOfGame(roomUUID,idx,function(data){
+ data.base_info = JSON.parse(data.base_info);
+ data.action_records = JSON.parse(data.action_records);
+ cc.vv.gameNetMgr.prepareReplay(self._curRoomInfo,data);
+ cc.vv.replayMgr.init(data);
+ cc.director.loadScene("mjgame");
+ });
+ },
+
+ onViewItemClicked:function(event){
+ var idx = event.target.idx;
+ console.log(idx);
+ if(this._curRoomInfo == null){
+ this.getGameListOfRoom(idx);
+ }
+ else{
+ this.getDetailOfGame(idx);
+ }
+ },
+
+ onBtnOpClicked:function(event){
+ var idx = event.target.parent.idx;
+ console.log(idx);
+ if(this._curRoomInfo == null){
+ this.getGameListOfRoom(idx);
+ }
+ else{
+ this.getDetailOfGame(idx);
+ }
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/History.js.meta b/client/assets/scripts/components/History.js.meta
new file mode 100755
index 0000000..5547f7d
--- /dev/null
+++ b/client/assets/scripts/components/History.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "4d7bc8b4-2d4c-4c4f-a309-2972438fcf70",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/HuanSanZhang.js b/client/assets/scripts/components/HuanSanZhang.js
new file mode 100755
index 0000000..eac5c75
--- /dev/null
+++ b/client/assets/scripts/components/HuanSanZhang.js
@@ -0,0 +1,156 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _huanpaitip:null,
+ _huanpaiArr:[]
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ this._huanpaitip = cc.find("Canvas/huansanzhang");
+ this._huanpaitip.active = cc.vv.gameNetMgr.isHuanSanZhang;
+
+ if(this._huanpaitip.active){
+ this.showHuanpai(cc.vv.gameNetMgr.getSelfData().huanpais == null);
+ }
+ this.initHuaipaiInfo();
+
+ var btnOk = cc.find("Canvas/huansanzhang/btn_ok");
+ if(btnOk){
+ cc.vv.utils.addClickEvent(btnOk,this.node,"HuanSanZhang","onHuanSanZhang");
+ }
+
+ var self = this;
+ this.node.on('game_begin',function(data){
+ self.initHuaipaiInfo();
+ });
+
+ this.node.on('game_huanpai',function(data){
+ self._huanpaitip.active = true;
+ self.showHuanpai(true);
+ });
+
+ this.node.on('huanpai_notify',function(data){
+ if(data.detail.seatindex == cc.vv.gameNetMgr.seatIndex){
+ self.initHuaipaiInfo();
+ }
+ });
+
+ this.node.on('game_huanpai_over',function(data){
+ self._huanpaitip.active = false;
+ for(var i = 0; i < self._huanpaiArr.length; ++i){
+ self._huanpaiArr[i].y = 0;
+ }
+ self._huanpaiArr = [];
+ self.initHuaipaiInfo();
+ });
+
+ this.node.on('game_huanpai_result',function(data){
+ cc.vv.gameNetMgr.isHuanSanZhang = false;
+ self._huanpaitip.active = false;
+ for(var i = 0; i < self._huanpaiArr.length; ++i){
+ self._huanpaiArr[i].y = 0;
+ }
+ self._huanpaiArr = [];
+ });
+
+ this.node.on('mj_clicked',function(data){
+ var target = data.detail;
+ //如果已经点起来,则取消
+ var idx = self._huanpaiArr.indexOf(target);
+ if(idx != -1){
+ target.y = 0;
+ self._huanpaiArr.splice(idx,1);
+ }
+ else{
+ //如果是新的,则加入
+ if(self._huanpaiArr.length < 3){
+ self._huanpaiArr.push(target);
+ target.y = 15;
+ }
+ }
+ });
+ },
+
+ showHuanpai:function(interactable){
+ this._huanpaitip.getChildByName("info").getComponent(cc.Label).string = interactable? "请选择三张一样花色的牌":"等待其他玩家选牌...";
+ this._huanpaitip.getChildByName("btn_ok").getComponent(cc.Button).interactable = interactable;
+ this._huanpaitip.getChildByName("mask").active = false;
+ },
+
+ initHuaipaiInfo:function(){
+ var huaipaiinfo = cc.find("Canvas/game/huanpaiinfo");
+ var seat = cc.vv.gameNetMgr.getSelfData();
+ if(seat.huanpais == null){
+ huaipaiinfo.active = false;
+ return;
+ }
+ huaipaiinfo.active = true;
+ for(var i = 0; i < seat.huanpais.length; ++i){
+ huaipaiinfo.getChildByName("hp" + (i + 1)).getComponent(cc.Sprite).spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("M_",seat.huanpais[i]);
+ }
+
+ var hpm = huaipaiinfo.getChildByName("hpm");
+ hpm.active = true;
+ if(cc.vv.gameNetMgr.huanpaimethod == 0){
+ hpm.rotation = 90;
+ }
+ else if(cc.vv.gameNetMgr.huanpaimethod == 1){
+ hpm.rotation = 0;
+ }
+ else if(cc.vv.gameNetMgr.huanpaimethod == 2){
+ hpm.rotation = 180;
+ }
+ else{
+ hpm.active = false;
+ }
+ },
+
+ onHuanSanZhang:function(event){
+ if(this._huanpaiArr.length != 3){
+ return;
+ }
+
+ var type = null;
+ for(var i = 0; i < this._huanpaiArr.length; ++i){
+ var pai = this._huanpaiArr[i].mjId;
+ var nt = cc.vv.mahjongmgr.getMahjongType(pai);
+ if(type == null){
+ type = nt;
+ }
+ else{
+ if(type != nt){
+ return;
+ }
+ }
+ }
+
+ var data = {
+ p1:this._huanpaiArr[0].mjId,
+ p2:this._huanpaiArr[1].mjId,
+ p3:this._huanpaiArr[2].mjId,
+ }
+
+ this._huanpaitip.getChildByName("info").getComponent(cc.Label).string = "等待其他玩家选牌...";
+ this._huanpaitip.getChildByName("btn_ok").getComponent(cc.Button).interactable = false;
+ this._huanpaitip.getChildByName("mask").active = true;
+
+ cc.vv.net.send("huanpai",data);
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/HuanSanZhang.js.meta b/client/assets/scripts/components/HuanSanZhang.js.meta
new file mode 100755
index 0000000..f669b05
--- /dev/null
+++ b/client/assets/scripts/components/HuanSanZhang.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "9a096a00-814e-47c2-bc57-d3964f358b56",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/ImageLoader.js b/client/assets/scripts/components/ImageLoader.js
new file mode 100755
index 0000000..dbbfe40
--- /dev/null
+++ b/client/assets/scripts/components/ImageLoader.js
@@ -0,0 +1,118 @@
+function loadImage(url,code,callback){
+ /*
+ if(cc.vv.images == null){
+ cc.vv.images = {};
+ }
+ var imageInfo = cc.vv.images[url];
+ if(imageInfo == null){
+ imageInfo = {
+ image:null,
+ queue:[],
+ };
+ cc.vv.images[url] = imageInfo;
+ }
+
+ cc.loader.load(url,function (err,tex) {
+ imageInfo.image = tex;
+ var spriteFrame = new cc.SpriteFrame(tex, cc.Rect(0, 0, tex.width, tex.height));
+ for(var i = 0; i < imageInfo.queue.length; ++i){
+ var itm = imageInfo.queue[i];
+ itm.callback(itm.code,spriteFrame);
+ }
+ itm.queue = [];
+ });
+ if(imageInfo.image != null){
+ var tex = imageInfo.image;
+ var spriteFrame = new cc.SpriteFrame(tex, cc.Rect(0, 0, tex.width, tex.height));
+ callback(code,spriteFrame);
+ }
+ else{
+ imageInfo.queue.push({code:code,callback:callback});
+ }*/
+ cc.loader.load(url,function (err,tex) {
+ var spriteFrame = new cc.SpriteFrame(tex, cc.Rect(0, 0, tex.width, tex.height));
+ callback(code,spriteFrame);
+ });
+};
+
+function getBaseInfo(userid,callback){
+ if(cc.vv.baseInfoMap == null){
+ cc.vv.baseInfoMap = {};
+ }
+
+ if(cc.vv.baseInfoMap[userid] != null){
+ callback(userid,cc.vv.baseInfoMap[userid]);
+ }
+ else{
+ cc.vv.http.sendRequest('/base_info',{userid:userid},function(ret){
+ var url = null;
+ if(ret.headimgurl){
+ url = ret.headimgurl + ".jpg";
+ }
+ var info = {
+ name:ret.name,
+ sex:ret.sex,
+ url:url,
+ }
+ cc.vv.baseInfoMap[userid] = info;
+ callback(userid,info);
+
+ },cc.vv.http.master_url);
+ }
+};
+
+cc.Class({
+ extends: cc.Component,
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ this.setupSpriteFrame();
+ },
+
+ setUserID:function(userid){
+ if(cc.sys.isNative == false){
+ return;
+ }
+ if(!userid){
+ return;
+ }
+ if(cc.vv.images == null){
+ cc.vv.images = {};
+ }
+
+ var self = this;
+ getBaseInfo(userid,function(code,info){
+ if(info && info.url){
+ loadImage(info.url,userid,function (err,spriteFrame) {
+ self._spriteFrame = spriteFrame;
+ self.setupSpriteFrame();
+ });
+ }
+ });
+ },
+
+ setupSpriteFrame:function(){
+ if(this._spriteFrame){
+ var spr = this.getComponent(cc.Sprite);
+ if(spr){
+ spr.spriteFrame = this._spriteFrame;
+ }
+ }
+ }
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/ImageLoader.js.meta b/client/assets/scripts/components/ImageLoader.js.meta
new file mode 100755
index 0000000..ec4c30e
--- /dev/null
+++ b/client/assets/scripts/components/ImageLoader.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "ed057060-a7c1-4794-96c6-23e96300dedd",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/JoinGameInput.js b/client/assets/scripts/components/JoinGameInput.js
new file mode 100755
index 0000000..77dc736
--- /dev/null
+++ b/client/assets/scripts/components/JoinGameInput.js
@@ -0,0 +1,118 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ nums:{
+ default:[],
+ type:[cc.Label]
+ },
+ _inputIndex:0,
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ // use this for initialization
+ onLoad: function () {
+
+ },
+
+ onEnable:function(){
+ this.onResetClicked();
+ },
+
+ onInputFinished:function(roomId){
+ cc.vv.userMgr.enterRoom(roomId,function(ret){
+ if(ret.errcode == 0){
+ this.node.active = false;
+ }
+ else{
+ var content = "房间["+ roomId +"]不存在,请重新输入!";
+ if(ret.errcode == 4){
+ content = "房间["+ roomId + "]已满!";
+ }
+ cc.vv.alert.show("提示",content);
+ this.onResetClicked();
+ }
+ }.bind(this));
+ },
+
+ onInput:function(num){
+ if(this._inputIndex >= this.nums.length){
+ return;
+ }
+ this.nums[this._inputIndex].string = num;
+ this._inputIndex += 1;
+
+ if(this._inputIndex == this.nums.length){
+ var roomId = this.parseRoomID();
+ console.log("ok:" + roomId);
+ this.onInputFinished(roomId);
+ }
+ },
+
+ onN0Clicked:function(){
+ this.onInput(0);
+ },
+ onN1Clicked:function(){
+ this.onInput(1);
+ },
+ onN2Clicked:function(){
+ this.onInput(2);
+ },
+ onN3Clicked:function(){
+ this.onInput(3);
+ },
+ onN4Clicked:function(){
+ this.onInput(4);
+ },
+ onN5Clicked:function(){
+ this.onInput(5);
+ },
+ onN6Clicked:function(){
+ this.onInput(6);
+ },
+ onN7Clicked:function(){
+ this.onInput(7);
+ },
+ onN8Clicked:function(){
+ this.onInput(8);
+ },
+ onN9Clicked:function(){
+ this.onInput(9);
+ },
+ onResetClicked:function(){
+ for(var i = 0; i < this.nums.length; ++i){
+ this.nums[i].string = "";
+ }
+ this._inputIndex = 0;
+ },
+ onDelClicked:function(){
+ if(this._inputIndex > 0){
+ this._inputIndex -= 1;
+ this.nums[this._inputIndex].string = "";
+ }
+ },
+ onCloseClicked:function(){
+ this.node.active = false;
+ },
+
+ parseRoomID:function(){
+ var str = "";
+ for(var i = 0; i < this.nums.length; ++i){
+ str += this.nums[i].string;
+ }
+ return str;
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/JoinGameInput.js.meta b/client/assets/scripts/components/JoinGameInput.js.meta
new file mode 100755
index 0000000..04120f8
--- /dev/null
+++ b/client/assets/scripts/components/JoinGameInput.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "10a1cf23-cfde-49bb-8367-a6439651f8a7",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/LoadingLogic.js b/client/assets/scripts/components/LoadingLogic.js
new file mode 100755
index 0000000..7c1259f
--- /dev/null
+++ b/client/assets/scripts/components/LoadingLogic.js
@@ -0,0 +1,63 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ tipLabel:cc.Label,
+ _stateStr:'',
+ _progress:0.0,
+ _splash:null,
+ _isLoading:false,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(!cc.sys.isNative && cc.sys.isMobile){
+ var cvs = this.node.getComponent(cc.Canvas);
+ cvs.fitHeight = true;
+ cvs.fitWidth = true;
+ }
+ this.tipLabel.string = this._stateStr;
+ this.startPreloading();
+ },
+
+ startPreloading:function(){
+ this._stateStr = "正在加载资源,请稍候"
+ this._isLoading = true;
+ var self = this;
+
+ cc.loader.onProgress = function ( completedCount, totalCount, item ){
+ //console.log("completedCount:" + completedCount + ",totalCount:" + totalCount );
+ if(self._isLoading){
+ self._progress = completedCount/totalCount;
+ }
+ };
+
+ cc.loader.loadResAll("textures", function (err, assets) {
+ self.onLoadComplete();
+ });
+ },
+
+ onLoadComplete:function(){
+ this._isLoading = false;
+ this._stateStr = "准备登陆";
+ cc.director.loadScene("login");
+ cc.loader.onComplete = null;
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ if(this._stateStr.length == 0){
+ return;
+ }
+ this.tipLabel.string = this._stateStr + ' ';
+ if(this._isLoading){
+ this.tipLabel.string += Math.floor(this._progress * 100) + "%";
+ }
+ else{
+ var t = Math.floor(Date.now() / 1000) % 4;
+ for(var i = 0; i < t; ++ i){
+ this.tipLabel.string += '.';
+ }
+ }
+ }
+});
\ No newline at end of file
diff --git a/client/assets/scripts/components/LoadingLogic.js.meta b/client/assets/scripts/components/LoadingLogic.js.meta
new file mode 100755
index 0000000..1de9fb5
--- /dev/null
+++ b/client/assets/scripts/components/LoadingLogic.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "350d3472-f5a5-48a8-9476-edf3f61ffcf5",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Login.js b/client/assets/scripts/components/Login.js
new file mode 100755
index 0000000..d257872
--- /dev/null
+++ b/client/assets/scripts/components/Login.js
@@ -0,0 +1,116 @@
+String.prototype.format = function(args) {
+ if (arguments.length>0) {
+ var result = this;
+ if (arguments.length == 1 && typeof (args) == "object") {
+ for (var key in args) {
+ var reg=new RegExp ("({"+key+"})","g");
+ result = result.replace(reg, args[key]);
+ }
+ }
+ else {
+ for (var i = 0; i < arguments.length; i++) {
+ if(arguments[i]==undefined) {
+ return "";
+ }
+ else {
+ var reg=new RegExp ("({["+i+"]})","g");
+ result = result.replace(reg, arguments[i]);
+ }
+ }
+ }
+ return result;
+ }
+ else {
+ return this;
+ }
+};
+
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _mima:null,
+ _mimaIndex:0,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(!cc.sys.isNative && cc.sys.isMobile){
+ var cvs = this.node.getComponent(cc.Canvas);
+ cvs.fitHeight = true;
+ cvs.fitWidth = true;
+ }
+
+ if(!cc.vv){
+ cc.director.loadScene("loading");
+ return;
+ }
+ cc.vv.http.url = cc.vv.http.master_url;
+ cc.vv.net.addHandler('push_need_create_role',function(){
+ console.log("onLoad:push_need_create_role");
+ cc.director.loadScene("createrole");
+ });
+
+ cc.vv.audioMgr.playBGM("bgMain.mp3");
+
+ this._mima = ["A","A","B","B","A","B","A","B","A","A","A","B","B","B"];
+
+ if(!cc.sys.isNative || cc.sys.os == cc.sys.OS_WINDOWS){
+ cc.find("Canvas/btn_yk").active = true;
+ cc.find("Canvas/btn_weixin").active = false;
+ }
+ else{
+ cc.find("Canvas/btn_yk").active = false;
+ cc.find("Canvas/btn_weixin").active = true;
+ }
+ },
+
+ start:function(){
+ var account = cc.sys.localStorage.getItem("wx_account");
+ var sign = cc.sys.localStorage.getItem("wx_sign");
+ if(account != null && sign != null){
+ var ret = {
+ errcode:0,
+ account:account,
+ sign:sign
+ }
+ cc.vv.userMgr.onAuth(ret);
+ }
+ },
+
+ onBtnQuickStartClicked:function(){
+ cc.vv.userMgr.guestAuth();
+ },
+
+ onBtnWeichatClicked:function(){
+ var self = this;
+ cc.vv.anysdkMgr.login();
+ },
+
+ onBtnMIMAClicked:function(event){
+ if(this._mima[this._mimaIndex] == event.target.name){
+ this._mimaIndex++;
+ if(this._mimaIndex == this._mima.length){
+ cc.find("Canvas/btn_yk").active = true;
+ }
+ }
+ else{
+ console.log("oh ho~~~");
+ this._mimaIndex = 0;
+ }
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/Login.js.meta b/client/assets/scripts/components/Login.js.meta
new file mode 100755
index 0000000..9422af8
--- /dev/null
+++ b/client/assets/scripts/components/Login.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "572a741f-87af-4df5-92d7-90db6100d7e2",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/MJGame.js b/client/assets/scripts/components/MJGame.js
new file mode 100755
index 0000000..f4e56ef
--- /dev/null
+++ b/client/assets/scripts/components/MJGame.js
@@ -0,0 +1,899 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ gameRoot:{
+ default:null,
+ type:cc.Node
+ },
+
+ prepareRoot:{
+ default:null,
+ type:cc.Node
+ },
+
+ _myMJArr:[],
+ _options:null,
+ _selectedMJ:null,
+ _chupaiSprite:[],
+ _mjcount:null,
+ _gamecount:null,
+ _hupaiTips:[],
+ _hupaiLists:[],
+ _playEfxs:[],
+ _opts:[],
+ },
+
+ onLoad: function () {
+ if(!cc.sys.isNative && cc.sys.isMobile){
+ var cvs = this.node.getComponent(cc.Canvas);
+ cvs.fitHeight = true;
+ cvs.fitWidth = true;
+ }
+ if(!cc.vv){
+ cc.director.loadScene("loading");
+ return;
+ }
+ this.addComponent("NoticeTip");
+ this.addComponent("GameOver");
+ this.addComponent("DingQue");
+ this.addComponent("PengGangs");
+ this.addComponent("MJRoom");
+ this.addComponent("TimePointer");
+ this.addComponent("GameResult");
+ this.addComponent("Chat");
+ this.addComponent("Folds");
+ this.addComponent("ReplayCtrl");
+ this.addComponent("PopupMgr");
+ this.addComponent("HuanSanZhang");
+ this.addComponent("ReConnect");
+ this.addComponent("Voice");
+ this.addComponent("UserInfoShow");
+ this.addComponent("Status");
+
+ this.initView();
+ this.initEventHandlers();
+
+ this.gameRoot.active = false;
+ this.prepareRoot.active = true;
+ this.initWanfaLabel();
+ this.onGameBeign();
+ cc.vv.audioMgr.playBGM("bgFight.mp3");
+ cc.vv.utils.addEscEvent(this.node);
+ },
+
+ initView:function(){
+
+ //搜索需要的子节点
+ var gameChild = this.node.getChildByName("game");
+
+ this._mjcount = gameChild.getChildByName('mjcount').getComponent(cc.Label);
+ this._mjcount.string = "剩余" + cc.vv.gameNetMgr.numOfMJ + "张";
+ this._gamecount = gameChild.getChildByName('gamecount').getComponent(cc.Label);
+ this._gamecount.string = "" + cc.vv.gameNetMgr.numOfGames + "/" + cc.vv.gameNetMgr.maxNumOfGames + "局";
+
+ var myselfChild = gameChild.getChildByName("myself");
+ var myholds = myselfChild.getChildByName("holds");
+
+ this._chupaidrag = gameChild.getChildByName('chupaidrag');
+ this._chupaidrag.active = false;
+
+ for(var i = 0; i < myholds.children.length; ++i){
+ var sprite = myholds.children[i].getComponent(cc.Sprite);
+ this._myMJArr.push(sprite);
+ sprite.spriteFrame = null;
+ this.initDragStuffs(sprite.node);
+ }
+
+ var realwidth = cc.director.getVisibleSize().width;
+ myholds.scaleX *= realwidth/1280;
+ myholds.scaleY *= realwidth/1280;
+
+ var sides = ["myself","right","up","left"];
+ for(var i = 0; i < sides.length; ++i){
+ var side = sides[i];
+
+ var sideChild = gameChild.getChildByName(side);
+ this._hupaiTips.push(sideChild.getChildByName("HuPai"));
+ this._hupaiLists.push(sideChild.getChildByName("hupailist"));
+ this._playEfxs.push(sideChild.getChildByName("play_efx").getComponent(cc.Animation));
+ this._chupaiSprite.push(sideChild.getChildByName("ChuPai").children[0].getComponent(cc.Sprite));
+
+ var opt = sideChild.getChildByName("opt");
+ opt.active = false;
+ var sprite = opt.getChildByName("pai").getComponent(cc.Sprite);
+ var data = {
+ node:opt,
+ sprite:sprite
+ };
+ this._opts.push(data);
+ }
+
+ var opts = gameChild.getChildByName("ops");
+ this._options = opts;
+ this.hideOptions();
+ this.hideChupai();
+ },
+
+ start:function(){
+ this.checkIp();
+ },
+
+ checkIp:function(){
+ if(cc.vv.gameNetMgr.gamestate == ''){
+ return;
+ }
+ var selfData = cc.vv.gameNetMgr.getSelfData();
+ var ipMap = {}
+ for(var i = 0; i < cc.vv.gameNetMgr.seats.length; ++i){
+ var seatData = cc.vv.gameNetMgr.seats[i];
+ if(seatData.ip != null && seatData.userid > 0 && seatData != selfData){
+ if(ipMap[seatData.ip]){
+ ipMap[seatData.ip].push(seatData.name);
+ }
+ else{
+ ipMap[seatData.ip] = [seatData.name];
+ }
+ }
+ }
+
+ for(var k in ipMap){
+ var d = ipMap[k];
+ if(d.length >= 2){
+ var str = "" + d.join("\n") + "\n\n正在使用同一IP地址进行游戏!";
+ cc.vv.alert.show("注意",str);
+ return;
+ }
+ }
+ },
+
+ initDragStuffs: function (node) {
+ //break if it's not my turn.
+ node.on(cc.Node.EventType.TOUCH_START, function (event) {
+ console.log("cc.Node.EventType.TOUCH_START");
+ if (cc.vv.gameNetMgr.turn != cc.vv.gameNetMgr.seatIndex) {
+ return;
+ }
+ node.interactable = node.getComponent(cc.Button).interactable;
+ if (!node.interactable) {
+ return;
+ }
+ node.opacity = 255;
+ this._chupaidrag.active = false;
+ this._chupaidrag.getComponent(cc.Sprite).spriteFrame = node.getComponent(cc.Sprite).spriteFrame;
+ this._chupaidrag.x = event.getLocationX() - cc.director.getVisibleSize().width / 2;
+ this._chupaidrag.y = event.getLocationY() - cc.director.getVisibleSize().height / 2;
+ }.bind(this));
+
+ node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
+ console.log("cc.Node.EventType.TOUCH_MOVE");
+ if (cc.vv.gameNetMgr.turn != cc.vv.gameNetMgr.seatIndex) {
+ return;
+ }
+ if (!node.interactable) {
+ return;
+ }
+ if (Math.abs(event.getDeltaX()) + Math.abs(event.getDeltaY()) < 0.5) {
+ return;
+ }
+ this._chupaidrag.active = true;
+ node.opacity = 150;
+ this._chupaidrag.opacity = 255;
+ this._chupaidrag.scaleX = 1;
+ this._chupaidrag.scaleY = 1;
+ this._chupaidrag.x = event.getLocationX() - cc.director.getVisibleSize().width / 2;
+ this._chupaidrag.y = event.getLocationY() - cc.director.getVisibleSize().height / 2;
+ node.y = 0;
+ }.bind(this));
+
+ node.on(cc.Node.EventType.TOUCH_END, function (event) {
+ if (cc.vv.gameNetMgr.turn != cc.vv.gameNetMgr.seatIndex) {
+ return;
+ }
+ if (!node.interactable) {
+ return;
+ }
+ console.log("cc.Node.EventType.TOUCH_END");
+ this._chupaidrag.active = false;
+ node.opacity = 255;
+ if (event.getLocationY() >= 200) {
+ this.shoot(node.mjId);
+ }
+ }.bind(this));
+
+ node.on(cc.Node.EventType.TOUCH_CANCEL, function (event) {
+ if (cc.vv.gameNetMgr.turn != cc.vv.gameNetMgr.seatIndex) {
+ return;
+ }
+ if (!node.interactable) {
+ return;
+ }
+ console.log("cc.Node.EventType.TOUCH_CANCEL");
+ this._chupaidrag.active = false;
+ node.opacity = 255;
+ if (event.getLocationY() >= 200) {
+ this.shoot(node.mjId);
+ } else if (event.getLocationY() >= 150) {
+ //this._huadongtishi.active = true;
+ //this._huadongtishi.getComponent(cc.Animation).play('huadongtishi');
+ }
+ }.bind(this));
+ },
+
+ hideChupai:function(){
+ for(var i = 0; i < this._chupaiSprite.length; ++i){
+ this._chupaiSprite[i].node.active = false;
+ }
+ },
+
+ initEventHandlers:function(){
+ cc.vv.gameNetMgr.dataEventHandler = this.node;
+
+ //初始化事件监听器
+ var self = this;
+
+ this.node.on('game_holds',function(data){
+ self.initMahjongs();
+ self.checkQueYiMen();
+ });
+
+ this.node.on('game_begin',function(data){
+ self.onGameBeign();
+ //第一把开局,要提示
+ if(cc.vv.gameNetMgr.numOfGames == 1){
+ self.checkIp();
+ }
+ });
+
+ this.node.on('check_ip',function(data){
+ self.checkIp();
+ });
+
+ this.node.on('game_sync',function(data){
+ self.onGameBeign();
+ self.checkIp();
+ });
+
+ this.node.on('game_chupai',function(data){
+ data = data.detail;
+ self.hideChupai();
+ self.checkQueYiMen();
+ if(data.last != cc.vv.gameNetMgr.seatIndex){
+ self.initMopai(data.last,null);
+ }
+ if(!cc.vv.replayMgr.isReplay() && data.turn != cc.vv.gameNetMgr.seatIndex){
+ self.initMopai(data.turn,-1);
+ }
+ });
+
+ this.node.on('game_mopai',function(data){
+ self.hideChupai();
+ data = data.detail;
+ var pai = data.pai;
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(data.seatIndex);
+ if(localIndex == 0){
+ var index = 13;
+ var sprite = self._myMJArr[index];
+ self.setSpriteFrameByMJID("M_",sprite,pai,index);
+ sprite.node.mjId = pai;
+ }
+ else if(cc.vv.replayMgr.isReplay()){
+ self.initMopai(data.seatIndex,pai);
+ }
+ });
+
+ this.node.on('game_action',function(data){
+ self.showAction(data.detail);
+ });
+
+ this.node.on('hupai',function(data){
+ var data = data.detail;
+ //如果不是玩家自己,则将玩家的牌都放倒
+ var seatIndex = data.seatindex;
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(seatIndex);
+ var hupai = self._hupaiTips[localIndex];
+ hupai.active = true;
+
+ if(localIndex == 0){
+ self.hideOptions();
+ }
+ var seatData = cc.vv.gameNetMgr.seats[seatIndex];
+ seatData.hued = true;
+ if(cc.vv.gameNetMgr.conf.type == "xlch"){
+ hupai.getChildByName("sprHu").active = true;
+ hupai.getChildByName("sprZimo").active = false;
+ self.initHupai(localIndex,data.hupai);
+ if(data.iszimo){
+ if(seatData.seatindex == cc.vv.gameNetMgr.seatIndex){
+ seatData.holds.pop();
+ self.initMahjongs();
+ }
+ else{
+ self.initOtherMahjongs(seatData);
+ }
+ }
+ }
+ else{
+ hupai.getChildByName("sprHu").active = !data.iszimo;
+ hupai.getChildByName("sprZimo").active = data.iszimo;
+
+ if(!(data.iszimo && localIndex==0))
+ {
+ //if(cc.vv.replayMgr.isReplay() == false && localIndex != 0){
+ // self.initEmptySprites(seatIndex);
+ //}
+ self.initMopai(seatIndex,data.hupai);
+ }
+ }
+
+ if(cc.vv.replayMgr.isReplay() == true && cc.vv.gameNetMgr.conf.type != "xlch"){
+ var opt = self._opts[localIndex];
+ opt.node.active = true;
+ opt.sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("M_",data.hupai);
+ }
+
+ if(data.iszimo){
+ self.playEfx(localIndex,"play_zimo");
+ }
+ else{
+ self.playEfx(localIndex,"play_hu");
+ }
+
+ cc.vv.audioMgr.playSFX("nv/hu.mp3");
+ });
+
+ this.node.on('mj_count',function(data){
+ self._mjcount.string = "剩余" + cc.vv.gameNetMgr.numOfMJ + "张";
+ });
+
+ this.node.on('game_num',function(data){
+ self._gamecount.string = "" + cc.vv.gameNetMgr.numOfGames + "/" + cc.vv.gameNetMgr.maxNumOfGames + "局";
+ });
+
+ this.node.on('game_over',function(data){
+ self.gameRoot.active = false;
+ self.prepareRoot.active = true;
+ });
+
+
+ this.node.on('game_chupai_notify',function(data){
+ self.hideChupai();
+ var seatData = data.detail.seatData;
+ //如果是自己,则刷新手牌
+ if(seatData.seatindex == cc.vv.gameNetMgr.seatIndex){
+ self.initMahjongs();
+ }
+ else{
+ self.initOtherMahjongs(seatData);
+ }
+ self.showChupai();
+ var audioUrl = cc.vv.mahjongmgr.getAudioURLByMJID(data.detail.pai);
+ cc.vv.audioMgr.playSFX(audioUrl);
+ });
+
+ this.node.on('guo_notify',function(data){
+ self.hideChupai();
+ self.hideOptions();
+ var seatData = data.detail;
+ //如果是自己,则刷新手牌
+ if(seatData.seatindex == cc.vv.gameNetMgr.seatIndex){
+ self.initMahjongs();
+ }
+ cc.vv.audioMgr.playSFX("give.mp3");
+ });
+
+ this.node.on('guo_result',function(data){
+ self.hideOptions();
+ });
+
+ this.node.on('game_dingque_finish',function(data){
+ self.initMahjongs();
+ });
+
+ this.node.on('peng_notify',function(data){
+ self.hideChupai();
+
+ var seatData = data.detail;
+ if(seatData.seatindex == cc.vv.gameNetMgr.seatIndex){
+ self.initMahjongs();
+ }
+ else{
+ self.initOtherMahjongs(seatData);
+ }
+ var localIndex = self.getLocalIndex(seatData.seatindex);
+ self.playEfx(localIndex,"play_peng");
+ cc.vv.audioMgr.playSFX("nv/peng.mp3");
+ self.hideOptions();
+ });
+
+ this.node.on('gang_notify',function(data){
+ self.hideChupai();
+ var data = data.detail;
+ var seatData = data.seatData;
+ var gangtype = data.gangtype;
+ if(seatData.seatindex == cc.vv.gameNetMgr.seatIndex){
+ self.initMahjongs();
+ }
+ else{
+ self.initOtherMahjongs(seatData);
+ }
+
+ var localIndex = self.getLocalIndex(seatData.seatindex);
+ if(gangtype == "wangang"){
+ self.playEfx(localIndex,"play_guafeng");
+ cc.vv.audioMgr.playSFX("guafeng.mp3");
+ }
+ else{
+ self.playEfx(localIndex,"play_xiayu");
+ cc.vv.audioMgr.playSFX("rain.mp3");
+ }
+ });
+
+ this.node.on("hangang_notify",function(data){
+ var data = data.detail;
+ var localIndex = self.getLocalIndex(data);
+ self.playEfx(localIndex,"play_gang");
+ cc.vv.audioMgr.playSFX("nv/gang.mp3");
+ self.hideOptions();
+ });
+
+ this.node.on('login_result', function () {
+ self.gameRoot.active = false;
+ self.prepareRoot.active = true;
+ console.log('login_result');
+ });
+ },
+
+ showChupai:function(){
+ var pai = cc.vv.gameNetMgr.chupai;
+ if( pai >= 0 ){
+ //
+ var localIndex = this.getLocalIndex(cc.vv.gameNetMgr.turn);
+ var sprite = this._chupaiSprite[localIndex];
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("M_",pai);
+ sprite.node.active = true;
+ }
+ },
+
+ addOption:function(btnName,pai){
+ for(var i = 0; i < this._options.childrenCount; ++i){
+ var child = this._options.children[i];
+ if(child.name == "op" && child.active == false){
+ child.active = true;
+ var sprite = child.getChildByName("opTarget").getComponent(cc.Sprite);
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID("M_",pai);
+ var btn = child.getChildByName(btnName);
+ btn.active = true;
+ btn.pai = pai;
+ return;
+ }
+ }
+ },
+
+ hideOptions:function(data){
+ this._options.active = false;
+ for(var i = 0; i < this._options.childrenCount; ++i){
+ var child = this._options.children[i];
+ if(child.name == "op"){
+ child.active = false;
+ child.getChildByName("btnPeng").active = false;
+ child.getChildByName("btnGang").active = false;
+ child.getChildByName("btnHu").active = false;
+ }
+ }
+ },
+
+ showAction:function(data){
+ if(this._options.active){
+ this.hideOptions();
+ }
+
+ if(data && (data.hu || data.gang || data.peng)){
+ this._options.active = true;
+ if(data.hu){
+ this.addOption("btnHu",data.pai);
+ }
+ if(data.peng){
+ this.addOption("btnPeng",data.pai);
+ }
+
+ if(data.gang){
+ for(var i = 0; i < data.gangpai.length;++i){
+ var gp = data.gangpai[i];
+ this.addOption("btnGang",gp);
+ }
+ }
+ }
+ },
+
+ initWanfaLabel:function(){
+ var wanfa = cc.find("Canvas/infobar/wanfa").getComponent(cc.Label);
+ wanfa.string = cc.vv.gameNetMgr.getWanfa();
+ },
+
+ initHupai:function(localIndex,pai){
+ if(cc.vv.gameNetMgr.conf.type == "xlch"){
+ var hupailist = this._hupaiLists[localIndex];
+ for(var i = 0; i < hupailist.children.length; ++i){
+ var hupainode = hupailist.children[i];
+ if(hupainode.active == false){
+ var pre = cc.vv.mahjongmgr.getFoldPre(localIndex);
+ hupainode.getComponent(cc.Sprite).spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID(pre,pai);
+ hupainode.active = true;
+ break;
+ }
+ }
+ }
+ },
+
+ playEfx:function(index,name){
+ this._playEfxs[index].node.active = true;
+ this._playEfxs[index].play(name);
+ },
+
+ onGameBeign:function(){
+
+ for(var i = 0; i < this._playEfxs.length; ++i){
+ this._playEfxs[i].node.active = false;
+ }
+
+ for(var i = 0; i < this._hupaiLists.length; ++i){
+ for(var j = 0; j < this._hupaiLists[i].childrenCount; ++j){
+ this._hupaiLists[i].children[j].active = false;
+ }
+ }
+
+ for(var i = 0; i < cc.vv.gameNetMgr.seats.length; ++i){
+ var seatData = cc.vv.gameNetMgr.seats[i];
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(i);
+ var hupai = this._hupaiTips[localIndex];
+ hupai.active = seatData.hued;
+ if(seatData.hued){
+ hupai.getChildByName("sprHu").active = !seatData.iszimo;
+ hupai.getChildByName("sprZimo").active = seatData.iszimo;
+ }
+
+ if(seatData.huinfo){
+ for(var j = 0; j < seatData.huinfo.length; ++j){
+ var info = seatData.huinfo[j];
+ if(info.ishupai){
+ this.initHupai(localIndex,info.pai);
+ }
+ }
+ }
+ }
+
+ this.hideChupai();
+ this.hideOptions();
+ var sides = ["right","up","left"];
+ var gameChild = this.node.getChildByName("game");
+ for(var i = 0; i < sides.length; ++i){
+ var sideChild = gameChild.getChildByName(sides[i]);
+ var holds = sideChild.getChildByName("holds");
+ for(var j = 0; j < holds.childrenCount; ++j){
+ var nc = holds.children[j];
+ nc.active = true;
+ nc.scaleX = 1.0;
+ nc.scaleY = 1.0;
+ var sprite = nc.getComponent(cc.Sprite);
+ sprite.spriteFrame = cc.vv.mahjongmgr.holdsEmpty[i+1];
+ }
+ }
+
+ if(cc.vv.gameNetMgr.gamestate == "" && cc.vv.replayMgr.isReplay() == false){
+ return;
+ }
+
+ this.gameRoot.active = true;
+ this.prepareRoot.active = false;
+ this.initMahjongs();
+ var seats = cc.vv.gameNetMgr.seats;
+ for(var i in seats){
+ var seatData = seats[i];
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(i);
+ if(localIndex != 0){
+ this.initOtherMahjongs(seatData);
+ if(i == cc.vv.gameNetMgr.turn){
+ this.initMopai(i,-1);
+ }
+ else{
+ this.initMopai(i,null);
+ }
+ }
+ }
+ this.showChupai();
+ if(cc.vv.gameNetMgr.curaction != null){
+ this.showAction(cc.vv.gameNetMgr.curaction);
+ cc.vv.gameNetMgr.curaction = null;
+ }
+
+ this.checkQueYiMen();
+ },
+
+ onMJClicked:function(event){
+ if(cc.vv.gameNetMgr.isHuanSanZhang){
+ this.node.emit("mj_clicked",event.target);
+ return;
+ }
+
+ //如果不是自己的轮子,则忽略
+ if(cc.vv.gameNetMgr.turn != cc.vv.gameNetMgr.seatIndex){
+ console.log("not your turn." + cc.vv.gameNetMgr.turn);
+ return;
+ }
+
+ for(var i = 0; i < this._myMJArr.length; ++i){
+ if(event.target == this._myMJArr[i].node){
+ //如果是再次点击,则出牌
+ if(event.target == this._selectedMJ){
+ this.shoot(this._selectedMJ.mjId);
+ this._selectedMJ.y = 0;
+ this._selectedMJ = null;
+ return;
+ }
+ if(this._selectedMJ != null){
+ this._selectedMJ.y = 0;
+ }
+ event.target.y = 15;
+ this._selectedMJ = event.target;
+ return;
+ }
+ }
+ },
+
+ //出牌
+ shoot:function(mjId){
+ if(mjId == null){
+ return;
+ }
+ cc.vv.net.send('chupai',mjId);
+ },
+
+ getMJIndex:function(side,index){
+ if(side == "right" || side == "up"){
+ return 13 - index;
+ }
+ return index;
+ },
+
+ initMopai:function(seatIndex,pai){
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(seatIndex);
+ var side = cc.vv.mahjongmgr.getSide(localIndex);
+ var pre = cc.vv.mahjongmgr.getFoldPre(localIndex);
+
+ var gameChild = this.node.getChildByName("game");
+ var sideChild = gameChild.getChildByName(side);
+ var holds = sideChild.getChildByName("holds");
+
+ var lastIndex = this.getMJIndex(side,13);
+ var nc = holds.children[lastIndex];
+
+ nc.scaleX = 1.0;
+ nc.scaleY = 1.0;
+
+ if(pai == null){
+ nc.active = false;
+ }
+ else if(pai >= 0){
+ nc.active = true;
+ if(side == "up"){
+ nc.scaleX = 0.73;
+ nc.scaleY = 0.73;
+ }
+ var sprite = nc.getComponent(cc.Sprite);
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID(pre,pai);
+ }
+ else if(pai != null){
+ nc.active = true;
+ if(side == "up"){
+ nc.scaleX = 1.0;
+ nc.scaleY = 1.0;
+ }
+ var sprite = nc.getComponent(cc.Sprite);
+ sprite.spriteFrame = cc.vv.mahjongmgr.getHoldsEmptySpriteFrame(side);
+ }
+ },
+
+ initEmptySprites:function(seatIndex){
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(seatIndex);
+ var side = cc.vv.mahjongmgr.getSide(localIndex);
+ var pre = cc.vv.mahjongmgr.getFoldPre(localIndex);
+
+ var gameChild = this.node.getChildByName("game");
+ var sideChild = gameChild.getChildByName(side);
+ var holds = sideChild.getChildByName("holds");
+ var spriteFrame = cc.vv.mahjongmgr.getEmptySpriteFrame(side);
+ for(var i = 0; i < holds.childrenCount; ++i){
+ var nc = holds.children[i];
+ nc.scaleX = 1.0;
+ nc.scaleY = 1.0;
+
+ var sprite = nc.getComponent(cc.Sprite);
+ sprite.spriteFrame = spriteFrame;
+ }
+ },
+
+ initOtherMahjongs:function(seatData){
+ //console.log("seat:" + seatData.seatindex);
+ var localIndex = this.getLocalIndex(seatData.seatindex);
+ if(localIndex == 0){
+ return;
+ }
+ var side = cc.vv.mahjongmgr.getSide(localIndex);
+ var game = this.node.getChildByName("game");
+ var sideRoot = game.getChildByName(side);
+ var sideHolds = sideRoot.getChildByName("holds");
+ var num = seatData.pengs.length + seatData.angangs.length + seatData.diangangs.length + seatData.wangangs.length;
+ num *= 3;
+ for(var i = 0; i < num; ++i){
+ var idx = this.getMJIndex(side,i);
+ sideHolds.children[idx].active = false;
+ }
+
+ var pre = cc.vv.mahjongmgr.getFoldPre(localIndex);
+ var holds = this.sortHolds(seatData);
+ if(holds != null && holds.length > 0){
+ for(var i = 0; i < holds.length; ++i){
+ var idx = this.getMJIndex(side,i + num);
+ var sprite = sideHolds.children[idx].getComponent(cc.Sprite);
+ if(side == "up"){
+ sprite.node.scaleX = 0.73;
+ sprite.node.scaleY = 0.73;
+ }
+ sprite.node.active = true;
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID(pre,holds[i]);
+ }
+
+ if(holds.length + num == 13){
+ var lasetIdx = this.getMJIndex(side,13);
+ sideHolds.children[lasetIdx].active = false;
+ }
+ }
+ },
+
+ sortHolds:function(seatData){
+ var holds = seatData.holds;
+ if(holds == null){
+ return null;
+ }
+ //如果手上的牌的数目是2,5,8,11,14,表示最后一张牌是刚摸到的牌
+ var mopai = null;
+ var l = holds.length
+ if( l == 2 || l == 5 || l == 8 || l == 11 || l == 14){
+ mopai = holds.pop();
+ }
+
+ var dingque = seatData.dingque;
+ cc.vv.mahjongmgr.sortMJ(holds,dingque);
+
+ //将摸牌添加到最后
+ if(mopai != null){
+ holds.push(mopai);
+ }
+ return holds;
+ },
+
+ initMahjongs:function(){
+ var seats = cc.vv.gameNetMgr.seats;
+ var seatData = seats[cc.vv.gameNetMgr.seatIndex];
+ var holds = this.sortHolds(seatData);
+ if(holds == null){
+ return;
+ }
+
+ //初始化手牌
+ var lackingNum = (seatData.pengs.length + seatData.angangs.length + seatData.diangangs.length + seatData.wangangs.length)*3;
+ for(var i = 0; i < holds.length; ++i){
+ var mjid = holds[i];
+ var sprite = this._myMJArr[i + lackingNum];
+ sprite.node.mjId = mjid;
+ sprite.node.y = 0;
+ this.setSpriteFrameByMJID("M_",sprite,mjid);
+ }
+ for(var i = 0; i < lackingNum; ++i){
+ var sprite = this._myMJArr[i];
+ sprite.node.mjId = null;
+ sprite.spriteFrame = null;
+ sprite.node.active = false;
+ }
+ for(var i = lackingNum + holds.length; i < this._myMJArr.length; ++i){
+ var sprite = this._myMJArr[i];
+ sprite.node.mjId = null;
+ sprite.spriteFrame = null;
+ sprite.node.active = false;
+ }
+ },
+
+ setSpriteFrameByMJID:function(pre,sprite,mjid){
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID(pre,mjid);
+ sprite.node.active = true;
+ },
+
+ //如果玩家手上还有缺的牌没有打,则只能打缺牌
+ checkQueYiMen:function(){
+ if(cc.vv.gameNetMgr.conf==null || cc.vv.gameNetMgr.conf.type != "xlch" || !cc.vv.gameNetMgr.getSelfData().hued){
+ //遍历检查看是否有未打缺的牌 如果有,则需要将不是定缺的牌设置为不可用
+ var dingque = cc.vv.gameNetMgr.dingque;
+ // console.log(dingque)
+ var hasQue = false;
+ if(cc.vv.gameNetMgr.seatIndex == cc.vv.gameNetMgr.turn){
+ for(var i = 0; i < this._myMJArr.length; ++i){
+ var sprite = this._myMJArr[i];
+ // console.log("sprite.node.mjId:" + sprite.node.mjId);
+ if(sprite.node.mjId != null){
+ var type = cc.vv.mahjongmgr.getMahjongType(sprite.node.mjId);
+ if(type == dingque){
+ hasQue = true;
+ break;
+ }
+ }
+ }
+ }
+
+ // console.log("hasQue:" + hasQue);
+ for(var i = 0; i < this._myMJArr.length; ++i){
+ var sprite = this._myMJArr[i];
+ if(sprite.node.mjId != null){
+ var type = cc.vv.mahjongmgr.getMahjongType(sprite.node.mjId);
+ if(hasQue && type != dingque){
+ sprite.node.getComponent(cc.Button).interactable = false;
+ }
+ else{
+ sprite.node.getComponent(cc.Button).interactable = true;
+ }
+ }
+ }
+ }
+ else{
+ if(cc.vv.gameNetMgr.seatIndex == cc.vv.gameNetMgr.turn){
+ for(var i = 0; i < 14; ++i){
+ var sprite = this._myMJArr[i];
+ if(sprite.node.active == true){
+ sprite.node.getComponent(cc.Button).interactable = i == 13;
+ }
+ }
+ }
+ else{
+ for(var i = 0; i < 14; ++i){
+ var sprite = this._myMJArr[i];
+ if(sprite.node.active == true){
+ sprite.node.getComponent(cc.Button).interactable = true;
+ }
+ }
+ }
+ }
+ },
+
+ getLocalIndex:function(index){
+ var ret = (index - cc.vv.gameNetMgr.seatIndex + 4) % 4;
+ //console.log("old:" + index + ",base:" + cc.vv.gameNetMgr.seatIndex + ",new:" + ret);
+ return ret;
+ },
+
+ onOptionClicked:function(event){
+ console.log(event.target.pai);
+ if(event.target.name == "btnPeng"){
+ cc.vv.net.send("peng");
+ }
+ else if(event.target.name == "btnGang"){
+ cc.vv.net.send("gang",event.target.pai);
+ }
+ else if(event.target.name == "btnHu"){
+ cc.vv.net.send("hu");
+ }
+ else if(event.target.name == "btnGuo"){
+ cc.vv.net.send("guo");
+ }
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ },
+
+ onDestroy:function(){
+ console.log("onDestroy");
+ if(cc.vv){
+ cc.vv.gameNetMgr.clear();
+ }
+ }
+});
diff --git a/client/assets/scripts/components/MJGame.js.meta b/client/assets/scripts/components/MJGame.js.meta
new file mode 100755
index 0000000..82edb8c
--- /dev/null
+++ b/client/assets/scripts/components/MJGame.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "7fa8f72f-aea1-4e8f-a961-87ac47cddddc",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/MJRoom.js b/client/assets/scripts/components/MJRoom.js
new file mode 100755
index 0000000..b7892cc
--- /dev/null
+++ b/client/assets/scripts/components/MJRoom.js
@@ -0,0 +1,289 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ lblRoomNo:{
+ default:null,
+ type:cc.Label
+ },
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _seats:[],
+ _seats2:[],
+ _timeLabel:null,
+ _voiceMsgQueue:[],
+ _lastPlayingSeat:null,
+ _playingSeat:null,
+ _lastPlayTime:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ this.initView();
+ this.initSeats();
+ this.initEventHandlers();
+ },
+
+ initView:function(){
+ var prepare = this.node.getChildByName("prepare");
+ var seats = prepare.getChildByName("seats");
+ for(var i = 0; i < seats.children.length; ++i){
+ this._seats.push(seats.children[i].getComponent("Seat"));
+ }
+
+ this.refreshBtns();
+
+ this.lblRoomNo = cc.find("Canvas/infobar/Z_room_txt/New Label").getComponent(cc.Label);
+ this._timeLabel = cc.find("Canvas/infobar/time").getComponent(cc.Label);
+ this.lblRoomNo.string = cc.vv.gameNetMgr.roomId;
+ var gameChild = this.node.getChildByName("game");
+ var sides = ["myself","right","up","left"];
+ for(var i = 0; i < sides.length; ++i){
+ var sideNode = gameChild.getChildByName(sides[i]);
+ var seat = sideNode.getChildByName("seat");
+ this._seats2.push(seat.getComponent("Seat"));
+ }
+
+ var btnWechat = cc.find("Canvas/prepare/btnWeichat");
+ if(btnWechat){
+ cc.vv.utils.addClickEvent(btnWechat,this.node,"MJRoom","onBtnWeichatClicked");
+ }
+
+
+ var titles = cc.find("Canvas/typeTitle");
+ for(var i = 0; i < titles.children.length; ++i){
+ titles.children[i].active = false;
+ }
+
+ if(cc.vv.gameNetMgr.conf){
+ var type = cc.vv.gameNetMgr.conf.type;
+ if(type == null || type == ""){
+ type = "xzdd";
+ }
+
+ titles.getChildByName(type).active = true;
+ }
+ },
+
+ refreshBtns:function(){
+ var prepare = this.node.getChildByName("prepare");
+ var btnExit = prepare.getChildByName("btnExit");
+ var btnDispress = prepare.getChildByName("btnDissolve");
+ var btnWeichat = prepare.getChildByName("btnWeichat");
+ var btnBack = prepare.getChildByName("btnBack");
+ var isIdle = cc.vv.gameNetMgr.numOfGames == 0;
+
+ btnExit.active = !cc.vv.gameNetMgr.isOwner() && isIdle;
+ btnDispress.active = cc.vv.gameNetMgr.isOwner() && isIdle;
+
+ btnWeichat.active = isIdle;
+ btnBack.active = isIdle;
+ },
+
+ initEventHandlers:function(){
+ var self = this;
+ this.node.on('new_user',function(data){
+ self.initSingleSeat(data.detail);
+ });
+
+ this.node.on('user_state_changed',function(data){
+ self.initSingleSeat(data.detail);
+ });
+
+ this.node.on('game_begin',function(data){
+ self.refreshBtns();
+ self.initSeats();
+ });
+
+ this.node.on('game_num',function(data){
+ self.refreshBtns();
+ });
+
+ this.node.on('game_huanpai',function(data){
+ for(var i in self._seats2){
+ self._seats2[i].refreshXuanPaiState();
+ }
+ });
+
+ this.node.on('huanpai_notify',function(data){
+ var idx = data.detail.seatindex;
+ var localIdx = cc.vv.gameNetMgr.getLocalIndex(idx);
+ self._seats2[localIdx].refreshXuanPaiState();
+ });
+
+ this.node.on('game_huanpai_over',function(data){
+ for(var i in self._seats2){
+ self._seats2[i].refreshXuanPaiState();
+ }
+ });
+
+ this.node.on('voice_msg',function(data){
+ var data = data.detail;
+ self._voiceMsgQueue.push(data);
+ self.playVoice();
+ });
+
+ this.node.on('chat_push',function(data){
+ var data = data.detail;
+ var idx = cc.vv.gameNetMgr.getSeatIndexByID(data.sender);
+ var localIdx = cc.vv.gameNetMgr.getLocalIndex(idx);
+ self._seats[localIdx].chat(data.content);
+ self._seats2[localIdx].chat(data.content);
+ });
+
+ this.node.on('quick_chat_push',function(data){
+ var data = data.detail;
+ var idx = cc.vv.gameNetMgr.getSeatIndexByID(data.sender);
+ var localIdx = cc.vv.gameNetMgr.getLocalIndex(idx);
+
+ var index = data.content;
+ var info = cc.vv.chat.getQuickChatInfo(index);
+ self._seats[localIdx].chat(info.content);
+ self._seats2[localIdx].chat(info.content);
+
+ cc.vv.audioMgr.playSFX(info.sound);
+ });
+
+ this.node.on('emoji_push',function(data){
+ var data = data.detail;
+ var idx = cc.vv.gameNetMgr.getSeatIndexByID(data.sender);
+ var localIdx = cc.vv.gameNetMgr.getLocalIndex(idx);
+ console.log(data);
+ self._seats[localIdx].emoji(data.content);
+ self._seats2[localIdx].emoji(data.content);
+ });
+ },
+
+ initSeats:function(){
+ var seats = cc.vv.gameNetMgr.seats;
+ for(var i = 0; i < seats.length; ++i){
+ this.initSingleSeat(seats[i]);
+ }
+ },
+
+ initSingleSeat:function(seat){
+ var index = cc.vv.gameNetMgr.getLocalIndex(seat.seatindex);
+ var isOffline = !seat.online;
+ var isZhuang = seat.seatindex == cc.vv.gameNetMgr.button;
+
+ console.log("isOffline:" + isOffline);
+
+ this._seats[index].setInfo(seat.name,seat.score);
+ this._seats[index].setReady(seat.ready);
+ this._seats[index].setOffline(isOffline);
+ this._seats[index].setID(seat.userid);
+ this._seats[index].voiceMsg(false);
+
+ this._seats2[index].setInfo(seat.name,seat.score);
+ this._seats2[index].setZhuang(isZhuang);
+ this._seats2[index].setOffline(isOffline);
+ this._seats2[index].setID(seat.userid);
+ this._seats2[index].voiceMsg(false);
+ this._seats2[index].refreshXuanPaiState();
+ },
+
+ onBtnSettingsClicked:function(){
+ cc.vv.popupMgr.showSettings();
+ },
+
+ onBtnBackClicked:function(){
+ cc.vv.alert.show("返回大厅","返回大厅房间仍会保留,快去邀请大伙来玩吧!",function(){
+ cc.vv.wc.show('正在返回游戏大厅');
+ cc.director.loadScene("hall");
+ },true);
+ },
+
+ onBtnChatClicked:function(){
+
+ },
+
+ onBtnWeichatClicked:function(){
+ var title = "<血战到底>";
+ if(cc.vv.gameNetMgr.conf.type == "xlch"){
+ var title = "<血流成河>";
+ }
+ cc.vv.anysdkMgr.share("天天麻将" + title,"房号:" + cc.vv.gameNetMgr.roomId + " 玩法:" + cc.vv.gameNetMgr.getWanfa());
+ },
+
+ onBtnDissolveClicked:function(){
+ cc.vv.alert.show("解散房间","解散房间不扣房卡,是否确定解散?",function(){
+ cc.vv.net.send("dispress");
+ },true);
+ },
+
+ onBtnExit:function(){
+ cc.vv.net.send("exit");
+ },
+
+ playVoice:function(){
+ if(this._playingSeat == null && this._voiceMsgQueue.length){
+ console.log("playVoice2");
+ var data = this._voiceMsgQueue.shift();
+ var idx = cc.vv.gameNetMgr.getSeatIndexByID(data.sender);
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(idx);
+ this._playingSeat = localIndex;
+ this._seats[localIndex].voiceMsg(true);
+ this._seats2[localIndex].voiceMsg(true);
+
+ var msgInfo = JSON.parse(data.content);
+
+ var msgfile = "voicemsg.amr";
+ console.log(msgInfo.msg.length);
+ cc.vv.voiceMgr.writeVoice(msgfile,msgInfo.msg);
+ cc.vv.voiceMgr.play(msgfile);
+ this._lastPlayTime = Date.now() + msgInfo.time;
+ }
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ var minutes = Math.floor(Date.now()/1000/60);
+ if(this._lastMinute != minutes){
+ this._lastMinute = minutes;
+ var date = new Date();
+ var h = date.getHours();
+ h = h < 10? "0"+h:h;
+
+ var m = date.getMinutes();
+ m = m < 10? "0"+m:m;
+ this._timeLabel.string = "" + h + ":" + m;
+ }
+
+
+ if(this._lastPlayTime != null){
+ if(Date.now() > this._lastPlayTime + 200){
+ this.onPlayerOver();
+ this._lastPlayTime = null;
+ }
+ }
+ else{
+ this.playVoice();
+ }
+ },
+
+
+ onPlayerOver:function(){
+ cc.vv.audioMgr.resumeAll();
+ console.log("onPlayCallback:" + this._playingSeat);
+ var localIndex = this._playingSeat;
+ this._playingSeat = null;
+ this._seats[localIndex].voiceMsg(false);
+ this._seats2[localIndex].voiceMsg(false);
+ },
+
+ onDestroy:function(){
+ cc.vv.voiceMgr.stop();
+// cc.vv.voiceMgr.onPlayCallback = null;
+ }
+});
diff --git a/client/assets/scripts/components/MJRoom.js.meta b/client/assets/scripts/components/MJRoom.js.meta
new file mode 100755
index 0000000..3e12afe
--- /dev/null
+++ b/client/assets/scripts/components/MJRoom.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "921df409-65d7-49fb-9185-517ab198c993",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/NoticeTip.js b/client/assets/scripts/components/NoticeTip.js
new file mode 100755
index 0000000..19a8c58
--- /dev/null
+++ b/client/assets/scripts/components/NoticeTip.js
@@ -0,0 +1,45 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _guohu:null,
+ _info:null,
+ _guohuTime:-1,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ this._guohu = cc.find("Canvas/tip_notice");
+ this._guohu.active = false;
+
+ this._info = cc.find("Canvas/tip_notice/info").getComponent(cc.Label);
+
+ var self = this;
+ this.node.on('push_notice',function(data){
+ var data = data.detail;
+ self._guohu.active = true;
+ self._guohuTime = data.time;
+ self._info.string = data.info;
+ });
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ if(this._guohuTime > 0){
+ this._guohuTime -= dt;
+ if(this._guohuTime < 0){
+ this._guohu.active = false;
+ }
+ }
+ },
+});
diff --git a/client/assets/scripts/components/NoticeTip.js.meta b/client/assets/scripts/components/NoticeTip.js.meta
new file mode 100755
index 0000000..9d684cf
--- /dev/null
+++ b/client/assets/scripts/components/NoticeTip.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "df61be3e-1731-43bd-ba4e-e60f1435520c",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/OnBack.js b/client/assets/scripts/components/OnBack.js
new file mode 100755
index 0000000..128f618
--- /dev/null
+++ b/client/assets/scripts/components/OnBack.js
@@ -0,0 +1,33 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ var btn = this.node.getChildByName("btn_back");
+ cc.vv.utils.addClickEvent(btn,this.node,"OnBack","onBtnClicked");
+ },
+
+ onBtnClicked:function(event){
+ if(event.target.name == "btn_back"){
+ this.node.active = false;
+ }
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/OnBack.js.meta b/client/assets/scripts/components/OnBack.js.meta
new file mode 100755
index 0000000..34166b1
--- /dev/null
+++ b/client/assets/scripts/components/OnBack.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "6fd98d93-ca2e-4d39-8256-b7f7c663c2e3",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/PengGangs.js b/client/assets/scripts/components/PengGangs.js
new file mode 100755
index 0000000..72144a0
--- /dev/null
+++ b/client/assets/scripts/components/PengGangs.js
@@ -0,0 +1,185 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(!cc.vv){
+ return;
+ }
+
+ var gameChild = this.node.getChildByName("game");
+ var myself = gameChild.getChildByName("myself");
+ var pengangroot = myself.getChildByName("penggangs");
+ var realwidth = cc.director.getVisibleSize().width;
+ var scale = realwidth / 1280;
+ pengangroot.scaleX *= scale;
+ pengangroot.scaleY *= scale;
+
+ var self = this;
+ this.node.on('peng_notify',function(data){
+ //刷新所有的牌
+ //console.log(data.detail);
+ var data = data.detail;
+ self.onPengGangChanged(data);
+ });
+
+ this.node.on('gang_notify',function(data){
+ //刷新所有的牌
+ //console.log(data.detail);
+ var data = data.detail;
+ self.onPengGangChanged(data.seatData);
+ });
+
+ this.node.on('game_begin',function(data){
+ self.onGameBein();
+ });
+
+ var seats = cc.vv.gameNetMgr.seats;
+ for(var i in seats){
+ this.onPengGangChanged(seats[i]);
+ }
+ },
+
+ onGameBein:function(){
+ this.hideSide("myself");
+ this.hideSide("right");
+ this.hideSide("up");
+ this.hideSide("left");
+ },
+
+ hideSide:function(side){
+ var gameChild = this.node.getChildByName("game");
+ var myself = gameChild.getChildByName(side);
+ var pengangroot = myself.getChildByName("penggangs");
+ if(pengangroot){
+ for(var i = 0; i < pengangroot.childrenCount; ++i){
+ pengangroot.children[i].active = false;
+ }
+ }
+ },
+
+ onPengGangChanged:function(seatData){
+
+ if(seatData.angangs == null && seatData.diangangs == null && seatData.wangangs == null && seatData.pengs == null){
+ return;
+ }
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(seatData.seatindex);
+ var side = cc.vv.mahjongmgr.getSide(localIndex);
+ var pre = cc.vv.mahjongmgr.getFoldPre(localIndex);
+
+ console.log("onPengGangChanged" + localIndex);
+
+ var gameChild = this.node.getChildByName("game");
+ var myself = gameChild.getChildByName(side);
+ var pengangroot = myself.getChildByName("penggangs");
+
+ for(var i = 0; i < pengangroot.childrenCount; ++i){
+ pengangroot.children[i].active = false;
+ }
+ //初始化杠牌
+ var index = 0;
+
+ var gangs = seatData.angangs
+ for(var i = 0; i < gangs.length; ++i){
+ var mjid = gangs[i];
+ this.initPengAndGangs(pengangroot,side,pre,index,mjid,"angang");
+ index++;
+ }
+ var gangs = seatData.diangangs
+ for(var i = 0; i < gangs.length; ++i){
+ var mjid = gangs[i];
+ this.initPengAndGangs(pengangroot,side,pre,index,mjid,"diangang");
+ index++;
+ }
+
+ var gangs = seatData.wangangs
+ for(var i = 0; i < gangs.length; ++i){
+ var mjid = gangs[i];
+ this.initPengAndGangs(pengangroot,side,pre,index,mjid,"wangang");
+ index++;
+ }
+
+ //初始化碰牌
+ var pengs = seatData.pengs
+ if(pengs){
+ for(var i = 0; i < pengs.length; ++i){
+ var mjid = pengs[i];
+ this.initPengAndGangs(pengangroot,side,pre,index,mjid,"peng");
+ index++;
+ }
+ }
+ },
+
+ initPengAndGangs:function(pengangroot,side,pre,index,mjid,flag){
+ var pgroot = null;
+ if(pengangroot.childrenCount <= index){
+ if(side == "left" || side == "right"){
+ pgroot = cc.instantiate(cc.vv.mahjongmgr.pengPrefabLeft);
+ }
+ else{
+ pgroot = cc.instantiate(cc.vv.mahjongmgr.pengPrefabSelf);
+ }
+
+ pengangroot.addChild(pgroot);
+ }
+ else{
+ pgroot = pengangroot.children[index];
+ pgroot.active = true;
+ }
+
+ if(side == "left"){
+ pgroot.y = -(index * 25 * 3);
+ }
+ else if(side == "right"){
+ pgroot.y = (index * 25 * 3);
+ pgroot.setLocalZOrder(-index);
+ }
+ else if(side == "myself"){
+ pgroot.x = index * 55 * 3 + index * 10;
+ }
+ else{
+ pgroot.x = -(index * 55*3);
+ }
+
+ var sprites = pgroot.getComponentsInChildren(cc.Sprite);
+ for(var s = 0; s < sprites.length; ++s){
+ var sprite = sprites[s];
+ if(sprite.node.name == "gang"){
+ var isGang = flag != "peng";
+ sprite.node.active = isGang;
+ sprite.node.scaleX = 1.0;
+ sprite.node.scaleY = 1.0;
+ if(flag == "angang"){
+ sprite.spriteFrame = cc.vv.mahjongmgr.getEmptySpriteFrame(side);
+ if(side == "myself" || side == "up"){
+ sprite.node.scaleX = 1.4;
+ sprite.node.scaleY = 1.4;
+ }
+ }
+ else{
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID(pre,mjid);
+ }
+ }
+ else{
+ sprite.spriteFrame = cc.vv.mahjongmgr.getSpriteFrameByMJID(pre,mjid);
+ }
+ }
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/PengGangs.js.meta b/client/assets/scripts/components/PengGangs.js.meta
new file mode 100755
index 0000000..931379e
--- /dev/null
+++ b/client/assets/scripts/components/PengGangs.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "279d9a4d-1464-41de-b0ff-9e0af52c85d0",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/PopupMgr.js b/client/assets/scripts/components/PopupMgr.js
new file mode 100755
index 0000000..e7f8b3f
--- /dev/null
+++ b/client/assets/scripts/components/PopupMgr.js
@@ -0,0 +1,144 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _popuproot:null,
+ _settings:null,
+ _dissolveNotice:null,
+
+ _endTime:-1,
+ _extraInfo:null,
+ _noticeLabel:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ cc.vv.popupMgr = this;
+
+ this._popuproot = cc.find("Canvas/popups");
+ this._settings = cc.find("Canvas/popups/settings");
+ this._dissolveNotice = cc.find("Canvas/popups/dissolve_notice");
+ this._noticeLabel = this._dissolveNotice.getChildByName("info").getComponent(cc.Label);
+
+ this.closeAll();
+
+ this.addBtnHandler("settings/btn_close");
+ this.addBtnHandler("settings/btn_sqjsfj");
+ this.addBtnHandler("dissolve_notice/btn_agree");
+ this.addBtnHandler("dissolve_notice/btn_reject");
+ this.addBtnHandler("dissolve_notice/btn_ok");
+
+ var self = this;
+ this.node.on("dissolve_notice",function(event){
+ var data = event.detail;
+ self.showDissolveNotice(data);
+ });
+
+ this.node.on("dissolve_cancel",function(event){
+ self.closeAll();
+ });
+ },
+
+ start:function(){
+ if(cc.vv.gameNetMgr.dissoveData){
+ this.showDissolveNotice(cc.vv.gameNetMgr.dissoveData);
+ }
+ },
+
+ addBtnHandler:function(btnName){
+ var btn = cc.find("Canvas/popups/" + btnName);
+ this.addClickEvent(btn,this.node,"PopupMgr","onBtnClicked");
+ },
+
+ addClickEvent:function(node,target,component,handler){
+ var eventHandler = new cc.Component.EventHandler();
+ eventHandler.target = target;
+ eventHandler.component = component;
+ eventHandler.handler = handler;
+
+ var clickEvents = node.getComponent(cc.Button).clickEvents;
+ clickEvents.push(eventHandler);
+ },
+
+ onBtnClicked:function(event){
+ this.closeAll();
+ var btnName = event.target.name;
+ if(btnName == "btn_agree"){
+ cc.vv.net.send("dissolve_agree");
+ }
+ else if(btnName == "btn_reject"){
+ cc.vv.net.send("dissolve_reject");
+ }
+ else if(btnName == "btn_sqjsfj"){
+ cc.vv.net.send("dissolve_request");
+ }
+ },
+
+ closeAll:function(){
+ this._popuproot.active = false;
+ this._settings.active = false;
+ this._dissolveNotice.active = false;
+ },
+
+ showSettings:function(){
+ this.closeAll();
+ this._popuproot.active = true;
+ this._settings.active = true;
+ },
+
+ showDissolveRequest:function(){
+ this.closeAll();
+ this._popuproot.active = true;
+ },
+
+ showDissolveNotice:function(data){
+ this._endTime = Date.now()/1000 + data.time;
+ this._extraInfo = "";
+ for(var i = 0; i < data.states.length; ++i){
+ var b = data.states[i];
+ var name = cc.vv.gameNetMgr.seats[i].name;
+ if(b){
+ this._extraInfo += "\n[已同意] "+ name;
+ }
+ else{
+ this._extraInfo += "\n[待确认] "+ name;
+ }
+ }
+ this.closeAll();
+ this._popuproot.active = true;
+ this._dissolveNotice.active = true;;
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ if(this._endTime > 0){
+ var lastTime = this._endTime - Date.now() / 1000;
+ if(lastTime < 0){
+ this._endTime = -1;
+ }
+
+ var m = Math.floor(lastTime / 60);
+ var s = Math.ceil(lastTime - m*60);
+
+ var str = "";
+ if(m > 0){
+ str += m + "分";
+ }
+
+ this._noticeLabel.string = str + s + "秒后房间将自动解散" + this._extraInfo;
+ }
+ },
+});
diff --git a/client/assets/scripts/components/PopupMgr.js.meta b/client/assets/scripts/components/PopupMgr.js.meta
new file mode 100755
index 0000000..f79e0b9
--- /dev/null
+++ b/client/assets/scripts/components/PopupMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "bc0d254b-80bd-40be-8d7a-ead1cbb23089",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/RadioButton.js b/client/assets/scripts/components/RadioButton.js
new file mode 100755
index 0000000..2c23dab
--- /dev/null
+++ b/client/assets/scripts/components/RadioButton.js
@@ -0,0 +1,66 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ target:cc.Node,
+ sprite:cc.SpriteFrame,
+ checkedSprite:cc.SpriteFrame,
+ checked:false,
+ groupId:-1,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+ if(cc.vv.radiogroupmgr == null){
+ var RadioGroupMgr = require("RadioGroupMgr");
+ cc.vv.radiogroupmgr = new RadioGroupMgr();
+ cc.vv.radiogroupmgr.init();
+ }
+ console.log(typeof(cc.vv.radiogroupmgr.add));
+ cc.vv.radiogroupmgr.add(this);
+
+ this.refresh();
+ },
+
+ refresh:function(){
+ var targetSprite = this.target.getComponent(cc.Sprite);
+ if(this.checked){
+ targetSprite.spriteFrame = this.checkedSprite;
+ }
+ else{
+ targetSprite.spriteFrame = this.sprite;
+ }
+ },
+
+ check:function(value){
+ this.checked = value;
+ this.refresh();
+ },
+
+ onClicked:function(){
+ cc.vv.radiogroupmgr.check(this);
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+
+ onDestroy:function(){
+ if(cc.vv && cc.vv.radiogroupmgr){
+ cc.vv.radiogroupmgr.del(this);
+ }
+ }
+});
diff --git a/client/assets/scripts/components/RadioButton.js.meta b/client/assets/scripts/components/RadioButton.js.meta
new file mode 100755
index 0000000..9a83561
--- /dev/null
+++ b/client/assets/scripts/components/RadioButton.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "8d571cb6-53ef-4088-a9ed-3be4d27f415b",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/RadioGroupMgr.js b/client/assets/scripts/components/RadioGroupMgr.js
new file mode 100755
index 0000000..2ce370a
--- /dev/null
+++ b/client/assets/scripts/components/RadioGroupMgr.js
@@ -0,0 +1,67 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _groups:null
+ },
+
+ // use this for initialization
+ init: function () {
+ this._groups = {};
+ },
+
+ add:function(radioButton){
+ var groupId = radioButton.groupId;
+ var buttons = this._groups[groupId];
+ if(buttons == null){
+ buttons = [];
+ this._groups[groupId] = buttons;
+ }
+ buttons.push(radioButton);
+ },
+
+ del:function(radioButton){
+ var groupId = radioButton.groupId;
+ var buttons = this._groups[groupId];
+ if(buttons == null){
+ return;
+ }
+ var idx = buttons.indexOf(radioButton);
+ if(idx != -1){
+ buttons.splice(idx,1);
+ }
+ if(buttons.length == 0){
+ delete this._groups[groupId]
+ }
+ },
+
+ check:function(radioButton){
+ var groupId = radioButton.groupId;
+ var buttons = this._groups[groupId];
+ if(buttons == null){
+ return;
+ }
+ for(var i = 0; i < buttons.length; ++i){
+ var btn = buttons[i];
+ if(btn == radioButton){
+ btn.check(true);
+ }else{
+ btn.check(false);
+ }
+ }
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/RadioGroupMgr.js.meta b/client/assets/scripts/components/RadioGroupMgr.js.meta
new file mode 100755
index 0000000..efd1bbf
--- /dev/null
+++ b/client/assets/scripts/components/RadioGroupMgr.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "824eaa5e-4583-4a63-8449-ce0d99e18036",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/ReConnect.js b/client/assets/scripts/components/ReConnect.js
new file mode 100755
index 0000000..10e8f9c
--- /dev/null
+++ b/client/assets/scripts/components/ReConnect.js
@@ -0,0 +1,68 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _reconnect: null,
+ _lblTip: null,
+ _loading_image: null,
+ _lastPing: 0,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ this._reconnect = cc.find("Canvas/reconnect");
+ this._loading_image = this._reconnect.getChildByName("loading_image");
+ var self = this;
+
+ var fnTestServerOn = function () {
+ cc.vv.net.test(function (ret) {
+ if (ret) {
+ cc.vv.gameNetMgr.reset();
+ //cc.director.loadScene('hall');
+ var roomId = cc.vv.userMgr.oldRoomId;
+ if (roomId != null) {
+ cc.vv.userMgr.oldRoomId = null;
+ cc.vv.userMgr.enterRoom(roomId, function (ret) {
+ if (ret.errcode != 0) {
+ cc.vv.gameNetMgr.roomId = null;
+ cc.director.loadScene('hall');
+ }
+ });
+ }
+ }
+ else {
+ setTimeout(fnTestServerOn, 3000);
+ }
+ });
+ }
+
+ var fn = function (data) {
+ self.node.off('disconnect', fn);
+ self._reconnect.active = true;
+ fnTestServerOn();
+ };
+ console.log("adasfdasdfsdf");
+
+ this.node.on('login_finished', function () {
+ self._reconnect.active = false;
+ self.node.on('disconnect', fn);
+ });
+ this.node.on('disconnect', fn);
+ },
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ if (this._reconnect.active) {
+ this._loading_image.rotation = this._loading_image.rotation - dt * 45;
+ }
+ },
+});
diff --git a/client/assets/scripts/components/ReConnect.js.meta b/client/assets/scripts/components/ReConnect.js.meta
new file mode 100755
index 0000000..d6118a4
--- /dev/null
+++ b/client/assets/scripts/components/ReConnect.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "7f5531b4-6e84-47e8-aad3-13bc0009a5f1",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/ReplayCtrl.js b/client/assets/scripts/components/ReplayCtrl.js
new file mode 100755
index 0000000..107cff9
--- /dev/null
+++ b/client/assets/scripts/components/ReplayCtrl.js
@@ -0,0 +1,56 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _nextPlayTime:1,
+ _replay:null,
+ _isPlaying:true,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ this._replay = cc.find("Canvas/replay");
+ this._replay.active = cc.vv.replayMgr.isReplay();
+ },
+
+ onBtnPauseClicked:function(){
+ this._isPlaying = false;
+ },
+
+ onBtnPlayClicked:function(){
+ this._isPlaying = true;
+ },
+
+ onBtnBackClicked:function(){
+ cc.vv.replayMgr.clear();
+ cc.vv.gameNetMgr.reset();
+ cc.vv.gameNetMgr.roomId = null;
+ cc.vv.wc.show('正在返回游戏大厅');
+ cc.director.loadScene("hall");
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ if(cc.vv){
+ if(this._isPlaying && cc.vv.replayMgr.isReplay() == true && this._nextPlayTime > 0){
+ this._nextPlayTime -= dt;
+ if(this._nextPlayTime < 0){
+ this._nextPlayTime = cc.vv.replayMgr.takeAction();
+ }
+ }
+ }
+ },
+});
diff --git a/client/assets/scripts/components/ReplayCtrl.js.meta b/client/assets/scripts/components/ReplayCtrl.js.meta
new file mode 100755
index 0000000..0ab7ece
--- /dev/null
+++ b/client/assets/scripts/components/ReplayCtrl.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "21e6af9a-8c63-434c-9c03-1db57703bda6",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Seat.js b/client/assets/scripts/components/Seat.js
new file mode 100755
index 0000000..78bcb54
--- /dev/null
+++ b/client/assets/scripts/components/Seat.js
@@ -0,0 +1,236 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ _sprIcon:null,
+ _zhuang:null,
+ _ready:null,
+ _offline:null,
+ _lblName:null,
+ _lblScore:null,
+ _scoreBg:null,
+ _nddayingjia:null,
+ _voicemsg:null,
+
+ _chatBubble:null,
+ _emoji:null,
+ _lastChatTime:-1,
+
+ _userName:"",
+ _score:0,
+ _dayingjia:false,
+ _isOffline:false,
+ _isReady:false,
+ _isZhuang:false,
+ _userId:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ this._sprIcon = this.node.getChildByName("icon").getComponent("ImageLoader");
+ this._lblName = this.node.getChildByName("name").getComponent(cc.Label);
+ this._lblScore = this.node.getChildByName("score").getComponent(cc.Label);
+ this._voicemsg = this.node.getChildByName("voicemsg");
+ this._xuanpai = this.node.getChildByName("xuanpai");
+ this.refreshXuanPaiState();
+
+ if(this._voicemsg){
+ this._voicemsg.active = false;
+ }
+
+ if(this._sprIcon && this._sprIcon.getComponent(cc.Button)){
+ cc.vv.utils.addClickEvent(this._sprIcon,this.node,"Seat","onIconClicked");
+ }
+
+
+ this._offline = this.node.getChildByName("offline");
+
+ this._ready = this.node.getChildByName("ready");
+
+ this._zhuang = this.node.getChildByName("zhuang");
+
+ this._scoreBg = this.node.getChildByName("Z_money_frame");
+ this._nddayingjia = this.node.getChildByName("dayingjia");
+
+ this._chatBubble = this.node.getChildByName("ChatBubble");
+ if(this._chatBubble != null){
+ this._chatBubble.active = false;
+ }
+
+ this._emoji = this.node.getChildByName("emoji");
+ if(this._emoji != null){
+ this._emoji.active = false;
+ }
+
+ this.refresh();
+
+ if(this._sprIcon && this._userId){
+ this._sprIcon.setUserID(this._userId);
+ }
+ },
+
+ onIconClicked:function(){
+ var iconSprite = this._sprIcon.node.getComponent(cc.Sprite);
+ if(this._userId != null && this._userId > 0){
+ var seat = cc.vv.gameNetMgr.getSeatByID(this._userId);
+ var sex = 0;
+ if(cc.vv.baseInfoMap){
+ var info = cc.vv.baseInfoMap[this._userId];
+ if(info){
+ sex = info.sex;
+ }
+ }
+ cc.vv.userinfoShow.show(seat.name,seat.userid,iconSprite,sex,seat.ip);
+ }
+ },
+
+ refresh:function(){
+ if(this._lblName != null){
+ this._lblName.string = this._userName;
+ }
+
+ if(this._lblScore != null){
+ this._lblScore.string = this._score;
+ }
+
+ if(this._nddayingjia != null){
+ this._nddayingjia.active = this._dayingjia == true;
+ }
+
+ if(this._offline){
+ this._offline.active = this._isOffline && this._userName != "";
+ }
+
+ if(this._ready){
+ this._ready.active = this._isReady && (cc.vv.gameNetMgr.numOfGames > 0);
+ }
+
+ if(this._zhuang){
+ this._zhuang.active = this._isZhuang;
+ }
+
+ this.node.active = this._userName != null && this._userName != "";
+ },
+
+ setInfo(name,score,dayingjia){
+ this._userName = name;
+ this._score = score;
+ if(this._score == null){
+ this._score = 0;
+ }
+ this._dayingjia = dayingjia;
+
+ if(this._scoreBg != null){
+ this._scoreBg.active = this._score != null;
+ }
+
+ if(this._lblScore != null){
+ this._lblScore.node.active = this._score != null;
+ }
+
+ this.refresh();
+ },
+
+ setZhuang:function(value){
+ this._isZhuang = value;
+ if(this._zhuang){
+ this._zhuang.active = value;
+ }
+ },
+
+ setReady:function(isReady){
+ this._isReady = isReady;
+ if(this._ready){
+ this._ready.active = this._isReady && (cc.vv.gameNetMgr.numOfGames > 0);
+ }
+ },
+
+ setID:function(id){
+ var idNode = this.node.getChildByName("id");
+ if(idNode){
+ var lbl = idNode.getComponent(cc.Label);
+ lbl.string = "ID:" + id;
+ }
+
+ this._userId = id;
+ if(this._sprIcon){
+ this._sprIcon.setUserID(id);
+ }
+ },
+
+ setOffline:function(isOffline){
+ this._isOffline = isOffline;
+ if(this._offline){
+ this._offline.active = this._isOffline && this._userName != "";
+ }
+ },
+
+ chat:function(content){
+ if(this._chatBubble == null || this._emoji == null){
+ return;
+ }
+ this._emoji.active = false;
+ this._chatBubble.active = true;
+ this._chatBubble.getComponent(cc.Label).string = content;
+ this._chatBubble.getChildByName("New Label").getComponent(cc.Label).string = content;
+ this._lastChatTime = 3;
+ },
+
+ emoji:function(emoji){
+ //emoji = JSON.parse(emoji);
+ if(this._emoji == null || this._emoji == null){
+ return;
+ }
+ console.log(emoji);
+ this._chatBubble.active = false;
+ this._emoji.active = true;
+ this._emoji.getComponent(cc.Animation).play(emoji);
+ this._lastChatTime = 3;
+ },
+
+ voiceMsg:function(show){
+ if(this._voicemsg){
+ this._voicemsg.active = show;
+ }
+ },
+
+ refreshXuanPaiState:function(){
+ if(this._xuanpai == null){
+ return;
+ }
+
+ this._xuanpai.active = cc.vv.gameNetMgr.isHuanSanZhang;
+ if(cc.vv.gameNetMgr.isHuanSanZhang == false){
+ return;
+ }
+
+ this._xuanpai.getChildByName("xz").active = false;
+ this._xuanpai.getChildByName("xd").active = false;
+
+ var seat = cc.vv.gameNetMgr.getSeatByID(this._userId);
+ if(seat){
+ if(seat.huanpais == null){
+ this._xuanpai.getChildByName("xz").active = true;
+ }
+ else{
+ this._xuanpai.getChildByName("xd").active = true;
+ }
+ }
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ if(this._lastChatTime > 0){
+ this._lastChatTime -= dt;
+ if(this._lastChatTime < 0){
+ this._chatBubble.active = false;
+ this._emoji.active = false;
+ this._emoji.getComponent(cc.Animation).stop();
+ }
+ }
+ },
+});
diff --git a/client/assets/scripts/components/Seat.js.meta b/client/assets/scripts/components/Seat.js.meta
new file mode 100755
index 0000000..6037377
--- /dev/null
+++ b/client/assets/scripts/components/Seat.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "82087d25-b4c6-4d0d-896f-cebfaa083109",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Settings.js b/client/assets/scripts/components/Settings.js
new file mode 100755
index 0000000..638fe24
--- /dev/null
+++ b/client/assets/scripts/components/Settings.js
@@ -0,0 +1,121 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _btnYXOpen:null,
+ _btnYXClose:null,
+ _btnYYOpen:null,
+ _btnYYClose:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ this._btnYXOpen = this.node.getChildByName("yinxiao").getChildByName("btn_yx_open");
+ this._btnYXClose = this.node.getChildByName("yinxiao").getChildByName("btn_yx_close");
+
+ this._btnYYOpen = this.node.getChildByName("yinyue").getChildByName("btn_yy_open");
+ this._btnYYClose = this.node.getChildByName("yinyue").getChildByName("btn_yy_close");
+
+ this.initButtonHandler(this.node.getChildByName("btn_close"));
+ this.initButtonHandler(this.node.getChildByName("btn_exit"));
+
+
+ this.initButtonHandler(this._btnYXOpen);
+ this.initButtonHandler(this._btnYXClose);
+ this.initButtonHandler(this._btnYYOpen);
+ this.initButtonHandler(this._btnYYClose);
+
+
+ var slider = this.node.getChildByName("yinxiao").getChildByName("progress");
+ cc.vv.utils.addSlideEvent(slider,this.node,"Settings","onSlided");
+
+ var slider = this.node.getChildByName("yinyue").getChildByName("progress");
+ cc.vv.utils.addSlideEvent(slider,this.node,"Settings","onSlided");
+
+ this.refreshVolume();
+ },
+
+ onSlided:function(slider){
+ if(slider.node.parent.name == "yinxiao"){
+ cc.vv.audioMgr.setSFXVolume(slider.progress);
+ }
+ else if(slider.node.parent.name == "yinyue"){
+ cc.vv.audioMgr.setBGMVolume(slider.progress);
+ }
+ this.refreshVolume();
+ },
+
+ initButtonHandler:function(btn){
+ cc.vv.utils.addClickEvent(btn,this.node,"Settings","onBtnClicked");
+ },
+
+ refreshVolume:function(){
+
+ this._btnYXClose.active = cc.vv.audioMgr.sfxVolume > 0;
+ this._btnYXOpen.active = !this._btnYXClose.active;
+
+ var yx = this.node.getChildByName("yinxiao");
+ var width = 430 * cc.vv.audioMgr.sfxVolume;
+ var progress = yx.getChildByName("progress")
+ progress.getComponent(cc.Slider).progress = cc.vv.audioMgr.sfxVolume;
+ progress.getChildByName("progress").width = width;
+ //yx.getChildByName("btn_progress").x = progress.x + width;
+
+
+ this._btnYYClose.active = cc.vv.audioMgr.bgmVolume > 0;
+ this._btnYYOpen.active = !this._btnYYClose.active;
+ var yy = this.node.getChildByName("yinyue");
+ var width = 430 * cc.vv.audioMgr.bgmVolume;
+ var progress = yy.getChildByName("progress");
+ progress.getComponent(cc.Slider).progress = cc.vv.audioMgr.bgmVolume;
+
+ progress.getChildByName("progress").width = width;
+ //yy.getChildByName("btn_progress").x = progress.x + width;
+ },
+
+ onBtnClicked:function(event){
+ if(event.target.name == "btn_close"){
+ this.node.active = false;
+ }
+ else if(event.target.name == "btn_exit"){
+ cc.sys.localStorage.removeItem("wx_account");
+ cc.sys.localStorage.removeItem("wx_sign");
+ cc.director.loadScene("login");
+ }
+ else if(event.target.name == "btn_yx_open"){
+ cc.vv.audioMgr.setSFXVolume(1.0);
+ this.refreshVolume();
+ }
+ else if(event.target.name == "btn_yx_close"){
+ cc.vv.audioMgr.setSFXVolume(0);
+ this.refreshVolume();
+ }
+ else if(event.target.name == "btn_yy_open"){
+ cc.vv.audioMgr.setBGMVolume(1);
+ this.refreshVolume();
+ }
+ else if(event.target.name == "btn_yy_close"){
+ cc.vv.audioMgr.setBGMVolume(0);
+ this.refreshVolume();
+ }
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/Settings.js.meta b/client/assets/scripts/components/Settings.js.meta
new file mode 100755
index 0000000..e81e206
--- /dev/null
+++ b/client/assets/scripts/components/Settings.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "4c04fc9d-f3d2-4065-8eea-1a3bee6e2f9f",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Status.js b/client/assets/scripts/components/Status.js
new file mode 100755
index 0000000..1bdd468
--- /dev/null
+++ b/client/assets/scripts/components/Status.js
@@ -0,0 +1,50 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _status:null,
+ },
+
+ // use this for initialization
+ start: function () {
+ this._status = cc.find('Canvas/status');
+
+ this.red = new cc.Color(205,0,0);
+ this.green = new cc.Color(0,205,0);
+ this.yellow = new cc.Color(255,200,0);
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ var delay = this._status.getChildByName('delay');
+ if(cc.vv.net.delayMS != null){
+ delay.getComponent(cc.Label).string = cc.vv.net.delayMS + 'ms';
+ if(cc.vv.net.delayMS > 800){
+ delay.color = this.red;
+ }
+ else if(cc.vv.net.delayMS > 300){
+ delay.color = this.yellow;
+ }
+ else{
+ delay.color = this.green;
+ }
+ }
+ else{
+ delay.getComponent(cc.Label).string = 'N/A';
+ delay.color = this.red;
+ }
+
+ var power = this._status.getChildByName('power');
+ power.scaleX = cc.vv.anysdkMgr.getBatteryPercent();
+ },
+});
diff --git a/client/assets/scripts/components/Status.js.meta b/client/assets/scripts/components/Status.js.meta
new file mode 100755
index 0000000..aa6671f
--- /dev/null
+++ b/client/assets/scripts/components/Status.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "fd3ed137-aac8-4687-ab06-c0e4528ab55f",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/TimePointer.js b/client/assets/scripts/components/TimePointer.js
new file mode 100755
index 0000000..515415d
--- /dev/null
+++ b/client/assets/scripts/components/TimePointer.js
@@ -0,0 +1,79 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ _arrow:null,
+ _pointer:null,
+ _timeLabel:null,
+ _time:-1,
+ _alertTime:-1,
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ var gameChild = this.node.getChildByName("game");
+ this._arrow = gameChild.getChildByName("arrow");
+ this._pointer = this._arrow.getChildByName("pointer");
+ this.initPointer();
+
+ this._timeLabel = this._arrow.getChildByName("lblTime").getComponent(cc.Label);
+ this._timeLabel.string = "00";
+
+ var self = this;
+
+ this.node.on('game_begin',function(data){
+ self.initPointer();
+ });
+
+ this.node.on('game_chupai',function(data){
+ self.initPointer();
+ self._time = 10;
+ self._alertTime = 3;
+ });
+ },
+
+ initPointer:function(){
+ if(cc.vv == null){
+ return;
+ }
+ this._arrow.active = cc.vv.gameNetMgr.gamestate == "playing";
+ if(!this._arrow.active){
+ return;
+ }
+ var turn = cc.vv.gameNetMgr.turn;
+ var localIndex = cc.vv.gameNetMgr.getLocalIndex(turn);
+ for(var i = 0; i < this._pointer.children.length; ++i){
+ this._pointer.children[i].active = i == localIndex;
+ }
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ if(this._time > 0){
+ this._time -= dt;
+ if(this._alertTime > 0 && this._time < this._alertTime){
+ cc.vv.audioMgr.playSFX("timeup_alarm.mp3");
+ this._alertTime = -1;
+ }
+ var pre = "";
+ if(this._time < 0){
+ this._time = 0;
+ }
+
+ var t = Math.ceil(this._time);
+ if(t < 10){
+ pre = "0";
+ }
+ this._timeLabel.string = pre + t;
+ }
+ },
+});
diff --git a/client/assets/scripts/components/TimePointer.js.meta b/client/assets/scripts/components/TimePointer.js.meta
new file mode 100755
index 0000000..6bb1f3e
--- /dev/null
+++ b/client/assets/scripts/components/TimePointer.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "5b5867ab-3cad-47e5-b15f-acc296b3e63a",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/UserInfoShow.js b/client/assets/scripts/components/UserInfoShow.js
new file mode 100755
index 0000000..d7ee852
--- /dev/null
+++ b/client/assets/scripts/components/UserInfoShow.js
@@ -0,0 +1,62 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _userinfo:null,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return;
+ }
+
+ this._userinfo = cc.find("Canvas/userinfo");
+ this._userinfo.active = false;
+ cc.vv.utils.addClickEvent(this._userinfo,this.node,"UserInfoShow","onClicked");
+
+ cc.vv.userinfoShow = this;
+ },
+
+ show:function(name,userId,iconSprite,sex,ip){
+ if(userId != null && userId > 0){
+ this._userinfo.active = true;
+ this._userinfo.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = iconSprite.spriteFrame;
+ this._userinfo.getChildByName("name").getComponent(cc.Label).string = name;
+ this._userinfo.getChildByName("ip").getComponent(cc.Label).string = "IP: " + ip.replace("::ffff:","");
+ this._userinfo.getChildByName("id").getComponent(cc.Label).string = "ID: " + userId;
+
+ var sex_female = this._userinfo.getChildByName("sex_female");
+ sex_female.active = false;
+
+ var sex_male = this._userinfo.getChildByName("sex_male");
+ sex_male.active = false;
+
+ if(sex == 1){
+ sex_male.active = true;
+ }
+ else if(sex == 2){
+ sex_female.active = true;
+ }
+ }
+ },
+
+ onClicked:function(){
+ this._userinfo.active = false;
+ }
+
+ // called every frame, uncomment this function to activate update callback
+ // update: function (dt) {
+
+ // },
+});
diff --git a/client/assets/scripts/components/UserInfoShow.js.meta b/client/assets/scripts/components/UserInfoShow.js.meta
new file mode 100755
index 0000000..c6d94e8
--- /dev/null
+++ b/client/assets/scripts/components/UserInfoShow.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "fe4f1e82-026a-4195-9a61-9e9b07d444ef",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/Voice.js b/client/assets/scripts/components/Voice.js
new file mode 100755
index 0000000..3907e0f
--- /dev/null
+++ b/client/assets/scripts/components/Voice.js
@@ -0,0 +1,123 @@
+cc.Class({
+ extends: cc.Component,
+
+ properties: {
+ // foo: {
+ // default: null, // The default value will be used only when the component attaching
+ // to a node for the first time
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _lastTouchTime:null,
+ _voice:null,
+ _volume:null,
+ _voice_failed:null,
+ _lastCheckTime:-1,
+ _timeBar:null,
+ MAX_TIME:15000,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+
+ this._voice = cc.find("Canvas/voice");
+ this._voice.active = false;
+
+ this._voice_failed = cc.find("Canvas/voice/voice_failed");
+ this._voice_failed.active = false;
+
+ this._timeBar = cc.find("Canvas/voice/time");
+ this._timeBar.scaleX = 0.0;
+
+ this._volume = cc.find("Canvas/voice/volume");
+ for(var i = 1; i < this._volume.children.length; ++i){
+ this._volume.children[i].active = false;
+ }
+
+ var btnVoice = cc.find("Canvas/voice/voice_failed/btn_ok");
+ if(btnVoice){
+ cc.vv.utils.addClickEvent(btnVoice,this.node,"Voice","onBtnOKClicked");
+ }
+
+ var self = this;
+ var btnVoice = cc.find("Canvas/btn_voice");
+ if(btnVoice){
+ btnVoice.on(cc.Node.EventType.TOUCH_START,function(){
+ console.log("cc.Node.EventType.TOUCH_START");
+ cc.vv.voiceMgr.prepare("record.amr");
+ self._lastTouchTime = Date.now();
+ self._voice.active = true;
+ self._voice_failed.active = false;
+ });
+
+ btnVoice.on(cc.Node.EventType.TOUCH_MOVE,function(){
+ console.log("cc.Node.EventType.TOUCH_MOVE");
+ });
+
+ btnVoice.on(cc.Node.EventType.TOUCH_END,function(){
+ console.log("cc.Node.EventType.TOUCH_END");
+ if(Date.now() - self._lastTouchTime < 1000){
+ self._voice_failed.active = true;
+ cc.vv.voiceMgr.cancel();
+ }
+ else{
+ self.onVoiceOK();
+ }
+ self._lastTouchTime = null;
+ });
+
+ btnVoice.on(cc.Node.EventType.TOUCH_CANCEL,function(){
+ console.log("cc.Node.EventType.TOUCH_CANCEL");
+ cc.vv.voiceMgr.cancel();
+ self._lastTouchTime = null;
+ self._voice.active = false;
+ });
+ }
+ },
+
+ onVoiceOK:function(){
+ if(this._lastTouchTime != null){
+ cc.vv.voiceMgr.release();
+ var time = Date.now() - this._lastTouchTime;
+ var msg = cc.vv.voiceMgr.getVoiceData("record.amr");
+ cc.vv.net.send("voice_msg",{msg:msg,time:time});
+ }
+ this._voice.active = false;
+ },
+
+ onBtnOKClicked:function(){
+ this._voice.active = false;
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ if(this._voice.active == true && this._voice_failed.active == false){
+ if(Date.now() - this._lastCheckTime > 300){
+ for(var i = 0; i < this._volume.children.length; ++i){
+ this._volume.children[i].active = false;
+ }
+ var v = cc.vv.voiceMgr.getVoiceLevel(7);
+ if(v >= 1 && v <= 7){
+ this._volume.children[v-1].active = true;
+ }
+ this._lastCheckTime = Date.now();
+ }
+ }
+
+ if(this._lastTouchTime){
+ var time = Date.now() - this._lastTouchTime;
+ if(time >= this.MAX_TIME){
+ this.onVoiceOK();
+ this._lastTouchTime = null;
+ }
+ else{
+ var percent = time / this.MAX_TIME;
+ this._timeBar.scaleX = 1 - percent;
+ }
+ }
+ },
+});
diff --git a/client/assets/scripts/components/Voice.js.meta b/client/assets/scripts/components/Voice.js.meta
new file mode 100755
index 0000000..658a8c9
--- /dev/null
+++ b/client/assets/scripts/components/Voice.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "f6db9cf4-0b17-44ce-9455-814e7af5d0ee",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/scripts/components/WaitingConnection.js b/client/assets/scripts/components/WaitingConnection.js
new file mode 100755
index 0000000..74b9e0e
--- /dev/null
+++ b/client/assets/scripts/components/WaitingConnection.js
@@ -0,0 +1,51 @@
+cc.Class({
+ extends: cc.Component,
+ properties: {
+ target:cc.Node,
+ // foo: {
+ // default: null,
+ // url: cc.Texture2D, // optional, default is typeof default
+ // serializable: true, // optional, default is true
+ // visible: true, // optional, default is true
+ // displayName: 'Foo', // optional
+ // readonly: false, // optional, default is false
+ // },
+ // ...
+ _isShow:false,
+ lblContent:cc.Label,
+ },
+
+ // use this for initialization
+ onLoad: function () {
+ if(cc.vv == null){
+ return null;
+ }
+
+ cc.vv.wc = this;
+ this.node.active = this._isShow;
+ },
+
+ // called every frame, uncomment this function to activate update callback
+ update: function (dt) {
+ this.target.rotation = this.target.rotation - dt*45;
+ },
+
+ show:function(content){
+ this._isShow = true;
+ if(this.node){
+ this.node.active = this._isShow;
+ }
+ if(this.lblContent){
+ if(content == null){
+ content = "";
+ }
+ this.lblContent.string = content;
+ }
+ },
+ hide:function(){
+ this._isShow = false;
+ if(this.node){
+ this.node.active = this._isShow;
+ }
+ }
+});
diff --git a/client/assets/scripts/components/WaitingConnection.js.meta b/client/assets/scripts/components/WaitingConnection.js.meta
new file mode 100755
index 0000000..0398554
--- /dev/null
+++ b/client/assets/scripts/components/WaitingConnection.js.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.0.2",
+ "uuid": "10e328c3-b2da-4b84-8187-5ab404ab6bcd",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/client/assets/splash.jpg b/client/assets/splash.jpg
new file mode 100755
index 0000000..77ca523
Binary files /dev/null and b/client/assets/splash.jpg differ
diff --git a/client/assets/splash.jpg.meta b/client/assets/splash.jpg.meta
new file mode 100755
index 0000000..8f5f857
--- /dev/null
+++ b/client/assets/splash.jpg.meta
@@ -0,0 +1,30 @@
+{
+ "ver": "1.0.0",
+ "uuid": "08a3b493-7d3b-4f02-bc2c-3aa985dd63bb",
+ "type": "sprite",
+ "wrapMode": "clamp",
+ "filterMode": "bilinear",
+ "subMetas": {
+ "splash": {
+ "ver": "1.0.3",
+ "uuid": "3bbe9370-8b06-4169-a040-117a26958bda",
+ "rawTextureUuid": "08a3b493-7d3b-4f02-bc2c-3aa985dd63bb",
+ "trimType": "auto",
+ "trimThreshold": 1,
+ "rotated": false,
+ "offsetX": 0,
+ "offsetY": 0,
+ "trimX": 0,
+ "trimY": 0,
+ "width": 1280,
+ "height": 720,
+ "rawWidth": 1280,
+ "rawHeight": 720,
+ "borderTop": 0,
+ "borderBottom": 0,
+ "borderLeft": 0,
+ "borderRight": 0,
+ "subMetas": {}
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/creator.d.ts b/client/creator.d.ts
new file mode 100755
index 0000000..1a8eaad
--- /dev/null
+++ b/client/creator.d.ts
@@ -0,0 +1,12143 @@
+
+/** !#en
+The main namespace of Cocos2d-JS, all engine core classes, functions, properties and constants are defined in this namespace.
+!#zh
+Cocos 引擎的主要命名空间,引擎代码中所有的类,函数,属性和常量都在这个命名空间中定义。 */
+declare module cc {
+ /** !#en Init Debug setting.
+ !#zh 设置调试模式。
+ */
+ export function _initDebugSetting(mode : DebugMode) : void;
+ /** !#en
+ Outputs an error message to the Cocos Creator Console (editor) or Web Console (runtime).
+ - In Cocos Creator, error is red.
+ - In Chrome, error have a red icon along with red message text.
+ !#zh
+ 输出错误消息到 Cocos Creator 编辑器的 Console 或运行时页面端的 Console 中。
+ - 在 Cocos Creator 中,错误信息显示是红色的。
+ - 在 Chrome 中,错误信息有红色的图标以及红色的消息文本。
+ @param obj A JavaScript string containing zero or more substitution strings.
+ @param subst JavaScript objects with which to replace substitution strings within msg. This gives you additional control over the format of the output.
+ */
+ export function error(obj : any, subst : any) : void;
+ /** !#en
+ Outputs a warning message to the Cocos Creator Console (editor) or Web Console (runtime).
+ - In Cocos Creator, warning is yellow.
+ - In Chrome, warning have a yellow warning icon with the message text.
+ !#zh
+ 输出警告消息到 Cocos Creator 编辑器的 Console 或运行时 Web 端的 Console 中。
+ - 在 Cocos Creator 中,警告信息显示是黄色的。
+ - 在 Chrome 中,警告信息有着黄色的图标以及黄色的消息文本。
+ @param obj A JavaScript string containing zero or more substitution strings.
+ @param subst JavaScript objects with which to replace substitution strings within msg. This gives you additional control over the format of the output.
+ */
+ export function warn(obj : any, subst : any) : void;
+ /** !#en Outputs a message to the Cocos Creator Console (editor) or Web Console (runtime).
+ !#zh 输出一条消息到 Cocos Creator 编辑器的 Console 或运行时 Web 端的 Console 中。
+ @param obj A JavaScript string containing zero or more substitution strings.
+ @param subst JavaScript objects with which to replace substitution strings within msg. This gives you additional control over the format of the output.
+ */
+ export function log(obj : any, subst : any) : void;
+ /** !#en
+ Outputs an informational message to the Cocos Creator Console (editor) or Web Console (runtime).
+ - In Cocos Creator, info is blue.
+ - In Firefox and Chrome, a small "i" icon is displayed next to these items in the Web Console's log.
+ !#zh
+ 输出一条信息消息到 Cocos Creator 编辑器的 Console 或运行时 Web 端的 Console 中。
+ - 在 Cocos Creator 中,Info 信息显示是蓝色的。
+ - 在 Firefox 和 Chrome 中,Info 信息有着小 “i” 图标。
+ @param obj A JavaScript string containing zero or more substitution strings.
+ @param subst JavaScript objects with which to replace substitution strings within msg. This gives you additional control over the format of the output.
+ */
+ export function info(obj : any, subst : any) : void;
+ /** !#en
+ Creates the speed action which changes the speed of an action, making it take longer (speed > 1)
+ or less (speed < 1) time.
+ Useful to simulate 'slow motion' or 'fast forward' effect.
+ !#zh 修改目标动作的速率。
+
+ @example
+ ```js
+ // change the target action speed;
+ var action = cc.scaleTo(0.2, 1, 0.6);
+ var newAction = cc.speed(action, 0.5);
+ ```
+ */
+ export function speed(action : ActionInterval, speed : number) : Action;
+ /** !#en Create a follow action which makes its target follows another node.
+ !#zh 追踪目标节点的位置。
+
+ @example
+ ```js
+ // example
+ // creates the action with a set boundary
+ var followAction = cc.follow(targetNode, cc.rect(0, 0, screenWidth * 2 - 100, screenHeight));
+ node.runAction(followAction);
+
+ // creates the action with no boundary set
+ var followAction = cc.follow(targetNode);
+ node.runAction(followAction);
+ ```
+ */
+ export function follow(followedNode : Node, rect : Rect) : Action;
+ /** Points setter
+ */
+ export function setPoints(points : any[]) : void;
+ /** !#en Creates an action with a Cardinal Spline array of points and tension.
+ !#zh 按基数样条曲线轨迹移动到目标位置。
+ @param points array of control points
+
+ @example
+ ```js
+ //create a cc.CardinalSplineTo
+ var action1 = cc.cardinalSplineTo(3, array, 0);
+ ```
+ */
+ export function cardinalSplineTo(duration : number, points : any[], tension : number) : ActionInterval;
+ /** update position of target
+ */
+ export function updatePosition(newPos : Vec2) : void;
+ /** !#en Creates an action with a Cardinal Spline array of points and tension.
+ !#zh 按基数样条曲线轨迹移动指定的距离。
+ */
+ export function cardinalSplineBy(duration : number, points : any[], tension : number) : ActionInterval;
+ /** !#en Creates an action with a Cardinal Spline array of points and tension.
+ !#zh 按 Catmull Rom 样条曲线轨迹移动到目标位置。
+
+ @example
+ ```js
+ var action1 = cc.catmullRomTo(3, array);
+ ```
+ */
+ export function catmullRomTo(dt : number, points : any[]) : ActionInterval;
+ /** !#en Creates an action with a Cardinal Spline array of points and tension.
+ !#zh 按 Catmull Rom 样条曲线轨迹移动指定的距离。
+
+ @example
+ ```js
+ var action1 = cc.catmullRomBy(3, array);
+ ```
+ */
+ export function catmullRomBy(dt : number, points : any[]) : ActionInterval;
+ /** !#en
+ Creates the action easing object with the rate parameter.
+ From slow to fast.
+ !#zh 创建 easeIn 缓动对象,由慢到快。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeIn(3.0));
+ ```
+ */
+ export function easeIn(rate : number) : any;
+ /** !#en
+ Creates the action easing object with the rate parameter.
+ From fast to slow.
+ !#zh 创建 easeOut 缓动对象,由快到慢。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeOut(3.0));
+ ```
+ */
+ export function easeOut(rate : number) : any;
+ /** !#en
+ Creates the action easing object with the rate parameter.
+ Slow to fast then to slow.
+ !#zh 创建 easeInOut 缓动对象,慢到快,然后慢。
+
+ @example
+ ```js
+ //The new usage
+ action.easing(cc.easeInOut(3.0));
+ ```
+ */
+ export function easeInOut(rate : number) : any;
+ /** !#en
+ Creates the action easing object with the rate parameter.
+ Reference easeInExpo:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeExponentialIn 缓动对象。
+ EaseExponentialIn 是按指数函数缓动进入的动作。
+ 参考 easeInExpo:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeExponentialIn());
+ ```
+ */
+ export function easeExponentialIn() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeOutExpo:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeExponentialOut 缓动对象。
+ EaseExponentialOut 是按指数函数缓动退出的动作。
+ 参考 easeOutExpo:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeExponentialOut());
+ ```
+ */
+ export function easeExponentialOut() : any;
+ /** !#en
+ Creates an EaseExponentialInOut action easing object.
+ Reference easeInOutExpo:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeExponentialInOut 缓动对象。
+ EaseExponentialInOut 是按指数函数缓动进入并退出的动作。
+ 参考 easeInOutExpo:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeExponentialInOut());
+ ```
+ */
+ export function easeExponentialInOut() : any;
+ /** !#en
+ Creates an EaseSineIn action.
+ Reference easeInSine:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 EaseSineIn 缓动对象。
+ EaseSineIn 是按正弦函数缓动进入的动作。
+ 参考 easeInSine:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeSineIn());
+ ```
+ */
+ export function easeSineIn() : any;
+ /** !#en
+ Creates an EaseSineOut action easing object.
+ Reference easeOutSine:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 EaseSineOut 缓动对象。
+ EaseSineIn 是按正弦函数缓动退出的动作。
+ 参考 easeOutSine:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeSineOut());
+ ```
+ */
+ export function easeSineOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInOutSine:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeSineInOut 缓动对象。
+ EaseSineIn 是按正弦函数缓动进入并退出的动作。
+ 参考 easeInOutSine:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeSineInOut());
+ ```
+ */
+ export function easeSineInOut() : any;
+ /** !#en
+ Creates the action easing obejct with the period in radians (default is 0.3).
+ Reference easeInElastic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeElasticIn 缓动对象。
+ EaseElasticIn 是按弹性曲线缓动进入的动作。
+ 参数 easeInElastic:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeElasticIn(3.0));
+ ```
+ */
+ export function easeElasticIn(period : number) : any;
+ /** !#en
+ Creates the action easing object with the period in radians (default is 0.3).
+ Reference easeOutElastic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeElasticOut 缓动对象。
+ EaseElasticOut 是按弹性曲线缓动退出的动作。
+ 参考 easeOutElastic:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeElasticOut(3.0));
+ ```
+ */
+ export function easeElasticOut(period : number) : any;
+ /** !#en
+ Creates the action easing object with the period in radians (default is 0.3).
+ Reference easeInOutElastic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeElasticInOut 缓动对象。
+ EaseElasticInOut 是按弹性曲线缓动进入并退出的动作。
+ 参考 easeInOutElastic:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeElasticInOut(3.0));
+ ```
+ */
+ export function easeElasticInOut(period : number) : any;
+ /** !#en
+ Creates the action easing object.
+ Eased bounce effect at the beginning.
+ !#zh
+ 创建 easeBounceIn 缓动对象。
+ EaseBounceIn 是按弹跳动作缓动进入的动作。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBounceIn());
+ ```
+ */
+ export function easeBounceIn() : any;
+ /** !#en
+ Creates the action easing object.
+ Eased bounce effect at the ending.
+ !#zh
+ 创建 easeBounceOut 缓动对象。
+ EaseBounceOut 是按弹跳动作缓动退出的动作。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBounceOut());
+ ```
+ */
+ export function easeBounceOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Eased bounce effect at the begining and ending.
+ !#zh
+ 创建 easeBounceInOut 缓动对象。
+ EaseBounceInOut 是按弹跳动作缓动进入并退出的动作。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBounceInOut());
+ ```
+ */
+ export function easeBounceInOut() : any;
+ /** !#en
+ Creates the action easing object.
+ In the opposite direction to move slowly, and then accelerated to the right direction.
+ !#zh
+ 创建 easeBackIn 缓动对象。
+ easeBackIn 是在相反的方向缓慢移动,然后加速到正确的方向。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBackIn());
+ ```
+ */
+ export function easeBackIn() : any;
+ /** !#en
+ Creates the action easing object.
+ Fast moving more than the finish, and then slowly back to the finish.
+ !#zh
+ 创建 easeBackOut 缓动对象。
+ easeBackOut 快速移动超出目标,然后慢慢回到目标点。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBackOut());
+ ```
+ */
+ export function easeBackOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Begining of cc.EaseBackIn. Ending of cc.EaseBackOut.
+ !#zh
+ 创建 easeBackInOut 缓动对象。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBackInOut());
+ ```
+ */
+ export function easeBackInOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Into the 4 reference point.
+ To calculate the motion curve.
+ !#zh
+ 创建 easeBezierAction 缓动对象。
+ EaseBezierAction 是按贝塞尔曲线缓动的动作。
+ @param p0 The first bezier parameter
+ @param p1 The second bezier parameter
+ @param p2 The third bezier parameter
+ @param p3 The fourth bezier parameter
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBezierAction(0.5, 0.5, 1.0, 1.0));
+ ```
+ */
+ export function easeBezierAction(p0 : number, p1 : number, p2 : number, p3 : number) : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInQuad:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuadraticActionIn 缓动对象。
+ EaseQuadraticIn是按二次函数缓动进入的动作。
+ 参考 easeInQuad:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeQuadraticActionIn());
+ ```
+ */
+ export function easeQuadraticActionIn() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeOutQuad:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuadraticActionOut 缓动对象。
+ EaseQuadraticOut 是按二次函数缓动退出的动作。
+ 参考 easeOutQuad:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeQuadraticActionOut());
+ ```
+ */
+ export function easeQuadraticActionOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInOutQuad:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuadraticActionInOut 缓动对象。
+ EaseQuadraticInOut 是按二次函数缓动进入并退出的动作。
+ 参考 easeInOutQuad:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeQuadraticActionInOut());
+ ```
+ */
+ export function easeQuadraticActionInOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeIntQuart:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuarticActionIn 缓动对象。
+ EaseQuarticIn 是按四次函数缓动进入的动作。
+ 参考 easeIntQuart:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeQuarticActionIn());
+ ```
+ */
+ export function easeQuarticActionIn() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeOutQuart:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuarticActionOut 缓动对象。
+ EaseQuarticOut 是按四次函数缓动退出的动作。
+ 参考 easeOutQuart:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.QuarticActionOut());
+ ```
+ */
+ export function easeQuarticActionOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInOutQuart:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuarticActionInOut 缓动对象。
+ EaseQuarticInOut 是按四次函数缓动进入并退出的动作。
+ 参考 easeInOutQuart:http://www.zhihu.com/question/21981571/answer/19925418
+ */
+ export function easeQuarticActionInOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInQuint:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuinticActionIn 缓动对象。
+ EaseQuinticIn 是按五次函数缓动进的动作。
+ 参考 easeInQuint:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeQuinticActionIn());
+ ```
+ */
+ export function easeQuinticActionIn() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeOutQuint:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuinticActionOut 缓动对象。
+ EaseQuinticOut 是按五次函数缓动退出的动作
+ 参考 easeOutQuint:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeQuadraticActionOut());
+ ```
+ */
+ export function easeQuinticActionOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInOutQuint:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuinticActionInOut 缓动对象。
+ EaseQuinticInOut是按五次函数缓动进入并退出的动作。
+ 参考 easeInOutQuint:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeQuinticActionInOut());
+ ```
+ */
+ export function easeQuinticActionInOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInCirc:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCircleActionIn 缓动对象。
+ EaseCircleIn是按圆形曲线缓动进入的动作。
+ 参考 easeInCirc:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeCircleActionIn());
+ ```
+ */
+ export function easeCircleActionIn() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeOutCirc:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCircleActionOut 缓动对象。
+ EaseCircleOut是按圆形曲线缓动退出的动作。
+ 参考 easeOutCirc:http://www.zhihu.com/question/21981571/answer/19925418
+ */
+ export function easeCircleActionOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInOutCirc:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCircleActionInOut 缓动对象。
+ EaseCircleInOut 是按圆形曲线缓动进入并退出的动作。
+ 参考 easeInOutCirc:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeCircleActionInOut());
+ ```
+ */
+ export function easeCircleActionInOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInCubic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCubicActionIn 缓动对象。
+ EaseCubicIn 是按三次函数缓动进入的动作。
+ 参考 easeInCubic:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeCubicActionIn());
+ ```
+ */
+ export function easeCubicActionIn() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeOutCubic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCubicActionOut 缓动对象。
+ EaseCubicOut 是按三次函数缓动退出的动作。
+ 参考 easeOutCubic:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ //example
+ action.easing(cc.easeCubicActionOut());
+ ```
+ */
+ export function easeCubicActionOut() : any;
+ /** !#en
+ Creates the action easing object.
+ Reference easeInOutCubic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCubicActionInOut 缓动对象。
+ EaseCubicInOut是按三次函数缓动进入并退出的动作。
+ 参考 easeInOutCubic:http://www.zhihu.com/question/21981571/answer/19925418
+ */
+ export function easeCubicActionInOut() : any;
+ /** !#en Show the Node.
+ !#zh 立即显示。
+
+ @example
+ ```js
+ // example
+ var showAction = cc.show();
+ ```
+ */
+ export function show() : ActionInstant;
+ /** !#en Hide the node.
+ !#zh 立即隐藏。
+
+ @example
+ ```js
+ // example
+ var hideAction = cc.hide();
+ ```
+ */
+ export function hide() : ActionInstant;
+ /** !#en Toggles the visibility of a node.
+ !#zh 显隐状态切换。
+
+ @example
+ ```js
+ // example
+ var toggleVisibilityAction = cc.toggleVisibility();
+ ```
+ */
+ export function toggleVisibility() : ActionInstant;
+ /** !#en Create a RemoveSelf object with a flag indicate whether the target should be cleaned up while removing.
+ !#zh 从父节点移除自身。
+
+ @example
+ ```js
+ // example
+ var removeSelfAction = cc.removeSelf();
+ ```
+ */
+ export function removeSelf(isNeedCleanUp : boolean) : ActionInstant;
+ /** !#en Create a FlipX action to flip or unflip the target.
+ !#zh X轴翻转。
+ @param flip Indicate whether the target should be flipped or not
+
+ @example
+ ```js
+ var flipXAction = cc.flipX(true);
+ ```
+ */
+ export function flipX(flip : boolean) : ActionInstant;
+ /** !#en Create a FlipY action to flip or unflip the target.
+ !#zh Y轴翻转。
+
+ @example
+ ```js
+ var flipYAction = cc.flipY(true);
+ ```
+ */
+ export function flipY(flip : boolean) : ActionInstant;
+ /** !#en Creates a Place action with a position.
+ !#zh 放置在目标位置。
+
+ @example
+ ```js
+ // example
+ var placeAction = cc.place(cc.p(200, 200));
+ var placeAction = cc.place(200, 200);
+ ```
+ */
+ export function place(pos : Vec2|number, y? : number) : ActionInstant;
+ /** !#en Creates the action with the callback.
+ !#zh 执行回调函数。
+ @param data data for function, it accepts all data types.
+
+ @example
+ ```js
+ // example
+ // CallFunc without data
+ var finish = cc.callFunc(this.removeSprite, this);
+
+ // CallFunc with data
+ var finish = cc.callFunc(this.removeFromParentAndCleanup, this._grossini, true);
+ ```
+ */
+ export function callFunc(selector : Function, selectorTarget? : any|void, data? : any|void) : ActionInstant;
+ /** !#en
+ Helper constructor to create an array of sequenceable actions
+ The created action will run actions sequentially, one after another.
+ !#zh 顺序执行动作,创建的动作将按顺序依次运行。
+
+ @example
+ ```js
+ // example
+ // create sequence with actions
+ var seq = cc.sequence(act1, act2);
+
+ // create sequence with array
+ var seq = cc.sequence(actArray);
+ ```
+ */
+ export function sequence(tempArray : any[]|FiniteTimeAction) : ActionInterval;
+ /** !#en Creates a Repeat action. Times is an unsigned integer between 1 and pow(2,30)
+ !#zh 重复动作,可以按一定次数重复一个动,如果想永远重复一个动作请使用 repeatForever 动作来完成。
+
+ @example
+ ```js
+ // example
+ var rep = cc.repeat(cc.sequence(jump2, jump1), 5);
+ ```
+ */
+ export function repeat(action : FiniteTimeAction, times : number) : ActionInterval;
+ /** !#en Create a acton which repeat forever
+ !#zh 永远地重复一个动作,有限次数内重复一个动作请使用 repeat 动作。
+
+ @example
+ ```js
+ // example
+ var repeat = cc.repeatForever(cc.rotateBy(1.0, 360));
+ ```
+ */
+ export function repeatForever(action : FiniteTimeAction) : ActionInterval;
+ /** !#en Create a spawn action which runs several actions in parallel.
+ !#zh 同步执行动作,同步执行一组动作。
+
+ @example
+ ```js
+ // example
+ var action = cc.spawn(cc.jumpBy(2, cc.p(300, 0), 50, 4), cc.rotateBy(2, 720));
+ todo:It should be the direct use new
+ ```
+ */
+ export function spawn(tempArray : any[]|FiniteTimeAction) : FiniteTimeAction;
+ /** !#en
+ Rotates a Node object to a certain angle by modifying its rotation property.
+ The direction will be decided by the shortest angle.
+ !#zh 旋转到目标角度,通过逐帧修改它的 rotation 属性,旋转方向将由最短的角度决定。
+ @param duration duration in seconds
+ @param deltaAngleX deltaAngleX in degrees.
+ @param deltaAngleY deltaAngleY in degrees.
+
+ @example
+ ```js
+ // example
+ var rotateTo = cc.rotateTo(2, 61.0);
+ ```
+ */
+ export function rotateTo(duration : number, deltaAngleX : number, deltaAngleY? : number) : ActionInterval;
+ /** !#en
+ Rotates a Node object clockwise a number of degrees by modifying its rotation property.
+ Relative to its properties to modify.
+ !#zh 旋转指定的角度。
+ @param duration duration in seconds
+ @param deltaAngleX deltaAngleX in degrees
+ @param deltaAngleY deltaAngleY in degrees
+
+ @example
+ ```js
+ // example
+ var actionBy = cc.rotateBy(2, 360);
+ ```
+ */
+ export function rotateBy(duration : number, deltaAngleX : number, deltaAngleY? : number) : ActionInterval;
+ /** !#en
+ Moves a Node object x,y pixels by modifying its position property.
+ x and y are relative to the position of the object.
+ Several MoveBy actions can be concurrently called, and the resulting
+ movement will be the sum of individual movements.
+ !#zh 移动指定的距离。
+ @param duration duration in seconds
+
+ @example
+ ```js
+ // example
+ var actionTo = cc.moveBy(2, cc.p(windowSize.width - 40, windowSize.height - 40));
+ ```
+ */
+ export function moveBy(duration : number, deltaPos : Vec2|number, deltaY : number) : ActionInterval;
+ /** !#en
+ Moves a Node object to the position x,y. x and y are absolute coordinates by modifying its position property.
+ Several MoveTo actions can be concurrently called, and the resulting
+ movement will be the sum of individual movements.
+ !#zh 移动到目标位置。
+ @param duration duration in seconds
+
+ @example
+ ```js
+ // example
+ var actionBy = cc.moveTo(2, cc.p(80, 80));
+ ```
+ */
+ export function moveTo(duration : number, position : Vec2, y : number) : ActionInterval;
+ /** !#en
+ Create a action which skews a Node object to given angles by modifying its skewX and skewY properties.
+ Changes to the specified value.
+ !#zh 偏斜到目标角度。
+ @param t time in seconds
+
+ @example
+ ```js
+ // example
+ var actionTo = cc.skewTo(2, 37.2, -37.2);
+ ```
+ */
+ export function skewTo(t : number, sx : number, sy : number) : ActionInterval;
+ /** !#en
+ Skews a Node object by skewX and skewY degrees.
+ Relative to its property modification.
+ !#zh 偏斜指定的角度。
+ @param t time in seconds
+ @param sx sx skew in degrees for X axis
+ @param sy sy skew in degrees for Y axis
+
+ @example
+ ```js
+ // example
+ var actionBy = cc.skewBy(2, 0, -90);
+ ```
+ */
+ export function skewBy(t : number, sx : number, sy : number) : ActionInterval;
+ /** !#en
+ Moves a Node object simulating a parabolic jump movement by modifying it's position property.
+ Relative to its movement.
+ !#zh 用跳跃的方式移动指定的距离。
+
+ @example
+ ```js
+ // example
+ var actionBy = cc.jumpBy(2, cc.p(300, 0), 50, 4);
+ var actionBy = cc.jumpBy(2, 300, 0, 50, 4);
+ ```
+ */
+ export function jumpBy(duration : number, position : Vec2|number, y? : number, height : number, jumps : number) : ActionInterval;
+ /** !#en
+ Moves a Node object to a parabolic position simulating a jump movement by modifying its position property.
+ Jump to the specified location.
+ !#zh 用跳跃的方式移动到目标位置。
+
+ @example
+ ```js
+ // example
+ var actionTo = cc.jumpTo(2, cc.p(300, 300), 50, 4);
+ var actionTo = cc.jumpTo(2, 300, 300, 50, 4);
+ ```
+ */
+ export function jumpTo(duration : number, position : Vec2|number, y? : number, height : number, jumps : number) : ActionInterval;
+ /** !#en
+ An action that moves the target with a cubic Bezier curve by a certain distance.
+ Relative to its movement.
+ !#zh 按贝赛尔曲线轨迹移动指定的距离。
+ @param t time in seconds
+ @param c Array of points
+
+ @example
+ ```js
+ // example
+ var bezier = [cc.p(0, windowSize.height / 2), cc.p(300, -windowSize.height / 2), cc.p(300, 100)];
+ var bezierForward = cc.bezierBy(3, bezier);
+ ```
+ */
+ export function bezierBy(t : number, c : any[]) : ActionInterval;
+ /** !#en An action that moves the target with a cubic Bezier curve to a destination point.
+ !#zh 按贝赛尔曲线轨迹移动到目标位置。
+ @param c array of points
+
+ @example
+ ```js
+ // example
+ var bezier = [cc.p(0, windowSize.height / 2), cc.p(300, -windowSize.height / 2), cc.p(300, 100)];
+ var bezierTo = cc.bezierTo(2, bezier);
+ ```
+ */
+ export function bezierTo(t : number, c : any[]) : ActionInterval;
+ /** !#en Scales a Node object to a zoom factor by modifying it's scale property.
+ !#zh 将节点大小缩放到指定的倍数。
+ @param sx scale parameter in X
+ @param sy scale parameter in Y, if Null equal to sx
+
+ @example
+ ```js
+ // example
+ // It scales to 0.5 in both X and Y.
+ var actionTo = cc.scaleTo(2, 0.5);
+
+ // It scales to 0.5 in x and 2 in Y
+ var actionTo = cc.scaleTo(2, 0.5, 2);
+ ```
+ */
+ export function scaleTo(duration : number, sx : number, sy? : number) : ActionInterval;
+ /** !#en
+ Scales a Node object a zoom factor by modifying it's scale property.
+ Relative to its changes.
+ !#zh 按指定的倍数缩放节点大小。
+ @param duration duration in seconds
+ @param sx sx scale parameter in X
+ @param sy sy scale parameter in Y, if Null equal to sx
+
+ @example
+ ```js
+ // example without sy, it scales by 2 both in X and Y
+ var actionBy = cc.scaleBy(2, 2);
+
+ //example with sy, it scales by 0.25 in X and 4.5 in Y
+ var actionBy2 = cc.scaleBy(2, 0.25, 4.5);
+ ```
+ */
+ export function scaleBy(duration : number, sx : number, sy? : number|void) : ActionInterval;
+ /** !#en Blinks a Node object by modifying it's visible property.
+ !#zh 闪烁(基于透明度)。
+ @param duration duration in seconds
+ @param blinks blinks in times
+
+ @example
+ ```js
+ // example
+ var action = cc.blink(2, 10);
+ ```
+ */
+ export function blink(duration : number, blinks : number) : ActionInterval;
+ /** !#en
+ Fades an object that implements the cc.RGBAProtocol protocol.
+ It modifies the opacity from the current value to a custom one.
+ !#zh 修改透明度到指定值。
+ @param opacity 0-255, 0 is transparent
+
+ @example
+ ```js
+ // example
+ var action = cc.fadeTo(1.0, 0);
+ ```
+ */
+ export function fadeTo(duration : number, opacity : number) : ActionInterval;
+ /** !#en Fades In an object that implements the cc.RGBAProtocol protocol. It modifies the opacity from 0 to 255.
+ !#zh 渐显效果。
+ @param duration duration in seconds
+
+ @example
+ ```js
+ //example
+ var action = cc.fadeIn(1.0);
+ ```
+ */
+ export function fadeIn(duration : number) : ActionInterval;
+ /** !#en Fades Out an object that implements the cc.RGBAProtocol protocol. It modifies the opacity from 255 to 0.
+ !#zh 渐隐效果。
+ @param d duration in seconds
+
+ @example
+ ```js
+ // example
+ var action = cc.fadeOut(1.0);
+ ```
+ */
+ export function fadeOut(d : number) : ActionInterval;
+ /** !#en Tints a Node that implements the cc.NodeRGB protocol from current tint to a custom one.
+ !#zh 修改颜色到指定值。
+ @param red 0-255
+ @param green 0-255
+ @param blue 0-255
+
+ @example
+ ```js
+ // example
+ var action = cc.tintTo(2, 255, 0, 255);
+ ```
+ */
+ export function tintTo(duration : number, red : number, green : number, blue : number) : ActionInterval;
+ /** !#en
+ Tints a Node that implements the cc.NodeRGB protocol from current tint to a custom one.
+ Relative to their own color change.
+ !#zh 按照指定的增量修改颜色。
+ @param duration duration in seconds
+
+ @example
+ ```js
+ // example
+ var action = cc.tintBy(2, -127, -255, -127);
+ ```
+ */
+ export function tintBy(duration : number, deltaRed : number, deltaGreen : number, deltaBlue : number) : ActionInterval;
+ /** !#en Delays the action a certain amount of seconds.
+ !#en 延迟指定的时间量。
+ @param d duration in seconds
+
+ @example
+ ```js
+ // example
+ var delay = cc.delayTime(1);
+ ```
+ */
+ export function delayTime(d : number) : ActionInterval;
+ /** !#en Executes an action in reverse order, from time=duration to time=0.
+ !#zh 反转目标动作的时间轴。
+
+ @example
+ ```js
+ // example
+ var reverse = cc.reverseTime(this);
+ ```
+ */
+ export function reverseTime(action : FiniteTimeAction) : ActionInterval;
+ /** !#en Create an action with the specified action and forced target.
+ !#zh 用已有动作和一个新的目标节点创建动作。
+ */
+ export function targetedAction(target : Node, action : FiniteTimeAction) : ActionInterval;
+ /** Constructor
+ */
+ export function HashElement() : void;
+ /** !#en cc.view is the shared view object.
+ !#zh cc.view 是全局的视图对象。 */
+ export var view : View;
+ /** !#en Director
+ !#zh 导演类。 */
+ export var director : Director;
+ /** !#en cc.winSize is the alias object for the size of the current game window.
+ !#zh cc.winSize 为当前的游戏窗口的大小。 */
+ export var winSize : Size;
+ export var game : Game;
+ /** Checks whether subclass is child of superclass or equals to superclass
+ */
+ export function isChildClassOf(subclass : Function, superclass : Function) : boolean;
+ /** !#en Defines a CCClass using the given specification, please see [Class](/en/scripting/class/) for details.
+ !#zh 定义一个 CCClass,传入参数必须是一个包含类型参数的字面量对象,具体用法请查阅[类型定义](/zh/scripting/class/)。
+
+ @example
+ ```js
+ // define base class
+ var Node = cc.Class();
+
+ // define sub class
+ var Sprite = cc.Class({
+ name: 'Sprite',
+ extends: Node,
+ ctor: function () {
+ this.url = "";
+ this.id = 0;
+ },
+
+ properties {
+ width: {
+ default: 128,
+ type: 'Integer',
+ tooltip: 'The width of sprite'
+ },
+ height: 128,
+ size: {
+ get: function () {
+ return cc.v2(this.width, this.height);
+ }
+ }
+ },
+
+ load: function () {
+ // load this.url
+ };
+ });
+
+ // instantiate
+
+ var obj = new Sprite();
+ obj.url = 'sprite.png';
+ obj.load();
+
+ // define static member
+
+ Sprite.count = 0;
+ Sprite.getBounds = function (spriteList) {
+ // ...
+ };
+ ```
+ */
+ export function Class(options : { name?; extends?; ctor?; properties?; statics?; mixins?; editor? : { requireComponent? : Component; disallowMultiple? : Component; menu? : string; executeInEditMode? : boolean; playOnFocus? : boolean; inspector? : string; icon? : string; help? : string; } ; update?; lateUpdate?; onLoad?; start?; onEnable?; onDisable?; onDestroy?; onFocusInEditor?; onLostFocusInEditor?; onRestore?; _getLocalBounds?; }) : Function;
+ /** Return all super classes
+ */
+ export function getInheritanceChain(constructor : Function) : Function[];
+ /** whether enable accelerometer event
+ */
+ export function setAccelerometerEnabled(isEnable : boolean) : void;
+ /** set accelerometer interval value
+ */
+ export function setAccelerometerInterval(interval : number) : void;
+ /** !#en Checks whether the object is non-nil and not yet destroyed.
+ !#zh 检查该对象是否不为 null 并且尚未销毁。
+
+ @example
+ ```js
+ cc.log(cc.isValid(target));
+ ```
+ */
+ export function isValid(value : any) : boolean;
+ /** Specify that the input value must be integer in Inspector.
+ Also used to indicates that the elements in array should be type integer. */
+ export var Integer : string;
+ /** Indicates that the elements in array should be type double. */
+ export var Float : string;
+ /** Indicates that the elements in array should be type boolean. */
+ export var Boolean : string;
+ /** Indicates that the elements in array should be type string. */
+ export var String : string;
+ /** !#en Deserialize json to cc.Asset
+ !#zh 将 JSON 反序列化为对象实例。
+
+ 当指定了 target 选项时,如果 target 引用的其它 asset 的 uuid 不变,则不会改变 target 对 asset 的引用,
+ 也不会将 uuid 保存到 result 对象中。
+ @param data the serialized cc.Asset json string or json object.
+ @param result additional loading result
+ */
+ export function deserialize(data : string|any, result? : Details, options? : any) : any;
+ /** !#en Clones the object original and returns the clone.
+
+ See [Clone exists Entity](/en/scripting/create-destroy-entities/#instantiate)
+
+ !#zh 复制给定的对象
+
+ 详细用法可参考[复制已有Entity](/zh/scripting/create-destroy-entities/#instantiate)
+
+ Instantiate 时,function 和 dom 等非可序列化对象会直接保留原有引用,Asset 会直接进行浅拷贝,可序列化类型会进行深拷贝。
+ 对于 Entity / Component 等 Scene Object,如果对方也会被一起 Instantiate,则重定向到新的引用,否则保留为原来的引用。
+ @param original An existing object that you want to make a copy of.
+ */
+ export function instantiate(original : any) : any;
+ /** Finds a node by hierarchy path, the path is case-sensitive.
+ It will traverse the hierarchy by splitting the path using '/' character.
+ This function will still returns the node even if it is inactive.
+ It is recommended to not use this function every frame instead cache the result at startup.
+ */
+ export function find(path : string, referenceNode? : Node) : Node;
+ /** !#en
+ The convenience method to create a new {{#crossLink "Color/Color:method"}}cc.Color{{/crossLink}}
+ Alpha channel is optional. Default value is 255.
+
+ !#zh
+ 通过该方法来创建一个新的 {{#crossLink "Color/Color:method"}}cc.Color{{/crossLink}} 对象。
+ Alpha 通道是可选的。默认值是 255。
+
+ @example
+ ```js
+ -----------------------
+ // 1. All channels seperately as parameters
+ var color1 = new cc.Color(255, 255, 255, 255);
+ // 2. Convert a hex string to a color
+ var color2 = new cc.Color("#000000");
+ // 3. An color object as parameter
+ var color3 = new cc.Color({r: 255, g: 255, b: 255, a: 255});
+
+ ```
+ */
+ export function color(r? : number, g? : number, b? : number, a? : number) : Color;
+ /** !#en returns true if both ccColor3B are equal. Otherwise it returns false.
+ !#zh 判断两个颜色对象的 RGB 部分是否相等,不比较透明度。
+
+ @example
+ ```js
+ cc.log(cc.colorEqual(cc.Color.RED, new cc.Color(255, 0, 0))); // true
+ ```
+ */
+ export function colorEqual(color1: (r: number, g: number, b: number, a: number) => void, color2: (r: number, g: number, b: number, a: number) => void) : boolean;
+ /** !#en
+ convert a string of color for style to Color.
+ e.g. "#ff06ff" to : cc.color(255,6,255)。
+ !#zh 16 进制转换为 Color
+
+ @example
+ ```js
+ cc.hexToColor("#FFFF33"); // Color {r: 255, g: 255, b: 51, a: 255};
+ ```
+ */
+ export function hexToColor(hex : string) : Color;
+ /** !#en
+ convert Color to a string of color for style.
+ e.g. cc.color(255,6,255) to : "#ff06ff"
+ !#zh Color 转换为 16进制。
+
+ @example
+ ```js
+ var color = new cc.Color(255, 6, 255)
+ cc.colorToHex(color); // #ff06ff;
+ ```
+ */
+ export function colorToHex(color: (r: number, g: number, b: number, a: number) => void) : string;
+ /** !#en
+ Define an enum type.
+ If a enum item has a value of -1, it will be given an Integer number according to it's order in the list.
+ Otherwise it will use the value specified by user who writes the enum definition.
+
+ !#zh
+ 定义一个枚举类型。
+ 用户可以把枚举值设为任意的整数,如果设为 -1,系统将会分配为上一个枚举值 + 1。
+ @param obj a JavaScript literal object containing enum names and values
+
+ @example
+ ```js
+ var WrapMode = cc.Enum({
+ Repeat: -1,
+ Clamp: -1
+ });
+
+ // Texture.WrapMode.Repeat == 0
+ // Texture.WrapMode.Clamp == 1
+ // Texture.WrapMode[0] == "Repeat"
+ // Texture.WrapMode[1] == "Clamp"
+
+ var FlagType = cc.Enum({
+ Flag1: 1,
+ Flag2: 2,
+ Flag3: 4,
+ Flag4: 8,
+ });
+
+ var AtlasSizeList = cc.Enum({
+ 128: 128,
+ 256: 256,
+ 512: 512,
+ 1024: 1024,
+ });
+ ```
+ */
+ export function Enum(obj : any) : any;
+ /** !#en Returns opposite of Vec2.
+ !#zh 返回相反的向量。
+
+ @example
+ ```js
+ cc.pNeg(cc.v2(10, 10));// Vec2 {x: -10, y: -10};
+ ```
+ */
+ export function pNeg(point : Vec2) : Vec2;
+ /** !#en Calculates sum of two points.
+ !#zh 返回两个向量的和。
+
+ @example
+ ```js
+ cc.pAdd(cc.v2(1, 1), cc.v2(2, 2));// Vec2 {x: 3, y: 3};
+ ```
+ */
+ export function pAdd(v1 : Vec2, v2 : Vec2) : Vec2;
+ /** !#en Calculates difference of two points.
+ !#zh 返回两个向量的差。
+
+ @example
+ ```js
+ cc.pSub(cc.v2(20, 20), cc.v2(5, 5)); // Vec2 {x: 15, y: 15};
+ ```
+ */
+ export function pSub(v1 : Vec2, v2 : Vec2) : Vec2;
+ /** !#en Returns point multiplied by given factor.
+ !#zh 向量缩放。
+
+ @example
+ ```js
+ cc.pMult(cc.v2(5, 5), 4); // Vec2 {x: 20, y: 20};
+ ```
+ */
+ export function pMult(point : Vec2, floatVar : number) : Vec2;
+ /** !#en Calculates midpoint between two points.
+ !#zh 两个向量之间的中心点。
+
+ @example
+ ```js
+ cc.pMidpoint(cc.v2(10, 10), cc.v2(5, 5)); // Vec2 {x: 7.5, y: 7.5};
+ ```
+ */
+ export function pMidpoint(v1 : Vec2, v2 : Vec2) : Vec2;
+ /** !#en Calculates dot product of two points.
+ !#zh 两个向量之间进行点乘。
+
+ @example
+ ```js
+ cc.pDot(cc.v2(20, 20), cc.v2(5, 5)); // 200;
+ ```
+ */
+ export function pDot(v1 : Vec2, v2 : Vec2) : number;
+ /** !#en Calculates cross product of two points.
+ !#zh 两个向量之间进行叉乘。
+
+ @example
+ ```js
+ cc.pCross(cc.v2(20, 20), cc.v2(5, 5)); // 0;
+ ```
+ */
+ export function pCross(v1 : Vec2, v2 : Vec2) : number;
+ /** !#en Calculates perpendicular of v, rotated 90 degrees counter-clockwise -- cross(v, perp(v)) greater than 0.
+ !#zh 返回逆时针旋转 90 度后的新向量。
+
+ @example
+ ```js
+ cc.pPerp(cc.v2(20, 20)); // Vec2 {x: -20, y: 20};
+ ```
+ */
+ export function pPerp(point : Vec2) : Vec2;
+ /** !#en Calculates perpendicular of v, rotated 90 degrees clockwise -- cross(v, rperp(v)) smaller than 0.
+ !#zh 将指定向量顺时针旋转 90 度并返回。
+
+ @example
+ ```js
+ cc.pRPerp(cc.v2(20, 20)); // Vec2 {x: 20, y: -20};
+ ```
+ */
+ export function pRPerp(point : Vec2) : Vec2;
+ /** !#en Calculates the projection of v1 over v2.
+ !#zh 返回 v1 在 v2 上的投影向量。
+
+ @example
+ ```js
+ var v1 = cc.v2(20, 20);
+ var v2 = cc.v2(5, 5);
+ cc.pProject(v1, v2); // Vec2 {x: 20, y: 20};
+ ```
+ */
+ export function pProject(v1 : Vec2, v2 : Vec2) : Vec2;
+ /** !#en Calculates the square length of a cc.Vec2 (not calling sqrt() ).
+ !#zh 返回指定向量长度的平方。
+
+ @example
+ ```js
+ cc.pLengthSQ(cc.v2(20, 20)); // 800;
+ ```
+ */
+ export function pLengthSQ(v : Vec2) : number;
+ /** !#en Calculates the square distance between two points (not calling sqrt() ).
+ !#zh 返回两个点之间距离的平方。
+
+ @example
+ ```js
+ var point1 = cc.v2(20, 20);
+ var point2 = cc.v2(5, 5);
+ cc.pDistanceSQ(point1, point2); // 450;
+ ```
+ */
+ export function pDistanceSQ(point1 : Vec2, point2 : Vec2) : number;
+ /** !#en Calculates distance between point an origin.
+ !#zh 返回指定向量的长度.
+
+ @example
+ ```js
+ cc.pLength(cc.v2(20, 20)); // 28.284271247461902;
+ ```
+ */
+ export function pLength(v : Vec2) : number;
+ /** !#en Calculates the distance between two points.
+ !#zh 返回指定 2 个向量之间的距离。
+
+ @example
+ ```js
+ var v1 = cc.v2(20, 20);
+ var v2 = cc.v2(5, 5);
+ cc.pDistance(v1, v2); // 21.213203435596427;
+ ```
+ */
+ export function pDistance(v1 : Vec2, v2 : Vec2) : number;
+ /** !#en Returns this vector with a magnitude of 1.
+ !#zh 返回一个长度为 1 的标准化过后的向量。
+
+ @example
+ ```js
+ cc.pNormalize(cc.v2(20, 20)); // Vec2 {x: 0.7071067811865475, y: 0.7071067811865475};
+ ```
+ */
+ export function pNormalize(v : Vec2) : Vec2;
+ /** !#en Converts radians to a normalized vector.
+ !#zh 将弧度转换为一个标准化后的向量,返回坐标 x = cos(a) , y = sin(a)。
+
+ @example
+ ```js
+ cc.pForAngle(20); // Vec2 {x: 0.40808206181339196, y: 0.9129452507276277};
+ ```
+ */
+ export function pForAngle(a : number) : Vec2;
+ /** !#en Converts a vector to radians.
+ !#zh 返回指定向量的弧度。
+
+ @example
+ ```js
+ cc.pToAngle(cc.v2(20, 20)); // 0.7853981633974483;
+ ```
+ */
+ export function pToAngle(v : Vec2) : number;
+ /** !#en Clamp a value between from and to.
+ !#zh
+ 限定浮点数的最大最小值。
+ 数值大于 max_inclusive 则返回 max_inclusive。
+ 数值小于 min_inclusive 则返回 min_inclusive。
+ 否则返回自身。
+
+ @example
+ ```js
+ var v1 = cc.clampf(20, 0, 20); // 20;
+ var v2 = cc.clampf(-1, 0, 20); // 0;
+ var v3 = cc.clampf(10, 0, 20); // 10;
+ ```
+ */
+ export function clampf(value : number, min_inclusive : number, max_inclusive : number) : number;
+ /** !#en Clamp a value between 0 and 1.
+ !#zh 限定浮点数的取值范围为 0 ~ 1 之间。
+
+ @example
+ ```js
+ var v1 = cc.clampf(20); // 1;
+ var v2 = cc.clampf(-1); // 0;
+ var v3 = cc.clampf(0.5); // 0.5;
+ ```
+ */
+ export function clamp01(value : number) : number;
+ /** !#en Clamp a point between from and to.
+ !#zh
+ 返回指定限制区域后的向量。
+ 向量大于 max_inclusive 则返回 max_inclusive。
+ 向量小于 min_inclusive 则返回 min_inclusive。
+ 否则返回自身。
+
+ @example
+ ```js
+ var min_inclusive = cc.v2(0, 0);
+ var max_inclusive = cc.v2(20, 20);
+ var v1 = cc.pClamp(cc.v2(20, 20), min_inclusive, max_inclusive); // Vec2 {x: 20, y: 20};
+ var v2 = cc.pClamp(cc.v2(0, 0), min_inclusive, max_inclusive); // Vec2 {x: 0, y: 0};
+ var v3 = cc.pClamp(cc.v2(10, 10), min_inclusive, max_inclusive); // Vec2 {x: 10, y: 10};
+ ```
+ */
+ export function pClamp(p : Vec2, min_inclusive : Vec2, max_inclusive : Vec2) : Vec2;
+ /** !#en Quickly convert cc.Size to a cc.Vec2.
+ !#zh 快速转换 cc.Size 为 cc.Vec2。
+
+ @example
+ ```js
+ cc.pFromSize(new cc.size(20, 20)); // Vec2 {x: 20, y: 20};
+ ```
+ */
+ export function pFromSize(s : Size) : Vec2;
+ /** !#en
+ Run a math operation function on each point component
+ Math.abs, Math.fllor, Math.ceil, Math.round.
+ !#zh 通过运行指定的数学运算函数来计算指定的向量。
+
+ @example
+ ```js
+ cc.pCompOp(cc.p(-10, -10), Math.abs); // Vec2 {x: 10, y: 10};
+ ```
+ */
+ export function pCompOp(p : Vec2, opFunc : Function) : Vec2;
+ /** !#en
+ Linear Interpolation between two points a and b.
+ alpha == 0 ? a
+ alpha == 1 ? b
+ otherwise a value between a..b.
+ !#zh
+ 两个点 A 和 B 之间的线性插值。
+ alpha == 0 ? a
+ alpha == 1 ? b
+ 否则这个数值在 a ~ b 之间。
+
+ @example
+ ```js
+ cc.pLerp(cc.v2(20, 20), cc.v2(5, 5), 0.5); // Vec2 {x: 12.5, y: 12.5};
+ ```
+ */
+ export function pLerp(a : Vec2, b : Vec2, alpha : number) : Vec2;
+ /** !#en TODO
+ !#zh
+ 近似判断两个点是否相等。
+ 判断 2 个向量是否在指定数值的范围之内,如果在则返回 true,反之则返回 false。
+
+ @example
+ ```js
+ var a = cc.v2(20, 20);
+ var b = cc.v2(5, 5);
+ var b1 = cc.pFuzzyEqual(a, b, 10); // false;
+ var b2 = cc.pFuzzyEqual(a, b, 18); // true;
+ ```
+ */
+ export function pFuzzyEqual(a : Vec2, b : Vec2, variance : number) : boolean;
+ /** !#en Multiplies a nd b components, a.x*b.x, a.y*b.y.
+ !#zh 计算两个向量的每个分量的乘积, a.x * b.x, a.y * b.y。
+
+ @example
+ ```js
+ cc.pCompMult(acc.v2(20, 20), cc.v2(5, 5)); // Vec2 {x: 100, y: 100};
+ ```
+ */
+ export function pCompMult(a : Vec2, b : Vec2) : Vec2;
+ /** !#en TODO
+ !#zh 返回两个向量之间带正负号的弧度。
+ */
+ export function pAngleSigned(a : Vec2, b : Vec2) : number;
+ /** !#en TODO
+ !#zh 获取当前向量与指定向量之间的弧度角。
+ */
+ export function pAngle(a : Vec2, b : Vec2) : number;
+ /** !#en Rotates a point counter clockwise by the angle around a pivot.
+ !#zh 返回给定向量围绕指定轴心顺时针旋转一定弧度后的结果。
+ @param v v is the point to rotate
+ @param pivot pivot is the pivot, naturally
+ @param angle angle is the angle of rotation cw in radians
+ */
+ export function pRotateByAngle(v : Vec2, pivot : Vec2, angle : number) : Vec2;
+ /** !#en
+ A general line-line intersection test
+ indicating successful intersection of a line
+ note that to truly test intersection for segments we have to make
+ sure that s & t lie within [0..1] and for rays, make sure s & t > 0
+ the hit point is p3 + t * (p4 - p3);
+ the hit point also is p1 + s * (p2 - p1);
+ !#zh
+ 返回 A 为起点 B 为终点线段 1 所在直线和 C 为起点 D 为终点线段 2 所在的直线是否相交,
+ 如果相交返回 true,反之则为 false,参数 retP 是返回交点在线段 1、线段 2 上的比例。
+ @param A A is the startpoint for the first line P1 = (p1 - p2).
+ @param B B is the endpoint for the first line P1 = (p1 - p2).
+ @param C C is the startpoint for the second line P2 = (p3 - p4).
+ @param D D is the endpoint for the second line P2 = (p3 - p4).
+ @param retP retP.x is the range for a hitpoint in P1 (pa = p1 + s*(p2 - p1)),
+ retP.y is the range for a hitpoint in P3 (pa = p2 + t*(p4 - p3)).
+ */
+ export function pLineIntersect(A : Vec2, B : Vec2, C : Vec2, D : Vec2, retP : Vec2) : boolean;
+ /** !#en ccpSegmentIntersect return YES if Segment A-B intersects with segment C-D.
+ !#zh 返回线段 A - B 和线段 C - D 是否相交。
+ */
+ export function pSegmentIntersect(A : Vec2, B : Vec2, C : Vec2, D : Vec2) : boolean;
+ /** !#en ccpIntersectPoint return the intersection point of line A-B, C-D.
+ !#zh 返回线段 A - B 和线段 C - D 的交点。
+ */
+ export function pIntersectPoint(A : Vec2, B : Vec2, C : Vec2, D : Vec2) : Vec2;
+ /** !#en check to see if both points are equal.
+ !#zh 检查指定的 2 个向量是否相等。
+ @param A A ccp a
+ @param B B ccp b to be compared
+ */
+ export function pSameAs(A : Vec2, B : Vec2) : boolean;
+ /** !#en sets the position of the point to 0.
+ !#zh 设置指定向量归 0。
+ */
+ export function pZeroIn(v : Vec2) : void;
+ /** !#en copies the position of one point to another.
+ !#zh 令 v1 向量等同于 v2。
+ */
+ export function pIn(v1 : Vec2, v2 : Vec2) : void;
+ /** !#en multiplies the point with the given factor (inplace).
+ !#zh 向量缩放,结果保存到第一个向量。
+ */
+ export function pMultIn(point : Vec2, floatVar : number) : void;
+ /** !#en subtracts one point from another (inplace).
+ !#zh 向量减法,结果保存到第一个向量。
+ */
+ export function pSubIn(v1 : Vec2, v2 : Vec2) : void;
+ /** !#en adds one point to another (inplace).
+ !#zh 向量加法,结果保存到第一个向量。
+ */
+ export function pAddIn(v1 : Vec2, v2 : Vec2) : void;
+ /** !#en normalizes the point (inplace).
+ !#zh 规范化 v 向量,设置 v 向量长度为 1。
+ */
+ export function pNormalizeIn(v : Vec2) : void;
+ /** !#en
+ The convenience method to create a new Rect.
+ see {{#crossLink "Rect/Rect:method"}}cc.Rect{{/crossLink}}
+ !#zh
+ 该方法用来快速创建一个新的矩形。{{#crossLink "Rect/Rect:method"}}cc.Rect{{/crossLink}}
+
+ @example
+ ```js
+ var a = new cc.rect(0 , 0, 10, 0);
+ ```
+ */
+ export function rect(x? : Number[]|number, y? : number, w? : number, h? : number) : Rect;
+ /** !#en Check whether a rect's value equals to another.
+ !#zh 判断两个矩形是否相等。
+ @param rect1 !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ @param rect2 !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ var b = new cc.rect(0, 0, 5, 5);
+ cc.rectEqualToRect(a, b); // false;
+ var c = new cc.rect(0, 0, 5, 5);
+ cc.rectEqualToRect(b, c); // true;
+ ```
+ */
+ export function rectEqualToRect(rect1: (x: number, y: number, w: number, h: number) => void, rect2: (x: number, y: number, w: number, h: number) => void) : boolean;
+ /** !#en Check whether the rect1 contains rect2.
+ !#zh
+ 检查 rect1 矩形是否包含 rect2 矩形。
+ 注意:如果要允许 rect1 和 rect2 的边界重合,应该用 cc.rectOverlapsRect
+ @param rect1 !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ @param rect2 !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 20, 20);
+ var b = new cc.rect(10, 10, 20, 20);
+ cc.rectContainsRect(a, b); // true;
+ ```
+ */
+ export function rectContainsRect(rect1: (x: number, y: number, w: number, h: number) => void, rect2: (x: number, y: number, w: number, h: number) => void) : boolean;
+ /** !#en Returns the rightmost x-value of a rect.
+ !#zh 返回矩形在 x 轴上的最大值
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(10, 0, 20, 20);
+ cc.rectGetMaxX(a); // 30;
+ ```
+ */
+ export function rectGetMaxX(rect: (x: number, y: number, w: number, h: number) => void) : number;
+ /** !#en Return the midpoint x-value of a rect.
+ !#zh 返回矩形在 x 轴上的中点。
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(10, 0, 20, 20);
+ cc.rectGetMidX(a); // 20;
+ ```
+ */
+ export function rectGetMidX(rect: (x: number, y: number, w: number, h: number) => void) : number;
+ /** !#en Returns the leftmost x-value of a rect.
+ !#zh 返回矩形在 x 轴上的最小值。
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(10, 0, 20, 20);
+ cc.rectGetMinX(a); // 10;
+ ```
+ */
+ export function rectGetMinX(rect: (x: number, y: number, w: number, h: number) => void) : number;
+ /** !#en Return the topmost y-value of a rect.
+ !#zh 返回矩形在 y 轴上的最大值。
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 10, 20, 20);
+ cc.rectGetMaxY(a); // 30;
+ ```
+ */
+ export function rectGetMaxY(rect: (x: number, y: number, w: number, h: number) => void) : number;
+ /** !#en Return the midpoint y-value of `rect'.
+ !#zh 返回矩形在 y 轴上的中点。
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 10, 20, 20);
+ cc.rectGetMidY(a); // 20;
+ ```
+ */
+ export function rectGetMidY(rect: (x: number, y: number, w: number, h: number) => void) : number;
+ /** !#en Return the bottommost y-value of a rect.
+ !#zh 返回矩形在 y 轴上的最小值。
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 10, 20, 20);
+ cc.rectGetMinY(a); // 10;
+ ```
+ */
+ export function rectGetMinY(rect: (x: number, y: number, w: number, h: number) => void) : number;
+ /** !#en Check whether a rect contains a point.
+ !#zh 检查一个矩形是否包含某个坐标点。
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 10, 20, 20);
+ var b = cc.v2(0, 10, 10, 10);
+ cc.rectContainsPoint(a, b); // true;
+ ```
+ */
+ export function rectContainsPoint(rect: (x: number, y: number, w: number, h: number) => void, point : Vec2) : boolean;
+ /** !#en Check whether a rect intersect with another.
+ !#zh 检查一个矩形是否与另一个相交。
+ @param rectA !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ @param rectB !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 10, 20, 20);
+ var b = new cc.rect(0, 10, 10, 10);
+ cc.rectIntersectsRect(a, b); // true;
+ ```
+ */
+ export function rectIntersectsRect(rectA: (x: number, y: number, w: number, h: number) => void, rectB: (x: number, y: number, w: number, h: number) => void) : boolean;
+ /** !#en Check whether a rect overlaps another.
+ !#zh 检查一个矩形是否重叠另一个。
+ @param rectA !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ @param rectB !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 10, 20, 20);
+ var b = new cc.rect(0, 10, 10, 10);
+ cc.rectOverlapsRect(a, b); // true;
+ ```
+ */
+ export function rectOverlapsRect(rectA: (x: number, y: number, w: number, h: number) => void, rectB: (x: number, y: number, w: number, h: number) => void) : boolean;
+ /** !#en Returns the smallest rectangle that contains the two source rectangles.
+ !#zh 返回一个包含两个指定矩形的最小矩形。
+ @param rectA !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ @param rectB !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 10, 20, 20);
+ var b = new cc.rect(0, 10, 10, 10);
+ cc.rectUnion(a, b); // Rect {x: 0, y: 10, width: 20, height: 20};
+ ```
+ */
+ export function rectUnion(rectA: (x: number, y: number, w: number, h: number) => void, rectB: (x: number, y: number, w: number, h: number) => void) : Rect;
+ /** !#en Returns the overlapping portion of 2 rectangles.
+ !#zh 返回 2 个矩形重叠的部分。
+ @param rectA !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ @param rectB !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 10, 20, 20);
+ var b = new cc.rect(0, 10, 10, 10);
+ cc.rectIntersection(a, b); // Rect {x: 0, y: 10, width: 10, height: 10};
+ ```
+ */
+ export function rectIntersection(rectA: (x: number, y: number, w: number, h: number) => void, rectB: (x: number, y: number, w: number, h: number) => void) : Rect;
+ export function V3F_C4B_T2F_QuadZero() : V3F_C4B_T2F_Quad;
+ /**
+ */
+ export function V3F_C4B_T2F_QuadCopy(sourceQuad: (tl: V3F_C4B_T2F, bl: V3F_C4B_T2F, tr: V3F_C4B_T2F, br: V3F_C4B_T2F, arrayBuffer: any[], offset: number) => void) : V3F_C4B_T2F_Quad;
+ /**
+ */
+ export function V3F_C4B_T2F_QuadsCopy(sourceQuads : any[]) : any[];
+ /** !#en The convenience method to create a new {{#crossLink "Vec2"}}cc.Vec2{{/crossLink}}.
+ !#zh 通过该简便的函数进行创建 {{#crossLink "Vec2"}}cc.Vec2{{/crossLink}} 对象。
+
+ @example
+ ```js
+ var v1 = cc.v2();
+ var v2 = cc.v2(0, 0);
+ var v3 = cc.v2(v2);
+ var v4 = cc.v2({x: 100, y: 100});
+ ```
+ */
+ export function v2(x? : number|any, y? : number) : Vec2;
+ /** !#en The convenience method to creates a new {{#crossLink "Vec2"}}cc.Vec2{{/crossLink}}.
+ !#zh 通过该简便的函数进行创建 {{#crossLink "Vec2"}}cc.Vec2{{/crossLink}} 对象。
+ @param x a Number or a size object
+
+ @example
+ ```js
+ var point1 = cc.p();
+ var point2 = cc.p(100, 100);
+ var point3 = cc.p(point2);
+ var point4 = cc.p({x: 100, y: 100});
+ ```
+ */
+ export function p(x? : number|any, y? : number) : Vec2;
+ /** !#en Check whether a point's value equals to another.
+ !#zh 判断两个向量是否相等。
+ @param point1 !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ @param point2 !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ */
+ export function pointEqualToPoint(point1: (x: number, y: number) => void, point2: (x: number, y: number) => void) : boolean;
+ /** !#en Enum for debug modes.
+ !#zh 调试模式 */
+ export enum DebugMode {
+ NONE = 0,
+ INFO = 0,
+ WARN = 0,
+ ERROR = 0,
+ INFO_FOR_WEB_PAGE = 0,
+ WARN_FOR_WEB_PAGE = 0,
+ ERROR_FOR_WEB_PAGE = 0,
+ }
+ /** !#en cc.audioEngine is the singleton object, it provide simple audio APIs.
+ !#zh
+ cc.audioengine是单例对象。
+ 主要用来播放背景音乐和音效,背景音乐同一时间只能播放一个,而音效则可以同时播放多个。
+ 注意:
+ 在 Android 系统浏览器上,不同浏览器,不同版本的效果不尽相同。
+ 比如说:大多数浏览器都需要用户物理交互才可以开始播放音效,有一些不支持 WebAudio,
+ 有一些不支持多音轨播放。总之如果对音乐依赖比较强,请做尽可能多的测试。 */
+ export class audioEngine {
+ /** !#en Play music.
+ !#zh
+ 播放指定音乐,并可以设置是否循环播放。
+ 注意:音乐播放接口不支持多音轨,同一时间只能播放一个音乐。
+ @param url The path of the music file without filename extension.
+ @param loop Whether the music loop or not.
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.playMusic(path, false);
+ ```
+ */
+ playMusic(url : string, loop : boolean) : void;
+ /** !#en Stop playing music.
+ !#zh 停止当前音乐。
+ @param releaseData If release the music data or not.As default value is false.
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.stopMusic();
+ ```
+ */
+ stopMusic(releaseData? : boolean) : void;
+ /** !#en Pause playing music.
+ !#zh 暂停正在播放音乐。
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.pauseMusic();
+ ```
+ */
+ pauseMusic() : void;
+ /** !#en Resume playing music.
+ !#zh 恢复音乐播放。
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.resumeMusic();
+ ```
+ */
+ resumeMusic() : void;
+ /** !#en Rewind playing music.
+ !#zh 从头开始重新播放当前音乐。
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.rewindMusic();
+ ```
+ */
+ rewindMusic() : void;
+ /** !#en The volume of the music max value is 1.0,the min value is 0.0 .
+ !#zh 获取音量(0.0 ~ 1.0)。
+
+ @example
+ ```js
+ //example
+ var volume = cc.audioEngine.getMusicVolume();
+ ```
+ */
+ getMusicVolume() : number;
+ /** !#en Set the volume of music.
+ !#zh 设置音量(0.0 ~ 1.0)。
+ @param volume Volume must be in 0.0~1.0 .
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.setMusicVolume(0.5);
+ ```
+ */
+ setMusicVolume(volume : number) : void;
+ /** !#en Whether the music is playing.
+ !#zh 音乐是否正在播放。
+
+ @example
+ ```js
+ //example
+ if (cc.audioEngine.isMusicPlaying()) {
+ cc.log("music is playing");
+ }
+ else {
+ cc.log("music is not playing");
+ }
+ ```
+ */
+ isMusicPlaying() : boolean;
+ /** !#en Play sound effect.
+ !#zh
+ 播放指定音效,并可以设置是否循环播放。
+ 注意:在部分不支持多音轨的浏览器上,这个接口会失效,请使用 playMusic
+ @param url The path of the sound effect with filename extension.
+ @param loop Whether to loop the effect playing, default value is false
+
+ @example
+ ```js
+ //example
+ var soundId = cc.audioEngine.playEffect(path);
+ ```
+ */
+ playEffect(url : string, loop : boolean, volume : boolean) : number;
+ /** !#en Set the volume of sound effects.
+ !#zh 设置音效音量(0.0 ~ 1.0)。
+ @param volume Volume must be in 0.0~1.0 .
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.setEffectsVolume(0.5);
+ ```
+ */
+ setEffectsVolume(volume : number) : void;
+ /** !#en The volume of the effects max value is 1.0,the min value is 0.0 .
+ !#zh 获取音效音量(0.0 ~ 1.0)。
+
+ @example
+ ```js
+ //example
+ var effectVolume = cc.audioEngine.getEffectsVolume();
+ ```
+ */
+ getEffectsVolume() : number;
+ /** !#en Pause playing sound effect.
+ !#zh 暂停指定的音效。
+ @param audio The return value of function playEffect.
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.pauseEffect(audioID);
+ ```
+ */
+ pauseEffect(audio : number) : void;
+ /** !#en Pause all playing sound effect.
+ !#zh 暂停现在正在播放的所有音效。
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.pauseAllEffects();
+ ```
+ */
+ pauseAllEffects() : void;
+ /** !#en Resume playing sound effect.
+ !#zh 恢复播放指定的音效。
+ @param audioID The return value of function playEffect.
+ */
+ resumeEffect(audioID : number) : void;
+ /** !#en Resume all playing sound effect.
+ !#zh 恢复播放所有之前暂停的所有音效。
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.resumeAllEffects();
+ ```
+ */
+ resumeAllEffects() : void;
+ /** !#en Stop playing sound effect.
+ !#zh 停止播放指定音效。
+ @param audioID The return value of function playEffect.
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.stopEffect(audioID);
+ ```
+ */
+ stopEffect(audioID : number) : void;
+ /** !#en Stop all playing sound effects.
+ !#zh 停止正在播放的所有音效。
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.stopAllEffects();
+ ```
+ */
+ stopAllEffects() : void;
+ /** !#en Unload the preloaded effect from internal buffer.
+ !#zh 卸载预加载的音效。
+
+ @example
+ ```js
+ //example
+ cc.audioEngine.unloadEffect(EFFECT_FILE);
+ ```
+ */
+ unloadEffect(url : string) : void;
+ /** !#en End music and effects.
+ !#zh 停止所有音乐和音效的播放。
+ */
+ end() : void;
+ }
+ /** !#en Class for animation data handling.
+ !#zh 动画剪辑,用于存储动画数据。 */
+ export class AnimationClip extends Asset {
+ constructor();
+ /** !#en Duration of this animation.
+ !#zh 动画的持续时间。 */
+ duration : number;
+ /** !#en FrameRate of this animation.
+ !#zh 动画的帧速率。 */
+ sample : number;
+ /** !#en Speed of this animation.
+ !#zh 动画的播放速度。 */
+ speed : number;
+ /** !#en WrapMode of this animation.
+ !#zh 动画的循环模式。 */
+ wrapMode : WrapMode;
+ /** !#en Curve data.
+ !#zh 曲线数据。 */
+ curveData : any;
+ /** !#en Event data.
+ !#zh 事件数据。 */
+ events : any[];
+ /** !#en Crate clip with a set of sprite frames
+ !#zh 使用一组序列帧图片来创建动画剪辑
+
+ @example
+ ```js
+ var clip = cc.AnimationClip.createWithSpriteFrames(spriteFrames, 10);
+ ```
+ */
+ createWithSpriteFrames(spriteFrames : [SpriteFrame], sample : number) : AnimationClip;
+ }
+ /** !#en
+ The AnimationState gives full control over animation playback process.
+ In most cases the Animation Component is sufficient and easier to use. Use the AnimationState if you need full control.
+ !#zh
+ AnimationState 完全控制动画播放过程。
+ 大多数情况下 动画组件 是足够和易于使用的。如果您需要更多的动画控制接口,请使用 AnimationState。 */
+ export class AnimationState extends AnimationNode {
+ constructor();
+ /**
+ */
+ AnimationState(clip : AnimationClip, name? : string) : AnimationState;
+ /** !#en The clip that is being played by this animation state.
+ !#zh 此动画状态正在播放的剪辑。 */
+ clip : AnimationClip;
+ /** !#en The name of the playing animation.
+ !#zh 动画的名字 */
+ name : string;
+ }
+ /** undefined */
+ export class Playable {
+ constructor();
+ /** !#en Is playing or paused in play mode?
+ !#zh 当前是否正在播放。 */
+ isPlaying : boolean;
+ /** !#en Is currently paused? This can be true even if in edit mode(isPlaying == false).
+ !#zh 当前是否正在暂停 */
+ isPaused : boolean;
+ /** !#en Play this animation.
+ !#zh 播放动画。
+ */
+ play() : void;
+ /** !#en Stop this animation.
+ !#zh 停止动画播放。
+ */
+ stop() : void;
+ /** !#en Pause this animation.
+ !#zh 暂停动画。
+ */
+ pause() : void;
+ /** !#en Resume this animation.
+ !#zh 重新播放动画。
+ */
+ resume() : void;
+ /** !#en Perform a single frame step.
+ !#zh 执行一帧动画。
+ */
+ step() : void;
+ }
+ /** !#en Specifies how time is treated when it is outside of the keyframe range of an Animation.
+ !#zh 动画使用的循环模式。 */
+ export enum WrapMode {
+ Default = 0,
+ Normal = 0,
+ Reverse = 0,
+ Loop = 0,
+ LoopReverse = 0,
+ PingPong = 0,
+ PingPongReverse = 0,
+ }
+ /** !#en The abstract interface for all playing animation.
+ !#zh 所有播放动画的抽象接口。 */
+ export class AnimationNodeBase extends Playable {
+ constructor();
+ }
+ /** !#en The collection and instance of playing animations.
+ !#zh 动画曲线的集合,根据当前时间计算出每条曲线的状态。 */
+ export class AnimationNode extends AnimationNodeBase {
+ /**
+ @param timingInput This dictionary is used as a convenience for specifying the timing properties of an Animation in bulk.
+ */
+ constructor(animator : Animator, curves? : AnimCurve[], timingInput? : any);
+ /** !#en The curves list.
+ !#zh 曲线列表。 */
+ curves : AnimCurve[];
+ /** !#en The start delay which represents the number of seconds from an animation's start time to the start of
+ the active interval.
+ !#zh 延迟多少秒播放。 */
+ delay : number;
+ /** !#en The animation's iteration count property.
+
+ A real number greater than or equal to zero (including positive infinity) representing the number of times
+ to repeat the animation node.
+
+ Values less than zero and NaN values are treated as the value 1.0 for the purpose of timing model
+ calculations.
+
+ !#zh 迭代次数,指动画播放多少次后结束, normalize time。 如 2.5(2次半) */
+ repeatCount : number;
+ /** !#en The iteration duration of this animation in seconds. (length)
+ !#zh 单次动画的持续时间,秒。 */
+ duration : number;
+ /** !#en The animation's playback speed. 1 is normal playback speed.
+ !#zh 播放速率。 */
+ speed : number;
+ /** !#en
+ Wrapping mode of the playing animation.
+ Notice : dynamic change wrapMode will reset time and repeatCount property
+ !#zh
+ 动画循环方式。
+ 需要注意的是,动态修改 wrapMode 时,会重置 time 以及 repeatCount */
+ wrapMode : WrapMode;
+ /** !#en The current time of this animation in seconds.
+ !#zh 动画当前的时间,秒。 */
+ time : number;
+ }
+ /** !#en Base class cc.Action for action classes.
+ !#zh Action 类是所有动作类型的基类。 */
+ export class Action {
+ /** !#en
+ to copy object with deep copy.
+ returns a clone of action.
+ !#zh 返回一个克隆的动作。
+ */
+ clone() : Action;
+ /** !#en
+ return true if the action has finished.
+ !#zh 如果动作已完成就返回 true。
+ */
+ isDone() : boolean;
+ /** !#en get the target.
+ !#zh 获取当前目标节点。
+ */
+ getTarget() : Node;
+ /** !#en The action will modify the target properties.
+ !#zh 设置目标节点。
+ */
+ setTarget(target : Node) : void;
+ /** !#en get the original target.
+ !#zh 获取原始目标节点。
+ */
+ getOriginalTarget() : Node;
+ /** !#en get tag number.
+ !#zh 获取用于识别动作的标签。
+ */
+ getTag() : number;
+ /** !#en set tag number.
+ !#zh 设置标签,用于识别动作。
+ */
+ setTag(tag : number) : void;
+ /** !#en Default Action tag.
+ !#zh 默认动作标签。 */
+ TAG_INVALID : number;
+ }
+ /** !#en
+ Base class actions that do have a finite time duration.
+ Possible actions:
+ - An action with a duration of 0 seconds.
+ - An action with a duration of 35.5 seconds.
+
+ Infinite time actions are valid
+ !#zh 有限时间动作,这种动作拥有时长 duration 属性。 */
+ export class FiniteTimeAction extends Action {
+ /** !#en get duration of the action. (seconds).
+ !#zh 获取动作以秒为单位的持续时间。
+ */
+ getDuration() : number;
+ /** !#en set duration of the action. (seconds).
+ !#zh 设置动作以秒为单位的持续时间。
+ */
+ setDuration(duration : number) : void;
+ /** !#en
+ Returns a reversed action.
+ For example:
+ - The action will be x coordinates of 0 move to 100.
+ - The reversed action will be x of 100 move to 0.
+ - Will be rewritten
+ !#zh 返回一个新的动作,执行与原动作完全相反的动作。
+ */
+ reverse() : void;
+ /** !#en
+ to copy object with deep copy.
+ returns a clone of action.
+ !#zh 返回一个克隆的动作。
+ */
+ clone() : FiniteTimeAction;
+ }
+ /** !#en Base class for Easing actions.
+ !#zh 所有缓动动作基类,用于修饰 ActionInterval。 */
+ export class ActionEase extends ActionInterval {
+ }
+ /** !#en Base class for Easing actions with rate parameters
+ !#zh 拥有速率属性的缓动动作基类。 */
+ export class EaseRateAction extends ActionEase {
+ }
+ /** !#en Ease Elastic abstract class.
+ !#zh 弹性缓动动作基类。 */
+ export class EaseElastic extends ActionEase {
+ }
+ /** !#en cc.EaseBounce abstract class.
+ !#zh 反弹缓动动作基类。 */
+ export class EaseBounce extends ActionEase {
+ }
+ /** !#en Instant actions are immediate actions. They don't have a duration like the ActionInterval actions.
+ !#zh 即时动作,这种动作立即就会执行,继承自 FiniteTimeAction。 */
+ export class ActionInstant extends FiniteTimeAction {
+ }
+ /** !#en
+ An interval action is an action that takes place within a certain period of time.
+ It has an start time, and a finish time. The finish time is the parameter
+ duration plus the start time.
+
+ These CCActionInterval actions have some interesting properties, like:
+ - They can run normally (default)
+ - They can run reversed with the reverse method
+ - They can run with the time altered with the Accelerate, AccelDeccel and Speed actions.
+
+ For example, you can simulate a Ping Pong effect running the action normally and
+ then running it again in Reverse mode.
+ !#zh 时间间隔动作,这种动作在已定时间内完成,继承 FiniteTimeAction。 */
+ export class ActionInterval extends FiniteTimeAction {
+ /** !#en Implementation of ease motion.
+ !#zh 缓动运动。
+
+ @example
+
+ action.easeing(cc.easeIn(3.0));,```js
+ action.easeing(cc.easeIn(3.0));
+ ```
+ */
+ easing(easeObj : any) : ActionInterval;
+ /** !#en
+ Repeats an action a number of times.
+ To repeat an action forever use the CCRepeatForever action.
+ !#zh 重复动作可以按一定次数重复一个动作,使用 RepeatForever 动作来永远重复一个动作。
+ */
+ repeat(times : void) : ActionInterval;
+ /** !#en
+ Repeats an action for ever.
+ To repeat the an action for a limited number of times use the Repeat action.
+ !#zh 永远地重复一个动作,有限次数内重复一个动作请使用 Repeat 动作。
+ */
+ repeatForever() : ActionInterval;
+ }
+ /** !#en
+ cc.ActionManager is a class that can manage actions.
+ Normally you won't need to use this class directly. 99% of the cases you will use the CCNode interface,
+ which uses this class's singleton object.
+ But there are some cases where you might need to use this class.
+ Examples:
+ - When you want to run an action where the target is different from a CCNode.
+ - When you want to pause / resume the actions
+ !#zh
+ cc.ActionManager 是可以管理动作的单例类。
+ 通常你并不需要直接使用这个类,99%的情况您将使用 CCNode 的接口。
+ 但也有一些情况下,您可能需要使用这个类。
+ 例如:
+ - 当你想要运行一个动作,但目标不是 CCNode 类型时。
+ - 当你想要暂停/恢复动作时。 */
+ export class ActionManager {
+ /** !#en
+ Adds an action with a target.
+ If the target is already present, then the action will be added to the existing target.
+ If the target is not present, a new instance of this target will be created either paused or not, and the action will be added to the newly created target.
+ When the target is paused, the queued actions won't be 'ticked'.
+ !#zh
+ 增加一个动作,同时还需要提供动作的目标对象,目标对象是否暂停作为参数。
+ 如果目标已存在,动作将会被直接添加到现有的节点中。
+ 如果目标不存在,将为这一目标创建一个新的实例,并将动作添加进去。
+ 当目标状态的 paused 为 true,动作将不会被执行
+ */
+ addAction(action : Action, target : Node, paused : boolean) : void;
+ /** !#en Removes all actions from all the targets.
+ !#zh 移除所有对象的所有动作。
+ */
+ removeAllActions() : void;
+ /** !#en
+ Removes all actions from a certain target.
+ All the actions that belongs to the target will be removed.
+ !#zh
+ 移除指定对象上的所有动作。
+ 属于该目标的所有的动作将被删除。
+ */
+ removeAllActionsFromTarget(target : any, forceDelete : boolean) : void;
+ /** !#en Removes an action given an action reference.
+ !#zh 移除指定的动作。
+ */
+ removeAction(action : Action) : void;
+ /** !#en Removes an action given its tag and the target.
+ !#zh 删除指定对象下特定标签的一个动作,将删除首个匹配到的动作。
+ */
+ removeActionByTag(tag : number, target : any) : void;
+ /** !#en Gets an action given its tag an a target.
+ !#zh 通过目标对象和标签获取一个动作。
+ */
+ getActionByTag(tag : number, target : any) : Action;
+ /** !#en
+ Returns the numbers of actions that are running in a certain target.
+ Composable actions are counted as 1 action.
+ Example:
+ - If you are running 1 Sequence of 7 actions, it will return 1.
+ - If you are running 7 Sequences of 2 actions, it will return 7.
+ !#zh
+ 返回指定对象下所有正在运行的动作数量。
+ 组合动作被算作一个动作。
+ 例如:
+ - 如果您正在运行 7 个动作组成的序列动作(Sequence),这个函数将返回 1。
+ - 如果你正在运行 2 个序列动作(Sequence)和 5 个普通动作,这个函数将返回 7。
+ */
+ numberOfRunningActionsInTarget(target : any) : number;
+ /** !#en Pauses the target: all running actions and newly added actions will be paused.
+ !#zh 暂停指定对象:所有正在运行的动作和新添加的动作都将会暂停。
+ */
+ pauseTarget(target : any) : void;
+ /** !#en Resumes the target. All queued actions will be resumed.
+ !#zh 让指定目标恢复运行。在执行序列中所有被暂停的动作将重新恢复运行。
+ */
+ resumeTarget(target : any) : void;
+ /** !#en Pauses all running actions, returning a list of targets whose actions were paused.
+ !#zh 暂停所有正在运行的动作,返回一个包含了那些动作被暂停了的目标对象的列表。
+ */
+ pauseAllRunningActions() : any[];
+ /** !#en Resume a set of targets (convenience function to reverse a pauseAllRunningActions or pauseTargets call).
+ !#zh 让一组指定对象恢复运行(用来逆转 pauseAllRunningActions 效果的便捷函数)。
+ */
+ resumeTargets(targetsToResume : any[]) : void;
+ /** !#en Pause a set of targets.
+ !#zh 暂停一组指定对象。
+ */
+ pauseTargets(targetsToPause : any[]) : void;
+ /** !#en
+ purges the shared action manager. It releases the retained instance.
+ because it uses this, so it can not be static.
+ !#zh
+ 清除共用的动作管理器。它释放了持有的实例。
+ 因为它使用 this,因此它不能是静态的。
+ */
+ purgeSharedManager() : void;
+ /** !#en The ActionManager update。
+ !#zh ActionManager 主循环。
+ @param dt delta time in seconds
+ */
+ update(dt : number) : void;
+ }
+ /** !#en
+
+ ATTENTION: USE cc.director INSTEAD OF cc.Director.
+ cc.director is a singleton object which manage your game's logic flow.
+ Since the cc.director is a singleton, you don't need to call any constructor or create functions,
+ the standard way to use it is by calling:
+ - cc.director.methodName();
+
+ It creates and handle the main Window and manages how and when to execute the Scenes.
+
+ The cc.director is also responsible for:
+ - initializing the OpenGL context
+ - setting the OpenGL pixel format (default on is RGB565)
+ - setting the OpenGL buffer depth (default on is 0-bit)
+ - setting the color for clear screen (default one is BLACK)
+ - setting the projection (default one is 3D)
+ - setting the orientation (default one is Portrait)
+
+
+ The cc.director also sets the default OpenGL context:
+ - GL_TEXTURE_2D is enabled
+ - GL_VERTEX_ARRAY is enabled
+ - GL_COLOR_ARRAY is enabled
+ - GL_TEXTURE_COORD_ARRAY is enabled
+
+
+ cc.director also synchronizes timers with the refresh rate of the display.
+ Features and Limitations:
+ - Scheduled timers & drawing are synchronizes with the refresh rate of the display
+ - Only supports animation intervals of 1/60 1/30 & 1/15
+
+
+ !#zh
+
+ 注意:用 cc.director 代替 cc.Director。
+ cc.director 一个管理你的游戏的逻辑流程的单例对象。
+ 由于 cc.director 是一个单例,你不需要调用任何构造函数或创建函数,
+ 使用它的标准方法是通过调用:
+ - cc.director.methodName();
+
+ 它创建和处理主窗口并且管理什么时候执行场景。
+
+ cc.director 还负责:
+ - 初始化 OpenGL 环境。
+ - 设置OpenGL像素格式。(默认是 RGB565)
+ - 设置OpenGL缓冲区深度 (默认是 0-bit)
+ - 设置空白场景的颜色 (默认是 黑色)
+ - 设置投影 (默认是 3D)
+ - 设置方向 (默认是 Portrait)
+
+ cc.director 设置了 OpenGL 默认环境
+ - GL_TEXTURE_2D 启用。
+ - GL_VERTEX_ARRAY 启用。
+ - GL_COLOR_ARRAY 启用。
+ - GL_TEXTURE_COORD_ARRAY 启用。
+
+
+ cc.director 也同步定时器与显示器的刷新速率。
+
+ 特点和局限性:
+ - 将计时器 & 渲染与显示器的刷新频率同步。
+ - 只支持动画的间隔 1/60 1/30 & 1/15。
+
*/
+ export class Director {
+ /** !#en
+ Converts an OpenGL coordinate to a view coordinate
+ Useful to convert node points to window points for calls such as glScissor
+ Implementation can be found in CCDirectorWebGL.
+ !#zh 将触摸点的 WebGL View 坐标转换为屏幕坐标。
+ */
+ convertToUI(glPoint : Vec2) : Vec2;
+ /** !#en
+ Returns the size of the WebGL view in points.
+ It takes into account any possible rotation (device orientation) of the window.
+ !#zh 获取视图的大小,以点为单位。
+ */
+ getWinSize() : Size;
+ /** !#en
+ Returns the size of the OpenGL view in pixels.
+ It takes into account any possible rotation (device orientation) of the window.
+ On Mac winSize and winSizeInPixels return the same value.
+ !#zh 获取视图大小,以像素为单位。
+ */
+ getWinSizeInPixels() : Size;
+ /** !#en Returns the visible size of the running scene.
+ !#zh 获取运行场景的可见大小。
+ */
+ getVisibleSize() : Size;
+ /** !#en Returns the visible origin of the running scene.
+ !#zh 获取视图在游戏内容中的坐标原点。
+ */
+ getVisibleOrigin() : Vec2;
+ /** !#en Pause the director's ticker, only involve the game logic execution.
+ It won't pause the rendering process nor the event manager.
+ If you want to pause the entier game including rendering, audio and event,
+ please use {{#crossLink "Game.pause"}}cc.game.pause{{/crossLink}}
+ !#zh 暂停正在运行的场景,该暂停只会停止游戏逻辑执行,但是不会停止渲染和 UI 响应。
+ 如果想要更彻底得暂停游戏,包含渲染,音频和事件,请使用 {{#crossLink "Game.pause"}}cc.game.pause{{/crossLink}}。
+ */
+ pause() : void;
+ /** !#en
+ Run a scene. Replaces the running scene with a new one or enter the first scene.
+ The new scene will be launched immediately.
+ !#zh 立刻切换指定场景。
+ @param scene The need run scene.
+ @param onBeforeLoadScene The function invoked at the scene before loading.
+ @param onLaunched The function invoked at the scene after launch.
+ */
+ runSceneImmediate(scene : Scene, onBeforeLoadScene? : Function, onLaunched? : Function) : void;
+ /** !#en
+ Run a scene. Replaces the running scene with a new one or enter the first scene.
+ The new scene will be launched at the end of the current frame.
+ !#zh 运行指定场景。
+ @param scene The need run scene.
+ @param onBeforeLoadScene The function invoked at the scene before loading.
+ @param onLaunched The function invoked at the scene after launch.
+ */
+ runScene(scene : Scene, onBeforeLoadScene? : Function, onLaunched? : Function) : void;
+ /** !#en Loads the scene by its name.
+ !#zh 通过场景名称进行加载场景。
+ @param sceneName The name of the scene to load.
+ @param onLaunched callback, will be called after scene launched.
+ */
+ loadScene(sceneName : string, onLaunched? : Function) : boolean;
+ /** !#en
+ Preloads the scene to reduces loading time. You can call this method at any time you want.
+ After calling this method, you still need to launch the scene by `cc.director.loadScene`.
+ It will be totally fine to call `cc.director.loadScene` at any time even if the preloading is not
+ yet finished, the scene will be launched after loaded automatically.
+ !#zh 预加载场景,你可以在任何时候调用这个方法。
+ 调用完后,你仍然需要通过 `cc.director.loadScene` 来启动场景,因为这个方法不会执行场景加载操作。
+ 就算预加载还没完成,你也可以直接调用 `cc.director.loadScene`,加载完成后场景就会启动。
+ @param sceneName The name of the scene to preload.
+ @param onLoaded callback, will be called after scene loaded.
+ */
+ preloadScene(sceneName : string, onLoaded: (error: Error) => void) : void;
+ /** !#en Resume game logic execution after pause, if the current scene is not paused, nothing will happen.
+ !#zh 恢复暂停场景的游戏逻辑,如果当前场景没有暂停将没任何事情发生。
+ */
+ resume() : void;
+ /** !#en
+ Enables or disables WebGL depth test.
+ Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js
+ !#zh 启用/禁用深度测试(在 Canvas 渲染模式下不会生效)。
+ */
+ setDepthTest(on : boolean) : void;
+ /** !#en
+ set color for clear screen.
+ Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js
+ !#zh 设置场景的默认擦除颜色(支持白色全透明,但不支持透明度为中间值)。
+ */
+ setClearColor(clearColor : Color) : void;
+ /** !#en
+ Sets an OpenGL projection.
+ Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js.
+ !#zh 设置 OpenGL 投影。
+ */
+ setProjection(projection : number) : void;
+ /** !#en
+ Update the view port.
+ Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js.
+ !#zh 设置视窗(请不要主动调用这个接口,除非你知道你在做什么)。
+ */
+ setViewport() : void;
+ /** !#en
+ Sets an OpenGL projection.
+ Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js.
+ !#zh 获取 OpenGL 投影。
+ */
+ getProjection() : number;
+ /** !#en
+ Enables/disables OpenGL alpha blending.
+ Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js.
+ !#zh 启用/禁用 透明度融合。
+ */
+ setAlphaBlending(on : boolean) : void;
+ /** !#en
+ Returns whether or not the replaced scene will receive the cleanup message.
+ If the new scene is pushed, then the old scene won't receive the "cleanup" message.
+ If the new scene replaces the old one, the it will receive the "cleanup" message.
+ !#zh
+ 更换场景时是否接收清理消息。
+ 如果新场景是采用 push 方式进入的,那么旧的场景将不会接收到 “cleanup” 消息。
+ 如果新场景取代旧的场景,它将会接收到 “cleanup” 消息。
+ */
+ isSendCleanupToScene() : boolean;
+ /** !#en Returns current logic Scene.
+ !#zh 获取当前逻辑场景。
+
+ @example
+ ```js
+ // This will help you to get the Canvas node in scene
+ cc.director.getScene().getChildByName('Canvas');
+ ```
+ */
+ getScene() : Scene;
+ /** !#en Returns the FPS value.
+ !#zh 获取单位帧执行时间。
+ */
+ getAnimationInterval() : number;
+ /** !#en Returns whether or not to display the FPS informations.
+ !#zh 获取是否显示 FPS 信息。
+ */
+ isDisplayStats() : boolean;
+ /** !#en Sets whether display the FPS on the bottom-left corner.
+ !#zh 设置是否在左下角显示 FPS。
+ */
+ setDisplayStats(displayStats : boolean) : void;
+ /** !#en Returns seconds per frame.
+ !#zh 获取实际记录的上一帧执行时间,可能与单位帧执行时间(AnimationInterval)有出入。
+ */
+ getSecondsPerFrame() : number;
+ /** !#en Returns whether next delta time equals to zero.
+ !#zh 返回下一个 “delta time” 是否等于零。
+ */
+ isNextDeltaTimeZero() : boolean;
+ /** !#en Returns whether or not the Director is paused.
+ !#zh 是否处于暂停状态。
+ */
+ isPaused() : boolean;
+ /** !#en Returns how many frames were called since the director started.
+ !#zh 获取 director 启动以来游戏运行的总帧数。
+ */
+ getTotalFrames() : number;
+ /** !#en Returns the cc.Scheduler associated with this director.
+ !#zh 获取和 director 相关联的 cc.Scheduler。
+ */
+ getScheduler() : Scheduler;
+ /** !#en Sets the cc.Scheduler associated with this director.
+ !#zh 设置和 director 相关联的 cc.Scheduler。
+ */
+ setScheduler(scheduler : Scheduler) : void;
+ /** !#en Returns the cc.ActionManager associated with this director.
+ !#zh 获取和 director 相关联的 cc.ActionManager(动作管理器)。
+ */
+ getActionManager() : ActionManager;
+ /** !#en Sets the cc.ActionManager associated with this director.
+ !#zh 设置和 director 相关联的 cc.ActionManager(动作管理器)。
+ */
+ setActionManager(actionManager : ActionManager) : void;
+ /** Returns the cc.CollisionManager associated with this director.
+ */
+ getCollisionManager() : CollisionManager;
+ /** !#en Returns the delta time since last frame.
+ !#zh 获取上一帧的 “delta time”。
+ */
+ getDeltaTime() : number;
+ }
+ /** !#en cc.game is the singleton object for game related functions.
+ !#zh cc.game 是 Game 的实例,用来驱动整个游戏。 */
+ export class Game {
+ /** Event triggered when game hide to background.
+ Please note that this event is not 100% guaranteed to be fired. */
+ EVENT_HIDE : string;
+ /** Event triggered when game back to foreground
+ Please note that this event is not 100% guaranteed to be fired. */
+ EVENT_SHOW : string;
+ /** Event triggered after game inited, at this point all engine objects and game scripts are loaded */
+ EVENT_GAME_INITED : string;
+ /** Event triggered after renderer inited, at this point you will be able to use the render context */
+ EVENT_RENDERER_INITED : string;
+ /** Key of config */
+ CONFIG_KEY : any;
+ /** !#en The outer frame of the game canvas, parent of cc.container.
+ !#zh 游戏画布的外框,cc.container 的父类。 */
+ frame : any;
+ /** !#en The container of game canvas, equals to cc.container.
+ !#zh 游戏画布的容器。 */
+ container : any;
+ /** !#en The canvas of the game, equals to cc._canvas.
+ !#zh 游戏的画布。 */
+ canvas : any;
+ /** !#en
+ The current game configuration, including:
+ 1. debugMode
+ "debugMode" possible values :
+ 0 - No message will be printed.
+ 1 - cc.error, cc.assert, cc.warn, cc.log will print in console.
+ 2 - cc.error, cc.assert, cc.warn will print in console.
+ 3 - cc.error, cc.assert will print in console.
+ 4 - cc.error, cc.assert, cc.warn, cc.log will print on canvas, available only on web.
+ 5 - cc.error, cc.assert, cc.warn will print on canvas, available only on web.
+ 6 - cc.error, cc.assert will print on canvas, available only on web.
+ 2. showFPS
+ Left bottom corner fps information will show when "showFPS" equals true, otherwise it will be hide.
+ 3. frameRate
+ "frameRate" set the wanted frame rate for your game, but the real fps depends on your game implementation and the running environment.
+ 4. id
+ "gameCanvas" sets the id of your canvas element on the web page, it's useful only on web.
+ 5. renderMode
+ "renderMode" sets the renderer type, only useful on web :
+ 0 - Automatically chosen by engine
+ 1 - Forced to use canvas renderer
+ 2 - Forced to use WebGL renderer, but this will be ignored on mobile browsers
+ 6. scenes
+ "scenes" include available scenes in the current bundle.
+
+ Please DO NOT modify this object directly, it won't have any effect.
+ !#zh
+ 当前的游戏配置,包括:
+ 1. debugMode(debug 模式,但是在浏览器中这个选项会被忽略)
+ "debugMode" 各种设置选项的意义。
+ 0 - 没有消息被打印出来。
+ 1 - cc.error,cc.assert,cc.warn,cc.log 将打印在 console 中。
+ 2 - cc.error,cc.assert,cc.warn 将打印在 console 中。
+ 3 - cc.error,cc.assert 将打印在 console 中。
+ 4 - cc.error,cc.assert,cc.warn,cc.log 将打印在 canvas 中(仅适用于 web 端)。
+ 5 - cc.error,cc.assert,cc.warn 将打印在 canvas 中(仅适用于 web 端)。
+ 6 - cc.error,cc.assert 将打印在 canvas 中(仅适用于 web 端)。
+ 2. showFPS(显示 FPS)
+ 当 showFPS 为 true 的时候界面的左下角将显示 fps 的信息,否则被隐藏。
+ 3. frameRate (帧率)
+ “frameRate” 设置想要的帧率你的游戏,但真正的FPS取决于你的游戏实现和运行环境。
+ 4. id
+ "gameCanvas" Web 页面上的 Canvas Element ID,仅适用于 web 端。
+ 5. renderMode(渲染模式)
+ “renderMode” 设置渲染器类型,仅适用于 web 端:
+ 0 - 通过引擎自动选择。
+ 1 - 强制使用 canvas 渲染。
+ 2 - 强制使用 WebGL 渲染,但是在部分 Android 浏览器中这个选项会被忽略。
+ 6. scenes
+ “scenes” 当前包中可用场景。
+
+ 注意:请不要直接修改这个对象,它不会有任何效果。 */
+ config : any;
+ /** !#en Callback when the scripts of engine have been load.
+ !#zh 当引擎完成启动后的回调函数。
+ */
+ onStart() : void;
+ /** !#en Callback when game exits.
+ !#zh 当游戏结束后的回调函数。
+ */
+ onStop() : void;
+ /** !#en Set frameRate of game.
+ !#zh 设置游戏帧率。
+ */
+ setFrameRate(frameRate : number) : void;
+ /** !#en Run the game frame by frame.
+ !#zh 执行一帧游戏循环。
+ */
+ step() : void;
+ /** !#en Pause the game main loop. This will pause:
+ game logic execution, rendering process, event manager, background music and all audio effects.
+ This is different with cc.director.pause which only pause the game logic execution.
+ !#zh 暂停游戏主循环。包含:游戏逻辑,渲染,事件处理,背景音乐和所有音效。这点和只暂停游戏逻辑的 cc.director.pause 不同。
+ */
+ pause() : void;
+ /** !#en Resume the game from pause. This will resume:
+ game logic execution, rendering process, event manager, background music and all audio effects.
+ !#zh 恢复游戏主循环。包含:游戏逻辑,渲染,事件处理,背景音乐和所有音效。
+ */
+ resume() : void;
+ /** !#en Check whether the game is paused.
+ !#zh 判断游戏是否暂停。
+ */
+ isPaused() : boolean;
+ /** !#en Restart game.
+ !#zh 重新开始游戏
+ */
+ restart() : void;
+ /** !#en Prepare game.
+ !#zh 准备引擎,请不要直接调用这个函数。
+ */
+ prepare(cb : Function) : void;
+ /** !#en Run game with configuration object and onStart function.
+ !#zh 运行游戏,并且指定引擎配置和 onStart 的回调。
+ @param config Pass configuration object or onStart function
+ @param onStart function to be executed after game initialized
+ */
+ run(config? : any|Function, onStart? : Function) : void;
+ /** !#en
+ Add a persistent root node to the game, the persistent node won't be destroyed during scene transition.
+ The target node must be placed in the root level of hierarchy, otherwise this API won't have any effect.
+ !#zh
+ 声明常驻根节点,该节点不会被在场景切换中被销毁。
+ 目标节点必须位于为层级的根节点,否则无效。
+ @param node The node to be made persistent
+ */
+ addPersistRootNode(node : Node) : void;
+ /** !#en Remove a persistent root node.
+ !#zh 取消常驻根节点。
+ @param node The node to be removed from persistent node list
+ */
+ removePersistRootNode(node : Node) : void;
+ /** !#en Check whether the node is a persistent root node.
+ !#zh 检查节点是否是常驻根节点。
+ @param node The node to be checked
+ */
+ isPersistRootNode(node : Node) : boolean;
+ }
+ /** !#en
+ Class of all entities in Cocos Creator scenes.
+ Node also inherits from {{#crossLink "EventTarget"}}Event Target{{/crossLink}}, it permits Node to dispatch events.
+ For events supported by Node, please refer to {{#crossLink "Node.EventType"}}{{/crossLink}}
+ !#zh
+ Cocos Creator 场景中的所有节点类。节点也继承了 {{#crossLink "EventTarget"}}EventTarget{{/crossLink}},它允许节点发送事件。
+ 支持的节点事件,请参阅 {{#crossLink "Node.EventType"}}{{/crossLink}}。 */
+ export class Node extends _BaseNode {
+ /** !#en
+ The local active state of this node.
+ Note that a Node may be inactive because a parent is not active, even if this returns true.
+ Use {{#crossLink "Node/activeInHierarchy:property"}}{{/crossLink}} if you want to check if the Node is actually treated as active in the scene.
+ !#zh
+ 当前节点的自身激活状态。
+ 值得注意的是,一个节点的父节点如果不被激活,那么即使它自身设为激活,它仍然无法激活。
+ 如果你想检查节点在场景中实际的激活状态可以使用 {{#crossLink "Node/activeInHierarchy:property"}}{{/crossLink}}。 */
+ active : boolean;
+ /** !#en Indicates whether this node is active in the scene.
+ !#zh 表示此节点是否在场景中激活。 */
+ activeInHierarchy : boolean;
+ /** !#en
+ Group index of node.
+ Which Group this node belongs to will resolve that this node's collision components can collide with which other collision componentns.
+ !#zh
+ 节点的分组索引。
+ 节点的分组将关系到节点的碰撞组件可以与哪些碰撞组件相碰撞。 */
+ groupIndex : Integer;
+ /** !#en
+ Group of node.
+ Which Group this node belongs to will resolve that this node's collision components can collide with which other collision componentns.
+ !#zh
+ 节点的分组。
+ 节点的分组将关系到节点的碰撞组件可以与哪些碰撞组件相碰撞。 */
+ group : string;
+ /** !#en
+ Returns the component of supplied type if the node has one attached, null if it doesn't.
+ You can also get component in the node by passing in the name of the script.
+ !#zh
+ 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
+ 传入参数也可以是脚本的名称。
+
+ @example
+ ```js
+ // get sprite component.
+ var sprite = node.getComponent(cc.Sprite);
+ // get custom test calss.
+ var test = node.getComponent("Test");
+ ```
+ */
+ getComponent(typeOrClassName : Function|string) : Component;
+ /** !#en Returns all components of supplied type in the node.
+ !#zh 返回节点上指定类型的所有组件。
+
+ @example
+ ```js
+ var sprites = node.getComponents(cc.Sprite);
+ var tests = node.getComponents("Test");
+ ```
+ */
+ getComponents(typeOrClassName : Function|string) : Component[];
+ /** !#en Returns the component of supplied type in any of its children using depth first search.
+ !#zh 递归查找所有子节点中第一个匹配指定类型的组件。
+
+ @example
+ ```js
+ var sprite = node.getComponentInChildren(cc.Sprite);
+ var Test = node.getComponentInChildren("Test");
+ ```
+ */
+ getComponentInChildren(typeOrClassName : Function|string) : Component;
+ /** !#en Returns all components of supplied type in self or any of its children.
+ !#zh 递归查找自身或所有子节点中指定类型的组件
+
+ @example
+ ```js
+ var sprites = node.getComponentsInChildren(cc.Sprite);
+ var tests = node.getComponentsInChildren("Test");
+ ```
+ */
+ getComponentsInChildren(typeOrClassName : Function|string) : Component[];
+ /** !#en Adds a component class to the node. You can also add component to node by passing in the name of the script.
+ !#zh 向节点添加一个指定类型的组件类,你还可以通过传入脚本的名称来添加组件。
+ @param typeOrClassName The constructor or the class name of the component to add
+
+ @example
+ ```js
+ var sprite = node.addComponent(cc.Sprite);
+ var test = node.addComponent("Test");
+ ```
+ */
+ addComponent(typeOrClassName : Function|string) : Component;
+ /** !#en
+ Removes a component identified by the given name or removes the component object given.
+ You can also use component.destroy() if you already have the reference.
+ !#zh
+ 删除节点上的指定组件,传入参数可以是一个组件构造函数或组件名,也可以是已经获得的组件引用。
+ 如果你已经获得组件引用,你也可以直接调用 component.destroy()
+ @param component The need remove component.
+
+ @example
+ ```js
+ node.removeComponent(cc.Sprite);
+ var Test = require("Test");
+ node.removeComponent(Test);
+ ```
+ */
+ removeComponent(component : string|Function|Component) : void;
+ /** !#en
+ Register a callback of a specific event type on Node.
+ Use this method to register touch or mouse event permit propagation based on scene graph,
+ you can propagate the event to the parents or swallow it by calling stopPropagation on the event.
+ It's the recommended way to register touch/mouse event for Node,
+ please do not use cc.eventManager directly for Node.
+ !#zh
+ 在节点上注册指定类型的回调函数,也可以设置 target 用于绑定响应函数的调用者。
+ 同时您可以将事件派发到父节点或者通过调用 stopPropagation 拦截它。
+ 推荐使用这种方式来监听节点上的触摸或鼠标事件,请不要在节点上直接使用 cc.eventManager。
+ @param type A string representing the event type to listen for.
+ @param callback The callback that will be invoked when the event is dispatched.
+ The callback is ignored if it is a duplicate (the callbacks are unique).
+ @param target The target to invoke the callback, can be null
+ @param useCapture When set to true, the capture argument prevents callback
+ from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE.
+ When false, callback will NOT be invoked when event's eventPhase attribute value is CAPTURING_PHASE.
+ Either way, callback will be invoked when event's eventPhase attribute value is AT_TARGET.
+
+ @example
+ ```js
+ // add Node Touch Event
+ node.on(cc.Node.EventType.TOUCH_START, callback, this.node);
+ node.on(cc.Node.EventType.TOUCH_MOVE, callback, this.node);
+ node.on(cc.Node.EventType.TOUCH_END, callback, this.node);
+ node.on(cc.Node.EventType.TOUCH_CANCEL, callback, this.node);
+ ```
+ */
+ on(type : string, callback: (param: Event) => void, target? : any, useCapture : boolean) : Function;
+ /** !#en
+ Removes the callback previously registered with the same type, callback, target and or useCapture.
+ This method is merely an alias to removeEventListener.
+ !#zh 删除之前与同类型,回调,目标或 useCapture 注册的回调。
+ @param type A string representing the event type being removed.
+ @param callback The callback to remove.
+ @param target The target to invoke the callback, if it's not given, only callback without target will be removed
+ @param useCapture Specifies whether the callback being removed was registered as a capturing callback or not.
+ If not specified, useCapture defaults to false. If a callback was registered twice,
+ one with capture and one without, each must be removed separately. Removal of a capturing callback
+ does not affect a non-capturing version of the same listener, and vice versa.
+
+ @example
+ ```js
+ // remove Node TOUCH_START Event.
+ node.on(cc.Node.EventType.TOUCH_START, callback, this.node);
+ node.off(cc.Node.EventType.TOUCH_START, callback, this.node);
+ ```
+ */
+ off(type : string, callback : Function, target? : any, useCapture : boolean) : void;
+ /** !#en Removes all callbacks previously registered with the same target.
+ !#zh 移除目标上的所有注册事件。
+ @param target The target to be searched for all related callbacks
+
+ @example
+ ```js
+ node.targetOff(target);
+ ```
+ */
+ targetOff(target : any) : void;
+ /** !#en
+ Executes an action, and returns the action that is executed.
+ The node becomes the action's target. Refer to cc.Action's getTarget()
+ Calling runAction while the node is not active won't have any effect.
+ Note:You shouldn't modify the action after runAction, that won't take any effect.
+ if you want to modify, when you define action plus.
+ !#zh
+ 执行并返回该执行的动作。该节点将会变成动作的目标。
+ 调用 runAction 时,节点自身处于不激活状态将不会有任何效果。
+ 注意:你不应该修改 runAction 后的动作,将无法发挥作用,如果想进行修改,请在定义 action 时加入。
+
+ @example
+ ```js
+ var action = cc.scaleTo(0.2, 1, 0.6);
+ node.runAction(action);
+ node.runAction(action).repeatForever(); // fail
+ node.runAction(action.repeatForever()); // right
+ ```
+ */
+ runAction(action : Action) : Action;
+ /** !#en Stops and removes all actions from the running action list .
+ !#zh 停止并且移除所有正在运行的动作列表。
+
+ @example
+ ```js
+ node.stopAllActions();
+ ```
+ */
+ stopAllActions() : void;
+ /** !#en Stops and removes an action from the running action list.
+ !#zh 停止并移除指定的动作。
+ @param action An action object to be removed.
+
+ @example
+ ```js
+ var action = cc.scaleTo(0.2, 1, 0.6);
+ node.stopAction(action);
+ ```
+ */
+ stopAction(action : Action) : void;
+ /** !#en Removes an action from the running action list by its tag.
+ !#zh 停止并且移除指定标签的动作。
+ @param tag A tag that indicates the action to be removed.
+
+ @example
+ ```js
+ node.stopAction(1);
+ ```
+ */
+ stopActionByTag(tag : number) : void;
+ /** !#en Returns an action from the running action list by its tag.
+ !#zh 通过标签获取指定动作。
+
+ @example
+ ```js
+ var action = node.getActionByTag(1);
+ ```
+ */
+ getActionByTag(tag : number) : Action;
+ /** !#en
+ Returns the numbers of actions that are running plus the ones that are schedule to run (actions in actionsToAdd and actions arrays).
+ Composable actions are counted as 1 action. Example:
+ If you are running 1 Sequence of 7 actions, it will return 1.
+ If you are running 7 Sequences of 2 actions, it will return 7.
+ !#zh
+ 获取运行着的动作加上正在调度运行的动作的总数。
+ 例如:
+ - 如果你正在运行 7 个动作中的 1 个 Sequence,它将返回 1。
+ - 如果你正在运行 2 个动作中的 7 个 Sequence,它将返回 7。
+
+ @example
+ ```js
+ var count = node.getNumberOfRunningActions();
+ cc.log("Running Action Count: " + count);
+ ```
+ */
+ getNumberOfRunningActions() : number;
+ }
+ /** !#en
+ cc.Scene is a subclass of cc.Node that is used only as an abstract concept.
+ cc.Scene and cc.Node are almost identical with the difference that users can not modify cc.Scene manually.
+ !#zh
+ cc.Scene 是 cc.Node 的子类,仅作为一个抽象的概念。
+ cc.Scene 和 cc.Node 有点不同,用户不应直接修改 cc.Scene。 */
+ export class Scene extends _BaseNode {
+ /** !#en Indicates whether all (directly or indirectly) static referenced assets of this scene are releasable by default after scene unloading.
+ !#zh 指示该场景中直接或间接静态引用到的所有资源是否默认在场景切换后自动释放。 */
+ autoReleaseAssets : boolean;
+ }
+ /** !#en
+ Scheduler is responsible of triggering the scheduled callbacks.
+ You should not use NSTimer. Instead use this class.
+
+ There are 2 different types of callbacks (selectors):
+ - update callback: the 'update' callback will be called every frame. You can customize the priority.
+ - custom callback: A custom callback will be called every frame, or with a custom interval of time
+
+ The 'custom selectors' should be avoided when possible. It is faster,
+ and consumes less memory to use the 'update callback'. *
+ !#zh
+ Scheduler 是负责触发回调函数的类。
+ 通常情况下,建议使用 cc.director.getScheduler() 来获取系统定时器。
+ 有两种不同类型的定时器:
+ - update 定时器:每一帧都会触发。您可以自定义优先级。
+ - 自定义定时器:自定义定时器可以每一帧或者自定义的时间间隔触发。
+ 如果希望每帧都触发,应该使用 update 定时器,使用 update 定时器更快,而且消耗更少的内存。 */
+ export class Scheduler {
+ /** !#en
+ Modifies the time of all scheduled callbacks.
+ You can use this property to create a 'slow motion' or 'fast forward' effect.
+ Default is 1.0. To create a 'slow motion' effect, use values below 1.0.
+ To create a 'fast forward' effect, use values higher than 1.0.
+ Note:It will affect EVERY scheduled selector / action.
+ !#zh
+ 设置时间间隔的缩放比例。
+ 您可以使用这个方法来创建一个 “slow motion(慢动作)” 或 “fast forward(快进)” 的效果。
+ 默认是 1.0。要创建一个 “slow motion(慢动作)” 效果,使用值低于 1.0。
+ 要使用 “fast forward(快进)” 效果,使用值大于 1.0。
+ 注意:它影响该 Scheduler 下管理的所有定时器。
+ */
+ setTimeScale(timeScale : number) : void;
+ /** !#en Returns time scale of scheduler.
+ !#zh 获取时间间隔的缩放比例。
+ */
+ getTimeScale() : number;
+ /** !#en 'update' the scheduler. (You should NEVER call this method, unless you know what you are doing.)
+ !#zh update 调度函数。(不应该直接调用这个方法,除非完全了解这么做的结果)
+ @param dt delta time
+ */
+ update(dt : number) : void;
+ /** !#en
+
+ The scheduled method will be called every 'interval' seconds.
+ If paused is YES, then it won't be called until it is resumed.
+ If 'interval' is 0, it will be called every frame, but if so, it recommended to use 'scheduleUpdateForTarget:' instead.
+ If the callback function is already scheduled, then only the interval parameter will be updated without re-scheduling it again.
+ repeat let the action be repeated repeat + 1 times, use cc.macro.REPEAT_FOREVER to let the action run continuously
+ delay is the amount of time the action will wait before it'll start
+
+ !#zh
+ 指定回调函数,调用对象等信息来添加一个新的定时器。
+ 当时间间隔达到指定值时,设置的回调函数将会被调用。
+ 如果 paused 值为 true,那么直到 resume 被调用才开始计时。
+ 如果 interval 值为 0,那么回调函数每一帧都会被调用,但如果是这样,
+ 建议使用 scheduleUpdateForTarget 代替。
+ 如果回调函数已经被定时器使用,那么只会更新之前定时器的时间间隔参数,不会设置新的定时器。
+ repeat 值可以让定时器触发 repeat + 1 次,使用 cc.macro.REPEAT_FOREVER
+ 可以让定时器一直循环触发。
+ delay 值指定延迟时间,定时器会在延迟指定的时间之后开始计时。
+
+ @example
+ ```js
+ //register a schedule to scheduler
+ var scheduler = cc.director.getScheduler();
+ scheduler.scheduleCallbackForTarget(this, function, interval, repeat, delay, !this._isRunning);
+
+ ```
+ */
+ scheduleCallbackForTarget(target : any, callback_fn : Function, interval : number, repeat : number, delay : number, paused : boolean) : void;
+ /** !#en The schedule
+ !#zh 定时器
+
+ @example
+ ```js
+ //register a schedule to scheduler
+ cc.director.getScheduler().schedule(callback, this, interval, !this._isRunning);
+
+ ```
+ */
+ schedule(callback : Function, target : any, interval : number, repeat : number, delay : number, paused : boolean) : void;
+ /** !#en
+ Schedules the update callback for a given target,
+ the callback will be invoked every frame after schedule started.
+ !#zh
+ 使用指定的优先级为指定的对象设置 update 定时器。
+ update 定时器每一帧都会被触发。优先级的值越低,定时器被触发的越早。
+ */
+ scheduleUpdate(target : any, priority : number, paused : boolean, updateFunc : Function) : void;
+ /** !#en
+ Unschedules a callback for a callback and a given target.
+ If you want to unschedule the "update", use `unscheduleUpdate()`
+ !#zh
+ 根据指定的回调函数和调用对象。
+ 如果需要取消 update 定时器,请使用 unscheduleUpdate()。
+ @param callback The callback to be unscheduled
+ @param target The target bound to the callback.
+ */
+ unschedule(callback : Function, target : any) : void;
+ /** !#en Unschedules the update callback for a given target.
+ !#zh 取消指定对象的 update 定时器。
+ @param target The target to be unscheduled.
+ */
+ unscheduleUpdate(target : any) : void;
+ /** !#en
+ Unschedules all scheduled callbacks for a given target.
+ This also includes the "update" callback.
+ !#zh 取消指定对象的所有定时器,包括 update 定时器。
+ @param target The target to be unscheduled.
+ */
+ unscheduleAllForTarget(target : any) : void;
+ /** !#en
+ Unschedules all scheduled callbacks from all targets including the system callbacks.
+ You should NEVER call this method, unless you know what you are doing.
+ !#zh
+ 取消所有对象的所有定时器,包括系统定时器。
+ 不用调用此函数,除非你确定你在做什么。
+ */
+ unscheduleAll() : void;
+ /** !#en
+ Unschedules all callbacks from all targets with a minimum priority.
+ You should only call this with `PRIORITY_NON_SYSTEM_MIN` or higher.
+ !#zh
+ 取消所有优先级的值大于指定优先级的定时器。
+ 你应该只取消优先级的值大于 PRIORITY_NON_SYSTEM_MIN 的定时器。
+ @param minPriority The minimum priority of selector to be unscheduled. Which means, all selectors which
+ priority is higher than minPriority will be unscheduled.
+ */
+ unscheduleAllWithMinPriority(minPriority : number) : void;
+ /** !#en Checks whether a callback for a given target is scheduled.
+ !#zh 检查指定的回调函数和回调对象组合是否存在定时器。
+ @param callback The callback to check.
+ @param target The target of the callback.
+ */
+ isScheduled(callback : Function, target : any) : boolean;
+ /** !#en
+ Pause all selectors from all targets.
+ You should NEVER call this method, unless you know what you are doing.
+ !#zh
+ 暂停所有对象的所有定时器。
+ 不要调用这个方法,除非你知道你正在做什么。
+ */
+ pauseAllTargets() : void;
+ /** !#en
+ Pause all selectors from all targets with a minimum priority.
+ You should only call this with kCCPriorityNonSystemMin or higher.
+ !#zh
+ 暂停所有优先级的值大于指定优先级的定时器。
+ 你应该只暂停优先级的值大于 PRIORITY_NON_SYSTEM_MIN 的定时器。
+ */
+ pauseAllTargetsWithMinPriority(minPriority : number) : void;
+ /** !#en
+ Resume selectors on a set of targets.
+ This can be useful for undoing a call to pauseAllCallbacks.
+ !#zh
+ 恢复指定数组中所有对象的定时器。
+ 这个函数是 pauseAllCallbacks 的逆操作。
+ */
+ resumeTargets(targetsToResume : any[]) : void;
+ /** !#en
+ Pauses the target.
+ All scheduled selectors/update for a given target won't be 'ticked' until the target is resumed.
+ If the target is not present, nothing happens.
+ !#zh
+ 暂停指定对象的定时器。
+ 指定对象的所有定时器都会被暂停。
+ 如果指定的对象没有定时器,什么也不会发生。
+ */
+ pauseTarget(target : any) : void;
+ /** !#en
+ Resumes the target.
+ The 'target' will be unpaused, so all schedule selectors/update will be 'ticked' again.
+ If the target is not present, nothing happens.
+ !#zh
+ 恢复指定对象的所有定时器。
+ 指定对象的所有定时器将继续工作。
+ 如果指定的对象没有定时器,什么也不会发生。
+ */
+ resumeTarget(target : any) : void;
+ /** !#en Returns whether or not the target is paused.
+ !#zh 返回指定对象的定时器是否暂停了。
+ */
+ isTargetPaused(target : any) : boolean;
+ /** !#en
+ Schedules the 'update' callback_fn for a given target with a given priority.
+ The 'update' callback_fn will be called every frame.
+ The lower the priority, the earlier it is called.
+ !#zh
+ 为指定对象设置 update 定时器。
+ update 定时器每一帧都会被调用。
+ 优先级的值越低,越早被调用。
+
+ @example
+ ```js
+ //register this object to scheduler
+ var scheduler = cc.director.getScheduler();
+ scheduler.scheduleUpdateForTarget(this, priority, !this._isRunning );
+
+ ```
+ */
+ scheduleUpdateForTarget(target : any, priority : number, paused : boolean) : void;
+ /** !#en
+ Unschedule a callback function for a given target.
+ If you want to unschedule the "update", use unscheduleUpdateForTarget.
+ !#zh
+ 根据指定的回调函数和调用对象对象取消相应的定时器。
+ 如果需要取消 update 定时器,请使用 unscheduleUpdateForTarget()。
+ @param callback callback[Function] or key[String]
+
+ @example
+ ```js
+ //unschedule a callback of target
+ var scheduler = cc.director.getScheduler();
+ scheduler.unscheduleCallbackForTarget(this, callback);
+
+ ```
+ */
+ unscheduleCallbackForTarget(target : any, callback : Function) : void;
+ /** !#en Unschedules the update callback function for a given target.
+ !#zh 取消指定对象的所有定时器。
+
+ @example
+ ```js
+ //unschedules the "update" method.
+ var scheduler = cc.director.getScheduler();
+ scheduler.unscheduleUpdateForTarget(this);
+
+ ```
+ */
+ unscheduleUpdateForTarget(target : any) : void;
+ /** !#en
+ Unschedules all function callbacks for a given target.
+ This also includes the "update" callback function.
+ !#zh 取消指定对象的所有定时器,包括 update 定时器。
+ */
+ unscheduleAllCallbacksForTarget(target : any) : void;
+ /** !#en
+ Unschedules all function callbacks from all targets.
+ You should NEVER call this method, unless you know what you are doing.
+ !#zh
+ 取消所有对象的所有定时器。
+ 不要调用这个方法,除非你知道你正在做什么。
+ */
+ unscheduleAllCallbacks() : void;
+ /** !#en
+ Unschedules all function callbacks from all targets with a minimum priority.
+ You should only call this with kCCPriorityNonSystemMin or higher.
+ !#zh
+ 取消所有优先级的值大于指定优先级的所有对象的所有定时器。
+ 你应该只暂停优先级的值大于 PRIORITY_NON_SYSTEM_MIN 的定时器。
+ */
+ unscheduleAllCallbacksWithMinPriority(minPriority : number) : void;
+ /** !#en Priority level reserved for system services.
+ !#zh 系统服务的优先级。 */
+ PRIORITY_SYSTEM : number;
+ /** !#en Minimum priority level for user scheduling.
+ !#zh 用户调度最低优先级。 */
+ PRIORITY_NON_SYSTEM : number;
+ }
+ /** !#en
+ cc.MotionStreak manages a Ribbon based on it's motion in absolute space.
+ You construct it with a fadeTime, minimum segment size, texture path, texture
+ length and color. The fadeTime controls how long it takes each vertex in
+ the streak to fade out, the minimum segment size it how many pixels the
+ streak will move before adding a new ribbon segment, and the texture
+ length is the how many pixels the texture is stretched across. The texture
+ is vertically aligned along the streak segment.
+ !#zh 运动轨迹,用于游戏对象的运动轨迹上实现拖尾渐隐效果。 */
+ export class MotionStreak extends Component {
+ /** !#en
+ !#zh 在编辑器模式下预览拖尾效果。 */
+ preview : boolean;
+ /** !#en The fade time to fade.
+ !#zh 拖尾的渐隐时间,以秒为单位。 */
+ fadeTime : number;
+ /** !#en The minimum segment size.
+ !#zh 拖尾之间最小距离。 */
+ minSeg : number;
+ /** !#en The stroke's width.
+ !#zh 拖尾的宽度。 */
+ stroke : number;
+ /** !#en The texture of the MotionStreak.
+ !#zh 拖尾的贴图。 */
+ texture : Texture2D;
+ /** !#en The color of the MotionStreak.
+ !#zh 拖尾的颜色 */
+ color : Color;
+ /** !#en The fast Mode.
+ !#zh 是否启用了快速模式。当启用快速模式,新的点会被更快地添加,但精度较低。 */
+ fastMode : boolean;
+ /** !#en Remove all living segments of the ribbon.
+ !#zh 删除当前所有的拖尾片段。
+
+ @example
+ ```js
+ // stop particle system.
+ myParticleSystem.stopSystem();
+ ```
+ */
+ reset() : void;
+ }
+ /** Particle System base class.
+ Attributes of a Particle System:
+ - emmision rate of the particles
+ - Gravity Mode (Mode A):
+ - gravity
+ - direction
+ - speed +- variance
+ - tangential acceleration +- variance
+ - radial acceleration +- variance
+ - Radius Mode (Mode B):
+ - startRadius +- variance
+ - endRadius +- variance
+ - rotate +- variance
+ - Properties common to all modes:
+ - life +- life variance
+ - start spin +- variance
+ - end spin +- variance
+ - start size +- variance
+ - end size +- variance
+ - start color +- variance
+ - end color +- variance
+ - life +- variance
+ - blending function
+ - texture
+
+ cocos2d also supports particles generated by Particle Designer (http://particledesigner.71squared.com/).
+ 'Radius Mode' in Particle Designer uses a fixed emit rate of 30 hz. Since that can't be guarateed in cocos2d,
+ cocos2d uses a another approach, but the results are almost identical.
+ cocos2d supports all the variables used by Particle Designer plus a bit more:
+ - spinning particles (supported when using ParticleSystem)
+ - tangential acceleration (Gravity mode)
+ - radial acceleration (Gravity mode)
+ - radius direction (Radius mode) (Particle Designer supports outwards to inwards direction only)
+ It is possible to customize any of the above mentioned properties in runtime. Example: */
+ export class ParticleSystem extends cc._RendererUnderSG {
+ /** !#en Play particle in edit mode.
+ !#zh 在编辑器模式下预览粒子,启用后选中粒子时,粒子将自动播放。 */
+ preview : boolean;
+ /** !#en
+ If set custom to true, then use custom properties insteadof read particle file.
+ !#zh 是否自定义粒子属性。 */
+ custom : boolean;
+ /** !#en The plist file.
+ !#zh plist 格式的粒子配置文件。 */
+ file : string;
+ /** . */
+ texture : Texture2D;
+ /** !#en Current quantity of particles that are being simulated.
+ !#zh 当前播放的粒子数量。 */
+ particleCount : number;
+ /** !#en Specify the source Blend Factor.
+ !#zh 指定原图混合模式。 */
+ srcBlendFactor : BlendFactor;
+ /** !#en Specify the destination Blend Factor.
+ !#zh 指定目标的混合模式。 */
+ dstBlendFactor : BlendFactor;
+ /** !#en If set to true, the particle system will automatically start playing on onLoad.
+ !#zh 如果设置为 true 运行时会自动发射粒子。 */
+ playOnLoad : boolean;
+ /** !#en Indicate whether the owner node will be auto-removed when it has no particles left.
+ !#zh 粒子播放完毕后自动销毁所在的节点。 */
+ autoRemoveOnFinish : boolean;
+ /** !#en Indicate whether the particle system is activated.
+ !#zh 是否激活粒子。 */
+ active : boolean;
+ /** !#en Maximum particles of the system.
+ !#zh 粒子最大数量。 */
+ totalParticles : number;
+ /** !#en How many seconds the emitter wil run. -1 means 'forever'.
+ !#zh 发射器生存时间,单位秒,-1表示持续发射。 */
+ duration : number;
+ /** !#en Emission rate of the particles.
+ !#zh 每秒发射的粒子数目。 */
+ emissionRate : number;
+ /** !#en Life of each particle setter.
+ !#zh 粒子的运行时间。 */
+ life : number;
+ /** !#en Variation of life.
+ !#zh 粒子的运行时间变化范围。 */
+ lifeVar : number;
+ /** !#en Start color of each particle.
+ !#zh 粒子初始颜色。 */
+ startColor : Color;
+ /** !#en Variation of the start color.
+ !#zh 粒子初始颜色变化范围。 */
+ startColorVar : Color;
+ /** !#en Ending color of each particle.
+ !#zh 粒子结束颜色。 */
+ endColor : Color;
+ /** !#en Variation of the end color.
+ !#zh 粒子结束颜色变化范围。 */
+ endColorVar : Color;
+ /** !#en Angle of each particle setter.
+ !#zh 粒子角度。 */
+ angle : number;
+ /** !#en Variation of angle of each particle setter.
+ !#zh 粒子角度变化范围。 */
+ angleVar : number;
+ /** !#en Start size in pixels of each particle.
+ !#zh 粒子的初始大小。 */
+ startSize : number;
+ /** !#en Variation of start size in pixels.
+ !#zh 粒子初始大小的变化范围。 */
+ startSizeVar : number;
+ /** !#en End size in pixels of each particle.
+ !#zh 粒子结束时的大小。 */
+ endSize : number;
+ /** !#en Variation of end size in pixels.
+ !#zh 粒子结束大小的变化范围。 */
+ endSizeVar : number;
+ /** !#en Start angle of each particle.
+ !#zh 粒子开始自旋角度。 */
+ startSpin : number;
+ /** !#en Variation of start angle.
+ !#zh 粒子开始自旋角度变化范围。 */
+ startSpinVar : number;
+ /** !#en End angle of each particle.
+ !#zh 粒子结束自旋角度。 */
+ endSpin : number;
+ /** !#en Variation of end angle.
+ !#zh 粒子结束自旋角度变化范围。 */
+ endSpinVar : number;
+ /** !#en Source position of the emitter.
+ !#zh 发射器位置。 */
+ sourcePos : Vec2;
+ /** !#en Variation of source position.
+ !#zh 发射器位置的变化范围。(横向和纵向) */
+ posVar : Vec2;
+ /** !#en Particles movement type.
+ !#zh 粒子位置类型。 */
+ positionType : ParticleSystem.PositionType;
+ /** !#en Particles emitter modes.
+ !#zh 发射器类型。 */
+ emitterMode : ParticleSystem.EmitterMode;
+ /** !#en Gravity of the emitter.
+ !#zh 重力。 */
+ gravity : Vec2;
+ /** !#en Speed of the emitter.
+ !#zh 速度。 */
+ speed : number;
+ /** !#en Variation of the speed.
+ !#zh 速度变化范围。 */
+ speedVar : number;
+ /** !#en Tangential acceleration of each particle. Only available in 'Gravity' mode.
+ !#zh 每个粒子的切向加速度,即垂直于重力方向的加速度,只有在重力模式下可用。 */
+ tangentialAccel : number;
+ /** !#en Variation of the tangential acceleration.
+ !#zh 每个粒子的切向加速度变化范围。 */
+ tangentialAccelVar : number;
+ /** !#en Acceleration of each particle. Only available in 'Gravity' mode.
+ !#zh 粒子径向加速度,即平行于重力方向的加速度,只有在重力模式下可用。 */
+ radialAccel : number;
+ /** !#en Variation of the radial acceleration.
+ !#zh 粒子径向加速度变化范围。 */
+ radialAccelVar : number;
+ /** !#en Indicate whether the rotation of each particle equals to its direction. Only available in 'Gravity' mode.
+ !#zh 每个粒子的旋转是否等于其方向,只有在重力模式下可用。 */
+ rotationIsDir : boolean;
+ /** !#en Starting radius of the particles. Only available in 'Radius' mode.
+ !#zh 初始半径,表示粒子出生时相对发射器的距离,只有在半径模式下可用。 */
+ startRadius : number;
+ /** !#en Variation of the starting radius.
+ !#zh 初始半径变化范围。 */
+ startRadiusVar : number;
+ /** !#en Ending radius of the particles. Only available in 'Radius' mode.
+ !#zh 结束半径,只有在半径模式下可用。 */
+ endRadius : number;
+ /** !#en Variation of the ending radius.
+ !#zh 结束半径变化范围。 */
+ endRadiusVar : number;
+ /** !#en Number of degress to rotate a particle around the source pos per second. Only available in 'Radius' mode.
+ !#zh 粒子每秒围绕起始点的旋转角度,只有在半径模式下可用。 */
+ rotatePerS : number;
+ /** !#en Variation of the degress to rotate a particle around the source pos per second.
+ !#zh 粒子每秒围绕起始点的旋转角度变化范围。 */
+ rotatePerSVar : number;
+ /** !#en The Particle emitter lives forever.
+ !#zh 表示发射器永久存在 */
+ DURATION_INFINITY : number;
+ /** !#en The starting size of the particle is equal to the ending size.
+ !#zh 表示粒子的起始大小等于结束大小。 */
+ START_SIZE_EQUAL_TO_END_SIZE : number;
+ /** !#en The starting radius of the particle is equal to the ending radius.
+ !#zh 表示粒子的起始半径等于结束半径。 */
+ START_RADIUS_EQUAL_TO_END_RADIUS : number;
+ /** !#en Add a particle to the emitter.
+ !#zh 添加一个粒子到发射器中。
+ */
+ addParticle() : boolean;
+ /** !#en Stop emitting particles. Running particles will continue to run until they die.
+ !#zh 停止发射器发射粒子,发射出去的粒子将继续运行,直至粒子生命结束。
+
+ @example
+ ```js
+ // stop particle system.
+ myParticleSystem.stopSystem();
+ ```
+ */
+ stopSystem() : void;
+ /** !#en Kill all living particles.
+ !#zh 杀死所有存在的粒子,然后重新启动粒子发射器。
+
+ @example
+ ```js
+ // play particle system.
+ myParticleSystem.resetSystem();
+ ```
+ */
+ resetSystem() : void;
+ /** !#en Whether or not the system is full.
+ !#zh 发射器中粒子是否大于等于设置的总粒子数量。
+ */
+ isFull() : boolean;
+ /** !#en
+ Sets a new CCSpriteFrame as particle.
+ WARNING: this method is experimental. Use setTextureWithRect instead.
+
+ !#zh
+ 设置一个新的精灵帧为粒子。
+ 警告:这个函数只是试验,请使用 setTextureWithRect 实现。
+
+ */
+ setDisplayFrame(spriteFrame : SpriteFrame) : void;
+ /** !#en Sets a new texture with a rect. The rect is in texture position and size.
+ !#zh 设置一张新贴图和关联的矩形。
+ */
+ setTextureWithRect(texture : Texture2D, rect : Rect) : void;
+ }
+ /** !#en cc.TMXObjectGroup represents the TMX object group.
+ !#zh TMXObjectGroup 用来表示 TMX 对象组。 */
+ export class TMXObjectGroup extends cc._Class {
+ /** Properties from the group. They can be added using tilemap editors. */
+ properties : any[];
+ /** Name of the group */
+ groupName : string;
+ /** The cc.TMXObjectGroup's constructor.
+ This function will automatically be invoked when you create a node using new construction: "var node = new cc.TMXObjectGroup()".
+ Override it to extend its behavior, remember to call "this._super()" in the extended "ctor" function.
+ */
+ ctor() : void;
+ /** !#en Offset position of child objects.
+ !#zh 获取子对象的偏移位置。
+
+ @example
+ ```js
+ var offset = tMXObjectGroup.getPositionOffset();
+ ```
+ */
+ getPositionOffset() : Vec2;
+ /** !#en Offset position of child objects.
+ !#zh 设置子对象的偏移位置。
+
+ @example
+ ```js
+ tMXObjectGroup.setPositionOffset(cc.v2(5, 5));
+ ```
+ */
+ setPositionOffset(offset : Vec2) : void;
+ /** !#en List of properties stored in a dictionary.
+ !#zh 以映射的形式获取属性列表。
+
+ @example
+ ```js
+ var offset = tMXObjectGroup.getProperties();
+ ```
+ */
+ getProperties() : any[];
+ /** !#en List of properties stored in a dictionary.
+ !#zh 设置属性列表。
+
+ @example
+ ```js
+ tMXObjectGroup.setProperties(obj);
+ ```
+ */
+ setProperties(Var : any) : void;
+ /** !#en Gets the Group name.
+ !#zh 获取组名称。
+
+ @example
+ ```js
+ var groupName = tMXObjectGroup.getGroupName;
+ ```
+ */
+ getGroupName() : string;
+ /** !#en Set the Group name.
+ !#zh 设置组名称。
+
+ @example
+ ```js
+ tMXObjectGroup.setGroupName("New Group");
+ ```
+ */
+ setGroupName(groupName : string) : void;
+ /** !#en
+ Return the object for the specific object name.
+ It will return the 1st object found on the array for the given name.
+ !#zh 获取指定的对象。
+
+ @example
+ ```js
+ var object = tMXObjectGroup.getObject("Group");
+ ```
+ */
+ getObject(objectName : string) : any;
+ /** !#en Gets the objects.
+ !#zh 获取对象数组。
+
+ @example
+ ```js
+ var objects = tMXObjectGroup.getObjects();
+ ```
+ */
+ getObjects() : any[];
+ /** !#en Set the objects.
+ !#zh 设置对象数组。
+
+ @example
+ ```js
+ tMXObjectGroup.setObjects(objects);
+ ```
+ */
+ setObjects(objects : any) : void;
+ }
+ /** !#en Render the TMX layer.
+ !#zh 渲染 TMX layer。 */
+ export class TiledLayer extends _SGComponent {
+ /** !#en Gets the layer name.
+ !#zh 获取层的名称。
+
+ @example
+ ```js
+ var layerName = tiledLayer.getLayerName();
+ cc.log(layerName);
+ ```
+ */
+ getLayerName() : string;
+ /** !#en Set the layer name.
+ !#zh 设置层的名称
+
+ @example
+ ```js
+ tiledLayer.setLayerName("New Layer");
+ ```
+ */
+ SetLayerName(layerName : string) : void;
+ /** !#en Return the value for the specific property name.
+ !#zh 获取指定属性名的值。
+
+ @example
+ ```js
+ var property = tiledLayer.getProperty("info");
+ cc.log(property);
+ ```
+ */
+ getProperty(propertyName : string) : any;
+ /** !#en Returns the position in pixels of a given tile coordinate.
+ !#zh 获取指定 tile 的像素坐标。
+ @param pos position or x
+
+ @example
+ ```js
+ var pos = tiledLayer.getPositionAt(cc.v2(0, 0));
+ cc.log("Pos: " + pos);
+ var pos = tiledLayer.getPositionAt(0, 0);
+ cc.log("Pos: " + pos);
+ ```
+ */
+ getPositionAt(pos : Vec2|number, y? : number) : Vec2;
+ /** !#en Removes a tile at given tile coordinate.
+ !#zh 删除指定坐标上的 tile。
+ @param pos position or x
+
+ @example
+ ```js
+ tiledLayer.removeTileAt(cc.v2(0, 0));
+ tiledLayer.removeTileAt(0, 0);
+ ```
+ */
+ removeTileAt(pos : Vec2|number, y? : number) : void;
+ /** !#en
+ Sets the tile gid (gid = tile global id) at a given tile coordinate.
+ The Tile GID can be obtained by using the method "tileGIDAt" or by using the TMX editor . Tileset Mgr +1.
+ If a tile is already placed at that position, then it will be removed.
+ !#zh
+ 设置给定坐标的 tile 的 gid (gid = tile 全局 id),
+ tile 的 GID 可以使用方法 “tileGIDAt” 来获得。
+ 如果一个 tile 已经放在那个位置,那么它将被删除。
+ @param posOrX position or x
+ @param flagsOrY flags or y
+
+ @example
+ ```js
+ tiledLayer.setTileGID(1001, 10, 10, 1)
+ ```
+ */
+ setTileGID(gid : number, posOrX : Vec2|number, flagsOrY : number, flags? : number) : void;
+ /** !#en
+ Returns the tile gid at a given tile coordinate.
+ if it returns 0, it means that the tile is empty.
+ This method requires the the tile map has not been previously released (eg. don't call layer.releaseMap())
+ !#zh
+ 通过给定的 tile 坐标、flags(可选)返回 tile 的 GID.
+ 如果它返回 0,则表示该 tile 为空。
+ 该方法要求 tile 地图之前没有被释放过(如:没有调用过layer.releaseMap()).
+ @param pos or x
+
+ @example
+ ```js
+ var tileGid = tiledLayer.getTileGIDAt(0, 0);
+ ```
+ */
+ getTileGIDAt(pos : Vec2|number, y? : number) : number;
+ /** !#en
+ Returns the tile (_ccsg.Sprite) at a given a tile coordinate.
+ The returned _ccsg.Sprite will be already added to the _ccsg.TMXLayer. Don't add it again.
+ The _ccsg.Sprite can be treated like any other _ccsg.Sprite: rotated, scaled, translated, opacity, color, etc.
+ You can remove either by calling:
+ - layer.removeChild(sprite, cleanup);
+ - or layer.removeTileAt(ccp(x,y));
+ !#zh
+ 通过指定的 tile 坐标获取对应的 tile(Sprite)。 返回的 tile(Sprite) 应是已经添加到 TMXLayer,请不要重复添加。
+ 这个 tile(Sprite) 如同其他的 Sprite 一样,可以旋转、缩放、翻转、透明化、设置颜色等。
+ 你可以通过调用以下方法来对它进行删除:
+ 1. layer.removeChild(sprite, cleanup);
+ 2. 或 layer.removeTileAt(cc.v2(x,y));
+ @param pos or x
+
+ @example
+ ```js
+ var title = tiledLayer.getTileAt(100, 100);
+ cc.log(title);
+ ```
+ */
+ getTileAt(pos : Vec2|number, y? : number) : _ccsg.Sprite;
+ /** !#en
+ Dealloc the map that contains the tile position from memory.
+ Unless you want to know at runtime the tiles positions, you can safely call this method.
+ If you are going to call layer.getTileGIDAt() then, don't release the map.
+ !#zh
+ 从内存中释放包含 tile 位置信息的地图。
+ 除了在运行时想要知道 tiles 的位置信息外,你都可安全的调用此方法。
+ 如果你之后还要调用 layer.tileGIDAt(), 请不要释放地图.
+
+ @example
+ ```js
+ tiledLayer.releaseMap();
+ ```
+ */
+ releaseMap() : void;
+ /** !#en Sets the untransformed size of the _ccsg.TMXLayer.
+ !#zh 设置未转换的 layer 大小。
+ @param size The untransformed size of the _ccsg.TMXLayer or The untransformed size's width of the TMXLayer.
+ @param height The untransformed size's height of the _ccsg.TMXLayer.
+
+ @example
+ ```js
+ tiledLayer.setContentSize(100, 100);
+ ```
+ */
+ setContentSize(size : Size|number, height? : number) : void;
+ /** !#en Return texture of cc.SpriteBatchNode.
+ !#zh 获取纹理。
+
+ @example
+ ```js
+ var texture = tiledLayer.getTexture();
+ cc.log("Texture: " + texture);
+ ```
+ */
+ getTexture() : Texture2D;
+ /** !#en Set the texture of cc.SpriteBatchNode.
+ !#zh 设置纹理。
+
+ @example
+ ```js
+ tiledLayer.setTexture(texture);
+ ```
+ */
+ setTexture(texture : Texture2D) : void;
+ /** !#en Set the opacity of all tiles
+ !#zh 设置所有 Tile 的透明度
+
+ @example
+ ```js
+ tiledLayer.setTileOpacity(128);
+ ```
+ */
+ setTileOpacity(opacity : number) : void;
+ /** !#en Gets layer size.
+ !#zh 获得层大小。
+
+ @example
+ ```js
+ var size = tiledLayer.getLayerSize();
+ cc.log("layer size: " + size);
+ ```
+ */
+ getLayerSize() : Size;
+ /** !#en Set layer size.
+ !#zh 设置层大小。
+
+ @example
+ ```js
+ tiledLayer.setLayerSize(new cc.size(5, 5));
+ ```
+ */
+ setLayerSize(layerSize : Size) : void;
+ /** !#en Size of the map's tile (could be different from the tile's size).
+ !#zh 获取 tile 的大小( tile 的大小可能会有所不同)。
+
+ @example
+ ```js
+ var mapTileSize = tiledLayer.getMapTileSize();
+ cc.log("MapTile size: " + mapTileSize);
+ ```
+ */
+ getMapTileSize() : Size;
+ /** !#en Set the map tile size.
+ !#zh 设置 tile 的大小。
+
+ @example
+ ```js
+ tiledLayer.setMapTileSize(new cc.size(10, 10));
+ ```
+ */
+ setMapTileSize(tileSize : Size) : void;
+ /** !#en Pointer to the map of tiles.
+ !#zh 获取地图 tiles。
+
+ @example
+ ```js
+ var tiles = tiledLayer.getTiles();
+ ```
+ */
+ getTiles() : any[];
+ /** !#en Pointer to the map of tiles.
+ !#zh 设置地图 tiles
+
+ @example
+ ```js
+ tiledLayer.setTiles(tiles);
+ ```
+ */
+ setTiles(tiles : any[]) : void;
+ /** !#en Tile set information for the layer.
+ !#zh 获取 layer 的 Tileset 信息。
+
+ @example
+ ```js
+ var tileset = tiledLayer.getTileSet();
+ ```
+ */
+ getTileSet() : TMXTilesetInfo;
+ /** !#en Tile set information for the layer.
+ !#zh 设置 layer 的 Tileset 信息。
+
+ @example
+ ```js
+ tiledLayer.setTileSet(tileset);
+ ```
+ */
+ setTileSet(tileset : TMXTilesetInfo) : void;
+ /** !#en Layer orientation, which is the same as the map orientation.
+ !#zh 获取 Layer 方向(同地图方向)。
+
+ @example
+ ```js
+ var orientation = tiledLayer.getLayerOrientation();
+ cc.log("Layer Orientation: " + orientation);
+ ```
+ */
+ getLayerOrientation() : number;
+ /** !#en Layer orientation, which is the same as the map orientation.
+ !#zh 设置 Layer 方向(同地图方向)。
+
+ @example
+ ```js
+ tiledLayer.setLayerOrientation(TiledMap.Orientation.ORTHO);
+ ```
+ */
+ setLayerOrientation(orientation : TiledMap.Orientation) : void;
+ /** !#en properties from the layer. They can be added using Tiled.
+ !#zh 获取 layer 的属性,可以使用 Tiled 编辑器添加属性。
+
+ @example
+ ```js
+ var properties = tiledLayer.getProperties();
+ cc.log("Properties: " + properties);
+ ```
+ */
+ getProperties() : any[];
+ /** !#en properties from the layer. They can be added using Tiled.
+ !#zh 设置层属性。
+
+ @example
+ ```js
+ tiledLayer.setLayerOrientation(properties);
+ ```
+ */
+ setProperties(properties : any[]) : void;
+ }
+ /** !#en Renders a TMX Tile Map in the scene.
+ !#zh 在场景中渲染一个 tmx 格式的 Tile Map。 */
+ export class TiledMap extends Component {
+ /** !#en The TiledMap Asset.
+ !#zh TiledMap 资源。 */
+ tmxAsset : cc.TiledMapAsset;
+ /** !#en Gets the map size.
+ !#zh 获取地图大小。
+
+ @example
+ ```js
+ var mapSize = tiledMap.getMapSize();
+ cc.log("Map Size: " + mapSize);
+ ```
+ */
+ getMapSize() : Size;
+ /** !#en Set the map size.
+ !#zh 设置地图大小。
+
+ @example
+ ```js
+ tiledMap.setMapSize(new cc.size(960, 640));
+ ```
+ */
+ setMapSize(mapSize : Size) : void;
+ /** !#en Gets the tile size.
+ !#zh 获取地图背景中 tile 元素的大小。
+
+ @example
+ ```js
+ var tileSize = tiledMap.getTileSize();
+ cc.log("Tile Size: " + tileSize);
+ ```
+ */
+ getTileSize() : Size;
+ /** !#en Set the tile size.
+ !#zh 设置地图背景中 tile 元素的大小。
+
+ @example
+ ```js
+ tiledMap.setTileSize(new cc.size(10, 10));
+ ```
+ */
+ setTileSize(tileSize : Size) : void;
+ /** !#en map orientation.
+ !#zh 获取地图方向。
+
+ @example
+ ```js
+ var mapOrientation = tiledMap.getMapOrientation();
+ cc.log("Map Orientation: " + mapOrientation);
+ ```
+ */
+ getMapOrientation() : number;
+ /** !#en map orientation.
+ !#zh 设置地图方向。
+
+ @example
+ ```js
+ tiledMap.setMapOrientation(TiledMap.Orientation.ORTHO);
+ ```
+ */
+ setMapOrientation(orientation : TiledMap.Orientation) : void;
+ /** !#en object groups.
+ !#zh 获取所有的对象层。
+
+ @example
+ ```js
+ var objGroups = titledMap.getObjectGroups();
+ for (var i = 0; i < objGroups.length; ++i) {
+ cc.log("obj: " + objGroups[i]);
+ }
+ ```
+ */
+ getObjectGroups() : any[];
+ /** !#en object groups.
+ !#zh 设置所有的对象层。
+
+ @example
+ ```js
+ titledMap.setObjectGroups(groups);
+ ```
+ */
+ setObjectGroups(groups : any[]) : void;
+ /** !#en Gets the map properties.
+ !#zh 获取地图的属性。
+
+ @example
+ ```js
+ var properties = titledMap.getProperties();
+ for (var i = 0; i < properties.length; ++i) {
+ cc.log("Properties: " + properties[i]);
+ }
+ ```
+ */
+ getProperties() : any[];
+ /** !#en Set the map properties.
+ !#zh 设置地图的属性。
+
+ @example
+ ```js
+ titledMap.setProperties(properties);
+ ```
+ */
+ setProperties(properties : any[]) : void;
+ /** !#en Return All layers array.
+ !#zh 返回包含所有 layer 的数组。
+
+ @example
+ ```js
+ var layers = titledMap.allLayers();
+ for (var i = 0; i < layers.length; ++i) {
+ cc.log("Layers: " + layers[i]);
+ }
+ ```
+ */
+ allLayers() : Node[];
+ /** !#en return the cc.TiledLayer for the specific layer.
+ !#zh 获取指定名称的 layer。
+
+ @example
+ ```js
+ var layer = titledMap.getLayer("Player");
+ cc.log(layer);
+ ```
+ */
+ getLayer(layerName : string) : TiledLayer;
+ /** !#en Return the TMXObjectGroup for the specific group.
+ !#zh 获取指定的 TMXObjectGroup。
+
+ @example
+ ```js
+ var group = titledMap.getObjectGroup("Players");
+ cc.log("ObjectGroup: " + group);
+ ```
+ */
+ getObjectGroup(groupName : string) : TMXObjectGroup;
+ /** !#en Return the value for the specific property name.
+ !#zh 通过属性名称,获取指定的属性。
+
+ @example
+ ```js
+ var property = titledMap.getProperty("info");
+ cc.log("Property: " + property);
+ ```
+ */
+ getProperty(propertyName : string) : string;
+ /** !#en Return properties dictionary for tile GID.
+ !#zh 通过 GID ,获取指定的属性。
+
+ @example
+ ```js
+ var properties = titledMap.getPropertiesForGID(GID);
+ cc.log("Properties: " + properties);
+ ```
+ */
+ getPropertiesForGID(GID : number) : any;
+ }
+ /** Class for tiled map asset handling. */
+ export class TiledMapAsset extends Asset {
+ constructor();
+ }
+ /** !#en
+ cc.NodePool is the cache pool designed for node type.
+ It can helps you to improve your game performance for objects which need frequent release and recreate operations
+
+ It's recommended to create cc.NodePool instances by node type, the type corresponds to node type in game design, not the class,
+ for example, a prefab is a specific node type.
+ When you create a node pool, you can pass a Component which contains `unuse`, `reuse` functions to control the content of node.
+
+ Some common use case is :
+ 1. Bullets in game (die very soon, massive creation and recreation, no side effect on other objects)
+ 2. Blocks in candy crash (massive creation and recreation)
+ etc...
+ !#zh
+ cc.NodePool 是用于管理节点对象的对象缓存池。
+ 它可以帮助您提高游戏性能,适用于优化对象的反复创建和销毁
+ 以前 cocos2d-x 中的 cc.pool 和新的节点事件注册系统不兼容,因此请使用 cc.NodePool 来代替。
+
+ 新的 NodePool 需要实例化之后才能使用,每种不同的节点对象池需要一个不同的对象池实例,这里的种类对应于游戏中的节点设计,一个 prefab 相当于一个种类的节点。
+ 在创建缓冲池时,可以传入一个包含 unuse, reuse 函数的组件类型用于节点的回收和复用逻辑。
+
+ 一些常见的用例是:
+ 1.在游戏中的子弹(死亡很快,频繁创建,对其他对象无副作用)
+ 2.糖果粉碎传奇中的木块(频繁创建)。
+ 等等.... */
+ export class NodePool {
+ /** !#en
+ Constructor for creating a pool for a specific node template (usually a prefab). You can pass a component (type or name) argument for handling event for reusing and recycling node.
+ !#zh
+ 使用构造函数来创建一个节点专用的对象池,您可以传递一个组件类型或名称,用于处理节点回收和复用时的事件逻辑。
+ @param poolHandlerComp !#en The constructor or the class name of the component to control the unuse/reuse logic. !#zh 处理节点回收和复用事件逻辑的组件类型或名称。
+
+ @example
+ ```js
+ properties: {
+ template: cc.Prefab
+ },
+ onLoad () {
+ // MyTemplateHandler is a component with 'unuse' and 'reuse' to handle events when node is reused or recycled.
+ this.myPool = new cc.NodePool('MyTemplateHandler');
+ }
+ ```
+ */
+ NodePool(poolHandlerComp : [Function|String]) : void;
+ /** !#en The pool handler component, it could be the class name or the constructor.
+ !#zh 缓冲池处理组件,用于节点的回收和复用逻辑,这个属性可以是组件类名或组件的构造函数。 */
+ poolHandlerComp : Function|string;
+ /** !#en The current available size in the pool
+ !#zh 获取当前缓冲池的可用对象数量
+ */
+ size() : void;
+ /** !#en Destroy all cached nodes in the pool
+ !#zh 销毁对象池中缓存的所有节点
+ */
+ clear() : void;
+ /** !#en Put a new Node into the pool.
+ It will automatically remove the node from its parent without cleanup.
+ It will also invoke unuse method of the poolHandlerComp if exist.
+ !#zh 向缓冲池中存入一个不再需要的节点对象。
+ 这个函数会自动将目标节点从父节点上移除,但是不会进行 cleanup 操作。
+ 这个函数会调用 poolHandlerComp 的 unuse 函数,如果组件和函数都存在的话。
+
+ @example
+ ```js
+ let myNode = cc.instantiate(this.template);
+ this.myPool.put(myNode);
+ ```
+ */
+ put() : void;
+ /** !#en Get a obj from pool, if no available object in pool, null will be returned.
+ This function will invoke the reuse function of poolHandlerComp if exist.
+ !#zh 获取对象池中的对象,如果对象池没有可用对象,则返回空。
+ 这个函数会调用 poolHandlerComp 的 reuse 函数,如果组件和函数都存在的话。
+ @param params !#en Params to pass to 'reuse' method in poolHandlerComp !#zh 向 poolHandlerComp 中的 'reuse' 函数传递的参数
+
+ @example
+ ```js
+ let newNode = this.myPool.get();
+ ```
+ */
+ get(params : any) : any;
+ }
+ /** !#en
+ Attention: In creator, it's strongly not recommended to use cc.pool to manager cc.Node.
+ We provided {{#crossLink "NodePool"}}cc.NodePool{{/crossLink}} instead.
+
+ cc.pool is a singleton object serves as an object cache pool.
+ It can helps you to improve your game performance for objects which need frequent release and recreate operations
+ !#zh
+ 首先请注意,在 Creator 中我们强烈不建议使用 cc.pool 来管理 cc.Node 节点对象,请使用 {{#crossLink "NodePool"}}cc.NodePool{{/crossLink}} 代替
+ 因为 cc.pool 是面向类来设计的,而 cc.Node 中使用 Component 来进行组合,它的类永远都一样,实际却千差万别。
+
+ cc.pool 是一个单例对象,用作为对象缓存池。
+ 它可以帮助您提高游戏性能,适用于优化对象的反复创建和销毁 */
+ export class pool {
+ /** !#en Put the obj in pool.
+ !#zh 加入对象到对象池中。
+ @param obj The need put in pool object.
+
+ @example
+ ```js
+ ---------------------------------
+ var sp = new _ccsg.Sprite("a.png");
+ this.addChild(sp);
+ cc.pool.putInPool(sp);
+ cc.pool.getFromPool(_ccsg.Sprite, "a.png");
+
+ ```
+ */
+ putInPool(obj : any) : void;
+ /** !#en Check if this kind of obj has already in pool.
+ !#zh 检查对象池中是否有指定对象的存在。
+ @param objClass The check object class.
+ */
+ hasObject(objClass : any) : boolean;
+ /** !#en Remove the obj if you want to delete it.
+ !#zh 移除在对象池中指定的对象。
+ */
+ removeObject() : void;
+ /** !#en Get the obj from pool.
+ !#zh 获取对象池中的指定对象。
+ */
+ getFromPool() : any;
+ /** !#en Remove all objs in pool and reset the pool.
+ !#zh 移除对象池中的所有对象,并且重置对象池。
+ */
+ drainAllPools() : void;
+ }
+ /** !#en Box Collider.
+ !#zh 包围盒碰撞组件 */
+ export class BoxCollider extends Component {
+ /** !#en Position offset
+ !#zh 位置偏移量 */
+ offset : Vec2;
+ /** !#en Box size
+ !#zh 包围盒大小 */
+ size : Size;
+ }
+ /** !#en Circle Collider.
+ !#zh 圆形碰撞组件 */
+ export class CircleCollider extends Component {
+ /** !#en Position offset
+ !#zh 位置偏移量 */
+ offset : Vec2;
+ /** !#en Circle radius
+ !#zh 圆形半径 */
+ radius : number;
+ }
+ /** !#en Collider component base class.
+ !#zh 碰撞组件基类 */
+ export class Collider extends Component {
+ /** !#en Tag. If a node has several collider components, you can judge which type of collider is collided according to the tag.
+ !#zh 标签。当一个节点上有多个碰撞组件时,在发生碰撞后,可以使用此标签来判断是节点上的哪个碰撞组件被碰撞了。 */
+ tag : Integer;
+ }
+ /** !#en
+ A simple collision manager class.
+ It will calculate whether the collider collides other colliders, if collides then call the callbacks.
+ !#zh
+ 一个简单的碰撞组件管理类,用于处理节点之间的碰撞组件是否产生了碰撞,并调用相应回调函数。 */
+ export class CollisionManager {
+ /** !#en
+ !#zh
+ 是否开启碰撞管理,默认为不开启 */
+ enabled : boolean;
+ /** !#en
+ !#zh
+ 是否绘制碰撞组件的包围盒,默认为不绘制 */
+ enabledDrawBoundingBox : boolean;
+ /** !#en
+ !#zh
+ 是否绘制碰撞组件的形状,默认为不绘制 */
+ enabledDebugDraw : boolean;
+ }
+ /** !#en Intersection helper class
+ !#zh 辅助类,用于测试形状与形状是否相交 */
+ export class Intersection {
+ /** !#en Test line and line
+ !#zh 测试线段与线段是否相交
+ @param a1 The start point of the first line
+ @param a2 The end point of the first line
+ @param b1 The start point of the second line
+ @param b2 The end point of the second line
+ */
+ lineLine(a1 : Vec2, a2 : Vec2, b1 : Vec2, b2 : Vec2) : boolean;
+ /** !#en Test line and rect
+ !#zh 测试线段与矩形是否相交
+ @param a1 The start point of the line
+ @param a2 The end point of the line
+ @param b The rect
+ */
+ lineRect(a1 : Vec2, a2 : Vec2, b : Rect) : boolean;
+ /** !#en Test line and polygon
+ !#zh 测试线段与多边形是否相交
+ @param a1 The start point of the line
+ @param a2 The end point of the line
+ @param b The polygon, a set of points
+ */
+ linePolygon(a1 : Vec2, a2 : Vec2, b : [Vec2]) : boolean;
+ /** !#en Test rect and rect
+ !#zh 测试矩形与矩形是否相交
+ @param a The first rect
+ @param b The second rect
+ */
+ rectRect(a : Rect, b : Rect) : boolean;
+ /** !#en Test rect and polygon
+ !#zh 测试矩形与多边形是否相交
+ @param a The rect
+ @param b The polygon, a set of points
+ */
+ rectPolygon(a : Rect, b : [Vec2]) : boolean;
+ /** !#en Test polygon and polygon
+ !#zh 测试多边形与多边形是否相交
+ @param a The first polygon, a set of points
+ @param b The second polygon, a set of points
+ */
+ polygonPolygon(a : [Vec2], b : [Vec2]) : boolean;
+ /** !#en Test circle and circle
+ !#zh 测试圆形与圆形是否相交
+ @param a Object contains position and radius
+ @param b Object contains position and radius
+ */
+ circleCircle(a : any, b : any) : boolean;
+ /** !#en Test polygon and circle
+ !#zh 测试矩形与圆形是否相交
+ @param polygon The Polygon, a set of points
+ @param circle Object contains position and radius
+ */
+ polygonCircle(polygon : [Vec2], circle : any) : boolean;
+ /** !#en Test whether the point is in the polygon
+ !#zh 测试一个点是否在一个多边形中
+ @param point The point
+ @param polygon The polygon, a set of points
+ */
+ pointInPolygon(point : Vec2, polygon : [Vec2]) : boolean;
+ /** !#en Calculate the distance of point to line.
+ !#zh 计算点到直线的距离。如果这是一条线段并且垂足不在线段内,则会计算点到线段端点的距离。
+ @param point The point
+ @param start The start point of line
+ @param end The end point of line
+ @param isSegment whether this line is a segment
+ */
+ pointLineDistance(point : Vec2, start : Vec2, end : Vec2, isSegment : boolean) : boolean;
+ }
+ /** !#en Polygon Collider.
+ !#zh 多边形碰撞组件 */
+ export class PolygonCollider extends Component {
+ /** !#en Position offset
+ !#zh 位置偏移量 */
+ offset : Vec2;
+ /** !#en Polygon points
+ !#zh 多边形顶点数组 */
+ points : [Vec2];
+ }
+ /** !#en
+ Base class for handling assets used in Fireball. This class can be instantiate.
+
+ You may want to override:
+ - createNode
+ - cc.Object._serialize
+ - cc.Object._deserialize
+ !#zh
+ 资源基类,该类可以被实例化。
+
+ 您可能需要重写:
+ - createNode
+ - cc.Object._serialize
+ - cc.Object._deserialize */
+ export class Asset extends RawAsset {
+ constructor();
+ /** !#en
+ Returns the url of this asset's first raw file, if none of rawFile exists,
+ it will returns an empty string.
+ !#zh 返回该资源的原始文件的 URL,如果不支持 RAW 文件,它将返回一个空字符串。 */
+ rawUrl : string;
+ /** !#en
+ Returns the url of this asset's raw files, if none of rawFile exists,
+ it will returns an empty array.
+ !#zh 返回该资源的原文件的 URL 数组,如果不支持 RAW 文件,它将返回一个空数组。 */
+ rawUrls : String[];
+ /** !#en Indicates whether its dependent raw assets can support deferred load if the owner scene is marked as `asyncLoadAssets`.
+ !#zh 当场景被标记为 `asyncLoadAssets`,禁止延迟加载该资源所依赖的其它 RawAsset。 */
+ preventDeferredLoadDependents : boolean;
+ /** !#en
+ Create a new node using this asset in the scene.
+ If this type of asset dont have its corresponding node type, this method should be null.
+ !#zh
+ 使用该资产在场景中创建一个新节点。
+ 如果这类资产没有相应的节点类型,该方法应该是空的。
+ */
+ createNode(callback: (error: string, node: any) => void) : void;
+ }
+ /** !#en Class for audio data handling.
+ !#zh 音频资源类。 */
+ export class AudioClip extends RawAsset {
+ constructor();
+ }
+ /** !#en Class for BitmapFont handling.
+ !#zh 位图字体资源类。 */
+ export class BitmapFont extends RawAsset {
+ constructor();
+ }
+ /** !#en Class for Font handling.
+ !#zh 字体资源类。 */
+ export class Font extends RawAsset {
+ constructor();
+ }
+ /** !#en Class for prefab handling.
+ !#zh 预制资源类。 */
+ export class Prefab extends Asset {
+ constructor();
+ }
+ /** !#en
+ The base class for registering asset types.
+
+ You may want to override:
+ - createNode (static)
+ !#zh
+ 注册用的资源基类。
+ 你可能要重写:
+ - createNode (static) */
+ export class RawAsset extends CCObject {
+ /** !#en
+ Create a new node in the scene.
+ If this type of asset dont have its corresponding node type, this method should be null.
+ !#zh
+ 在场景中创建一个新节点。
+ 如果这类资源没有相应的节点类型,该方法应该是空的。
+ */
+ createNodeByInfo(Info : any, callback: (error: string, node: any) => void) : void;
+ }
+ /** !#en Class for scene handling.
+ !#zh 场景资源类。 */
+ export class SceneAsset extends Asset {
+ constructor();
+ scene : cc.Scene;
+ /** !#en Indicates the raw assets of this scene can be load after scene launched.
+ !#zh 指示该场景依赖的资源可否在场景切换后再延迟加载。 */
+ asyncLoadAssets : boolean;
+ }
+ /** !#en Class for script handling.
+ !#zh Script 资源类。 */
+ export class _Script extends Asset {
+ constructor();
+ }
+ /** !#en Class for JavaScript handling.
+ !#zh JavaScript 资源类。 */
+ export class _JavaScript extends Asset {
+ constructor();
+ }
+ /** !#en Class for coffee script handling.
+ !#zh CoffeeScript 资源类。 */
+ export class CoffeeScript extends Asset {
+ constructor();
+ }
+ /** !#en Class for sprite atlas handling.
+ !#zh 精灵图集资源类。 */
+ export class SpriteAtlas extends RawAsset {
+ constructor();
+ /** Returns the texture of the sprite atlas
+ */
+ getTexture() : cc.Texture2D;
+ /** Returns the sprite frame correspond to the given key in sprite atlas.
+ */
+ getSpriteFrame(key : string) : SpriteFrame;
+ /** Returns the sprite frames in sprite atlas.
+ */
+ getSpriteFrames() : [SpriteFrame];
+ }
+ /** !#en Class for TTFFont handling.
+ !#zh TTF 字体资源类。 */
+ export class TTFFont extends Asset {
+ constructor();
+ }
+ /** !#en Class for text file.
+ !#zh 文本资源类。 */
+ export class TextAsset extends Asset {
+ constructor();
+ }
+ /** !#en The animation component is used to play back animations.
+
+ Animation provide several events to register:
+ - play : Emit when egine playing animation
+ - stop : Emit when stop playing animation
+ - pause : Emit when pause animation
+ - resume : Emit when resume animation
+ - lastframe : If animation repeat coutn is larger than 1, emit when animation play to the last frame
+ - finished : Emit when finish playing animation
+
+ !#zh Animation 组件用于播放动画。你能指定动画剪辑到动画组件并从脚本控制播放。
+
+ Animation 提供了一系列可注册的事件:
+ - play : 开始播放时
+ - stop : 停止播放时
+ - pause : 暂停播放时
+ - resume : 恢复播放时
+ - lastframe : 假如动画循环次数大于 1,当动画播放到最后一帧时
+ - finished : 动画播放完成时 */
+ export class Animation extends CCComponent {
+ /** !#en Animation will play the default clip when start game.
+ !#zh 在勾选自动播放或调用 play() 时默认播放的动画剪辑。 */
+ defaultClip : AnimationClip;
+ /** !#en Current played clip.
+ !#zh 当前播放的动画剪辑。 */
+ currentClip : AnimationClip;
+ /** !#en Whether the animation should auto play the default clip when start game.
+ !#zh 是否在运行游戏后自动播放默认动画剪辑。 */
+ playOnLoad : boolean;
+ /** !#en Get all the clips used in this animation.
+ !#zh 获取动画组件上的所有动画剪辑。
+ */
+ getClips() : AnimationClip[];
+ /** !#en Plays an animation and stop other animations.
+ !#zh 播放当前或者指定的动画,并且停止当前正在播放动画。
+ @param name The name of animation to play. If no name is supplied then the default animation will be played.
+ @param startTime play an animation from startTime
+
+ @example
+ ```js
+ var animCtrl = this.node.getComponent(cc.Animation);
+ animCtrl.play("linear");
+ ```
+ */
+ play(name? : string, startTime? : number) : AnimationState;
+ /** !#en
+ Plays an additive animation, it will not stop other animations.
+ If there are other animations playing, then will play several animations at the same time.
+ !#zh 播放当前或者指定的动画(将不会停止当前播放的动画)。
+ @param name The name of animation to play. If no name is supplied then the default animation will be played.
+ @param startTime play an animation from startTime
+
+ @example
+ ```js
+ // linear_1 and linear_2 at the same time playing.
+ var animCtrl = this.node.getComponent(cc.Animation);
+ animCtrl.playAdditive("linear_1");
+ animCtrl.playAdditive("linear_2");
+ ```
+ */
+ playAdditive(name? : string, startTime? : number) : AnimationState;
+ /** !#en Stops an animation named name. If no name is supplied then stops all playing animations that were started with this Animation.
+ Stopping an animation also Rewinds it to the Start.
+ !#zh 停止当前或者指定的动画。如果没有指定名字,则停止所有动画。
+ @param name The animation to stop, if not supplied then stops all playing animations.
+ */
+ stop(name? : string) : void;
+ /** !#en Pauses an animation named name. If no name is supplied then pauses all playing animations that were started with this Animation.
+ !#zh 暂停当前或者指定的动画。如果没有指定名字,则暂停当前正在播放的动画。
+ @param name The animation to pauses, if not supplied then pauses all playing animations.
+ */
+ pause(name? : string) : void;
+ /** !#en Resumes an animation named name. If no name is supplied then resumes all paused animations that were started with this Animation.
+ !#zh 重新播放指定的动画,如果没有指定名字,则重新播放当前正在播放的动画。
+ @param name The animation to resumes, if not supplied then resumes all paused animations.
+ */
+ resume(name? : string) : void;
+ /** !#en Make an animation named name go to the specified time. If no name is supplied then make all animations go to the specified time.
+ !#zh 设置指定动画的播放时间。如果没有指定名字,则设置所有动画的播放时间。
+ @param time The time to go to
+ @param name Specified animation name, if not supplied then make all animations go to the time.
+ */
+ setCurrentTime(time? : number, name? : string) : void;
+ /** !#en Returns the animation state named name. If no animation with the specified name, the function will return null.
+ !#zh 获取当前或者指定的动画状态,如果未找到指定动画剪辑则返回 null。
+ */
+ getAnimationState(name : string) : AnimationState;
+ /** !#en Adds a clip to the animation with name newName. If a clip with that name already exists it will be replaced with the new clip.
+ !#zh 添加动画剪辑,并且可以重新设置该动画剪辑的名称。
+ @param clip the clip to add
+ */
+ addClip(clip : AnimationClip, newName? : string) : AnimationState;
+ /** !#en
+ Remove clip from the animation list. This will remove the clip and any animation states based on it.
+ If there are animation states depand on the clip are playing or clip is defaultClip, it will not delete the clip.
+ But if force is true, then will always remove the clip and any animation states based on it. If clip is defaultClip, defaultClip will be reset to null
+ !#zh
+ 从动画列表中移除指定的动画剪辑,
+ 如果依赖于 clip 的 AnimationState 正在播放或者 clip 是 defaultClip 的话,默认是不会删除 clip 的。
+ 但是如果 force 参数为 true,则会强制停止该动画,然后移除该动画剪辑和相关的动画。这时候如果 clip 是 defaultClip,defaultClip 将会被重置为 null。
+ @param force If force is true, then will always remove the clip and any animation states based on it.
+ */
+ removeClip(clip : AnimationClip, force : boolean) : void;
+ /** !#en
+ Samples animations at the current state.
+ This is useful when you explicitly want to set up some animation state, and sample it once.
+ !#zh 对当前动画进行采样。你可以手动将动画设置到某一个状态,然后采样一次。
+ */
+ sample() : void;
+ /** !#en
+ Register animation event callback.
+ The event argumetns will provide the AnimationState which emit the event.
+ When play an animation, will auto register the event callback to the AnimationState, and unregister the event callback from the AnimationState when animation stopped.
+ !#zh
+ 注册动画事件回调。
+ 回调的事件里将会附上发送事件的 AnimationState。
+ 当播放一个动画时,会自动将事件注册到对应的 AnimationState 上,停止播放时会将事件从这个 AnimationState 上取消注册。
+ @param type A string representing the event type to listen for.
+ @param callback The callback that will be invoked when the event is dispatched.
+ The callback is ignored if it is a duplicate (the callbacks are unique).
+ @param target The target to invoke the callback, can be null
+ @param useCapture When set to true, the capture argument prevents callback
+ from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE.
+ When false, callback will NOT be invoked when event's eventPhase attribute value is CAPTURING_PHASE.
+ Either way, callback will be invoked when event's eventPhase attribute value is AT_TARGET.
+
+ @example
+ ```js
+ onPlay: function (event) {
+ var state = event.detail; // state instanceof cc.AnimationState
+ var type = event.type; // type === 'play';
+ }
+
+ // register event to all animation
+ animation.on('', 'play', this.onPlay, this);
+ ```
+ */
+ on(type : string, callback: (param: Event) => void, target : any, useCapture : boolean) : void;
+ /** !#en
+ Unregister animation event callback.
+ !#zh
+ 取消注册动画事件回调。
+ @param type A string representing the event type being removed.
+ @param callback The callback to remove.
+ @param target The target to invoke the callback, if it's not given, only callback without target will be removed
+ @param useCapture Specifies whether the callback being removed was registered as a capturing callback or not.
+ If not specified, useCapture defaults to false. If a callback was registered twice,
+ one with capture and one without, each must be removed separately. Removal of a capturing callback
+ does not affect a non-capturing version of the same listener, and vice versa.
+
+ @example
+ ```js
+ // unregister event to all animation
+ animation.off('', 'play', this.onPlay, this);
+ ```
+ */
+ off(type : string, callback : Function, target : any, useCapture : boolean) : void;
+ }
+ /** !#en Audio Source.
+ !#zh 音频源组件,能对音频剪辑。 */
+ export class AudioSource extends Component {
+ /** !#en
+ Is the audio source playing (Read Only).
+ Note: isPlaying is not supported for Native platforms.
+ !#zh
+ 该音频剪辑是否正播放(只读)。
+ 注意:Native 平台暂时不支持 isPlaying。 */
+ isPlaying : boolean;
+ /** !#en The clip of the audio source.
+ !#zh 默认要播放的音频剪辑。 */
+ clip : AudioClip;
+ /** !#en The volume of the audio source.
+ !#zh 音频源的音量(0.0 ~ 1.0)。 */
+ volume : number;
+ /** !#en Is the audio source mute?
+ !#zh 是否静音音频源。Mute 是设置音量为 0,取消静音是恢复原来的音量。 */
+ mute : boolean;
+ /** !#en Is the audio source looping?
+ !#zh 音频源是否循环播放? */
+ loop : boolean;
+ /** !#en If set to true, the audio source will automatically start playing on onLoad.
+ !#zh 如果设置为true,音频源将在 onLoad 时自动播放。 */
+ playOnLoad : boolean;
+ /** !#en Plays the clip.
+ !#zh 播放音频剪辑。
+ */
+ play() : void;
+ /** !#en Stops the clip.
+ !#zh 停止当前音频剪辑。
+ */
+ stop() : void;
+ /** !#en Pause the clip.
+ !#zh 暂停当前音频剪辑。
+ */
+ pause() : void;
+ /** !#en Resume the clip.
+ !#zh 恢复播放。
+ */
+ resume() : void;
+ /** !#en Rewind playing music.
+ !#zh 从头开始播放。
+ */
+ rewind() : void;
+ }
+ /** !#en
+ Button has 3 Transition types
+ When Button state changed:
+ If Transition type is Button.Transition.NONE, Button will do nothing
+ If Transition type is Button.Transition.COLOR, Button will change target's color
+ If Transition type is Button.Transition.SPRITE, Button will change target Sprite's sprite
+
+ Button will trigger 5 events:
+ Button.EVENT_TOUCH_DOWN
+ Button.EVENT_TOUCH_UP
+ Button.EVENT_HOVER_IN
+ Button.EVENT_HOVER_MOVE
+ Button.EVENT_HOVER_OUT
+
+ !#zh
+ 按钮组件。可以被按下,或者点击。
+
+ 按钮可以通过修改 Transition 来设置按钮状态过渡的方式:
+ -Button.Transition.NONE // 不做任何过渡
+ -Button.Transition.COLOR // 进行颜色之间过渡
+ -Button.Transition.SPRITE // 进行精灵之间过渡
+
+ 按钮可以绑定事件(但是必须要在按钮的 Node 上才能绑定事件):
+ // 以下事件可以在全平台上都触发
+ -cc.Node.EventType.TOUCH_START // 按下时事件
+ -cc.Node.EventType.TOUCH_Move // 按住移动后事件
+ -cc.Node.EventType.TOUCH_END // 按下后松开后事件
+ -cc.Node.EventType.TOUCH_CANCEL // 按下取消事件
+ // 以下事件只在 PC 平台上触发
+ -cc.Node.EventType.MOUSE_DOWN // 鼠标按下时事件
+ -cc.Node.EventType.MOUSE_MOVE // 鼠标按住移动后事件
+ -cc.Node.EventType.MOUSE_ENTER // 鼠标进入目标事件
+ -cc.Node.EventType.MOUSE_LEAVE // 鼠标离开目标事件
+ -cc.Node.EventType.MOUSE_UP // 鼠标松开事件
+ -cc.Node.EventType.MOUSE_WHEEL // 鼠标滚轮事件 */
+ export class Button extends Component {
+ /** !#en
+ Whether the Button is disabled.
+ If true, the Button will trigger event and do transition.
+ !#zh
+ 按钮事件是否被响应,如果为 false,则按钮将被禁用。 */
+ interactable : boolean;
+ /** !#en Transition type
+ !#zh 按钮状态改变时过渡方式。 */
+ transition : Button.Transition;
+ /** !#en Normal state color.
+ !#zh 普通状态下按钮所显示的颜色。 */
+ normalColor : Color;
+ /** !#en Pressed state color
+ !#zh 按下状态时按钮所显示的颜色。 */
+ pressedColor : Color;
+ /** !#en Hover state color
+ !#zh 悬停状态下按钮所显示的颜色。 */
+ hoverColor : Color;
+ /** !#en Disabled state color
+ !#zh 禁用状态下按钮所显示的颜色。 */
+ disabledColor : Color;
+ /** !#en Color transition duration
+ !#zh 颜色过渡时所需时间 */
+ duration : number;
+ /** !#en Normal state sprite
+ !#zh 普通状态下按钮所显示的 Sprite 。 */
+ normalSprite : SpriteFrame;
+ /** !#en Pressed state sprite
+ !#zh 按下状态时按钮所显示的 Sprite 。 */
+ pressedSprite : SpriteFrame;
+ /** !#en Hover state sprite
+ !#zh 悬停状态下按钮所显示的 Sprite 。 */
+ hoverSprite : SpriteFrame;
+ /** !#en Disabled state sprite
+ !#zh 禁用状态下按钮所显示的 Sprite 。 */
+ disabledSprite : SpriteFrame;
+ /** !#en
+ Transition target.
+ When Button state changed:
+ If Transition type is Button.Transition.NONE, Button will do nothing
+ If Transition type is Button.Transition.COLOR, Button will change target's color
+ If Transition type is Button.Transition.SPRITE, Button will change target Sprite's sprite
+ !#zh
+ 需要过渡的目标。
+ 当前按钮状态改变有:
+ -如果 Transition type 选择 Button.Transition.NONE,按钮不做任何过渡。
+ -如果 Transition type 选择 Button.Transition.COLOR,按钮会对目标颜色进行颜色之间的过渡。
+ -如果 Transition type 选择 Button.Transition.NONE,按钮会对目标 Sprite 进行 Sprite 之间的过渡。 */
+ target : Node;
+ /** !#en If Button is clicked, it will trigger event's handler
+ !#zh 按钮的点击事件列表。 */
+ clickEvents : Component.EventHandler[];
+ }
+ /** !#zh: 作为 UI 根节点,为所有子节点提供视窗四边的位置信息以供对齐,另外提供屏幕适配策略接口,方便从编辑器设置。
+ 注:由于本节点的尺寸会跟随屏幕拉伸,所以 anchorPoint 只支持 (0.5, 0.5),否则适配不同屏幕时坐标会有偏差。 */
+ export class Canvas extends Component {
+ /** !#en Current active canvas, the scene should only have one active canvas at the same time.
+ !#zh 当前激活的画布组件,场景同一时间只能有一个激活的画布。 */
+ instance : Canvas;
+ /** !#en The desigin resolution for current scene.
+ !#zh 当前场景设计分辨率。 */
+ designResolution : cc.Size;
+ /** !#en TODO
+ !#zh: 是否优先将设计分辨率高度撑满视图高度。 */
+ fitHeight : boolean;
+ /** !#en TODO
+ !#zh: 是否优先将设计分辨率宽度撑满视图宽度。 */
+ fitWidth : boolean;
+ }
+ /** !#en
+ Base class for everything attached to Node(Entity).
+
+ NOTE: Not allowed to use construction parameters for Component's subclasses,
+ because Component is created by the engine.
+ !#zh
+ 所有附加到节点的基类。
+
+ 注意:不允许使用组件的子类构造参数,因为组件是由引擎创建的。 */
+ export class Component extends Object {
+ constructor();
+ /** !#en The node this component is attached to. A component is always attached to a node.
+ !#zh 该组件被附加到的节点。组件总会附加到一个节点。 */
+ node : Node;
+ /** !#en The uuid for editor.
+ !#zh 组件的 uuid,用于编辑器。 */
+ uuid : string;
+ /** !#en indicates whether this component is enabled or not.
+ !#zh 表示该组件自身是否启用。 */
+ enabled : boolean;
+ /** !#en indicates whether this component is enabled and its node is also active in the hierarchy.
+ !#zh 表示该组件是否被启用并且所在的节点也处于激活状态。。 */
+ enabledInHierarchy : boolean;
+ /** !#en TODO
+ !#zh onLoad 是否被调用。 */
+ _isOnLoadCalled : boolean;
+ /** !#en Update is called every frame, if the Component is enabled.
+ !#zh 如果该组件启用,则每帧调用 update。
+ */
+ update() : void;
+ /** !#en LateUpdate is called every frame, if the Component is enabled.
+ !#zh 如果该组件启用,则每帧调用 LateUpdate。
+ */
+ lateUpdate() : void;
+ /** !#en When attaching to an active node or its node first activated.
+ !#zh 当附加到一个激活的节点上或者其节点第一次激活时候调用。
+ */
+ onLoad() : void;
+ /** !#en Called before all scripts' update if the Component is enabled the first time.
+ !#zh 如果该组件第一次启用,则在所有组件的 update 之前调用。
+ */
+ start() : void;
+ /** !#en Called when this component becomes enabled and its node is active.
+ !#zh 当该组件被启用,并且它的节点也激活时。
+ */
+ onEnable() : void;
+ /** !#en Called when this component becomes disabled or its node becomes inactive.
+ !#zh 当该组件被禁用或节点变为无效时调用。
+ */
+ onDisable() : void;
+ /** !#en Called when this component will be destroyed.
+ !#zh 当该组件被销毁时调用
+ */
+ onDestroy() : void;
+ onFocusInEditor() : void;
+ onLostFocusInEditor() : void;
+ /** !#en Adds a component class to the node. You can also add component to node by passing in the name of the script.
+ !#zh 向节点添加一个组件类,你还可以通过传入脚本的名称来添加组件。
+ @param typeOrTypename the constructor or the class name of the component to add
+
+ @example
+ ```js
+ var sprite = node.addComponent(cc.Sprite);
+ var test = node.addComponent("Test");
+ ```
+ */
+ addComponent(typeOrTypename : Function|string) : Component;
+ /** !#en
+ Returns the component of supplied type if the node has one attached, null if it doesn't.
+ You can also get component in the node by passing in the name of the script.
+ !#zh
+ 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
+ 传入参数也可以是脚本的名称。
+
+ @example
+ ```js
+ // get sprite component.
+ var sprite = node.getComponent(cc.Sprite);
+ // get custom test calss.
+ var test = node.getComponent("Test");
+ ```
+ */
+ getComponent(typeOrClassName : Function|string) : Component;
+ /** !#en Returns all components of supplied Type in the node.
+ !#zh 返回节点上指定类型的所有组件。
+
+ @example
+ ```js
+ var sprites = node.getComponents(cc.Sprite);
+ var tests = node.getComponents("Test");
+ ```
+ */
+ getComponents(typeOrClassName : Function|string) : Component[];
+ /** !#en Returns the component of supplied type in any of its children using depth first search.
+ !#zh 递归查找所有子节点中第一个匹配指定类型的组件。
+
+ @example
+ ```js
+ var sprite = node.getComponentInChildren(cc.Sprite);
+ var Test = node.getComponentInChildren("Test");
+ ```
+ */
+ getComponentInChildren(typeOrClassName : Function|string) : Component;
+ /** !#en Returns the components of supplied type in self or any of its children using depth first search.
+ !#zh 递归查找自身或所有子节点中指定类型的组件
+
+ @example
+ ```js
+ var sprites = node.getComponentsInChildren(cc.Sprite);
+ var tests = node.getComponentsInChildren("Test");
+ ```
+ */
+ getComponentsInChildren(typeOrClassName : Function|string) : Component[];
+ /** !#en
+ If the component's bounding box is different from the node's, you can implement this method to supply
+ a custom axis aligned bounding box (AABB), so the editor's scene view can perform hit test properly.
+ !#zh
+ 如果组件的包围盒与节点不同,您可以实现该方法以提供自定义的轴向对齐的包围盒(AABB),
+ 以便编辑器的场景视图可以正确地执行点选测试。
+ @param out_rect the Rect to receive the bounding box
+ */
+ _getLocalBounds(out_rect : Rect) : void;
+ /** !#en
+ onRestore is called after the user clicks the Reset item in the Inspector's context menu or performs
+ an undo operation on this component.
+
+ If the component contains the "internal state", short for "temporary member variables which not included
+ in its CCClass properties", then you may need to implement this function.
+
+ The editor will call the getset accessors of your component to record/restore the component's state
+ for undo/redo operation. However, in extreme cases, it may not works well. Then you should implement
+ this function to manually synchronize your component's "internal states" with its public properties.
+ Once you implement this function, all the getset accessors of your component will not be called when
+ the user performs an undo/redo operation. Which means that only the properties with default value
+ will be recorded or restored by editor.
+
+ Similarly, the editor may failed to reset your component correctly in extreme cases. Then if you need
+ to support the reset menu, you should manually synchronize your component's "internal states" with its
+ properties in this function. Once you implement this function, all the getset accessors of your component
+ will not be called during reset operation. Which means that only the properties with default value
+ will be reset by editor.
+
+ This function is only called in editor mode.
+ !#zh
+ onRestore 是用户在检查器菜单点击 Reset 时,对此组件执行撤消操作后调用的。
+
+ 如果组件包含了“内部状态”(不在 CCClass 属性中定义的临时成员变量),那么你可能需要实现该方法。
+
+ 编辑器执行撤销/重做操作时,将调用组件的 get set 来录制和还原组件的状态。
+ 然而,在极端的情况下,它可能无法良好运作。
+ 那么你就应该实现这个方法,手动根据组件的属性同步“内部状态”。
+ 一旦你实现这个方法,当用户撤销或重做时,组件的所有 get set 都不会再被调用。
+ 这意味着仅仅指定了默认值的属性将被编辑器记录和还原。
+
+ 同样的,编辑可能无法在极端情况下正确地重置您的组件。
+ 于是如果你需要支持组件重置菜单,你需要在该方法中手工同步组件属性到“内部状态”。
+ 一旦你实现这个方法,组件的所有 get set 都不会在重置操作时被调用。
+ 这意味着仅仅指定了默认值的属性将被编辑器重置。
+
+ 此方法仅在编辑器下会被调用。
+ */
+ onRestore() : void;
+ /** !#en
+ Schedules a custom selector.
+ If the selector is already scheduled, then the interval parameter will be updated without scheduling it again.
+ !#zh
+ 调度一个自定义的回调函数。
+ 如果回调函数已调度,那么将不会重复调度它,只会更新时间间隔参数。
+ @param callback The callback function
+ @param interval Tick interval in seconds. 0 means tick every frame. If interval = 0, it's recommended to use scheduleUpdate() instead.
+ @param repeat The selector will be executed (repeat + 1) times, you can use kCCRepeatForever for tick infinitely.
+ @param delay The amount of time that the first tick will wait before execution.
+
+ @example
+ ```js
+ var timeCallback = function (dt) {
+ cc.log("time: " + dt);
+ }
+ this.schedule(timeCallback, 1);
+ ```
+ */
+ schedule(callback : Function, interval? : number, repeat? : number, delay? : number) : void;
+ /** !#en Schedules a callback function that runs only once, with a delay of 0 or larger.
+ !#zh 调度一个只运行一次的回调函数,可以指定 0 让回调函数在下一帧立即执行或者在一定的延时之后执行。
+ @param callback A function wrapped as a selector
+ @param delay The amount of time that the first tick will wait before execution.
+
+ @example
+ ```js
+ var timeCallback = function (dt) {
+ cc.log("time: " + dt);
+ }
+ this.scheduleOnce(timeCallback, 2);
+ ```
+ */
+ scheduleOnce(callback : Function, delay? : number) : void;
+ /** !#en Unschedules a custom callback function.
+ !#zh 取消调度一个自定义的回调函数。
+ @param callback_fn A function wrapped as a selector
+
+ @example
+ ```js
+ this.unschedule(_callback);
+ ```
+ */
+ unschedule(callback_fn : Function) : void;
+ /** !#en
+ unschedule all scheduled callback functions: custom callback functions, and the 'update' callback function.
+ Actions are not affected by this method.
+ !#zh 取消调度所有已调度的回调函数:定制的回调函数以及 'update' 回调函数。动作不受此方法影响。
+
+ @example
+ ```js
+ this.unscheduleAllCallbacks();
+ ```
+ */
+ unscheduleAllCallbacks() : void;
+ }
+ /** !#en cc.EditBox is a component for inputing text, you can use it to gather small amounts of text from users.
+ !#zh EditBox 组件,用于获取用户的输入文本。 */
+ export class EditBox extends _RendererUnderSG {
+ /** !#en Input string of EditBox.
+ !#zh 输入框的初始输入内容,如果为空则会显示占位符的文本。 */
+ string : string;
+ /** !#en The background image of EditBox.
+ !#zh 输入框的背景图片 */
+ backGroundImage : SpriteFrame;
+ /** !#en
+ The return key type of EditBox.
+ Note: it is meaningless for web platforms and desktop platforms.
+ !#zh
+ 指定移动设备上面回车按钮的样式。
+ 注意:这个选项对 web 平台与 desktop 平台无效。 */
+ returnType : EditBox.KeyboardReturnType;
+ /** !#en Set the input flags that are to be applied to the EditBox.
+ !#zh 指定输入标志位,可以指定输入方式为密码或者单词首字母大写。 */
+ inputFlag : EditBox.InputFlag;
+ /** !#en
+ Set the input mode of the edit box.
+ If you pass ANY, it will create a multiline EditBox.
+ !#zh
+ 指定输入模式: ANY表示多行输入,其它都是单行输入,移动平台上还可以指定键盘样式。 */
+ inputMode : EditBox.InputMode;
+ /** !#en Font size of the input text.
+ !#zh 输入框文本的字体大小 */
+ fontSize : number;
+ /** !#en Change the lineHeight of displayed text.
+ !#zh 输入框文本的行高。 */
+ lineHeight : number;
+ /** !#en Font color of the input text.
+ !#zh 输入框文本的颜色。 */
+ fontColor : Color;
+ /** !#en The display text of placeholder.
+ !#zh 输入框占位符的文本内容。 */
+ placeholder : string;
+ /** !#en The font size of placeholder.
+ !#zh 输入框占位符的字体大小。 */
+ placeholderFontSize : number;
+ /** !#en The font color of placeholder.
+ !#zh 输入框最大允许输入的字符个数。 */
+ placeholderFontColor : Color;
+ /** !#en The maximize input length of EditBox.
+ !#zh 输入框最大允许输入的字符个数。 */
+ maxLength : number;
+ /** !#en The event handler to be called when EditBox began to edit text.
+ !#zh 开始编辑文本输入框触发的事件回调。 */
+ editingDidBegin : Component.EventHandler;
+ /** !#en The event handler to be called when EditBox text changes.
+ !#zh 编辑文本输入框时触发的事件回调。 */
+ textChanged : Component.EventHandler;
+ /** !#en The event handler to be called when EditBox edit ends.
+ !#zh 结束编辑文本输入框时触发的事件回调。 */
+ editingDidEnded : Component.EventHandler;
+ /** !#en The event handler to be called when return key is pressed. Windows is not supported.
+ !#zh 当用户按下回车按键时的事件回调,目前不支持 windows 平台 */
+ editingReturn : Component.EventHandler;
+ }
+ /** !#en The Label Component.
+ !#zh 文字标签组件 */
+ export class Label extends _RendererUnderSG {
+ /** !#en Content string of label.
+ !#zh 标签显示的文本内容。 */
+ string : string;
+ /** !#en Horizontal Alignment of label.
+ !#zh 文本内容的水平对齐方式。 */
+ horizontalAlign : Label.HorizontalAlign;
+ /** !#en Vertical Alignment of label.
+ !#zh 文本内容的垂直对齐方式。 */
+ verticalAlign : Label.VerticalAlign;
+ /** !#en The actual rendering font size in shrink mode
+ !#zh SHRINK 模式下面文本实际渲染的字体大小 */
+ actualFontSize : number;
+ /** !#en Font size of label.
+ !#zh 文本字体大小。 */
+ fontSize : number;
+ /** !#en Line Height of label.
+ !#zh 文本行高。 */
+ lineHeight : number;
+ /** !#en Overflow of label.
+ !#zh 文字显示超出范围时的处理方式。 */
+ overflow : Label.Overflow;
+ /** !#en Whether auto wrap label when string width is large than label width.
+ !#zh 是否自动换行。 */
+ enableWrapText : boolean;
+ /** !#en The font of label.
+ !#zh 文本字体。 */
+ font : cc.Font;
+ /** !#en Whether use system font name or not.
+ !#zh 是否使用系统字体。 */
+ isSystemFontUsed : boolean;
+ }
+ /** !#en Outline effect used to change the display, only used for TTF font
+ !#zh 描边效果组件,用于字体描边,只能用于系统字体 */
+ export class LabelOutline extends Component {
+ /** !#en Change the outline color
+ !#zh 改变描边的颜色 */
+ color : Color;
+ /** !#en Change the outline width
+ !#zh 改变描边的宽度 */
+ width : number;
+ }
+ /** !#en The Layout is a container component, use it to arrange child elements easily.
+ !#zh Layout 组件相当于一个容器,能自动对它的所有子节点进行统一排版。 */
+ export class Layout extends Component {
+ /** !#en The layout type.
+ !#zh 布局类型 */
+ type : Layout.Type;
+ /** !#en
+ The are three resize modes for Layout.
+ None, resize Container and resize children.
+ !#zh 缩放模式 */
+ resizeMode : Layout.ResizeMode;
+ /** !#en The cell size for grid layout.
+ !#zh 每个格子的大小,只有布局类型为 GRID 的时候才有效。 */
+ cellSize : Size;
+ /** !#en
+ The start axis for grid layout. If you choose horizontal, then children will layout horizontally at first,
+ and then break line on demand. Choose vertical if you want to layout vertically at first .
+ !#zh 起始轴方向类型,可进行水平和垂直布局排列,只有布局类型为 GRID 的时候才有效。 */
+ startAxis : Layout.AxisDirection;
+ /** !#en The padding of layout, it only effect the layout in one direction.
+ !#zh 容器内边距,只会在布局方向上生效。 */
+ padding : number;
+ /** !#en The distance in x-axis between each element in layout.
+ !#zh 子节点之间的水平间距。 */
+ spacingX : number;
+ /** !#en The distance in y-axis between each element in layout.
+ !#zh 子节点之间的垂直间距。 */
+ spacingY : number;
+ /** !#en
+ Only take effect in Vertical layout mode.
+ This option changes the start element's positioning.
+ !#zh 垂直排列子节点的方向。 */
+ verticalDirection : Layout.VerticalDirection;
+ /** !#en
+ Only take effect in Horizontal layout mode.
+ This option changes the start element's positioning.
+ !#zh 水平排列子节点的方向。 */
+ horizontalDirection : Layout.HorizontalDirection;
+ }
+ /** undefined */
+ export class Mask extends _RendererInSG {
+ }
+ /** !#en
+ Visual indicator of progress in some operation.
+ Displays a bar to the user representing how far the operation has progressed.
+ !#zh
+ 进度条组件,可用于显示加载资源时的进度。 */
+ export class ProgressBar extends Component {
+ /** !#en The targeted Sprite which will be changed progressively.
+ !#zh 用来显示进度条比例的 Sprite 对象。 */
+ barSprite : Sprite;
+ /** !#en The progress mode, there are two modes supported now: horizontal and vertical.
+ !#zh 进度条的模式 */
+ mode : ProgressBar.Mode;
+ /** !#en The total width or height of the bar sprite.
+ !#zh 进度条实际的总长度 */
+ totalLength : number;
+ /** !#en The current progress of the bar sprite. The valid value is between 0-1.
+ !#zh 当前进度值,该数值的区间是 0-1 之间。 */
+ progress : number;
+ /** !#en Whether reverse the progress direction of the bar sprite.
+ !#zh 进度条是否进行反方向变化。 */
+ reverse : boolean;
+ }
+ /** Rendering component in scene graph.
+ Maintains a node which will be the scene graph of component's Node. */
+ export class _RendererInSG extends _SGComponent {
+ }
+ /** The base rendering component which will attach a leaf node to the cocos2d scene graph. */
+ export class _RendererUnderSG extends _SGComponent {
+ }
+ /** The base class for all rendering component in scene graph.
+
+ You should override:
+ - _createSgNode
+ - _initSgNode */
+ export class _SGComponent extends Component {
+ }
+ /** !#en
+ The Scrollbar control allows the user to scroll an image or other view that is too large to see completely
+ !#zh 滚动条组件 */
+ export class Scrollbar extends Component {
+ /** !#en The "handle" part of the scrollbar.
+ !#zh 作为当前滚动区域位置显示的滑块 Sprite。 */
+ handle : cc.Sprite;
+ /** !#en The direction of scrollbar.
+ !#zh ScrollBar 的滚动方向。 */
+ direction : Scrollbar.Direction;
+ /** !#en Whehter enable auto hide or not.
+ !#zh 是否在没有滚动动作时自动隐藏 ScrollBar。 */
+ enableAutoHide : boolean;
+ /** !#en
+ The time to hide scrollbar when scroll finished.
+ Note: This value is only useful when enableAutoHide is true.
+ !#zh
+ 没有滚动动作后经过多久会自动隐藏。
+ 注意:只要当 “enableAutoHide” 为 true 时,才有效。 */
+ autoHideTime : number;
+ }
+ /** !#en
+ Layout container for a view hierarchy that can be scrolled by the user,
+ allowing it to be larger than the physical display.
+
+ !#zh
+ 滚动视图组件 */
+ export class ScrollView extends Component {
+ /** !#en This is a reference to the UI element to be scrolled.
+ !#zh 可滚动展示内容的节点。 */
+ content : Node;
+ /** !#en Enable horizontal scroll.
+ !#zh 是否开启水平滚动。 */
+ horizontal : boolean;
+ /** !#en Enable vertical scroll.
+ !#zh 是否开启垂直滚动。 */
+ vertical : boolean;
+ /** !#en When inertia is set, the content will continue to move when touch ended.
+ !#zh 是否开启滚动惯性。 */
+ inertia : boolean;
+ /** !#en
+ It determines how quickly the content stop moving. A value of 1 will stop the movement immediately.
+ A value of 0 will never stop the movement until it reaches to the boundary of scrollview.
+ !#zh
+ 开启惯性后,在用户停止触摸后滚动多快停止,0表示永不停止,1表示立刻停止。 */
+ brake : number;
+ /** !#en When elastic is set, the content will be bounce back when move out of boundary.
+ !#zh 是否允许滚动内容超过边界,并在停止触摸后回弹。 */
+ elastic : boolean;
+ /** !#en The elapse time of bouncing back. A value of 0 will bounce back immediately.
+ !#zh 回弹持续的时间,0 表示将立即反弹。 */
+ bounceDuration : number;
+ /** !#en The horizontal scrollbar reference.
+ !#zh 水平滚动的 ScrollBar。 */
+ horizontalScrollBar : Scrollbar;
+ /** !#en The vertical scrollbar reference.
+ !#zh 垂直滚动的 ScrollBar。 */
+ verticalScrollBar : Scrollbar;
+ /** !#en Scrollview events callback
+ !#zh 滚动视图的事件回调函数 */
+ scrollEvents : Component.EventHandler[];
+ /** !#en If cancelInnerEvents is set to true, the scroll behavior will cancel touch events on inner content nodes of the scroll view
+ It's set to true by default.
+ !#zh 如果这个属性被设置为 true,那么滚动行为会取消 ScrollView 的子节点上注册的触摸事件,默认被设置为 true。
+ 注意,子节点上的 touchstart 事件仍然会触发,触点移动距离非常短的情况下 touchmove 和 touchend 也不会受影响。 */
+ cancelInnerEvents : boolean;
+ /** !#en Scroll the content to the bottom boundary of ScrollView.
+ !#zh 视图内容将在规定时间内滚动到视图底部。
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the bottom boundary immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to the bottom of the view.
+ scrollView.scrollToBottom(0.1);
+ ```
+ */
+ scrollToBottom(timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the top boundary of ScrollView.
+ !#zh 视图内容将在规定时间内滚动到视图顶部。
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the top boundary immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to the top of the view.
+ scrollView.scrollToTop(0.1);
+ ```
+ */
+ scrollToTop(timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the left boundary of ScrollView.
+ !#zh 视图内容将在规定时间内滚动到视图左边。
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the left boundary immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to the left of the view.
+ scrollView.scrollToLeft(0.1);
+ ```
+ */
+ scrollToLeft(timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the right boundary of ScrollView.
+ !#zh 视图内容将在规定时间内滚动到视图右边。
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the right boundary immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to the right of the view.
+ scrollView.scrollToRight(0.1);
+ ```
+ */
+ scrollToRight(timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the top left boundary of ScrollView.
+ !#zh 视图内容将在规定时间内滚动到视图左上角。
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the top left boundary immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to the upper left corner of the view.
+ scrollView.scrollToTopLeft(0.1);
+ ```
+ */
+ scrollToTopLeft(timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the top right boundary of ScrollView.
+ !#zh 视图内容将在规定时间内滚动到视图右上角。
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the top right boundary immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to the top right corner of the view.
+ scrollView.scrollToTopRight(0.1);
+ ```
+ */
+ scrollToTopRight(timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the bottom left boundary of ScrollView.
+ !#zh 视图内容将在规定时间内滚动到视图左下角。
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the bottom left boundary immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to the lower left corner of the view.
+ scrollView.scrollToBottomLeft(0.1);
+ ```
+ */
+ scrollToBottomLeft(timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the bottom right boundary of ScrollView.
+ !#zh 视图内容将在规定时间内滚动到视图右下角。
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the bottom right boundary immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to the lower right corner of the view.
+ scrollView.scrollToBottomRight(0.1);
+ ```
+ */
+ scrollToBottomRight(timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll with an offset related to the ScrollView's top left origin, if timeInSecond is omitted, then it will jump to the
+ specific offset immediately.
+ !#zh 视图内容在规定时间内将滚动到 ScrollView 相对左上角原点的偏移位置, 如果 timeInSecond参数不传,则立即滚动到指定偏移位置。
+ @param offset A Vec2, the value of which each axis between 0 and maxScrollOffset
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the specific offset of ScrollView immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to middle position in 0.1 second in x-axis
+ var maxScrollOffset = this.getMaxScrollOffset();
+ scrollView.scrollToOffset(cc.p(maxScrollOffset.x / 2, 0), 0.1);
+ ```
+ */
+ scrollToOffset(offset : Vec2, timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Get the positive offset value corresponds to the content's top left boundary.
+ !#zh 获取滚动视图相对于左上角原点的当前滚动偏移
+ */
+ getScrollOffset() : Vec2;
+ /** !#en Get the maximize available scroll offset
+ !#zh 获取滚动视图最大可以滚动的偏移量
+ */
+ getMaxScrollOffset() : Vec2;
+ /** !#en Scroll the content to the horizontal percent position of ScrollView.
+ !#zh 视图内容在规定时间内将滚动到 ScrollView 水平方向的百分比位置上。
+ @param percent A value between 0 and 1.
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the horizontal percent position of ScrollView immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Scroll to middle position.
+ scrollView.scrollToBottomRight(0.5, 0.1);
+ ```
+ */
+ scrollToPercentHorizontal(percent : number, timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the percent position of ScrollView in any direction.
+ !#zh 视图内容在规定时间内进行垂直方向和水平方向的滚动,并且滚动到指定百分比位置上。
+ @param anchor A point which will be clamp between cc.p(0,0) and cc.p(1,1).
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the percent position of ScrollView immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+
+ @example
+ ```js
+ // Vertical scroll to the bottom of the view.
+ scrollView.scrollTo(cc.p(0, 1), 0.1);
+
+ // Horizontal scroll to view right.
+ scrollView.scrollTo(cc.p(1, 0), 0.1);
+ ```
+ */
+ scrollTo(anchor : Vec2, timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Scroll the content to the vertical percent position of ScrollView.
+ !#zh 视图内容在规定时间内滚动到 ScrollView 垂直方向的百分比位置上。
+ @param percent A value between 0 and 1.
+ @param timeInSecond Scroll time in second, if you don't pass timeInSecond,
+ the content will jump to the vertical percent position of ScrollView immediately.
+ @param attenuated Whether the scroll acceleration attenuated, default is true.
+ // Scroll to middle position.
+ scrollView.scrollToPercentVertical(0.5, 0.1);
+ */
+ scrollToPercentVertical(percent : number, timeInSecond? : number, attenuated? : boolean) : void;
+ /** !#en Stop auto scroll immediately
+ !#zh 停止自动滚动, 调用此 API 可以让 Scrollview 立即停止滚动
+ */
+ stopAutoScroll() : void;
+ /** !#en Modify the content position.
+ !#zh 设置当前视图内容的坐标点。
+ @param position The position in content's parent space.
+ */
+ setContentPosition(position : Vec2) : void;
+ /** !#en Query the content's position in its parent space.
+ !#zh 获取当前视图内容的坐标点。
+ */
+ getContentPosition() : Position;
+ }
+ /** !#en Renders a sprite in the scene.
+ !#zh 该组件用于在场景中渲染精灵。 */
+ export class Sprite extends _RendererUnderSG {
+ /** !#en The sprite frame of the sprite.
+ !#zh 精灵的精灵帧 */
+ spriteFrame : SpriteFrame;
+ /** !#en The sprite render type.
+ !#zh 精灵渲染类型 */
+ type : Sprite.SpriteType;
+ /** !#en
+ The fill type, This will only have any effect if the "type" is set to “cc.Sprite.Type.FILLED”.
+ !#zh
+ 精灵填充类型,仅渲染类型设置为 cc.Sprite.SpriteType.FILLED 时有效。 */
+ fillType : Sprite.FillType;
+ /** !#en
+ The fill Center, This will only have any effect if the "type" is set to “cc.Sprite.Type.FILLED”.
+ !#zh
+ 填充中心点,仅渲染类型设置为 cc.Sprite.SpriteType.FILLED 时有效。 */
+ fillCenter : Vec2;
+ /** !#en
+ The fill Start, This will only have any effect if the "type" is set to “cc.Sprite.Type.FILLED”.
+ !#zh
+ 填充起始点,仅渲染类型设置为 cc.Sprite.SpriteType.FILLED 时有效。 */
+ fillStart : number;
+ /** !#en
+ The fill Range, This will only have any effect if the "type" is set to “cc.Sprite.Type.FILLED”.
+ !#zh
+ 填充范围,仅渲染类型设置为 cc.Sprite.SpriteType.FILLED 时有效。 */
+ fillRange : number;
+ /** !#en specify the frame is trimmed or not.
+ !#zh 是否使用裁剪模式 */
+ trim : boolean;
+ /** !#en specify the source Blend Factor.
+ !#zh 指定原图的混合模式 */
+ srcBlendFactor : BlendFactor;
+ /** !#en specify the destination Blend Factor.
+ !#zh 指定目标的混合模式 */
+ dstBlendFactor : BlendFactor;
+ /** !#en specify the size tracing mode.
+ !#zh 精灵尺寸调整模式 */
+ sizeMode : Sprite.SizeMode;
+ /** !#en Change the left sprite's cap inset.
+ !#zh 设置精灵左边框-用于九宫格。
+ @param insetLeft The values to use for the cap inset.
+
+ @example
+ ```js
+ sprite.setInsetLeft(5);
+ ```
+ */
+ setInsetLeft(insetLeft : number) : void;
+ /** !#en Query the left sprite's cap inset.
+ !#zh 获取精灵左边框
+
+ @example
+ ```js
+ var insetLeft = sprite.getInsetLeft();
+ cc.log("Inset Left:" + insetLeft);
+ ```
+ */
+ getInsetLeft() : number;
+ /** !#en Change the top sprite's cap inset.
+ !#zh 设置精灵上边框-用于九宫格。
+ @param insetTop The values to use for the cap inset.
+
+ @example
+ ```js
+ sprite.setInsetTop(5);
+ ```
+ */
+ setInsetTop(insetTop : number) : void;
+ /** !#en Query the top sprite's cap inset.
+ !#zh 获取精灵上边框。
+
+ @example
+ ```js
+ var insetTop = sprite.getInsetTop();
+ cc.log("Inset Top:" + insetTop);
+ ```
+ */
+ getInsetTop() : number;
+ /** !#en Change the right sprite's cap inset.
+ !#zh 设置精灵右边框-用于九宫格。
+ @param insetRight The values to use for the cap inset.
+
+ @example
+ ```js
+ sprite.setInsetRight(5);
+ ```
+ */
+ setInsetRight(insetRight : number) : void;
+ /** !#en Query the right sprite's cap inset.
+ !#zh 获取精灵右边框。
+
+ @example
+ ```js
+ var insetRight = sprite.getInsetRight();
+ cc.log("Inset Right:" + insetRight);
+ ```
+ */
+ getInsetRight() : number;
+ /** !#en Change the bottom sprite's cap inset.
+ !#zh 设置精灵下边框-用于九宫格。
+ @param bottomInset The values to use for the cap inset.
+
+ @example
+ ```js
+ sprite.setInsetBottom(5);
+ ```
+ */
+ setInsetBottom(bottomInset : number) : void;
+ /** !#en Query the bottom sprite's cap inset.
+ !#zh 获取精灵下边框。
+
+ @example
+ ```js
+ var insetBottom = sprite.getInsetBottom();
+ cc.log("Inset Bottom:" + insetBottom);
+ ```
+ */
+ getInsetBottom() : number;
+ }
+ /** !#en A distortion used to change the rendering of simple sprite.If will take effect after sprite component is added.
+ !#zh 扭曲效果组件,用于改变SIMPLE类型sprite的渲染,只有当sprite组件已经添加后,才能起作用. */
+ export class SpriteDistortion extends Component {
+ /** !#en Change the UV offset for distortion rendering.
+ !#zh 在渲染时改变UV的整体偏移. */
+ offset : Vec2;
+ /** !#en Change the UV scale for distortion rendering.
+ !#zh 在渲染时改变UV的寻址系数 */
+ tiling : Vec2;
+ }
+ /** !#en cc.VideoPlayer is a component for playing videos, you can use it for showing videos in your game.
+ !#zh Video 组件,用于在游戏中播放视频 */
+ export class VideoPlayer extends _RendererUnderSG {
+ /** !#en The resource type of videoplayer, REMOTE for remote url and LOCAL for local file path.
+ !#zh 视频来源:REMOTE 表示远程视频 URL,LOCAL 表示本地视频地址。 */
+ resourceType : VideoPlayer.ResourceType;
+ /** !#en The remote URL of video.
+ !#zh 远程视频的 URL */
+ remoteURL : string;
+ /** !#en The local video full path.
+ !#zh 本地视频的 URL */
+ video : string;
+ /** !#en The current playback time of the now playing item in seconds, you could also change the start playback time.
+ !#zh 指定视频从什么时间点开始播放,单位是秒,也可以用来获取当前视频播放的时间进度。 */
+ currentTime : number;
+ /** !#en Whether keep the aspect ration of the original video.
+ !#zh 是否保持视频原来的宽高比 */
+ keepAspectRatio : boolean;
+ /** !#en Whether play video in fullscreen mode.
+ !#zh 是否全屏播放视频 */
+ isFullscreen : boolean;
+ /** !#en the video player's callback, it will be triggered when certain event occurs, like: playing, paused, stopped and completed.
+ !#zh 视频播放回调函数,该回调函数会在特定情况被触发,比如播放中,暂时,停止和完成播放。 */
+ videoPlayerEvent : cc.Component.EventHandler[];
+ /** !#en If a video is paused, call this method could resume playing. If a video is stopped, call this method to play from scratch.
+ !#zh 如果视频被暂停播放了,调用这个接口可以继续播放。如果视频被停止播放了,调用这个接口可以从头开始播放。
+ */
+ play() : void;
+ /** !#en If a video is paused, call this method to resume playing.
+ !#zh 如果一个视频播放被暂停播放了,调用这个接口可以继续播放。
+ */
+ resume() : void;
+ /** !#en If a video is playing, call this method to pause playing.
+ !#zh 如果一个视频正在播放,调用这个接口可以暂停播放。
+ */
+ pause() : void;
+ /** !#en If a video is playing, call this method to stop playing immediately.
+ !#zh 如果一个视频正在播放,调用这个接口可以立马停止播放。
+ */
+ stop() : void;
+ }
+ /** !#en cc.WebView is a component for display web pages in the game
+ !#zh WebView 组件,用于在游戏中显示网页 */
+ export class WebView extends _RendererUnderSG {
+ /** !#en A given URL to be loaded by the WebView, it should have a http or https prefix.
+ !#zh 指定 WebView 加载的网址,它应该是一个 http 或者 https 开头的字符串 */
+ url : string;
+ /** !#en The webview's event callback , it will be triggered when certain webview event occurs.
+ !#zh WebView 的回调事件,当网页加载过程中,加载完成后或者加载出错时都会回调此函数 */
+ webviewLoadedEvents : cc.Component.EventHandler[];
+ }
+ /** !#en
+ Stores and manipulate the anchoring based on its parent.
+ Widget are used for GUI but can also be used for other things.
+ Widget will adjust current node's position and size automatically, but the results after adjustment can not be obtained until the next frame.
+ !#zh
+ Widget 组件,用于设置和适配其相对于父节点的边距,Widget 通常被用于 UI 界面,也可以用于其他地方。
+ Widget 会自动调整当前节点的坐标和宽高,不过目前调整后的结果要到下一帧才能在脚本里获取到。 */
+ export class Widget extends Component {
+ /** !#en Whether to align the top.
+ !#zh 是否对齐上边。 */
+ isAlignTop : boolean;
+ /** !#en
+ Vertically aligns the midpoint, This will open the other vertical alignment options cancel.
+ !#zh
+ 是否垂直方向对齐中点,开启此项会将垂直方向其他对齐选项取消。 */
+ isAlignVerticalCenter : boolean;
+ /** !#en Whether to align the bottom.
+ !#zh 是否对齐下边。 */
+ isAlignBottom : boolean;
+ /** !#en Whether to align the left.
+ !#zh 是否对齐左边 */
+ isAlignLeft : boolean;
+ /** !#en
+ Horizontal aligns the midpoint. This will open the other horizontal alignment options canceled.
+ !#zh
+ 是否水平方向对齐中点,开启此选项会将水平方向其他对齐选项取消。 */
+ isAlignHorizontalCenter : boolean;
+ /** !#en Whether to align the right.
+ !#zh 是否对齐右边。 */
+ isAlignRight : boolean;
+ /** !#en
+ Whether the stretched horizontally, when enable the left and right alignment will be stretched horizontally,
+ the width setting is invalid (read only).
+ !#zh
+ 当前是否水平拉伸。当同时启用左右对齐时,节点将会被水平拉伸,此时节点的宽度只读。 */
+ isStretchWidth : boolean;
+ /** !#en
+ Whether the stretched vertically, when enable the left and right alignment will be stretched vertically,
+ then height setting is invalid (read only)
+ !#zh
+ 当前是否垂直拉伸。当同时启用上下对齐时,节点将会被垂直拉伸,此时节点的高度只读。 */
+ isStretchHeight : boolean;
+ /** !#en
+ The margins between the top of this node and the top of parent node,
+ the value can be negative, Only available in 'isAlignTop' open.
+ !#zh
+ 本节点顶边和父节点顶边的距离,可填写负值,只有在 isAlignTop 开启时才有作用。 */
+ top : number;
+ /** !#en
+ The margins between the bottom of this node and the bottom of parent node,
+ the value can be negative, Only available in 'isAlignBottom' open.
+ !#zh
+ 本节点底边和父节点底边的距离,可填写负值,只有在 isAlignBottom 开启时才有作用。 */
+ bottom : number;
+ /** !#en
+ The margins between the left of this node and the left of parent node,
+ the value can be negative, Only available in 'isAlignLeft' open.
+ !#zh
+ 本节点左边和父节点左边的距离,可填写负值,只有在 isAlignLeft 开启时才有作用。 */
+ left : number;
+ /** !#en
+ The margins between the right of this node and the right of parent node,
+ the value can be negative, Only available in 'isAlignRight' open.
+ !#zh
+ 本节点右边和父节点右边的距离,可填写负值,只有在 isAlignRight 开启时才有作用。 */
+ right : number;
+ /** !#en
+ Horizontal aligns the midpoint offset value,
+ the value can be negative, Only available in 'isAlignHorizontalCenter' open.
+ !#zh 水平居中的偏移值,可填写负值,只有在 isAlignHorizontalCenter 开启时才有作用。 */
+ horizontalCenter : number;
+ /** !#en
+ Vertical aligns the midpoint offset value,
+ the value can be negative, Only available in 'isAlignVerticalCenter' open.
+ !#zh 垂直居中的偏移值,可填写负值,只有在 isAlignVerticalCenter 开启时才有作用。 */
+ verticalCenter : number;
+ /** !#en If true, horizontalCenter is pixel margin, otherwise is percentage (0 - 1) margin.
+ !#zh 如果为 true,"horizontalCenter" 将会以像素作为偏移值,反之为百分比(0 到 1)。 */
+ isAbsoluteHorizontalCenter : boolean;
+ /** !#en If true, verticalCenter is pixel margin, otherwise is percentage (0 - 1) margin.
+ !#zh 如果为 true,"verticalCenter" 将会以像素作为偏移值,反之为百分比(0 到 1)。 */
+ isAbsoluteVerticalCenter : boolean;
+ /** !#en
+ If true, top is pixel margin, otherwise is percentage (0 - 1) margin relative to the parent's height.
+ !#zh
+ 如果为 true,"top" 将会以像素作为边距,否则将会以相对父物体高度的百分比(0 到 1)作为边距。 */
+ isAbsoluteTop : boolean;
+ /** !#en
+ If true, bottom is pixel margin, otherwise is percentage (0 - 1) margin relative to the parent's height.
+ !#zh
+ 如果为 true,"bottom" 将会以像素作为边距,否则将会以相对父物体高度的百分比(0 到 1)作为边距。 */
+ isAbsoluteBottom : boolean;
+ /** !#en
+ If true, left is pixel margin, otherwise is percentage (0 - 1) margin relative to the parent's width.
+ !#zh
+ 如果为 true,"left" 将会以像素作为边距,否则将会以相对父物体宽度的百分比(0 到 1)作为边距。 */
+ isAbsoluteLeft : boolean;
+ /** !#en
+ If true, right is pixel margin, otherwise is percentage (0 - 1) margin relative to the parent's width.
+ !#zh
+ 如果为 true,"right" 将会以像素作为边距,否则将会以相对父物体宽度的百分比(0 到 1)作为边距。 */
+ isAbsoluteRight : boolean;
+ /** !#en TODO
+ !#zh
+ 开启后仅会在 onEnable 的当帧结束时对齐一次,然后立刻禁用当前组件。
+ 这样便于脚本或动画继续控制当前节点。
+ 注意:onEnable 时所在的那一帧仍然会进行对齐。 */
+ isAlignOnce : boolean;
+ }
+ /** !#en
+ EventTarget is an object to which an event is dispatched when something has occurred.
+ Entity are the most common event targets, but other objects can be event targets too.
+
+ Event targets are an important part of the Fireball event model.
+ The event target serves as the focal point for how events flow through the scene graph.
+ When an event such as a mouse click or a keypress occurs, Fireball dispatches an event object
+ into the event flow from the root of the hierarchy. The event object then makes its way through
+ the scene graph until it reaches the event target, at which point it begins its return trip through
+ the scene graph. This round-trip journey to the event target is conceptually divided into three phases:
+ - The capture phase comprises the journey from the root to the last node before the event target's node
+ - The target phase comprises only the event target node
+ - The bubbling phase comprises any subsequent nodes encountered on the return trip to the root of the tree
+ See also: http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
+
+ Event targets can implement the following methods:
+ - _getCapturingTargets
+ - _getBubblingTargets
+
+ !#zh
+ 事件目标是事件触发时,分派的事件对象,Node 是最常见的事件目标,
+ 但是其他对象也可以是事件目标。 */
+ export class EventTarget {
+ /** !#en
+ Register an callback of a specific event type on the EventTarget.
+ This method is merely an alias to addEventListener.
+ !#zh
+ 注册事件目标的特定事件类型回调,仅仅是 addEventListener 的别名。
+ @param type A string representing the event type to listen for.
+ @param callback The callback that will be invoked when the event is dispatched.
+ The callback is ignored if it is a duplicate (the callbacks are unique).
+ @param target The target to invoke the callback, can be null
+ @param useCapture When set to true, the capture argument prevents callback
+ from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE.
+ When false, callback will NOT be invoked when event's eventPhase attribute value is CAPTURING_PHASE.
+ Either way, callback will be invoked when event's eventPhase attribute value is AT_TARGET.
+
+ @example
+ ```js
+ node.on(cc.Node.EventType.TOUCH_END, function (event) {
+ cc.log("this is callback");
+ }, node);
+ ```
+ */
+ on(type : string, callback: (param: Event) => void, target : any, useCapture : boolean) : Function;
+ /** !#en
+ Removes the callback previously registered with the same type, callback, target and or useCapture.
+ This method is merely an alias to removeEventListener.
+ !#zh
+ 删除之前与同类型,回调,目标或 useCapture 注册的回调,仅仅是 removeEventListener 的别名。
+ @param type A string representing the event type being removed.
+ @param callback The callback to remove.
+ @param target The target to invoke the callback, if it's not given, only callback without target will be removed
+ @param useCapture Specifies whether the callback being removed was registered as a capturing callback or not.
+ If not specified, useCapture defaults to false. If a callback was registered twice,
+ one with capture and one without, each must be removed separately. Removal of a capturing callback
+ does not affect a non-capturing version of the same listener, and vice versa.
+
+ @example
+ ```js
+ // register touchEnd eventListener
+ var touchEnd = node.on(cc.Node.EventType.TOUCH_END, function (event) {
+ cc.log("this is callback");
+ }, node);
+ // remove touchEnd eventListener
+ node.off(cc.Node.EventType.TOUCH_END, touchEnd, node);
+ ```
+ */
+ off(type : string, callback : Function, target : any, useCapture : boolean) : void;
+ /** !#en Removes all callbacks previously registered with the same target.
+ !#zh 删除指定目标上的所有注册回调。
+ @param target The target to be searched for all related callbacks
+ */
+ targetOff(target : any) : void;
+ /** !#en
+ Register an callback of a specific event type on the EventTarget,
+ the callback will remove itself after the first time it is triggered.
+ !#zh
+ 注册事件目标的特定事件类型回调,回调会在第一时间被触发后删除自身。
+ @param type A string representing the event type to listen for.
+ @param callback The callback that will be invoked when the event is dispatched.
+ The callback is ignored if it is a duplicate (the callbacks are unique).
+ @param target The target to invoke the callback, can be null
+ @param useCapture When set to true, the capture argument prevents callback
+ from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE.
+ When false, callback will NOT be invoked when event's eventPhase attribute value is CAPTURING_PHASE.
+ Either way, callback will be invoked when event's eventPhase attribute value is AT_TARGET.
+
+ @example
+ ```js
+ node.once(cc.Node.EventType.TOUCH_END, function (event) {
+ cc.log("this is callback");
+ }, node);
+ ```
+ */
+ once(type : string, callback: (param: Event) => void, target : any, useCapture : boolean) : void;
+ /** !#en
+ Dispatches an event into the event flow.
+ The event target is the EventTarget object upon which the dispatchEvent() method is called.
+ !#zh 分发事件到事件流中。
+ @param event The Event object that is dispatched into the event flow
+ */
+ dispatchEvent(event : Event) : void;
+ /** !#en
+ Send an event to this object directly, this method will not propagate the event to any other objects.
+ The event will be created from the supplied message, you can get the "detail" argument from event.detail.
+ !#zh
+ 该对象直接发送事件, 这种方法不会对事件传播到任何其他对象。
+ @param message the message to send
+ @param detail whatever argument the message needs
+ */
+ emit(message : string, detail? : any) : void;
+ }
+ /** !#en Base class of all kinds of events.
+ !#zh 包含事件相关信息的对象。 */
+ export class Event {
+ constructor();
+ /**
+ @param type The name of the event (case-sensitive), e.g. "click", "fire", or "submit"
+ @param bubbles A boolean indicating whether the event bubbles up through the tree or not
+ */
+ Event(type : string, bubbles : boolean) : Event;
+ /** !#en The name of the event (case-sensitive), e.g. "click", "fire", or "submit".
+ !#zh 事件类型。 */
+ type : string;
+ /** !#en Indicate whether the event bubbles up through the tree or not.
+ !#zh 表示该事件是否进行冒泡。 */
+ bubbles : boolean;
+ /** !#en A reference to the target to which the event was originally dispatched.
+ !#zh 最初事件触发的目标 */
+ target : any;
+ /** !#en A reference to the currently registered target for the event.
+ !#zh 当前目标 */
+ currentTarget : any;
+ /** !#en
+ Indicates which phase of the event flow is currently being evaluated.
+ Returns an integer value represented by 4 constants:
+ - Event.NONE = 0
+ - Event.CAPTURING_PHASE = 1
+ - Event.AT_TARGET = 2
+ - Event.BUBBLING_PHASE = 3
+ The phases are explained in the [section 3.1, Event dispatch and DOM event flow]
+ (http://www.w3.org/TR/DOM-Level-3-Events/#event-flow), of the DOM Level 3 Events specification.
+ !#zh 事件阶段 */
+ eventPhase : number;
+ /** !#en Reset the event for being stored in the object pool.
+ !#zh 重置对象池中存储的事件。
+ */
+ unuse() : string;
+ /** !#en Reuse the event for being used again by the object pool.
+ !#zh 用于对象池再次使用的事件。
+ */
+ reuse() : string;
+ /** !#en Stops propagation for current event.
+ !#zh 停止传递当前事件。
+ */
+ stopPropagation() : void;
+ /** !#en Stops propagation for current event immediately,
+ the event won't even be dispatched to the listeners attached in the current target.
+ !#zh 立即停止当前事件的传递,事件甚至不会被分派到所连接的当前目标。
+ */
+ stopPropagationImmediate() : void;
+ /** !#en Checks whether the event has been stopped.
+ !#zh 检查该事件是否已经停止传递.
+ */
+ isStopped() : boolean;
+ /** !#en
+
+ Gets current target of the event
+ note: It only be available when the event listener is associated with node.
+ It returns 0 when the listener is associated with fixed priority.
+
+ !#zh 获取当前目标节点
+ */
+ getCurrentTarget() : Node;
+ /** !#en Gets the event type.
+ !#zh 获取事件类型
+ */
+ getType() : string;
+ /** !#en Code for event without type.
+ !#zh 没有类型的事件 */
+ NO_TYPE : string;
+ /** !#en Events not currently dispatched are in this phase
+ !#zh 尚未派发事件阶段 */
+ NONE : number;
+ /** !#en
+ The capturing phase comprises the journey from the root to the last node before the event target's node
+ see http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
+ !#zh 捕获阶段,包括事件目标节点之前从根节点到最后一个节点的过程。 */
+ CAPTURING_PHASE : number;
+ /** !#en
+ The target phase comprises only the event target node
+ see http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
+ !#zh 目标阶段仅包括事件目标节点。 */
+ AT_TARGET : number;
+ /** !#en
+ The bubbling phase comprises any subsequent nodes encountered on the return trip to the root of the hierarchy
+ see http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
+ !#zh 冒泡阶段, 包括回程遇到到层次根节点的任何后续节点。 */
+ BUBBLING_PHASE : number;
+ }
+ /** !#en
+
+ The base class of event listener.
+ If you need custom listener which with different callback, you need to inherit this class.
+ For instance, you could refer to EventListenerAcceleration, EventListenerKeyboard,
+ EventListenerTouchOneByOne, EventListenerCustom.
+
+
+ !#zh
+ 封装用户的事件处理逻辑。
+ 注意:这是一个抽象类,开发者不应该直接实例化这个类,请参考 {{#crossLink "EventListener/create:method"}}cc.EventListener.create{{/crossLink}}。 */
+ export class EventListener {
+ /** Constructor
+ */
+ EventListener(type : number, listenerID : number, callback : number) : EventListener;
+ /** !#en Checks whether the listener is available.
+ !#zh 检测监听器是否有效
+ */
+ checkAvailable() : boolean;
+ /** !#en Clones the listener, its subclasses have to override this method.
+ !#zh 克隆监听器,它的子类必须重写此方法。
+ */
+ clone() : EventListener;
+ /** !#en Enables or disables the listener
+ !#zh 启用或禁用监听器。
+ */
+ setEnabled(enabled : boolean) : void;
+ /** !#en Checks whether the listener is enabled
+ !#zh 检查监听器是否可用。
+ */
+ isEnabled() : boolean;
+ /** !#en The type code of unknown event listener.
+ !#zh 未知的事件监听器类型 */
+ UNKNOWN : number;
+ /** !#en The type code of keyboard event listener.
+ !#zh 键盘事件监听器类型 */
+ KEYBOARD : number;
+ /** !#en The type code of focus event listener.
+ !#zh 加速器事件监听器类型 */
+ ACCELERATION : number;
+ /** !#en
+ Create a EventListener object with configuration including the event type, handlers and other parameters.
+ In handlers, this refer to the event listener object itself.
+ You can also pass custom parameters in the configuration object,
+ all custom parameters will be polyfilled into the event listener object and can be accessed in handlers.
+ !#zh 通过指定不同的 Event 对象来设置想要创建的事件监听器。
+ @param argObj a json object
+
+ @example
+ ```js
+ // Create KEYBOARD EventListener.
+ cc.EventListener.create({
+ event: cc.EventListener.KEYBOARD,
+ onKeyPressed: function (keyCode, event) {
+ cc.log('pressed key: ' + keyCode);
+ },
+ onKeyReleased: function (keyCode, event) {
+ cc.log('released key: ' + keyCode);
+ }
+ });
+
+ // Create ACCELERATION EventListener.
+ cc.EventListener.create({
+ event: cc.EventListener.ACCELERATION,
+ callback: function (acc, event) {
+ cc.log('acc: ' + keyCode);
+ }
+ });
+ ```
+ */
+ create(argObj : any) : EventListener;
+ }
+ /** !#en
+
+ cc.eventManager is a singleton object which manages event listener subscriptions and event dispatching.
+
+ The EventListener list is managed in such way so that event listeners can be added and removed
+ while events are being dispatched.
+
+ !#zh
+ 事件管理器,它主要管理事件监听器注册和派发系统事件。
+ 原始设计中,它支持鼠标,触摸,键盘,陀螺仪和自定义事件。
+ 在 Creator 的设计中,鼠标,触摸和自定义事件的监听和派发请参考 http://cocos.com/docs/creator/scripting/events.html。 */
+ export class eventManager {
+ /** !#en Pauses all listeners which are associated the specified target.
+ !#zh 暂停传入的 node 相关的所有监听器的事件响应。
+ */
+ pauseTarget(node : Node, recursive : boolean) : void;
+ /** !#en Resumes all listeners which are associated the specified target.
+ !#zh 恢复传入的 node 相关的所有监听器的事件响应。
+ */
+ resumeTarget(node : Node, recursive : boolean) : void;
+ /** !#en
+
+ Adds a event listener for a specified event.
+ if the parameter "nodeOrPriority" is a node,
+ it means to add a event listener for a specified event with the priority of scene graph.
+ if the parameter "nodeOrPriority" is a Number,
+ it means to add a event listener for a specified event with the fixed priority.
+
+ !#zh
+ 将事件监听器添加到事件管理器中。
+ 如果参数 “nodeOrPriority” 是节点,优先级由 node 的渲染顺序决定,显示在上层的节点将优先收到事件。
+ 如果参数 “nodeOrPriority” 是数字,优先级则固定为该参数的数值,数字越小,优先级越高。
+ @param listener The listener of a specified event or a object of some event parameters.
+ @param nodeOrPriority The priority of the listener is based on the draw order of this node or fixedPriority The fixed priority of the listener.
+ */
+ addListener(listener : EventListener|any, nodeOrPriority : Node|number) : EventListener;
+ /** !#en Remove a listener.
+ !#zh 移除一个已添加的监听器。
+ @param listener an event listener or a registered node target
+
+ @example
+ ```js
+
+ // 1. remove eventManager add Listener;
+ var mouseListener1 = cc.eventManager.addListener({
+ event: cc.EventListener.MOUSE,
+ onMouseDown: function(keyCode, event){ },
+ onMouseUp: function(keyCode, event){ },
+ onMouseMove: function () { },
+ onMouseScroll: function () { }
+ }, node);
+
+ cc.eventManager.removeListener(mouseListener1);
+
+ // 2. remove eventListener create Listener;
+ var mouseListener2 = cc.EventListener.create({
+ event: cc.EventListener.MOUSE,
+ onMouseDown: function(keyCode, event){ },
+ onMouseUp: function(keyCode, event){ },
+ onMouseMove: function () { },
+ onMouseScroll: function () { }
+ });
+
+ cc.eventManager.removeListener(mouseListener2);
+
+ ```
+ */
+ removeListener(listener: (type: number, listenerID: number, callback: number) => void) : void;
+ /** !#en Removes all listeners with the same event listener type or removes all listeners of a node.
+ !#zh
+ 移除注册到 eventManager 中指定类型的所有事件监听器。
+ 1. 如果传入的第一个参数类型是 Node,那么事件管理器将移除与该对象相关的所有事件监听器。
+ (如果第二参数 recursive 是 true 的话,就会连同该对象的子控件上所有的事件监听器也一并移除)
+ 2. 如果传入的第一个参数类型是 Number(该类型 EventListener 中定义的事件类型),
+ 那么事件管理器将移除该类型的所有事件监听器。
+
+ 下列是目前存在监听器类型:
+ cc.EventListener.UNKNOWN
+ cc.EventListener.KEYBOARD
+ cc.EventListener.ACCELERATION,
+ @param listenerType listenerType or a node
+ */
+ removeListeners(listenerType : number|Node, recursive : boolean) : void;
+ /** !#en Removes all listeners
+ !#zh 移除所有事件监听器。
+ */
+ removeAllListeners() : void;
+ /** !#en Sets listener's priority with fixed value.
+ !#zh 设置 FixedPriority 类型监听器的优先级。
+ @param listener Constructor
+ */
+ setPriority(listener: (type: number, listenerID: number, callback: number) => void, fixedPriority : number) : void;
+ /** !#en Whether to enable dispatching events
+ !#zh 启用或禁用事件管理器,禁用后不会分发任何事件。
+ */
+ setEnabled(enabled : boolean) : void;
+ /** !#en Checks whether dispatching events is enabled
+ !#zh 检测事件管理器是否启用。
+ */
+ isEnabled() : boolean;
+ }
+ /** !#en The touch event class
+ !#zh 封装了触摸相关的信息。 */
+ export class Touch {
+ /** !#en Returns the current touch location in OpenGL coordinates.、
+ !#zh 获取当前触点位置。
+ */
+ getLocation() : Vec2;
+ /** !#en Returns X axis location value.
+ !#zh 获取当前触点 X 轴位置。
+ */
+ getLocationX() : number;
+ /** !#en Returns Y axis location value.
+ !#zh 获取当前触点 Y 轴位置。
+ */
+ getLocationY() : number;
+ /** !#en Returns the previous touch location in OpenGL coordinates.
+ !#zh 获取触点在上一次事件时的位置对象,对象包含 x 和 y 属性。
+ */
+ getPreviousLocation() : Vec2;
+ /** !#en Returns the start touch location in OpenGL coordinates.
+ !#zh 获获取触点落下时的位置对象,对象包含 x 和 y 属性。
+ */
+ getStartLocation() : Vec2;
+ /** !#en Returns the delta distance from the previous touche to the current one in screen coordinates.
+ !#zh 获取触点距离上一次事件移动的距离对象,对象包含 x 和 y 属性。
+ */
+ getDelta() : Vec2;
+ /** !#en Returns the current touch location in screen coordinates.
+ !#zh 获取当前事件在游戏窗口内的坐标位置对象,对象包含 x 和 y 属性。
+ */
+ getLocationInView() : Vec2;
+ /** !#en Returns the previous touch location in screen coordinates.
+ !#zh 获取触点在上一次事件时在游戏窗口中的位置对象,对象包含 x 和 y 属性。
+ */
+ getPreviousLocationInView() : Vec2;
+ /** !#en Returns the start touch location in screen coordinates.
+ !#zh 获取触点落下时在游戏窗口中的位置对象,对象包含 x 和 y 属性。
+ */
+ getStartLocationInView() : Vec2;
+ /** !#en Returns the id of cc.Touch.
+ !#zh 触点的标识 ID,可以用来在多点触摸中跟踪触点。
+ */
+ getID() : number;
+ /** !#en Sets information to touch.
+ !#zh 设置触摸相关的信息。用于监控触摸事件。
+ */
+ setTouchInfo(id : number, x : number, y : number) : void;
+ }
+ /** undefined */
+ export class Graphics extends _RendererUnderSG {
+ /** !#en
+ Current line width.
+ !#zh
+ 当前线条宽度 */
+ lineWidth : number;
+ /** !#en
+ lineJoin determines how two connecting segments (of lines, arcs or curves) with non-zero lengths in a shape are joined together.
+ !#zh
+ lineJoin 用来设置2个长度不为0的相连部分(线段,圆弧,曲线)如何连接在一起的属性。 */
+ lineJoin : Graphics.LineJoin;
+ /** !#en
+ lineCap determines how the end points of every line are drawn.
+ !#zh
+ lineCap 指定如何绘制每一条线段末端。 */
+ lineCap : Graphics.LineCap;
+ /** !#en
+ stroke color
+ !#zh
+ 线段颜色 */
+ strokeColor : Color;
+ /** !#en
+ fill color
+ !#zh
+ 填充颜色 */
+ fillColor : Color;
+ /** !#en
+ Sets the miter limit ratio
+ !#zh
+ 设置斜接面限制比例 */
+ miterLimit : number;
+ /** !#en Move path start point to (x,y).
+ !#zh 移动路径起点到坐标(x, y)
+ @param x The x axis of the coordinate for the end point.
+ @param y The y axis of the coordinate for the end point.
+ */
+ moveTo(x? : number, y? : number) : void;
+ /** !#en Adds a straight line to the path
+ !#zh 绘制直线路径
+ @param x The x axis of the coordinate for the end point.
+ @param y The y axis of the coordinate for the end point.
+ */
+ lineTo(x? : number, y? : number) : void;
+ /** !#en Adds a cubic Bézier curve to the path
+ !#zh 绘制三次贝赛尔曲线路径
+ @param c1x The x axis of the coordinate for the first control point.
+ @param c1y The y axis of the coordinate for first control point.
+ @param c2x The x axis of the coordinate for the second control point.
+ @param c2y The y axis of the coordinate for the second control point.
+ @param x The x axis of the coordinate for the end point.
+ @param y The y axis of the coordinate for the end point.
+ */
+ bezierCurveTo(c1x? : number, c1y? : number, c2x? : number, c2y? : number, x? : number, y? : number) : void;
+ /** !#en Adds a quadratic Bézier curve to the path
+ !#zh 绘制二次贝赛尔曲线路径
+ @param cx The x axis of the coordinate for the control point.
+ @param cy The y axis of the coordinate for the control point.
+ @param x The x axis of the coordinate for the end point.
+ @param y The y axis of the coordinate for the end point.
+ */
+ quadraticCurveTo(cx? : number, cy? : number, x? : number, y? : number) : void;
+ /** !#en Adds an arc to the path which is centered at (cx, cy) position with radius r starting at startAngle and ending at endAngle going in the given direction by counterclockwise (defaulting to false).
+ !#zh 绘制圆弧路径。圆弧路径的圆心在 (cx, cy) 位置,半径为 r ,根据 counterclockwise (默认为false)指定的方向从 startAngle 开始绘制,到 endAngle 结束。
+ @param cx The x axis of the coordinate for the center point.
+ @param cy The y axis of the coordinate for the center point.
+ @param r The arc's radius.
+ @param startAngle The angle at which the arc starts, measured clockwise from the positive x axis and expressed in radians.
+ @param endAngle The angle at which the arc ends, measured clockwise from the positive x axis and expressed in radians.
+ @param counterclockwise An optional Boolean which, if true, causes the arc to be drawn counter-clockwise between the two angles. By default it is drawn clockwise.
+ */
+ arc(cx? : number, cy? : number, r? : number, startAngle? : number, endAngle? : number, counterclockwise? : number) : void;
+ /** !#en Adds an ellipse to the path.
+ !#zh 绘制椭圆路径。
+ @param cx The x axis of the coordinate for the center point.
+ @param cy The y axis of the coordinate for the center point.
+ @param rx The ellipse's x-axis radius.
+ @param ry The ellipse's y-axis radius.
+ */
+ ellipse(cx? : number, cy? : number, rx? : number, ry? : number) : void;
+ /** !#en Adds an circle to the path.
+ !#zh 绘制圆形路径。
+ @param cx The x axis of the coordinate for the center point.
+ @param cy The y axis of the coordinate for the center point.
+ @param r The circle's radius.
+ */
+ circle(cx? : number, cy? : number, r? : number) : void;
+ /** !#en Adds an rectangle to the path.
+ !#zh 绘制矩形路径。
+ @param x The x axis of the coordinate for the rectangle starting point.
+ @param y The y axis of the coordinate for the rectangle starting point.
+ @param w The rectangle's width.
+ @param h The rectangle's height.
+ */
+ rect(x? : number, y? : number, w? : number, h? : number) : void;
+ /** !#en Adds an round corner rectangle to the path.
+ !#zh 绘制圆角矩形路径。
+ @param x The x axis of the coordinate for the rectangle starting point.
+ @param y The y axis of the coordinate for the rectangle starting point.
+ @param w The rectangles width.
+ @param h The rectangle's height.
+ @param r The radius of the rectangle.
+ */
+ roundRect(x? : number, y? : number, w? : number, h? : number, r? : number) : void;
+ /** !#en Draws a filled rectangle.
+ !#zh 绘制填充矩形。
+ @param x The x axis of the coordinate for the rectangle starting point.
+ @param y The y axis of the coordinate for the rectangle starting point.
+ @param w The rectangle's width.
+ @param h The rectangle's height.
+ */
+ fillRect(x? : number, y? : number, w? : number, h? : number) : void;
+ /** !#en Erasing any previously drawn content.
+ !#zh 擦除之前绘制的所有内容的方法。
+ */
+ clear() : void;
+ /** !#en Causes the point of the pen to move back to the start of the current path. It tries to add a straight line from the current point to the start.
+ !#zh 将笔点返回到当前路径起始点的。它尝试从当前点到起始点绘制一条直线。
+ */
+ close() : void;
+ /** !#en Strokes the current or given path with the current stroke style.
+ !#zh 根据当前的画线样式,绘制当前或已经存在的路径。
+ */
+ stroke() : void;
+ /** !#en Fills the current or given path with the current fill style.
+ !#zh 根据当前的画线样式,填充当前或已经存在的路径。
+ */
+ stroke() : void;
+ }
+ /** Loader for resource loading process. It's a singleton object. */
+ export class loader extends Pipeline {
+ /** The downloader in cc.loader's pipeline, it's by default the first pipe.
+ It's used to download files with several handlers: pure text, image, script, audio, font, uuid.
+ You can add your own download function with addDownloadHandlers */
+ downloader : any;
+ /** The downloader in cc.loader's pipeline, it's by default the second pipe.
+ It's used to parse downloaded content with several handlers: JSON, image, plist, fnt, uuid.
+ You can add your own download function with addLoadHandlers */
+ loader : any;
+ /** Add custom supported types handler or modify existing type handler for download process.
+ @param extMap Custom supported types with corresponded handler
+
+ @example
+ ```js
+ cc.loader.addDownloadHandlers({
+ // This will match all url with `.scene` extension or all url with `scene` type
+ 'scene' : function (url, callback) {}
+ });
+ ```
+ */
+ addDownloadHandlers(extMap : any) : void;
+ /** Add custom supported types handler or modify existing type handler for load process.
+ @param extMap Custom supported types with corresponded handler
+
+ @example
+ ```js
+ cc.loader.addLoadHandlers({
+ // This will match all url with `.scene` extension or all url with `scene` type
+ 'scene' : function (url, callback) {}
+ });
+ ```
+ */
+ addLoadHandlers(extMap : any) : void;
+ /** Load resources with a progression callback and a complete callback.
+ The progression callback is the same as Pipeline's {{#crossLink "Pipeline/onProgress:method"}}onProgress{{/crossLink}}
+ The complete callback is almost the same as Pipeline's {{#crossLink "Pipeline/onComplete:method"}}onComplete{{/crossLink}}
+ The only difference is when user pass a single url as resources, the complete callback will set its result directly as the second parameter.
+ @param resources Url list in an array
+ @param progressCallback Callback invoked when progression change
+ @param completeCallback Callback invoked when all resources loaded
+
+ @example
+ ```js
+ cc.loader.load('a.png', function (err, tex) {
+ cc.log('Result should be a texture: ' + (tex instanceof cc.Texture2D));
+ });
+
+ cc.loader.load('http://example.com/a.png', function (err, tex) {
+ cc.log('Should load a texture from external url: ' + (tex instanceof cc.Texture2D));
+ });
+
+ cc.loader.load({id: 'http://example.com/getImageREST?file=a.png', type: 'png'}, function (err, tex) {
+ cc.log('Should load a texture from RESTful API by specify the type: ' + (tex instanceof cc.Texture2D));
+ });
+
+ cc.loader.load(['a.png', 'b.json'], function (errors, results) {
+ if (errors) {
+ for (var i = 0; i < errors.length; i++) {
+ cc.log('Error url [' + errors[i] + ']: ' + results.getError(errors[i]));
+ }
+ }
+ var aTex = results.getContent('a.png');
+ var bJsonObj = results.getContent('b.json');
+ });
+ ```
+ */
+ load(resources : string|any[], progressCallback? : Function, completeCallback : Function) : void;
+ /** Load resources from the "resources" folder inside the "assets" folder of your project.
+
+ Note: All asset urls in Creator use forward slashes, urls using backslashes will not work.
+ @param url Url of the target resource.
+ The url is relative to the "resources" folder, extensions must be omitted.
+ @param type Only asset of type will be loaded if this argument is supplied.
+ @param completeCallback Callback invoked when the resource loaded.
+
+ @example
+ ```js
+ // load the prefab (project/assets/resources/misc/character/cocos) from resources folder
+ cc.loader.loadRes('misc/character/cocos', function (err, prefab) {
+ if (err) {
+ cc.error(err.message || err);
+ return;
+ }
+ cc.log('Result should be a prefab: ' + (prefab instanceof cc.Prefab));
+ });
+
+ // load the sprite frame (project/assets/resources/imgs/cocos.png/cocos) from resources folder
+ cc.loader.loadRes('imgs/cocos', cc.SpriteFrame, function (err, spriteFrame) {
+ if (err) {
+ cc.error(err.message || err);
+ return;
+ }
+ cc.log('Result should be a sprite frame: ' + (spriteFrame instanceof cc.SpriteFrame));
+ });
+ ```
+ */
+ loadRes(url : string, type? : Function, completeCallback: (error: Error, resource: any) => void) : void;
+ /** Load all assets in a folder inside the "assets/resources" folder of your project.
+
+ Note: All asset urls in Creator use forward slashes, urls using backslashes will not work.
+ @param url Url of the target folder.
+ The url is relative to the "resources" folder, extensions must be omitted.
+ @param type Only asset of type will be loaded if this argument is supplied.
+ @param completeCallback A callback which is called when all assets have been loaded, or an error occurs.
+
+ @example
+ ```js
+ // load the texture (resources/imgs/cocos.png) and sprite frame (resources/imgs/cocos.png/cocos)
+ cc.loader.loadResAll('imgs/cocos', function (err, assets) {
+ if (err) {
+ cc.error(err);
+ return;
+ }
+ var texture = assets[0];
+ var spriteFrame = assets[1];
+ });
+
+ // load all textures in "resources/imgs/"
+ cc.loader.loadResAll('imgs', cc.Texture2D, function (err, textures) {
+ if (err) {
+ cc.error(err);
+ return;
+ }
+ var texture1 = textures[0];
+ var texture2 = textures[1];
+ });
+ ```
+ */
+ loadResAll(url : string, type? : Function, completeCallback: (error: Error, assets: any[]) => void) : void;
+ /** Get resource data by id.
+ When you load resources with {{#crossLink "loader/load:method"}}{{/crossLink}} or {{#crossLink "loader/loadRes:method"}}{{/crossLink}},
+ the url will be the unique identity of the resource.
+ After loaded, you can acquire them by passing the url to this API.
+ */
+ getRes(url : string) : any;
+ /** Returns an item in pipeline.
+ */
+ getItem() : any;
+ /** Release the cache of resource by url.
+ */
+ release(url : string) : void;
+ /** Release the loaded cache of asset.
+ */
+ releaseAsset(asset : Asset) : void;
+ /** Release the cache of resource which loaded by {{#crossLink "loader/loadRes:method"}}{{/crossLink}}.
+ */
+ releaseRes(url : string) : void;
+ /** Resource cache of all resources.
+ */
+ releaseAll() : void;
+ /** !#en
+ Indicates whether to release the asset when loading a new scene.
+ By default, when loading a new scene, all assets in the previous scene will be released or preserved
+ according to whether the previous scene checked the "Auto Release Assets" option.
+ On the other hand, assets dynamically loaded by using `cc.loader.loadRes` or `cc.loader.loadResAll`
+ will not be affected by that option, remain not released by default.
+ Use this API to change the default behavior on a single asset, to force preserve or release specified asset when scene switching.
+
+ See: {{#crossLink "loader/setAutoReleaseRecursively:method"}}cc.loader.setAutoReleaseRecursively{{/crossLink}}, {{#crossLink "loader/isAutoRelease:method"}}cc.loader.isAutoRelease{{/crossLink}}
+ !#zh
+ 设置当场景切换时是否自动释放资源。
+ 默认情况下,当加载新场景时,旧场景的资源根据旧场景是否勾选“Auto Release Assets”,将会被释放或者保留。
+ 而使用 `cc.loader.loadRes` 或 `cc.loader.loadResAll` 动态加载的资源,则不受场景设置的影响,默认不自动释放。
+ 使用这个 API 可以在单个资源上改变这个默认行为,强制在切换场景时保留或者释放指定资源。
+
+ 参考:{{#crossLink "loader/setAutoReleaseRecursively:method"}}cc.loader.setAutoReleaseRecursively{{/crossLink}},{{#crossLink "loader/isAutoRelease:method"}}cc.loader.isAutoRelease{{/crossLink}}
+ @param assetOrUrl asset object or the raw asset's url
+ @param autoRelease indicates whether should release automatically
+
+ @example
+ ```js
+ // auto release the texture event if "Auto Release Assets" disabled in current scene
+ cc.loader.setAutoRelease(texture2d, true);
+ // don't release the texture even if "Auto Release Assets" enabled in current scene
+ cc.loader.setAutoRelease(texture2d, false);
+ // first parameter can be url
+ cc.loader.setAutoRelease(audioUrl, false);
+ ```
+ */
+ setAutoRelease(assetOrUrl : Asset|string, autoRelease : boolean) : void;
+ /** !#en
+ Indicates whether to release the asset and its referenced other assets when loading a new scene.
+ By default, when loading a new scene, all assets in the previous scene will be released or preserved
+ according to whether the previous scene checked the "Auto Release Assets" option.
+ On the other hand, assets dynamically loaded by using `cc.loader.loadRes` or `cc.loader.loadResAll`
+ will not be affected by that option, remain not released by default.
+ Use this API to change the default behavior on the specified asset and its recursively referenced assets, to force preserve or release specified asset when scene switching.
+
+ See: {{#crossLink "loader/setAutoRelease:method"}}cc.loader.setAutoRelease{{/crossLink}}, {{#crossLink "loader/isAutoRelease:method"}}cc.loader.isAutoRelease{{/crossLink}}
+ !#zh
+ 设置当场景切换时是否自动释放资源及资源引用的其它资源。
+ 默认情况下,当加载新场景时,旧场景的资源根据旧场景是否勾选“Auto Release Assets”,将会被释放或者保留。
+ 而使用 `cc.loader.loadRes` 或 `cc.loader.loadResAll` 动态加载的资源,则不受场景设置的影响,默认不自动释放。
+ 使用这个 API 可以在指定资源及资源递归引用到的所有资源上改变这个默认行为,强制在切换场景时保留或者释放指定资源。
+
+ 参考:{{#crossLink "loader/setAutoRelease:method"}}cc.loader.setAutoRelease{{/crossLink}},{{#crossLink "loader/isAutoRelease:method"}}cc.loader.isAutoRelease{{/crossLink}}
+ @param assetOrUrl asset object or the raw asset's url
+ @param autoRelease indicates whether should release automatically
+
+ @example
+ ```js
+ // auto release the SpriteFrame and its Texture event if "Auto Release Assets" disabled in current scene
+ cc.loader.setAutoReleaseRecursively(spriteFrame, true);
+ // don't release the SpriteFrame and its Texture even if "Auto Release Assets" enabled in current scene
+ cc.loader.setAutoReleaseRecursively(spriteFrame, false);
+ // don't release the Prefab and all the referenced assets
+ cc.loader.setAutoReleaseRecursively(prefab, false);
+ ```
+ */
+ setAutoReleaseRecursively(assetOrUrl : Asset|string, autoRelease : boolean) : void;
+ /** !#en
+ Returns whether the asset is configured as auto released, despite how "Auto Release Assets" property is set on scene asset.
+
+ See: {{#crossLink "loader/setAutoRelease:method"}}cc.loader.setAutoRelease{{/crossLink}}, {{#crossLink "loader/setAutoReleaseRecursively:method"}}cc.loader.setAutoReleaseRecursively{{/crossLink}}
+
+ !#zh
+ 返回指定的资源是否有被设置为自动释放,不论场景的“Auto Release Assets”如何设置。
+
+ 参考:{{#crossLink "loader/setAutoRelease:method"}}cc.loader.setAutoRelease{{/crossLink}},{{#crossLink "loader/setAutoReleaseRecursively:method"}}cc.loader.setAutoReleaseRecursively{{/crossLink}}
+ @param assetOrUrl asset object or the raw asset's url
+ */
+ isAutoRelease(assetOrUrl : Asset|string) : boolean;
+ }
+ /** !#en
+ LoadingItems is the manager of items in pipeline.
+ It hold a map of items, each entry in the map is a url to object key value pair.
+ Each item always contains the following property:
+ - id: The identification of the item, usually it's identical to url
+ - url: The url
+ - type: The type, it's the extension name of the url by default, could be specified manually too.
+ - error: The error happened in pipeline will be stored in this property.
+ - content: The content processed by the pipeline, the final result will also be stored in this property.
+ - complete: The flag indicate whether the item is completed by the pipeline.
+ - states: An object stores the states of each pipe the item go through, the state can be: Pipeline.ItemState.WORKING | Pipeline.ItemState.ERROR | Pipeline.ItemState.COMPLETE
+
+ Item can hold other custom properties.
+ !#zh
+ LoadingItems 负责管理 pipeline 中的对象
+ 它有一个 map 属性用来存放加载项,在 map 对象中已 url 为 key 值。
+ 每个对象都会包含下列属性:
+ - id:该对象的标识,通常与 url 相同。
+ - url:路径
+ - type: 类型,它这是默认的 URL 的扩展名,可以手动指定赋值。
+ - error:pipeline 中发生的错误将被保存在这个属性中。
+ - content: pipeline 中处理的内容时,最终的结果也将被存储在这个属性中。
+ - complete:该标志表明该对象是否通过 pipeline 完成。
+ - states:该对象存储每个管道中对象经历的状态,状态可以是 Pipeline.ItemState.WORKING | Pipeline.ItemState.ERROR | Pipeline.ItemState.COMPLETE
+
+ 对象可容纳其他自定义属性。 */
+ export class LoadingItems extends CallbacksInvoker {
+ /** !#en The map of all items.
+ !#zh 存储所有加载项的对象。 */
+ map : any;
+ /** !#en The map of completed items.
+ !#zh 存储已经完成的加载项。 */
+ completed : any;
+ /** !#en Total count of all items.
+ !#zh 所有加载项的总数。 */
+ totalCount : number;
+ /** !#en Total count of completed items.
+ !#zh 所有完成加载项的总数。 */
+ completedCount : number;
+ /** !#en Check whether all items are completed.
+ !#zh 检查是否所有加载项都已经完成。
+ */
+ isCompleted() : boolean;
+ /** !#en Check whether an item is completed.
+ !#zh 通过 id 检查指定加载项是否已经加载完成。
+ @param id The item's id.
+ */
+ isItemCompleted(id : string) : boolean;
+ /** !#en Check whether an item exists.
+ !#zh 通过 id 检查加载项是否存在。
+ @param id The item's id.
+ */
+ exists(id : string) : boolean;
+ /** !#en Returns the content of an internal item.
+ !#zh 通过 id 获取指定对象的内容。
+ @param id The item's id.
+ */
+ getContent(id : string) : any;
+ /** !#en Returns the error of an internal item.
+ !#zh 通过 id 获取指定对象的错误信息。
+ @param id The item's id.
+ */
+ getError(id : string) : any;
+ /** !#en Add a listener for an item, the callback will be invoked when the item is completed.
+ !#zh 监听加载项(通过 key 指定)的完成事件。
+ @param callback can be null
+ @param target can be null
+ */
+ addListener(key : string, callback : Function, target : any) : boolean;
+ /** !#en
+ Check if the specified key has any registered callback.
+ If a callback is also specified, it will only return true if the callback is registered.
+ !#zh
+ 检查指定的加载项是否有完成事件监听器。
+ 如果同时还指定了一个回调方法,并且回调有注册,它只会返回 true。
+ */
+ hasListener(key : string, callback? : Function, target? : any) : boolean;
+ /** !#en
+ Removes a listener.
+ It will only remove when key, callback, target all match correctly.
+ !#zh
+ 移除指定加载项已经注册的完成事件监听器。
+ 只会删除 key, callback, target 均匹配的监听器。
+ */
+ remove(key : string, callback : Function, target : any) : boolean;
+ /** !#en
+ Removes all callbacks registered in a certain event
+ type or all callbacks registered with a certain target.
+ !#zh 删除指定目标的所有完成事件监听器。
+ @param key The event key to be removed or the target to be removed
+ */
+ removeAllListeners(key : string|any) : void;
+ }
+ /** !#en
+ A pipeline describes a sequence of manipulations, each manipulation is called a pipe.
+ It's designed for loading process. so items should be urls, and the url will be the identity of each item during the process.
+ A list of items can flow in the pipeline and it will output the results of all pipes.
+ They flow in the pipeline like water in tubes, they go through pipe by pipe separately.
+ Finally all items will flow out the pipeline and the process is finished.
+
+ !#zh
+ pipeline 描述了一系列的操作,每个操作都被称为 pipe。
+ 它被设计来做加载过程的流程管理。所以 item 应该是 url,并且该 url 将是在处理中的每个 item 的身份标识。
+ 一个 item 列表可以在 pipeline 中流动,它将输出加载项经过所有 pipe 之后的结果。
+ 它们穿过 pipeline 就像水在管子里流动,将会按顺序流过每个 pipe。
+ 最后当所有加载项都流出 pipeline 时,整个加载流程就结束了。 */
+ export class Pipeline {
+ /** !#en
+ Constructor, pass an array of pipes to construct a new Pipeline,
+ the pipes will be chained in the given order.
+ A pipe is an object which must contain an `id` in string and a `handle` function,
+ the id must be unique in the pipeline.
+ It can also include `async` property to identify whether it's an asynchronous process.
+ !#zh
+ 构造函数,通过一系列的 pipe 来构造一个新的 pipeline,pipes 将会在给定的顺序中被锁定。
+ 一个 pipe 就是一个对象,它包含了字符串类型的 ‘id’ 和 ‘handle’ 函数,在 pipeline 中 id 必须是唯一的。
+ 它还可以包括 ‘async’ 属性以确定它是否是一个异步过程。
+
+ @example
+ ```js
+ var pipeline = new Pipeline([
+ {
+ id: 'Downloader',
+ handle: function (item, callback) {},
+ async: true
+ },
+ {id: 'Parser', handle: function (item) {}, async: false}
+ ]);
+ ```
+ */
+ Pipeline(pipes : any[]) : void;
+ /** !#en
+ Insert a new pipe at the given index of the pipeline.
+ A pipe must contain an `id` in string and a `handle` function, the id must be unique in the pipeline.
+ !#zh
+ 在给定的索引位置插入一个新的 pipe。
+ 一个 pipe 必须包含一个字符串类型的 ‘id’ 和 ‘handle’ 函数,该 id 在 pipeline 必须是唯一标识。
+ @param pipe The pipe to be inserted
+ @param index The index to insert
+ */
+ insertPipe(pipe : any, index : number) : void;
+ /** !#en
+ Add a new pipe at the end of the pipeline.
+ A pipe must contain an `id` in string and a `handle` function, the id must be unique in the pipeline.
+ !#zh
+ 添加一个新的 pipe 到 pipeline 尾部。
+ 该 pipe 必须包含一个字符串类型 ‘id’ 和 ‘handle’ 函数,该 id 在 pipeline 必须是唯一标识。
+ @param pipe The pipe to be appended
+ */
+ appendPipe(pipe : any) : void;
+ /** !#en
+ Let new items flow into the pipeline.
+ Each item can be a simple url string or an object,
+ if it's an object, it must contain `id` property.
+ You can specify its type by `type` property, by default, the type is the extension name in url.
+ By adding a `skips` property including pipe ids, you can skip these pipe.
+ The object can contain any supplementary property as you want.
+ !#zh
+ 让新的 item 流入 pipeline 中。
+ 这里的每个 item 可以是一个简单字符串类型的 url 或者是一个对象,
+ 如果它是一个对象的话,他必须要包含 ‘id’ 属性。
+ 你也可以指定它的 ‘type’ 属性类型,默认情况下,该类型是 ‘url’ 的后缀名。
+ 也通过添加一个 包含 ‘skips’ 属性的 item 对象,你就可以跳过 skips 中包含的 pipe。
+ 该对象可以包含任何附加属性。
+
+ @example
+ ```js
+ pipeline.flowIn([
+ 'res/Background.png',
+ {
+ id: 'res/scene.json',
+ type: 'scene',
+ name: 'scene',
+ skips: ['Downloader']
+ }
+ ]);
+ ```
+ */
+ flowIn(urlList : any[]) : any[];
+ /** !#en
+ Let new items flow into the pipeline and give a callback when the list of items are all completed.
+ This is for loading dependencies for an existing item in flow, usually used in a pipe logic.
+ For example, we have a loader for scene configuration file in JSON, the scene will only be fully loaded
+ after all its dependencies are loaded, then you will need to use function to flow in all dependencies
+ found in the configuration file, and finish the loader pipe only after all dependencies are loaded (in the callback).
+ !#zh
+ 让新 items 流入 pipeline 并且当 item 列表完成时进行回调函数。
+ 这个 API 的使用通常是为了加载依赖项。
+ 例如:
+ 我们需要加载一个场景配置的 JSON 文件,该场景会将所有的依赖项全部都加载完毕以后,进行回调表示加载完毕。
+ */
+ flowInDeps(urlList : any[], callback : Function) : any[];
+ /** !#en
+ Copy the item states from one source item to all destination items.
+ It's quite useful when a pipe generate new items from one source item,
+ then you should flowIn these generated items into pipeline,
+ but you probably want them to skip all pipes the source item already go through,
+ you can achieve it with this API.
+
+ For example, an unzip pipe will generate more items, but you won't want them to pass unzip or download pipe again.
+ !#zh
+ 从一个源 item 向所有目标 item 复制它的 pipe 状态,用于避免重复通过部分 pipe。
+ 当一个源 item 生成了一系列新的 items 时很有用,
+ 你希望让这些新的依赖项进入 pipeline,但是又不希望它们通过源 item 已经经过的 pipe,
+ 但是你可能希望他们源 item 已经通过并跳过所有 pipes,
+ 这个时候就可以使用这个 API。
+ @param srcItem The source item
+ @param dstItems A single destination item or an array of destination items
+ */
+ copyItemStates(srcItem : any, dstItems : any[]|any) : void;
+ /** !#en Returns whether the pipeline is flowing (contains item) currently.
+ !#zh 获取 pipeline 当前是否正在处理中。
+ */
+ isFlowing() : boolean;
+ /** !#en Returns all items in pipeline.
+ !#zh 获取 pipeline 中的所有 items。
+ */
+ getItems() : LoadingItems;
+ /** !#en Returns an item in pipeline.
+ !#zh 获取指定 item。
+ */
+ getItem() : LoadingItems;
+ /** !#en Removes an item in pipeline, no matter it's in progress or completed.
+ !#zh 移除指定 item,无论是进行时还是已完成。
+ */
+ removeItem() : boolean;
+ /** !#en Clear the current pipeline, this function will clean up the items.
+ !#zh 清空当前 pipeline,该函数将清理 items。
+ */
+ clear() : void;
+ /** !#en This is a callback which will be invoked while an item flow out the pipeline, you should overwrite this function.
+ !#zh 这个回调函数将在 item 流出 pipeline 时被调用,你应该重写该函数。
+ @param completedCount The number of the items that are already completed.
+ @param totalCount The total number of the items.
+ @param item The latest item which flow out the pipeline.
+
+ @example
+ ```js
+ pipeline.onProgress = function (completedCount, totalCount, item) {
+ var progress = (100 * completedCount / totalCount).toFixed(2);
+ cc.log(progress + '%');
+ }
+ ```
+ */
+ onProgress(completedCount : number, totalCount : number, item : any) : void;
+ /** !#en This is a callback which will be invoked while all items flow out the pipeline,
+ you should overwirte this function.
+ !#zh 该函数将在所有 item 流出 pipeline 时被调用,你应该重写该函数。
+ @param error All errored urls will be stored in this array, if no error happened, then it will be null
+ @param items All items.
+
+ @example
+ ```js
+ pipeline.onComplete = function (error, items) {
+ if (error)
+ cc.log('Completed with ' + error.length + ' errors');
+ else
+ cc.log('Completed ' + items.totalCount + ' items');
+ }
+ ```
+ */
+ onComplete(error : any[], items : LoadingItems) : void;
+ }
+ /**
+ This class manages all events of input. include: touch, mouse, accelerometer, keyboard
+
*/
+ export class inputManager {
+ /**
+ */
+ handleTouchesBegin(touches : any[]) : void;
+ /**
+ */
+ handleTouchesMove(touches : any[]) : void;
+ /**
+ */
+ handleTouchesEnd(touches : any[]) : void;
+ /**
+ */
+ handleTouchesCancel(touches : any[]) : void;
+ /**
+ */
+ getSetOfTouchesEndOrCancel(touches : any[]) : any[];
+ /**
+ */
+ getHTMLElementPosition(element : HTMLElement) : any;
+ /**
+ */
+ getPreTouch(touch : Touch) : Touch;
+ /**
+ */
+ setPreTouch(touch : Touch) : void;
+ /**
+ */
+ getTouchByXY(tx : number, ty : number, pos : Vec2) : Touch;
+ /**
+ */
+ getTouchByXY(location : Vec2, pos : Vec2, eventType : number) : Event.EventMouse;
+ /**
+ */
+ getPointByEvent(event : Touch, pos : Vec2) : Vec2;
+ /**
+ */
+ getTouchesByEvent(event : Touch, pos : Vec2) : any[];
+ /**
+ */
+ registerSystemEvent(element : HTMLElement) : void;
+ /**
+ */
+ update(dt : number) : void;
+ }
+ /** Key map for keyboard event */
+ export enum KEY {
+ none = 0,
+ back = 0,
+ menu = 0,
+ backspace = 0,
+ tab = 0,
+ enter = 0,
+ shift = 0,
+ ctrl = 0,
+ alt = 0,
+ pause = 0,
+ capslock = 0,
+ escape = 0,
+ space = 0,
+ pageup = 0,
+ pagedown = 0,
+ end = 0,
+ home = 0,
+ left = 0,
+ up = 0,
+ right = 0,
+ down = 0,
+ select = 0,
+ insert = 0,
+ Delete = 0,
+ a = 0,
+ b = 0,
+ c = 0,
+ d = 0,
+ e = 0,
+ f = 0,
+ g = 0,
+ h = 0,
+ i = 0,
+ j = 0,
+ k = 0,
+ l = 0,
+ m = 0,
+ n = 0,
+ o = 0,
+ p = 0,
+ q = 0,
+ r = 0,
+ s = 0,
+ t = 0,
+ u = 0,
+ v = 0,
+ w = 0,
+ x = 0,
+ y = 0,
+ z = 0,
+ num0 = 0,
+ num1 = 0,
+ num2 = 0,
+ num3 = 0,
+ num4 = 0,
+ num5 = 0,
+ num6 = 0,
+ num7 = 0,
+ num8 = 0,
+ num9 = 0,
+ '*' = 0,
+ '+' = 0,
+ '-' = 0,
+ numdel = 0,
+ '/' = 0,
+ f1 = 0,
+ f2 = 0,
+ f3 = 0,
+ f4 = 0,
+ f5 = 0,
+ f6 = 0,
+ f7 = 0,
+ f8 = 0,
+ f9 = 0,
+ f10 = 0,
+ f11 = 0,
+ f12 = 0,
+ numlock = 0,
+ scrolllock = 0,
+ ';' = 0,
+ semicolon = 0,
+ equal = 0,
+ '=' = 0,
+ ',' = 0,
+ comma = 0,
+ dash = 0,
+ '.' = 0,
+ period = 0,
+ forwardslash = 0,
+ grave = 0,
+ '[' = 0,
+ openbracket = 0,
+ backslash = 0,
+ ']' = 0,
+ closebracket = 0,
+ quote = 0,
+ dpadLeft = 0,
+ dpadRight = 0,
+ dpadUp = 0,
+ dpadDown = 0,
+ dpadCenter = 0,
+ }
+ /** Image formats */
+ export enum ImageFormat {
+ JPG = 0,
+ PNG = 0,
+ TIFF = 0,
+ WEBP = 0,
+ PVR = 0,
+ ETC = 0,
+ S3TC = 0,
+ ATITC = 0,
+ TGA = 0,
+ RAWDATA = 0,
+ UNKNOWN = 0,
+ getImageFormatByData = 0,
+ }
+ /** Predefined constants */
+ export enum Macro {
+ INVALID_INDEX = 0,
+ NODE_TAG_INVALID = 0,
+ PI = 0,
+ PI2 = 0,
+ FLT_MAX = 0,
+ FLT_MIN = 0,
+ RAD = 0,
+ DEG = 0,
+ UINT_MAX = 0,
+ REPEAT_FOREVER = 0,
+ FLT_EPSILON = 0,
+ ONE = 0,
+ ZERO = 0,
+ SRC_ALPHA = 0,
+ SRC_ALPHA_SATURATE = 0,
+ SRC_COLOR = 0,
+ DST_ALPHA = 0,
+ DST_COLOR = 0,
+ ONE_MINUS_SRC_ALPHA = 0,
+ ONE_MINUS_SRC_COLOR = 0,
+ ONE_MINUS_DST_ALPHA = 0,
+ ONE_MINUS_DST_COLOR = 0,
+ ONE_MINUS_CONSTANT_ALPHA = 0,
+ ONE_MINUS_CONSTANT_COLOR = 0,
+ LINEAR = 0,
+ BLEND_DST = 0,
+ WEB_ORIENTATION_PORTRAIT = 0,
+ WEB_ORIENTATION_LANDSCAPE_LEFT = 0,
+ WEB_ORIENTATION_PORTRAIT_UPSIDE_DOWN = 0,
+ WEB_ORIENTATION_LANDSCAPE_RIGHT = 0,
+ ORIENTATION_PORTRAIT = 0,
+ ORIENTATION_LANDSCAPE = 0,
+ ORIENTATION_AUTO = 0,
+ VERTEX_ATTRIB_FLAG_NONE = 0,
+ VERTEX_ATTRIB_FLAG_POSITION = 0,
+ VERTEX_ATTRIB_FLAG_COLOR = 0,
+ VERTEX_ATTRIB_FLAG_TEX_COORDS = 0,
+ VERTEX_ATTRIB_FLAG_POS_COLOR_TEX = 0,
+ GL_ALL = 0,
+ VERTEX_ATTRIB_POSITION = 0,
+ VERTEX_ATTRIB_COLOR = 0,
+ VERTEX_ATTRIB_TEX_COORDS = 0,
+ VERTEX_ATTRIB_MAX = 0,
+ UNIFORM_PMATRIX = 0,
+ UNIFORM_MVMATRIX = 0,
+ UNIFORM_MVPMATRIX = 0,
+ UNIFORM_TIME = 0,
+ UNIFORM_SINTIME = 0,
+ UNIFORM_COSTIME = 0,
+ UNIFORM_RANDOM01 = 0,
+ UNIFORM_SAMPLER = 0,
+ UNIFORM_MAX = 0,
+ SHADER_POSITION_TEXTURECOLOR = 0,
+ SHADER_SPRITE_POSITION_TEXTURECOLOR = 0,
+ SHADER_POSITION_TEXTURECOLORALPHATEST = 0,
+ SHADER_SPRITE_POSITION_TEXTURECOLORALPHATEST = 0,
+ SHADER_POSITION_COLOR = 0,
+ SHADER_SPRITE_POSITION_COLOR = 0,
+ SHADER_POSITION_TEXTURE = 0,
+ SHADER_POSITION_TEXTURE_UCOLOR = 0,
+ SHADER_POSITION_TEXTUREA8COLOR = 0,
+ SHADER_POSITION_UCOLOR = 0,
+ SHADER_POSITION_LENGTHTEXTURECOLOR = 0,
+ UNIFORM_PMATRIX_S = 0,
+ UNIFORM_MVMATRIX_S = 0,
+ UNIFORM_MVPMATRIX_S = 0,
+ UNIFORM_TIME_S = 0,
+ UNIFORM_SINTIME_S = 0,
+ UNIFORM_COSTIME_S = 0,
+ UNIFORM_RANDOM01_S = 0,
+ UNIFORM_SAMPLER_S = 0,
+ UNIFORM_ALPHA_TEST_VALUE_S = 0,
+ ATTRIBUTE_NAME_COLOR = 0,
+ ATTRIBUTE_NAME_POSITION = 0,
+ ATTRIBUTE_NAME_TEX_COORD = 0,
+ ITEM_SIZE = 0,
+ CURRENT_ITEM = 0,
+ ZOOM_ACTION_TAG = 0,
+ NORMAL_TAG = 0,
+ SELECTED_TAG = 0,
+ DISABLE_TAG = 0,
+ FIX_ARTIFACTS_BY_STRECHING_TEXEL = 0,
+ DIRECTOR_STATS_POSITION = 0,
+ DIRECTOR_FPS_INTERVAL = 0,
+ COCOSNODE_RENDER_SUBPIXEL = 0,
+ SPRITEBATCHNODE_RENDER_SUBPIXEL = 0,
+ AUTO_PREMULTIPLIED_ALPHA_FOR_PNG = 0,
+ OPTIMIZE_BLEND_FUNC_FOR_PREMULTIPLIED_ALPHA = 0,
+ TEXTURE_ATLAS_USE_TRIANGLE_STRIP = 0,
+ TEXTURE_ATLAS_USE_VAO = 0,
+ USE_LA88_LABELS = 0,
+ SPRITE_DEBUG_DRAW = 0,
+ LABELBMFONT_DEBUG_DRAW = 0,
+ LABELATLAS_DEBUG_DRAW = 0,
+ ENABLE_STACKABLE_ACTIONS = 0,
+ ENABLE_GL_STATE_CACHE = 0,
+ BLEND_SRC = 0,
+ lerp = 0,
+ rand = 0,
+ randomMinus1To1 = 0,
+ random0To1 = 0,
+ degreesToRadians = 0,
+ radiansToDegrees = 0,
+ nodeDrawSetup = 0,
+ incrementGLDraws = 0,
+ checkGLErrorDebug = 0,
+ }
+ /** The base class of most of all the objects in Fireball. */
+ export class Object {
+ constructor();
+ /** !#en The name of the object.
+ !#zh 该对象的名称。 */
+ name : string;
+ /** !#en Indicates whether the object is not yet destroyed.
+ !#zh 表示该对象是否可用(被销毁后将不可用)。 */
+ isValid : boolean;
+ /** !#en
+ Destroy this Object, and release all its own references to other objects.
+ Actual object destruction will delayed until before rendering.
+
+ After destroy, this CCObject is not usable any more.
+ You can use cc.isValid(obj) to check whether the object is destroyed before accessing it.
+ !#zh
+ 销毁该对象,并释放所有它对其它对象的引用。
+ 销毁后,CCObject 不再可用。您可以在访问对象之前使用 cc.isValid(obj) 来检查对象是否已被销毁。
+ 实际销毁操作会延迟到当前帧渲染前执行。
+
+ @example
+ ```js
+ obj.destroy();
+ ```
+ */
+ destroy() : boolean;
+ }
+ /** Bit mask that controls object states. */
+ export class Flags {
+ /** !#en The object will not be saved.
+ !#zh 该对象将不会被保存。 */
+ DontSave : number;
+ /** !#en The object will not be saved when building a player.
+ !#zh 构建项目时,该对象将不会被保存。 */
+ EditorOnly : number;
+ }
+ /** The fullscreen API provides an easy way for web content to be presented using the user's entire screen.
+ It's invalid on safari, QQbrowser and android browser */
+ export class screen {
+ /** initialize
+ */
+ init() : void;
+ /** return true if it's full now.
+ */
+ fullScreen() : boolean;
+ /** change the screen to full mode.
+ */
+ requestFullScreen(element : Element, onFullScreenChange : Function) : void;
+ /** exit the full mode.
+ */
+ exitFullScreen() : boolean;
+ /** Automatically request full screen with a touch/click event
+ */
+ autoFullScreen(element : Element, onFullScreenChange : Function) : void;
+ }
+ /** System variables */
+ export class sys {
+ /** English language code */
+ LANGUAGE_ENGLISH : string;
+ /** Chinese language code */
+ LANGUAGE_CHINESE : string;
+ /** French language code */
+ LANGUAGE_FRENCH : string;
+ /** Italian language code */
+ LANGUAGE_ITALIAN : string;
+ /** German language code */
+ LANGUAGE_GERMAN : string;
+ /** Spanish language code */
+ LANGUAGE_SPANISH : string;
+ /** Spanish language code */
+ LANGUAGE_DUTCH : string;
+ /** Russian language code */
+ LANGUAGE_RUSSIAN : string;
+ /** Korean language code */
+ LANGUAGE_KOREAN : string;
+ /** Japanese language code */
+ LANGUAGE_JAPANESE : string;
+ /** Hungarian language code */
+ LANGUAGE_HUNGARIAN : string;
+ /** Portuguese language code */
+ LANGUAGE_PORTUGUESE : string;
+ /** Arabic language code */
+ LANGUAGE_ARABIC : string;
+ /** Norwegian language code */
+ LANGUAGE_NORWEGIAN : string;
+ /** Polish language code */
+ LANGUAGE_POLISH : string;
+ /** Unknown language code */
+ LANGUAGE_UNKNOWN : string;
+ OS_IOS : string;
+ OS_ANDROID : string;
+ OS_WINDOWS : string;
+ OS_MARMALADE : string;
+ OS_LINUX : string;
+ OS_BADA : string;
+ OS_BLACKBERRY : string;
+ OS_OSX : string;
+ OS_WP8 : string;
+ OS_WINRT : string;
+ OS_UNKNOWN : string;
+ UNKNOWN : number;
+ WIN32 : number;
+ LINUX : number;
+ MACOS : number;
+ ANDROID : number;
+ IPHONE : number;
+ IPAD : number;
+ BLACKBERRY : number;
+ NACL : number;
+ EMSCRIPTEN : number;
+ TIZEN : number;
+ WINRT : number;
+ WP8 : number;
+ MOBILE_BROWSER : number;
+ DESKTOP_BROWSER : number;
+ /** Indicates whether executes in editor's window process (Electron's renderer context) */
+ EDITOR_PAGE : number;
+ /** Indicates whether executes in editor's main process (Electron's browser context) */
+ EDITOR_CORE : number;
+ /** BROWSER_TYPE_WECHAT */
+ BROWSER_TYPE_WECHAT : string;
+ BROWSER_TYPE_ANDROID : string;
+ BROWSER_TYPE_IE : string;
+ BROWSER_TYPE_QQ : string;
+ BROWSER_TYPE_MOBILE_QQ : string;
+ BROWSER_TYPE_UC : string;
+ BROWSER_TYPE_360 : string;
+ BROWSER_TYPE_BAIDU_APP : string;
+ BROWSER_TYPE_BAIDU : string;
+ BROWSER_TYPE_MAXTHON : string;
+ BROWSER_TYPE_OPERA : string;
+ BROWSER_TYPE_OUPENG : string;
+ BROWSER_TYPE_MIUI : string;
+ BROWSER_TYPE_FIREFOX : string;
+ BROWSER_TYPE_SAFARI : string;
+ BROWSER_TYPE_CHROME : string;
+ BROWSER_TYPE_LIEBAO : string;
+ BROWSER_TYPE_QZONE : string;
+ BROWSER_TYPE_SOUGOU : string;
+ BROWSER_TYPE_UNKNOWN : string;
+ /** Is native ? This is set to be true in jsb auto. */
+ isNative : boolean;
+ /** Is web browser ? */
+ isBrowser : boolean;
+ /** Indicate whether system is mobile system */
+ isMobile : boolean;
+ /** Indicate the running platform */
+ platform : number;
+ /** Indicate the current language of the running system */
+ language : string;
+ /** Indicate the running os name */
+ os : string;
+ /** Indicate the running os version */
+ osVersion : string;
+ /** Indicate the running os main version */
+ osMainVersion : number;
+ /** Indicate the running browser type */
+ browserType : string;
+ /** Indicate the running browser version */
+ browserVersion : number;
+ /** Indicate the real pixel resolution of the whole game window */
+ windowPixelResolution : number;
+ /** cc.sys.localStorage is a local storage component. */
+ localStorage : any;
+ /** The capabilities of the current platform */
+ capabilities : any;
+ /** Forces the garbage collection, only available in JSB
+ */
+ garbageCollect() : void;
+ /** Dumps rooted objects, only available in JSB
+ */
+ dumpRoot() : void;
+ /** Restart the JS VM, only available in JSB
+ */
+ restartVM() : void;
+ /** Clean a script in the JS VM, only available in JSB
+ */
+ cleanScript(jsfile : string) : void;
+ /** Check whether an object is valid,
+ In web engine, it will return true if the object exist
+ In native engine, it will return true if the JS object and the correspond native object are both valid
+ */
+ isObjectValid(obj : any) : boolean;
+ /** Dump system informations
+ */
+ dump() : void;
+ /** Open a url in browser
+ */
+ openURL(url : string) : void;
+ }
+ /** cc.view is the singleton object which represents the game window.
+ It's main task include:
+ - Apply the design resolution policy
+ - Provide interaction with the window, like resize event on web, retina display support, etc...
+ - Manage the game view port which can be different with the window
+ - Manage the content scale and translation
+
+ Since the cc.view is a singleton, you don't need to call any constructor or create functions,
+ the standard way to use it is by calling:
+ - cc.view.methodName(); */
+ export class View {
+ /**
+ Sets view's target-densitydpi for android mobile browser. it can be set to:
+ 1. cc.macro.DENSITYDPI_DEVICE, value is "device-dpi"
+ 2. cc.macro.DENSITYDPI_HIGH, value is "high-dpi" (default value)
+ 3. cc.macro.DENSITYDPI_MEDIUM, value is "medium-dpi" (browser's default value)
+ 4. cc.macro.DENSITYDPI_LOW, value is "low-dpi"
+ 5. Custom value, e.g: "480"
+
+ */
+ setTargetDensityDPI(densityDPI : string) : void;
+ /** Returns the current target-densitydpi value of cc.view.
+ */
+ getTargetDensityDPI() : string;
+ /** Sets whether resize canvas automatically when browser's size changed.
+ Useful only on web.
+ @param enabled Whether enable automatic resize with browser's resize event
+ */
+ resizeWithBrowserSize(enabled : boolean) : void;
+ /** Sets the callback function for cc.view's resize action,
+ this callback will be invoked before applying resolution policy,
+ so you can do any additional modifications within the callback.
+ Useful only on web.
+ @param callback The callback function
+ */
+ setResizeCallback(callback : Function|void) : void;
+ /** Sets the orientation of the game, it can be landscape, portrait or auto.
+ When set it to landscape or portrait, and screen w/h ratio doesn't fit,
+ cc.view will automatically rotate the game canvas using CSS.
+ Note that this function doesn't have any effect in native,
+ in native, you need to set the application orientation in native project settings
+ @param orientation Possible values: cc.macro.ORIENTATION_LANDSCAPE | cc.macro.ORIENTATION_PORTRAIT | cc.macro.ORIENTATION_AUTO
+ */
+ setOrientation(orientation : number) : void;
+ /** Sets whether the engine modify the "viewport" meta in your web page.
+ It's enabled by default, we strongly suggest you not to disable it.
+ And even when it's enabled, you can still set your own "viewport" meta, it won't be overridden
+ Only useful on web
+ @param enabled Enable automatic modification to "viewport" meta
+ */
+ adjustViewPort(enabled : boolean) : void;
+ /** Retina support is enabled by default for Apple device but disabled for other devices,
+ it takes effect only when you called setDesignResolutionPolicy
+ Only useful on web
+ @param enabled Enable or disable retina display
+ */
+ enableRetina(enabled : boolean) : void;
+ /** Check whether retina display is enabled.
+ Only useful on web
+ */
+ isRetinaEnabled() : boolean;
+ /** If enabled, the application will try automatically to enter full screen mode on mobile devices
+ You can pass true as parameter to enable it and disable it by passing false.
+ Only useful on web
+ @param enabled Enable or disable auto full screen on mobile devices
+ */
+ enableAutoFullScreen(enabled : boolean) : void;
+ /** Check whether auto full screen is enabled.
+ Only useful on web
+ */
+ isAutoFullScreenEnabled() : boolean;
+ /** Get whether render system is ready(no matter opengl or canvas),
+ this name is for the compatibility with cocos2d-x, subclass must implement this method.
+ */
+ isViewReady() : boolean;
+ /** Sets the resolution translate on View.
+ */
+ setContentTranslateLeftTop(offsetLeft : number, offsetTop : number) : void;
+ /** Returns the resolution translate on View
+ */
+ getContentTranslateLeftTop() : Size;
+ /** Returns the frame size of the view.
+ On native platforms, it returns the screen size since the view is a fullscreen view.
+ On web, it returns the size of the canvas's outer DOM element.
+ */
+ getFrameSize() : Size;
+ /** On native, it sets the frame size of view.
+ On web, it sets the size of the canvas's outer DOM element.
+ */
+ setFrameSize(width : number, height : number) : void;
+ /** Returns the visible area size of the view port.
+ */
+ getVisibleSize() : Size;
+ /** Returns the visible area size of the view port.
+ */
+ getVisibleSizeInPixel() : Size;
+ /** Returns the visible origin of the view port.
+ */
+ getVisibleOrigin() : Vec2;
+ /** Returns the visible origin of the view port.
+ */
+ getVisibleOriginInPixel() : Vec2;
+ /** Returns whether developer can set content's scale factor.
+ */
+ canSetContentScaleFactor() : boolean;
+ /** Returns the current resolution policy
+ */
+ getResolutionPolicy() : ResolutionPolicy;
+ /** Sets the current resolution policy
+ */
+ setResolutionPolicy(resolutionPolicy : ResolutionPolicy|number) : void;
+ /** Sets the resolution policy with designed view size in points.
+ The resolution policy include:
+ [1] ResolutionExactFit Fill screen by stretch-to-fit: if the design resolution ratio of width to height is different from the screen resolution ratio, your game view will be stretched.
+ [2] ResolutionNoBorder Full screen without black border: if the design resolution ratio of width to height is different from the screen resolution ratio, two areas of your game view will be cut.
+ [3] ResolutionShowAll Full screen with black border: if the design resolution ratio of width to height is different from the screen resolution ratio, two black borders will be shown.
+ [4] ResolutionFixedHeight Scale the content's height to screen's height and proportionally scale its width
+ [5] ResolutionFixedWidth Scale the content's width to screen's width and proportionally scale its height
+ [cc.ResolutionPolicy] [Web only feature] Custom resolution policy, constructed by cc.ResolutionPolicy
+ @param width Design resolution width.
+ @param height Design resolution height.
+ @param resolutionPolicy The resolution policy desired
+ */
+ setDesignResolutionSize(width : number, height : number, resolutionPolicy : ResolutionPolicy|number) : void;
+ /** Returns the designed size for the view.
+ Default resolution size is the same as 'getFrameSize'.
+ */
+ getDesignResolutionSize() : Size;
+ /** Sets the container to desired pixel resolution and fit the game content to it.
+ This function is very useful for adaptation in mobile browsers.
+ In some HD android devices, the resolution is very high, but its browser performance may not be very good.
+ In this case, enabling retina display is very costy and not suggested, and if retina is disabled, the image may be blurry.
+ But this API can be helpful to set a desired pixel resolution which is in between.
+ This API will do the following:
+ 1. Set viewport's width to the desired width in pixel
+ 2. Set body width to the exact pixel resolution
+ 3. The resolution policy will be reset with designed view size in points.
+ @param width Design resolution width.
+ @param height Design resolution height.
+ @param resolutionPolicy The resolution policy desired
+ */
+ setRealPixelResolution(width : number, height : number, resolutionPolicy : ResolutionPolicy|number) : void;
+ /** Sets view port rectangle with points.
+ @param w width
+ @param h height
+ */
+ setViewPortInPoints(x : number, y : number, w : number, h : number) : void;
+ /** Sets Scissor rectangle with points.
+ */
+ setScissorInPoints(x : number, y : number, w : number, h : number) : void;
+ /** Returns whether GL_SCISSOR_TEST is enable
+ */
+ isScissorEnabled() : boolean;
+ /** Returns the current scissor rectangle
+ */
+ getScissorRect() : Rect;
+ /** Sets the name of the view
+ */
+ setViewName(viewName : string) : void;
+ /** Returns the name of the view
+ */
+ getViewName() : string;
+ /** Returns the view port rectangle.
+ */
+ getViewPortRect() : Rect;
+ /** Returns scale factor of the horizontal direction (X axis).
+ */
+ getScaleX() : number;
+ /** Returns scale factor of the vertical direction (Y axis).
+ */
+ getScaleY() : number;
+ /** Returns device pixel ratio for retina display.
+ */
+ getDevicePixelRatio() : number;
+ /** Returns the real location in view for a translation based on a related position
+ @param tx The X axis translation
+ @param ty The Y axis translation
+ @param relatedPos The related position object including "left", "top", "width", "height" informations
+ */
+ convertToLocationInView(tx : number, ty : number, relatedPos : any) : Vec2;
+ }
+ /** cc.ContainerStrategy class is the root strategy class of container's scale strategy,
+ it controls the behavior of how to scale the cc.container and cc.game.canvas object
*/
+ export class ContainerStrategy {
+ /** Manipulation before appling the strategy
+ @param view The target view
+ */
+ preApply(view : View) : void;
+ /** Function to apply this strategy
+ */
+ apply(view : View, designedResolution : Size) : void;
+ /** Manipulation after applying the strategy
+ @param view The target view
+ */
+ postApply(view : View) : void;
+ }
+ /** cc.ContentStrategy class is the root strategy class of content's scale strategy,
+ it controls the behavior of how to scale the scene and setup the viewport for the game
*/
+ export class ContentStrategy {
+ /** Manipulation before applying the strategy
+ @param view The target view
+ */
+ preApply(view : View) : void;
+ /** Function to apply this strategy
+ The return value is {scale: [scaleX, scaleY], viewport: {cc.Rect}},
+ The target view can then apply these value to itself, it's preferred not to modify directly its private variables
+ */
+ apply(view : View, designedResolution : Size) : any;
+ /** Manipulation after applying the strategy
+ @param view The target view
+ */
+ postApply(view : View) : void;
+ }
+ /** undefined */
+ export class EqualToFrame extends ContainerStrategy {
+ }
+ /** undefined */
+ export class ProportionalToFrame extends ContainerStrategy {
+ }
+ /** undefined */
+ export class EqualToWindow extends EqualToFrame {
+ }
+ /** undefined */
+ export class ProportionalToWindow extends ProportionalToFrame {
+ }
+ /** undefined */
+ export class OriginalContainer extends ContainerStrategy {
+ }
+ /** cc.ResolutionPolicy class is the root strategy class of scale strategy,
+ its main task is to maintain the compatibility with Cocos2d-x
*/
+ export class ResolutionPolicy {
+ /**
+ @param containerStg The container strategy
+ @param contentStg The content strategy
+ */
+ ResolutionPolicy(containerStg : ContainerStrategy, contentStg : ContentStrategy) : void;
+ /** Manipulation before applying the resolution policy
+ @param view The target view
+ */
+ preApply(view : View) : void;
+ /** Function to apply this resolution policy
+ The return value is {scale: [scaleX, scaleY], viewport: {cc.Rect}},
+ The target view can then apply these value to itself, it's preferred not to modify directly its private variables
+ @param view The target view
+ @param designedResolution The user defined design resolution
+ */
+ apply(view : View, designedResolution : Size) : any;
+ /** Manipulation after appyling the strategy
+ @param view The target view
+ */
+ postApply(view : View) : void;
+ /** Setup the container's scale strategy
+ */
+ setContainerStrategy(containerStg : ContainerStrategy) : void;
+ /** Setup the content's scale strategy
+ */
+ setContentStrategy(contentStg : ContentStrategy) : void;
+ /** The entire application is visible in the specified area without trying to preserve the original aspect ratio.
+ Distortion can occur, and the application may appear stretched or compressed. */
+ EXACT_FIT : number;
+ /** The entire application fills the specified area, without distortion but possibly with some cropping,
+ while maintaining the original aspect ratio of the application. */
+ NO_BORDER : number;
+ /** The entire application is visible in the specified area without distortion while maintaining the original
+ aspect ratio of the application. Borders can appear on two sides of the application. */
+ SHOW_ALL : number;
+ /** The application takes the height of the design resolution size and modifies the width of the internal
+ canvas so that it fits the aspect ratio of the device
+ no distortion will occur however you must make sure your application works on different
+ aspect ratios */
+ FIXED_HEIGHT : number;
+ /** The application takes the width of the design resolution size and modifies the height of the internal
+ canvas so that it fits the aspect ratio of the device
+ no distortion will occur however you must make sure your application works on different
+ aspect ratios */
+ FIXED_WIDTH : number;
+ /** Unknow policy */
+ UNKNOWN : number;
+ }
+ /** cc.visibleRect is a singleton object which defines the actual visible rect of the current view,
+ it should represent the same rect as cc.view.getViewportRect() */
+ export class visibleRect {
+ /** initialize
+ */
+ init(visibleRect : Rect) : void;
+ /** Top left coordinate of the screen related to the game scene. */
+ topLeft : Vec2;
+ /** Top right coordinate of the screen related to the game scene. */
+ topRight : Vec2;
+ /** Top center coordinate of the screen related to the game scene. */
+ top : Vec2;
+ /** Bottom left coordinate of the screen related to the game scene. */
+ bottomLeft : Vec2;
+ /** Bottom right coordinate of the screen related to the game scene. */
+ bottomRight : Vec2;
+ /** Bottom center coordinate of the screen related to the game scene. */
+ bottom : Vec2;
+ /** Center coordinate of the screen related to the game scene. */
+ center : Vec2;
+ /** Left center coordinate of the screen related to the game scene. */
+ left : Vec2;
+ /** Right center coordinate of the screen related to the game scene. */
+ right : Vec2;
+ /** Width of the screen. */
+ width : number;
+ /** Height of the screen. */
+ height : number;
+ }
+ /** The CallbacksHandler is an abstract class that can register and unregister callbacks by key.
+ Subclasses should implement their own methods about how to invoke the callbacks. */
+ export class _CallbacksHandler {
+ constructor();
+ /**
+ @param target can be null
+ */
+ add(key : string, callback : Function, target? : any) : boolean;
+ /** Check if the specified key has any registered callback. If a callback is also specified,
+ it will only return true if the callback is registered.
+ */
+ has(key : string, callback? : Function, target? : any) : boolean;
+ /** Removes all callbacks registered in a certain event type or all callbacks registered with a certain target
+ @param key The event key to be removed or the target to be removed
+ */
+ removeAll(key : string|any) : void;
+ /**
+ */
+ remove(key : string, callback : Function, target : any) : boolean;
+ }
+ /** !#en The callbacks invoker to handle and invoke callbacks by key.
+ !#zh CallbacksInvoker 用来根据 Key 管理并调用回调方法。 */
+ export class CallbacksInvoker extends _CallbacksHandler {
+ constructor();
+ /**
+ */
+ invoke(key : string, p1? : any, p2? : any, p3? : any, p4? : any, p5? : any) : void;
+ /**
+ */
+ invokeAndRemove(key : string, p1? : any, p2? : any, p3? : any, p4? : any, p5? : any) : void;
+ /**
+ @param remove remove callbacks after invoked
+ */
+ bindKey(key : string, remove? : boolean) : Function;
+ }
+ /** !#en Contains information collected during deserialization
+ !#zh 包含反序列化时的一些信息 */
+ export class Details {
+ constructor();
+ /** list of the depends assets' uuid */
+ uuidList : String[];
+ /** the obj list whose field needs to load asset by uuid */
+ uuidObjList : any[];
+ /** the corresponding field name which referenced to the asset */
+ uuidPropList : String[];
+ /** the corresponding field name which referenced to the raw object */
+ rawProp : string;
+ reset() : void;
+ /**
+ */
+ getUuidOf(obj : any, propName : string) : string;
+ /**
+ */
+ push(obj : any, propName : string, uuid : string) : void;
+ }
+ /** undefined */
+ export class url {
+ /** Returns the url of raw assets, you will only need this if the raw asset is inside the "resources" folder.
+
+ @example
+ ```js
+ ---
+ var url = cc.url.raw("textures/myTexture.png");
+ console.log(url); // "resources/raw/textures/myTexture.png"
+
+ ```
+ */
+ raw(url : string) : string;
+ /** Returns the url of builtin raw assets. This method can only used in editor.
+
+ @example
+ ```js
+ ---
+ var url = cc.url.builtinRaw("textures/myTexture.png");
+ console.log(url); // "resources/default-raw/textures/myTexture.png"
+
+ ```
+ */
+ builtinRaw(url : string) : string;
+ }
+ /** !#en
+ A cc.SpriteFrame has:
+ - texture: A cc.Texture2D that will be used by the _ccsg.Sprite
+ - rectangle: A rectangle of the texture
+
+ You can modify the frame of a _ccsg.Sprite by doing:
+
+ Note: It's not recommended to use SpriteFrame constructor (new SpriteFrame)
+ because its memory usage can't be tracked in native environment,
+ if you know what you are doing, you may need to manually retain it after creation then
+ release it when you no longer need it.
+
+ !#zh
+ 一个 SpriteFrame 包含:
+ - 纹理:会被 Sprite 使用的 Texture2D 对象。
+ - 矩形:在纹理中的矩形区域。
+ 注意:
+ 不建议用户使用构造函数进行创建,因为其内存使用情况,不能在本地环境中进行跟踪,需要用户手动管理内存,不然会导致严重错误。
+ 如果你知道你在做什么,你可能需要手动将其保留在创建之后,然后释放它。 */
+ export class SpriteFrame extends Asset {
+ constructor();
+ /** !#en
+ Constructor of SpriteFrame class.
+ Note: It's not recommended to use SpriteFrame constructor (new SpriteFrame)
+ because its memory usage can't be tracked in native environment,
+ if you know what you are doing, you may need to manually retain it after creation then
+ release it when you no longer need it.
+ !#zh
+ SpriteFrame 类的构造函数。
+ 注意:
+ 不建议用户使用构造函数进行创建,因为其内存使用情况,不能在本地环境中进行跟踪,
+ 需要用户手动管理内存,不然会导致严重错误。
+ 如果你知道你在做什么,你可能需要手动将其保留在创建之后,然后释放它。
+ @param rotated Whether the frame is rotated in the texture
+ @param offset The offset of the frame in the texture
+ @param originalSize The size of the frame in the texture
+ */
+ SpriteFrame(filename? : string|Texture2D, rect? : Rect, rotated? : boolean, offset? : Vec2, originalSize? : Size) : void;
+ /** !#en Top border of the sprite
+ !#zh sprite 的顶部边框 */
+ insetTop : number;
+ /** !#en Bottom border of the sprite
+ !#zh sprite 的底部边框 */
+ insetBottom : number;
+ /** !#en Left border of the sprite
+ !#zh sprite 的左边边框 */
+ insetLeft : number;
+ /** !#en Right border of the sprite
+ !#zh sprite 的左边边框 */
+ insetRight : number;
+ /** !#en Returns whether the texture have been loaded
+ !#zh 返回是否已加载纹理
+ */
+ textureLoaded() : boolean;
+ /** Add a event listener for texture loaded event.
+ */
+ addLoadedEventListener(callback : Function, target : any) : void;
+ /** !#en Returns whether the sprite frame is rotated in the texture.
+ !#zh 获取 SpriteFrame 是否旋转
+ */
+ isRotated() : boolean;
+ /** !#en Set whether the sprite frame is rotated in the texture.
+ !#zh 设置 SpriteFrame 是否旋转
+ */
+ setRotated(bRotated : boolean) : void;
+ /** !#en Returns the rect of the sprite frame in the texture.
+ !#zh 获取 SpriteFrame 的纹理矩形区域
+ */
+ getRect() : Rect;
+ /** !#en Sets the rect of the sprite frame in the texture.
+ !#zh 设置 SpriteFrame 的纹理矩形区域
+ */
+ setRect(rect : Rect) : void;
+ /** !#en Returns the original size of the trimmed image.
+ !#zh 获取修剪前的原始大小
+ */
+ getOriginalSize() : Size;
+ /** !#en Sets the original size of the trimmed image.
+ !#zh 设置修剪前的原始大小
+ */
+ setOriginalSize(size : Size) : void;
+ /** !#en Returns the texture of the frame.
+ !#zh 获取使用的纹理实例
+ */
+ getTexture() : Texture2D;
+ /** !#en Sets the texture of the frame, the texture is retained automatically.
+ !#zh 设置使用的纹理实例,会被 retain。
+ */
+ _refreshTexture(texture : Texture2D) : void;
+ /** !#en Returns the offset of the frame in the texture.
+ !#zh 获取偏移量
+ */
+ getOffset() : Vec2;
+ /** !#en Sets the offset of the frame in the texture.
+ !#zh 设置偏移量
+ */
+ setOffset(offsets : Vec2) : void;
+ /** !#en Clone the sprite frame.
+ !#zh 克隆 SpriteFrame
+ */
+ clone() : SpriteFrame;
+ /** !#en If a loading scene is marked as `asyncLoadAssets`, all the textures of the SpriteFrame which
+ associated by user's custom Components in the scene, will not preload automatically.
+ These textures will be load when Sprite component is going to render the SpriteFrames.
+ You can call this method if you want to load the texture early.
+ !#zh 当加载中的场景被标记为 `asyncLoadAssets` 时,用户在场景中由自定义组件关联到的所有 SpriteFrame 的贴图都不会被提前加载。
+ 只有当 Sprite 组件要渲染这些 SpriteFrame 时,才会检查贴图是否加载。如果你希望加载过程提前,你可以手工调用这个方法。
+
+ @example
+ ```js
+ if (spriteFrame.textureLoaded()) {
+ this._onSpriteFrameLoaded();
+ }
+ else {
+ spriteFrame.once('load', this._onSpriteFrameLoaded, this);
+ spriteFrame.ensureLoadTexture();
+ }
+ ```
+ */
+ ensureLoadTexture() : void;
+ }
+ /**
+ This class allows to easily create OpenGL or Canvas 2D textures from images, text or raw data.
+ The created cc.Texture2D object will always have power-of-two dimensions.
+ Depending on how you create the cc.Texture2D object, the actual image area of the texture might be smaller than the texture dimensions
+ i.e. "contentSize" != (pixelsWide, pixelsHigh) and (maxS, maxT) != (1.0, 1.0).
+ Be aware that the content of the generated textures will be upside-down!
*/
+ export class Texture2D extends RawAsset {
+ /** Get width in pixels.
+ */
+ getPixelWidth() : number;
+ /** Get height of in pixels.
+ */
+ getPixelHeight() : number;
+ /** Get content size.
+ */
+ getContentSize() : Size;
+ /** Get content size in pixels.
+ */
+ getContentSizeInPixels() : Size;
+ /** Init with HTML element.
+
+ @example
+ ```js
+ var img = new Image();
+ img.src = dataURL;
+ texture.initWithElement(img);
+ texture.handleLoadedTexture();
+ ```
+ */
+ initWithElement(element : HTMLImageElement|HTMLCanvasElement) : void;
+ /** Intializes with a texture2d with data.
+ */
+ initWithData(data : any[], pixelFormat : number, pixelsWide : number, pixelsHigh : number, contentSize : Size) : boolean;
+ /** Initializes a texture from a UIImage object.
+ Extensions to make it easy to create a CCTexture2D object from an image file.
+ Note that RGBA type textures will have their alpha premultiplied - use the blending mode (gl.ONE, gl.ONE_MINUS_SRC_ALPHA).
+ */
+ initWithImage(uiImage : HTMLImageElement) : boolean;
+ /** HTMLElement Object getter.
+ */
+ getHtmlElementObj() : HTMLImageElement;
+ /** Check whether texture is loaded.
+ */
+ isLoaded() : boolean;
+ /** Handler of texture loaded event.
+ */
+ handleLoadedTexture(premultiplied? : boolean) : void;
+ /** Description of cc.Texture2D.
+ */
+ description() : string;
+ /** Release texture.
+ */
+ releaseTexture() : void;
+ /** Pixel format of the texture.
+ */
+ getPixelFormat() : number;
+ /** Whether or not the texture has their Alpha premultiplied,
+ support only in WebGl rendering mode.
+ */
+ hasPremultipliedAlpha() : boolean;
+ /** Whether or not use mipmap, support only in WebGl rendering mode.
+ */
+ hasMipmaps() : boolean;
+ /** Sets the min filter, mag filter, wrap s and wrap t texture parameters.
+ If the texture size is NPOT (non power of 2), then in can only use gl.CLAMP_TO_EDGE in gl.TEXTURE_WRAP_{S,T}.
+ @param texParams texParams object or minFilter
+ */
+ setTexParameters(texParams : any|number, magFilter? : number, wrapS? : Texture2D.WrapMode, wrapT? : Texture2D.WrapMode) : void;
+ /** WebGLTexture Object. */
+ name : WebGLTexture;
+ /** Pixel format of the texture. */
+ pixelFormat : number;
+ /** Width in pixels. */
+ pixelWidth : number;
+ /** Height in pixels. */
+ pixelHeight : number;
+ /** Content width in points. */
+ width : number;
+ /** Content height in points. */
+ height : number;
+ }
+ /** A class that implements a Texture Atlas.
+ Supported features:
+ The atlas file can be a PNG, JPG.
+ Quads can be updated in runtime
+ Quads can be added in runtime
+ Quads can be removed in runtime
+ Quads can be re-ordered in runtime
+ The TextureAtlas capacity can be increased or decreased in runtime.
*/
+ export class TextureAtlas {
+ constructor();
+ /** Creates a TextureAtlas with an filename and with an initial capacity for Quads.
+ The TextureAtlas capacity can be increased in runtime.
+ Constructor of cc.TextureAtlas
+
+ @example
+ ```js
+ --------------------------
+ 1. //creates a TextureAtlas with filename
+ var textureAtlas = new cc.TextureAtlas("res/hello.png", 3);
+
+ 2. //creates a TextureAtlas with texture
+ var texture = cc.textureCache.addImage("hello.png");
+ var textureAtlas = new cc.TextureAtlas(texture, 3);
+
+ ```
+ */
+ TextureAtlas(fileName : string|Texture2D, capacity : number) : void;
+ /** Quantity of quads that are going to be drawn.
+ */
+ getTotalQuads() : number;
+ /** Quantity of quads that can be stored with the current texture atlas size.
+ */
+ getCapacity() : number;
+ /** Texture of the texture atlas.
+ */
+ getTexture() : Image;
+ /** Set texture for texture atlas.
+ */
+ setTexture(texture : Image) : void;
+ /** specify if the array buffer of the VBO needs to be updated.
+ */
+ setDirty(dirty : boolean) : void;
+ /** whether or not the array buffer of the VBO needs to be updated.
+ */
+ isDirty() : boolean;
+ /** Quads that are going to be rendered.
+ */
+ getQuads() : any[];
+ /**
+ */
+ setQuads(quads : any[]) : void;
+ /** Initializes a TextureAtlas with a filename and with a certain capacity for Quads.
+ The TextureAtlas capacity can be increased in runtime.
+ WARNING: Do not reinitialize the TextureAtlas because it will leak memory.
+
+ @example
+ ```js
+ --------------------------------------------------
+ var textureAtlas = new cc.TextureAtlas();
+ textureAtlas.initWithTexture("hello.png", 3);
+
+ ```
+ */
+ initWithFile(file : string, capacity : number) : boolean;
+ /** Initializes a TextureAtlas with a previously initialized Texture2D object, and
+ with an initial capacity for Quads.
+ The TextureAtlas capacity can be increased in runtime.
+ WARNING: Do not reinitialize the TextureAtlas because it will leak memory
+
+ @example
+ ```js
+ ---------------------------
+ var texture = cc.textureCache.addImage("hello.png");
+ var textureAtlas = new cc.TextureAtlas();
+ textureAtlas.initWithTexture(texture, 3);
+
+ ```
+ */
+ initWithTexture(texture : Image, capacity : number) : boolean;
+ /** Updates a Quad (texture, vertex and color) at a certain index
+ index must be between 0 and the atlas capacity - 1
+ */
+ updateQuad(quad : V3F_C4B_T2F_Quad, index : number) : void;
+ /** Inserts a Quad (texture, vertex and color) at a certain index
+ index must be between 0 and the atlas capacity - 1
+ */
+ insertQuad(quad : V3F_C4B_T2F_Quad, index : number) : void;
+ /**
+ Inserts a c array of quads at a given index
+ index must be between 0 and the atlas capacity - 1
+ this method doesn't enlarge the array when amount + index > totalQuads
+
+ */
+ insertQuads(quads : any[], index : number, amount : number) : void;
+ /** Removes the quad that is located at a certain index and inserts it at a new index
+ This operation is faster than removing and inserting in a quad in 2 different steps
+ */
+ insertQuadFromIndex(fromIndex : number, newIndex : number) : void;
+ /** Removes a quad at a given index number.
+ The capacity remains the same, but the total number of quads to be drawn is reduced in 1
+ */
+ removeQuadAtIndex(index : number) : void;
+ /** Removes a given number of quads at a given index.
+ */
+ removeQuadsAtIndex(index : number, amount : number) : void;
+ /** Removes all Quads.
+ The TextureAtlas capacity remains untouched. No memory is freed.
+ The total number of quads to be drawn will be 0
+ */
+ removeAllQuads() : void;
+ /** Resize the capacity of the CCTextureAtlas.
+ The new capacity can be lower or higher than the current one
+ It returns YES if the resize was successful.
+ If it fails to resize the capacity it will return NO with a new capacity of 0.
+ no used for js
+ */
+ resizeCapacity(newCapacity : number) : boolean;
+ /** Used internally by CCParticleBatchNode
+ don't use this unless you know what you're doing.
+ */
+ increaseTotalQuadsWith(amount : number) : void;
+ /** Moves an amount of quads from oldIndex at newIndex.
+ */
+ moveQuadsFromIndex(oldIndex : number, amount : number, newIndex : number) : void;
+ /** Ensures that after a realloc quads are still empty
+ Used internally by CCParticleBatchNode.
+ */
+ fillWithEmptyQuadsFromIndex(index : number, amount : number) : void;
+ /** Draws n quads from an index (offset).
+ n + start can't be greater than the capacity of the atlas
+ */
+ drawNumberOfQuads(n : number, start : number) : void;
+ /** Indicates whether or not the array buffer of the VBO needs to be updated. */
+ dirty : boolean;
+ /** Image texture for cc.TextureAtlas. */
+ texture : Image;
+ /** Quantity of quads that can be stored with the current texture atlas size. */
+ capacity : number;
+ /** Quantity of quads that are going to be drawn. */
+ totalQuads : number;
+ /** Quads that are going to be rendered. */
+ quads : any[];
+ }
+ /** cc.textureCache is a singleton object, it's the global cache for cc.Texture2D */
+ export class textureCache {
+ /** Description
+ */
+ description() : string;
+ /** Returns an already created texture. Returns null if the texture doesn't exist.
+
+ @example
+ ```js
+ ------------------
+ var key = cc.textureCache.textureForKey("hello.png");
+
+ ```
+ */
+ textureForKey(textureKeyName : string) : Texture2D;
+ /** Returns an already created texture. Returns null if the texture doesn't exist.
+
+ @example
+ ```js
+ ------------------
+ var key = cc.textureCache.getTextureForKey("hello.png");
+
+ ```
+ */
+ getTextureForKey(textureKeyName : string) : Texture2D;
+ /**
+
+ @example
+ ```js
+ ---------------
+ var cacheTextureForColor = cc.textureCache.getTextureColors(texture);
+
+ ```
+ */
+ getTextureColors(texture : Image) : any[];
+ /** Purges the dictionary of loaded textures.
+ Call this method if you receive the "Memory Warning"
+ In the short term: it will free some resources preventing your app from being killed
+ In the medium term: it will allocate more resources
+ In the long term: it will be the same
+
+ @example
+ ```js
+ --------
+ cc.textureCache.removeAllTextures();
+
+ ```
+ */
+ removeAllTextures() : void;
+ /** Deletes a texture from the cache given a texture.
+
+ @example
+ ```js
+ -----
+ cc.textureCache.removeTexture(texture);
+
+ ```
+ */
+ removeTexture(texture : Image) : void;
+ /** Deletes a texture from the cache given a its key name.
+
+ @example
+ ```js
+ ------
+ cc.textureCache.removeTexture("hello.png");
+
+ ```
+ */
+ removeTextureForKey(textureKeyName : string) : void;
+ /** Returns a Texture2D object given an file image
+ If the file image was not previously loaded, it will create a new Texture2D
+ object and it will return it. It will use the filename as a key.
+ Otherwise it will return a reference of a previously loaded image.
+ Supported image extensions: .png, .jpg, .gif
+
+ @example
+ ```js
+ ----
+ cc.textureCache.addImage("hello.png");
+
+ ```
+ */
+ addImage(url : string, cb : Function, target : any) : Texture2D;
+ /** Cache the image data.
+ */
+ cacheImage(path : string, texture : Image|HTMLImageElement|HTMLCanvasElement) : void;
+ /** Returns a Texture2D object given an UIImage image
+ If the image was not previously loaded, it will create a new Texture2D object and it will return it.
+ Otherwise it will return a reference of a previously loaded image
+ The "key" parameter will be used as the "key" for the cache.
+ If "key" is null, then a new texture will be created each time.
+ */
+ addUIImage(image : HTMLImageElement|HTMLCanvasElement, key : string) : Texture2D;
+ }
+ /** A base node for CCNode and CCEScene, it will:
+ - provide the same api with origin cocos2d rendering node (SGNode)
+ - maintains properties of the internal SGNode
+ - retain and release the SGNode
+ - serialize datas for SGNode (but SGNode itself will not being serialized)
+ - notifications if some properties changed
+ - define some interfaces shares between CCNode and CCEScene */
+ export class _BaseNode extends Object {
+ /** !#en Name of node.
+ !#zh 该节点名称。 */
+ name : string;
+ /** !#en The parent of the node.
+ !#zh 该节点的父节点。 */
+ parent : Node;
+ /** !#en The uuid for editor, will be stripped before building project.
+ !#zh 用于编辑器使用的 uuid,在构建项目之前将会被剔除。 */
+ uuid : string;
+ /** !#en Skew x
+ !#zh 该节点 Y 轴倾斜角度。 */
+ skewX : number;
+ /** !#en Skew y
+ !#zh 该节点 X 轴倾斜角度。 */
+ skewY : number;
+ /** !#en Z order in depth which stands for the drawing order.
+ !#zh 该节点渲染排序的 Z 轴深度。 */
+ zIndex : number;
+ /** !#en Rotation of node.
+ !#zh 该节点旋转角度。 */
+ rotation : number;
+ /** !#en Rotation on x axis.
+ !#zh 该节点 X 轴旋转角度。 */
+ rotationX : number;
+ /** !#en Rotation on y axis.
+ !#zh 该节点 Y 轴旋转角度。 */
+ rotationY : number;
+ /** !#en Scale on x axis.
+ !#zh 节点 X 轴缩放。 */
+ scaleX : number;
+ /** !#en Scale on y axis.
+ !#zh 节点 Y 轴缩放。 */
+ scaleY : number;
+ /** !#en x axis position of node.
+ !#zh 节点 X 轴坐标。 */
+ x : number;
+ /** !#en y axis position of node.
+ !#zh 节点 Y 轴坐标。 */
+ y : number;
+ /** !#en All children nodes.
+ !#zh 节点的所有子节点。 */
+ children : Node[];
+ /** !#en All children nodes.
+ !#zh 节点的子节点数量。 */
+ childrenCount : number;
+ /** !#en Anchor point's position on x axis.
+ !#zh 节点 X 轴锚点位置。 */
+ anchorX : number;
+ /** !#en Anchor point's position on y axis.
+ !#zh 节点 Y 轴锚点位置。 */
+ anchorY : number;
+ /** !#en Width of node.
+ !#zh 节点宽度。 */
+ width : number;
+ /** !#en Height of node.
+ !#zh 节点高度。 */
+ height : number;
+ /** !#en Tag of node.
+ !#zh 节点标签。 */
+ tag : number;
+ /** !#en Opacity of node, default value is 255.
+ !#zh 节点透明度,默认值为 255。 */
+ opacity : number;
+ /** !#en Indicate whether node's opacity value affect its child nodes, default value is false.
+ !#zh 节点的不透明度值是否影响其子节点,默认值为 false。 */
+ cascadeOpacity : boolean;
+ /** !#en Color of node, default value is white: (255, 255, 255).
+ !#zh 节点颜色。默认为白色,数值为:(255,255,255)。 */
+ color : Color;
+ /** !#en
+ Properties configuration function
+ All properties in attrs will be set to the node,
+ when the setter of the node is available,
+ the property will be set via setter function.
+ !#zh 属性配置函数。在 attrs 的所有属性将被设置为节点属性。
+ @param attrs Properties to be set to node
+
+ @example
+ ```js
+ var attrs = { key: 0, num: 100 };
+ node.attr(attrs);
+ ```
+ */
+ attr(attrs : any) : void;
+ /** !#en
+ Returns the scale factor of the node.
+ Assertion will fail when _scaleX != _scaleY.
+ !#zh 获取节点的缩放。当 X 轴和 Y 轴有相同的缩放数值时。
+
+ @example
+ ```js
+ cc.log("Node Scale: " + node.getScale());
+ ```
+ */
+ getScale() : number;
+ /** !#en Sets the scale factor of the node. 1.0 is the default scale factor. This function can modify the X and Y scale at the same time.
+ !#zh 设置节点的缩放比例,默认值为 1.0。这个函数可以在同一时间修改 X 和 Y 缩放。
+ @param scaleX scaleX or scale
+
+ @example
+ ```js
+ node.setScale(cc.v2(1, 1));
+ node.setScale(1, 1);
+ ```
+ */
+ setScale(scaleX : number|Vec2, scaleY? : number) : void;
+ /** !#en Returns a copy of the position (x,y) of the node in cocos2d coordinates. (0,0) is the left-bottom corner.
+ !#zh 获取在父节点坐标系中节点的位置( x , y )。
+
+ @example
+ ```js
+ cc.log("Node Position: " + node.getPosition());
+ ```
+ */
+ getPosition() : Vec2;
+ /** !#en
+ Changes the position (x,y) of the node in cocos2d coordinates.
+ The original point (0,0) is at the left-bottom corner of screen.
+ Usually we use cc.v2(x,y) to compose CCVec2 object.
+ and Passing two numbers (x,y) is more efficient than passing CCPoint object.
+ !#zh
+ 设置节点在父坐标系中的位置。
+ 可以通过 2 种方式设置坐标点:
+ 1.传入 cc.v2(x, y) 类型为 cc.Vec2 的对象。
+ 2.传入 2 个数值 x 和 y。
+ @param newPosOrxValue The position (x,y) of the node in coordinates or the X coordinate for position
+ @param yValue Y coordinate for position
+
+ @example
+ ```js
+ node.setPosition(cc.v2(0, 0));
+ node.setPosition(0, 0);
+
+ ```
+ */
+ setPosition(newPosOrxValue : Vec2|number, yValue? : number) : void;
+ /** !#en
+ Returns a copy of the anchor point.
+ Anchor point is the point around which all transformations and positioning manipulations take place.
+ It's like a pin in the node where it is "attached" to its parent.
+ The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner.
+ But you can use values higher than (1,1) and lower than (0,0) too.
+ The default anchor point is (0.5,0.5), so it starts at the center of the node.
+ !#zh
+ 获取节点锚点,用百分比表示。
+ 锚点应用于所有变换和坐标点的操作,它就像在节点上连接其父节点的大头针。
+ 锚点是标准化的,就像百分比一样。(0,0) 表示左下角,(1,1) 表示右上角。
+ 但是你可以使用比(1,1)更高的值或者比(0,0)更低的值。
+ 默认的锚点是(0.5,0.5),因此它开始于节点的中心位置。
+ 注意:Creator 中的锚点仅用于定位所在的节点,子节点的定位不受影响。
+
+ @example
+ ```js
+ cc.log("Node AnchorPoint: " + node.getAnchorPoint());
+ ```
+ */
+ getAnchorPoint() : Vec2;
+ /** !#en
+ Sets the anchor point in percent.
+ anchor point is the point around which all transformations and positioning manipulations take place.
+ It's like a pin in the node where it is "attached" to its parent.
+ The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner.
+ But you can use values higher than (1,1) and lower than (0,0) too.
+ The default anchor point is (0.5,0.5), so it starts at the center of the node.
+ !#zh
+ 设置锚点的百分比。
+ 锚点应用于所有变换和坐标点的操作,它就像在节点上连接其父节点的大头针。
+ 锚点是标准化的,就像百分比一样。(0,0) 表示左下角,(1,1) 表示右上角。
+ 但是你可以使用比(1,1)更高的值或者比(0,0)更低的值。
+ 默认的锚点是(0.5,0.5),因此它开始于节点的中心位置。
+ 注意:Creator 中的锚点仅用于定位所在的节点,子节点的定位不受影响。
+ @param point The anchor point of node or The x axis anchor of node.
+ @param y The y axis anchor of node.
+
+ @example
+ ```js
+ node.setAnchorPoint(cc.v2(1, 1));
+ node.setAnchorPoint(1, 1);
+ ```
+ */
+ setAnchorPoint(point : Vec2|number, y? : number) : void;
+ /** !#en
+ Returns a copy of the anchor point in absolute pixels.
+ you can only read it. If you wish to modify it, use setAnchorPoint.
+ !#zh
+ 返回锚点的绝对像素位置。
+ 你只能读它。如果您要修改它,使用 setAnchorPoint。
+
+ @example
+ ```js
+ cc.log("AnchorPointInPoints: " + node.getAnchorPointInPoints());
+ ```
+ */
+ getAnchorPointInPoints() : Vec2;
+ /** !#en
+ Returns a copy the untransformed size of the node.
+ The contentSize remains the same no matter the node is scaled or rotated.
+ All nodes has a size. Layer and Scene has the same size of the screen by default.
+ !#zh 获取节点自身大小,不受该节点是否被缩放或者旋转的影响。
+ @param ignoreSizeProvider true if you need to get the original size of the node
+
+ @example
+ ```js
+ cc.log("Content Size: " + node.getContentSize());
+ ```
+ */
+ getContentSize(ignoreSizeProvider? : boolean) : Size;
+ /** !#en
+ Sets the untransformed size of the node.
+ The contentSize remains the same no matter the node is scaled or rotated.
+ All nodes has a size. Layer and Scene has the same size of the screen.
+ !#zh 设置节点原始大小,不受该节点是否被缩放或者旋转的影响。
+ @param size The untransformed size of the node or The untransformed size's width of the node.
+ @param height The untransformed size's height of the node.
+
+ @example
+ ```js
+ node.setContentSize(cc.size(100, 100));
+ node.setContentSize(100, 100);
+ ```
+ */
+ setContentSize(size : Size|number, height? : number) : void;
+ /** !#en
+ Returns a "local" axis aligned bounding box of the node.
+ The returned box is relative only to its parent.
+ !#zh 返回父节坐标系下的轴向对齐的包围盒。
+
+ @example
+ ```js
+ var boundingBox = node.getBoundingBox();
+ ```
+ */
+ getBoundingBox() : Rect;
+ /** !#en Stops all running actions and schedulers.
+ !#zh 停止所有正在播放的动作和计时器。
+
+ @example
+ ```js
+ node.cleanup();
+ ```
+ */
+ cleanup() : void;
+ /** !#en Returns a child from the container given its tag.
+ !#zh 通过标签获取节点的子节点。
+ @param aTag An identifier to find the child node.
+
+ @example
+ ```js
+ var child = node.getChildByTag(1001);
+ ```
+ */
+ getChildByTag(aTag : number) : Node;
+ /** !#en Returns a child from the container given its uuid.
+ !#zh 通过 uuid 获取节点的子节点。
+ @param uuid The uuid to find the child node.
+
+ @example
+ ```js
+ var child = node.getChildByUuid(uuid);
+ ```
+ */
+ getChildByUuid(uuid : string) : Node;
+ /** !#en Returns a child from the container given its name.
+ !#zh 通过名称获取节点的子节点。
+ @param name A name to find the child node.
+
+ @example
+ ```js
+ var child = node.getChildByName("Test Node");
+ ```
+ */
+ getChildByName(name : string) : Node;
+ /** !#en
+ "add" logic MUST only be in this method
+ !#zh
+ 添加子节点,并且可以修改该节点的 局部 Z 顺序和标签。
+ @param child A child node
+ @param localZOrder Z order for drawing priority. Please refer to setZOrder(int)
+ @param tag An integer or a name to identify the node easily. Please refer to setTag(int) and setName(string)
+
+ @example
+ ```js
+ node.addChild(newNode, 1, 1001);
+ ```
+ */
+ addChild(child : Node, localZOrder? : number, tag? : number|string) : void;
+ /** !#en
+ Remove itself from its parent node. If cleanup is true, then also remove all actions and callbacks.
+ If the cleanup parameter is not passed, it will force a cleanup.
+ If the node orphan, then nothing happens.
+ !#zh
+ 从父节点中删除一个节点。cleanup 参数为 true,那么在这个节点上所有的动作和回调都会被删除,反之则不会。
+ 如果不传入 cleanup 参数,默认是 true 的。
+ 如果这个节点是一个孤节点,那么什么都不会发生。
+ @param cleanup true if all actions and callbacks on this node should be removed, false otherwise.
+
+ @example
+ ```js
+ node.removeFromParent();
+ node.removeFromParent(false);
+ ```
+ */
+ removeFromParent(cleanup? : boolean) : void;
+ /** !#en
+ Removes a child from the container. It will also cleanup all running actions depending on the cleanup parameter.
+ If the cleanup parameter is not passed, it will force a cleanup.
+ "remove" logic MUST only be on this method
+ If a class wants to extend the 'removeChild' behavior it only needs
+ to override this method.
+ !#zh
+ 移除节点中指定的子节点,是否需要清理所有正在运行的行为取决于 cleanup 参数。
+ 如果 cleanup 参数不传入,默认为 true 表示清理。
+ @param child The child node which will be removed.
+ @param cleanup true if all running actions and callbacks on the child node will be cleanup, false otherwise.
+
+ @example
+ ```js
+ node.removeChild(newNode);
+ node.removeChild(newNode, false);
+ ```
+ */
+ removeChild(child : Node, cleanup? : boolean) : void;
+ /** !#en
+ Removes a child from the container by tag value. It will also cleanup all running actions depending on the cleanup parameter.
+ If the cleanup parameter is not passed, it will force a cleanup.
+ !#zh
+ 通过标签移除节点中指定的子节点,是否需要清理所有正在运行的行为取决于 cleanup 参数。
+ 如果 cleanup 参数不传入,默认为 true 表示清理。
+ @param tag An integer number that identifies a child node
+ @param cleanup true if all running actions and callbacks on the child node will be cleanup, false otherwise.
+
+ @example
+ ```js
+ node.removeChildByTag(1001);
+ node.removeChildByTag(1001, false);
+ ```
+ */
+ removeChildByTag(tag : number, cleanup? : boolean) : void;
+ /** !#en
+ Removes all children from the container and do a cleanup all running actions depending on the cleanup parameter.
+ If the cleanup parameter is not passed, it will force a cleanup.
+ !#zh
+ 移除节点所有的子节点,是否需要清理所有正在运行的行为取决于 cleanup 参数。
+ 如果 cleanup 参数不传入,默认为 true 表示清理。
+ @param cleanup true if all running actions on all children nodes should be cleanup, false otherwise.
+
+ @example
+ ```js
+ node.removeAllChildren();
+ node.removeAllChildren(false);
+ ```
+ */
+ removeAllChildren(cleanup? : boolean) : void;
+ /** !#en
+ Returns the matrix that transform parent's space coordinates to the node's (local) space coordinates.
+ The matrix is in Pixels. The returned transform is readonly and cannot be changed.
+ !#zh
+ 返回将父节点的坐标系转换成节点(局部)的空间坐标系的矩阵。
+ 该矩阵以像素为单位。返回的矩阵是只读的,不能更改。
+
+ @example
+ ```js
+ var affineTransform = node.getParentToNodeTransform();
+ ```
+ */
+ getParentToNodeTransform() : AffineTransform;
+ /** !#en Returns the world affine transform matrix. The matrix is in Pixels.
+ !#zh 返回节点到世界坐标系的仿射变换矩阵。矩阵单位是像素。
+
+ @example
+ ```js
+ var affineTransform = node.getNodeToWorldTransform();
+ ```
+ */
+ getNodeToWorldTransform() : AffineTransform;
+ /** !#en
+ Returns the world affine transform matrix. The matrix is in Pixels.
+ This method is AR (Anchor Relative).
+ !#zh
+ 返回节点到世界坐标仿射变换矩阵。矩阵单位是像素。
+ 该方法基于节点坐标。
+
+ @example
+ ```js
+ var mat = node.getNodeToWorldTransformAR();
+ ```
+ */
+ getNodeToWorldTransformAR() : AffineTransform;
+ /** !#en Returns the inverse world affine transform matrix. The matrix is in Pixels.
+ !#en 返回世界坐标系到节点坐标系的逆矩阵。
+
+ @example
+ ```js
+ var affineTransform = node.getWorldToNodeTransform();
+ ```
+ */
+ getWorldToNodeTransform() : AffineTransform;
+ /** !#en Converts a Point to node (local) space coordinates. The result is in Vec2.
+ !#zh 将一个点转换到节点 (局部) 坐标系。结果以 Vec2 为单位。
+
+ @example
+ ```js
+ var newVec2 = node.convertToNodeSpace(cc.v2(100, 100));
+ ```
+ */
+ convertToNodeSpace(worldPoint : Vec2) : Vec2;
+ /** !#en Converts a Point to world space coordinates. The result is in Points.
+ !#zh 将一个点转换到世界空间坐标系。结果以 Vec2 为单位。
+
+ @example
+ ```js
+ var newVec2 = node.convertToWorldSpace(cc.v2(100, 100));
+ ```
+ */
+ convertToWorldSpace(nodePoint : Vec2) : Vec2;
+ /** !#en
+ Converts a Point to node (local) space coordinates. The result is in Points.
+ treating the returned/received node point as anchor relative.
+ !#zh
+ 将一个点转换到节点 (局部) 空间坐标系。结果以 Vec2 为单位。
+ 返回值将基于节点坐标。
+
+ @example
+ ```js
+ var newVec2 = node.convertToNodeSpaceAR(cc.v2(100, 100));
+ ```
+ */
+ convertToNodeSpaceAR(worldPoint : Vec2) : Vec2;
+ /** !#en
+ Converts a local Point to world space coordinates.The result is in Points.
+ treating the returned/received node point as anchor relative.
+ !#zh
+ 将一个点转换到世界空间坐标系。结果以 Vec2 为单位。
+ 返回值将基于世界坐标。
+
+ @example
+ ```js
+ var newVec2 = node.convertToWorldSpaceAR(cc.v2(100, 100));
+ ```
+ */
+ convertToWorldSpaceAR(nodePoint : Vec2) : Vec2;
+ /** !#en convenience methods which take a cc.Touch instead of cc.Vec2.
+ !#zh 将触摸点转换成本地坐标系中位置。
+ @param touch The touch object
+
+ @example
+ ```js
+ var newVec2 = node.convertTouchToNodeSpace(touch);
+ ```
+ */
+ convertTouchToNodeSpace(touch : Touch) : Vec2;
+ /** !#en converts a cc.Touch (world coordinates) into a local coordinate. This method is AR (Anchor Relative).
+ !#zh 转换一个 cc.Touch(世界坐标)到一个局部坐标,该方法基于节点坐标。
+ @param touch The touch object
+
+ @example
+ ```js
+ var newVec2 = node.convertTouchToNodeSpaceAR(touch);
+ ```
+ */
+ convertTouchToNodeSpaceAR(touch : Touch) : Vec2;
+ /** !#en
+ Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates.
+ The matrix is in Pixels.
+ !#zh 返回这个将节点(局部)的空间坐标系转换成父节点的空间坐标系的矩阵。这个矩阵以像素为单位。
+
+ @example
+ ```js
+ var affineTransform = node.getNodeToParentTransform();
+ ```
+ */
+ getNodeToParentTransform() : AffineTransform;
+ /** !#en
+ Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates.
+ The matrix is in Pixels.
+ This method is AR (Anchor Relative).
+ !#zh
+ 返回这个将节点(局部)的空间坐标系转换成父节点的空间坐标系的矩阵。
+ 这个矩阵以像素为单位。
+ 该方法基于节点坐标。
+
+ @example
+ ```js
+ var affineTransform = node.getNodeToParentTransformAR();
+ ```
+ */
+ getNodeToParentTransformAR() : AffineTransform;
+ /** !#en
+ Returns a "world" axis aligned bounding box of the node.
+ The bounding box contains self and active children's world bounding box.
+ !#zh
+ 返回节点在世界坐标系下的对齐轴向的包围盒(AABB)。
+ 该边框包含自身和已激活的子节点的世界边框。
+
+ @example
+ ```js
+ var newRect = node.getBoundingBoxToWorld();
+ ```
+ */
+ getBoundingBoxToWorld() : Rect;
+ /** !#en
+ Returns the displayed opacity of Node,
+ the difference between displayed opacity and opacity is that displayed opacity is calculated based on opacity and parent node's opacity when cascade opacity enabled.
+ !#zh
+ 获取节点显示透明度,
+ 显示透明度和透明度之间的不同之处在于当启用级连透明度时,
+ 显示透明度是基于自身透明度和父节点透明度计算的。
+
+ @example
+ ```js
+ var displayOpacity = node.getDisplayedOpacity();
+ ```
+ */
+ getDisplayedOpacity() : number;
+ /** !#en
+ Returns the displayed color of Node,
+ the difference between displayed color and color is that displayed color is calculated based on color and parent node's color when cascade color enabled.
+ !#zh
+ 获取节点的显示透明度,
+ 显示透明度和透明度之间的不同之处在于显示透明度是基于透明度和父节点透明度启用级连透明度时计算的。
+
+ @example
+ ```js
+ var displayColor = node.getDisplayedColor();
+ ```
+ */
+ getDisplayedColor() : Color;
+ /** !#en
+ Set whether color should be changed with the opacity value,
+ useless in ccsg.Node, but this function is override in some class to have such behavior.
+ !#zh 设置更改透明度时是否修改RGB值,
+
+ @example
+ ```js
+ node.setOpacityModifyRGB(true);
+ ```
+ */
+ setOpacityModifyRGB(opacityValue : boolean) : void;
+ /** !#en Get whether color should be changed with the opacity value.
+ !#zh 更改透明度时是否修改RGB值。
+
+ @example
+ ```js
+ var hasChange = node.isOpacityModifyRGB();
+ ```
+ */
+ isOpacityModifyRGB() : boolean;
+ /** !#en Get the sibling index.
+ !#zh 获取同级索引。
+
+ @example
+ ```js
+ var index = node.getSiblingIndex();
+ ```
+ */
+ getSiblingIndex() : number;
+ /** !#en Set the sibling index of this node.
+ !#zh 设置节点同级索引。
+
+ @example
+ ```js
+ node.setSiblingIndex(1);
+ ```
+ */
+ setSiblingIndex(index : number) : void;
+ /** !#en Is this node a child of the given node?
+ !#zh 是否是指定节点的子节点?
+
+ @example
+ ```js
+ node.isChildOf(newNode);
+ ```
+ */
+ isChildOf(parent : Node) : boolean;
+ /** !#en Sorts the children array depends on children's zIndex and arrivalOrder,
+ normally you won't need to invoke this function.
+ !#zh 根据子节点的 zIndex 和 arrivalOrder 进行排序,正常情况下开发者不需要手动调用这个函数。
+ */
+ sortAllChildren() : void;
+ /** !#en The local scale relative to the parent.
+ !#zh 节点相对父节点的缩放。 */
+ scale : number;
+ /** !#en Returns the x axis position of the node in cocos2d coordinates.
+ !#zh 获取节点 X 轴坐标。
+
+ @example
+ ```js
+ var posX = node.getPositionX();
+ ```
+ */
+ getPositionX() : number;
+ /** !#en Sets the x axis position of the node in cocos2d coordinates.
+ !#zh 设置节点 X 轴坐标。
+
+ @example
+ ```js
+ node.setPositionX(1);
+ ```
+ */
+ setPositionX(x : number) : void;
+ /** !#en Returns the y axis position of the node in cocos2d coordinates.
+ !#zh 获取节点 Y 轴坐标。
+
+ @example
+ ```js
+ var posY = node.getPositionY();
+ ```
+ */
+ getPositionY() : number;
+ /** !#en Sets the y axis position of the node in cocos2d coordinates.
+ !#zh 设置节点 Y 轴坐标。
+ @param y The new position in y axis
+
+ @example
+ ```js
+ node.setPositionY(100);
+ ```
+ */
+ setPositionY(y : number) : void;
+ /** !#en Returns the local Z order of this node.
+ !#zh 获取节点局部 Z 轴顺序。
+
+ @example
+ ```js
+ var localZorder = node.getLocalZOrder();
+ ```
+ */
+ getLocalZOrder() : number;
+ /** !#en
+ LocalZOrder is the 'key' used to sort the node relative to its siblings.
+
+ The Node's parent will sort all its children based ont the LocalZOrder value.
+ If two nodes have the same LocalZOrder, then the node that was added first to the children's array
+ will be in front of the other node in the array.
+ Also, the Scene Graph is traversed using the "In-Order" tree traversal algorithm ( http://en.wikipedia.org/wiki/Tree_traversal#In-order )
+ And Nodes that have LocalZOder values smaller than 0 are the "left" subtree
+ While Nodes with LocalZOder greater than 0 are the "right" subtree.
+ !#zh
+ LocalZOrder 是 “key” (关键)来分辨节点和它兄弟节点的相关性。
+ 父节点将会通过 LocalZOrder 的值来分辨所有的子节点。
+ 如果两个节点有同样的 LocalZOrder,那么先加入子节点数组的节点将会显示在后加入的节点的前面。
+ 同样的,场景图使用 “In-Order(按顺序)” 遍历数算法来遍历
+ ( http://en.wikipedia.org/wiki/Tree_traversal#In-order ) 并且拥有小于 0 的 LocalZOrder 的值的节点是 “ left ” 子树(左子树)
+ 所以拥有大于 0 的 LocalZOrder 的值得节点是 “ right ”子树(右子树)。
+
+ @example
+ ```js
+ node.setLocalZOrder(1);
+ ```
+ */
+ setLocalZOrder(localZOrder : number) : void;
+ /** !#en Returns whether node's opacity value affect its child nodes.
+ !#zh 返回节点的不透明度值是否影响其子节点。
+
+ @example
+ ```js
+ cc.log(node.isCascadeOpacityEnabled());
+ ```
+ */
+ isCascadeOpacityEnabled() : boolean;
+ /** !#en Enable or disable cascade opacity, if cascade enabled, child nodes' opacity will be the multiplication of parent opacity and its own opacity.
+ !#zh 启用或禁用级连不透明度,如果级连启用,子节点的不透明度将是父不透明度乘上它自己的不透明度。
+
+ @example
+ ```js
+ node.setCascadeOpacityEnabled(true);
+ ```
+ */
+ setCascadeOpacityEnabled(cascadeOpacityEnabled : boolean) : void;
+ /** !#en Enable or disable cascade color, if cascade enabled, child nodes' opacity will be the cascade value of parent color and its own color.
+ !#zh 启用或禁用级连颜色,如果级连启用,子节点的颜色将是父颜色和它自己的颜色的级连值。
+
+ @example
+ ```js
+ node.setCascadeColorEnabled(true);
+ ```
+ */
+ setCascadeColorEnabled(cascadeColorEnabled : boolean) : void;
+ }
+ /** !#en
+ cc.AffineTransform class represent an affine transform matrix. It's composed basically by translation, rotation, scale transformations.
+ Please do not use its constructor directly, use cc.affineTransformMake alias function instead.
+ !#zh
+ cc.AffineTransform 类代表一个仿射变换矩阵。它基本上是由平移旋转,缩放转变所组成。
+ 请不要直接使用它的构造,请使用 cc.affineTransformMake 函数代替。 */
+ export class AffineTransform {
+ /** !#en Create a cc.AffineTransform object with all contents in the matrix.
+ !#zh 用在矩阵中的所有内容创建一个 cc.AffineTransform 对象。
+ */
+ affineTransformMake(a : number, b : number, c : number, d : number, tx : number, ty : number) : AffineTransform;
+ /** !#en Clone a cc.AffineTransform object from the specified transform.
+ !#zh 克隆指定的 cc.AffineTransform 对象。
+ */
+ affineTransformClone(t : AffineTransform) : AffineTransform;
+ /** !#en Apply the affine transformation on a point.
+ !#zh 对一个点应用矩阵变换。
+ @param point or x.
+ @param transOrY transform matrix or y.
+ @param t transform matrix or y.
+ */
+ pointApplyAffineTransform(point : Vec2|number, transOrY : AffineTransform|number, t : AffineTransform) : Vec2;
+ /** !#en Apply the affine transformation on a size.
+ !#zh 应用 Size 到仿射变换矩阵上。
+ */
+ sizeApplyAffineTransform(size : Size, t : AffineTransform) : Size;
+ /** !#en
+ Create a identity transformation matrix:
+ [ 1, 0, 0,
+ 0, 1, 0 ]
+ !#zh
+ 单位矩阵:
+ [ 1, 0, 0,
+ 0, 1, 0 ]
+ */
+ affineTransformMakeIdentity() : AffineTransform;
+ /** !#en Apply the affine transformation on a rect.
+ !#zh 应用 Rect 到仿射变换矩阵上。
+ */
+ rectApplyAffineTransform(rect : Rect, anAffineTransform : AffineTransform) : Rect;
+ /** !#en Apply the affine transformation on a rect, and truns to an Oriented Bounding Box.
+ !#zh 应用 Rect 到仿射变换矩阵上, 并转换为有向包围盒
+ */
+ obbApplyAffineTransform(rect : Rect, anAffineTransform : AffineTransform, out_bl : Vec2, out_tl : Vec2, out_tr : Vec2, out_br : Vec2) : void;
+ /** !#en Create a new affine transformation with a base transformation matrix and a translation based on it.
+ !#zh 基于一个基础矩阵加上一个平移操作来创建一个新的矩阵。
+ @param t The base affine transform object.
+ @param tx The translation on x axis.
+ @param ty The translation on y axis.
+ */
+ affineTransformTranslate(t : AffineTransform, tx : number, ty : number) : AffineTransform;
+ /** !#en Create a new affine transformation with a base transformation matrix and a scale based on it.
+ !#zh 创建一个基础变换矩阵,并在此基础上进行了 Scale 仿射变换。
+ @param t The base affine transform object.
+ @param sx The scale on x axis.
+ @param sy The scale on y axis.
+ */
+ affineTransformScale(t : AffineTransform, sx : number, sy : number) : AffineTransform;
+ /** !#en Create a new affine transformation with a base transformation matrix and a rotation based on it.
+ !#zh 创建一个基础变换矩阵,并在此基础上进行了 Rotation 仿射变换。
+ @param aTransform The base affine transform object.
+ @param anAngle The angle to rotate.
+ */
+ affineTransformRotate(aTransform : AffineTransform, anAngle : number) : AffineTransform;
+ /** !#en
+ Concatenate a transform matrix to another and return the result:
+ t' = t1 * t2
+ !#zh 拼接两个矩阵,并返回结果:
+ t' = t1 * t2
+ @param t1 The first transform object.
+ @param t2 The transform object to concatenate.
+ */
+ affineTransformConcat(t1 : AffineTransform, t2 : AffineTransform) : AffineTransform;
+ /** !#en
+ Concatenate a transform matrix to another
+ The results are reflected in the first matrix.
+ t' = t1 * t2
+ !#zh
+ 拼接两个矩阵,将结果保存到第一个矩阵。
+ t' = t1 * t2
+ @param t1 The first transform object.
+ @param t2 The transform object to concatenate.
+ */
+ affineTransformConcatIn(t1 : AffineTransform, t2 : AffineTransform) : AffineTransform;
+ /** !#en Return true if an affine transform equals to another, false otherwise.
+ !#zh 判断两个矩阵是否相等。
+ */
+ affineTransformEqualToTransform(t1 : AffineTransform, t2 : AffineTransform) : boolean;
+ /** !#en Get the invert transform of an AffineTransform object.
+ !#zh 求逆矩阵。
+ */
+ affineTransformInvert(t : AffineTransform) : AffineTransform;
+ }
+ /** !#en
+ Representation of RGBA colors.
+
+ Each color component is a floating point value with a range from 0 to 255.
+
+ You can also use the convenience method {{#crossLink "cc/color:method"}}cc.color{{/crossLink}} to create a new Color.
+
+ !#zh
+ cc.Color 用于表示颜色。
+
+ 它包含 RGBA 四个以浮点数保存的颜色分量,每个的值都在 0 到 255 之间。
+
+ 您也可以通过使用 {{#crossLink "cc/color:method"}}cc.color{{/crossLink}} 的便捷方法来创建一个新的 Color。 */
+ export class Color extends ValueType {
+ /**
+ @param r red component of the color, default value is 0.
+ @param g green component of the color, defualt value is 0.
+ @param b blue component of the color, default value is 0.
+ @param a alpha component of the color, default value is 255.
+ */
+ Color(r? : number, g? : number, b? : number, a? : number) : Color;
+ /** !#en Solid white, RGBA is [255, 255, 255, 255].
+ !#zh 纯白色,RGBA 是 [255, 255, 255, 255]。 */
+ WHITE : Color;
+ /** !#en Solid black, RGBA is [0, 0, 0, 255].
+ !#zh 纯黑色,RGBA 是 [0, 0, 0, 255]。 */
+ BLACK : Color;
+ /** !#en Transparent, RGBA is [0, 0, 0, 0].
+ !#zh 透明,RGBA 是 [0, 0, 0, 0]。 */
+ TRANSPARENT : Color;
+ /** !#en Grey, RGBA is [127.5, 127.5, 127.5].
+ !#zh 灰色,RGBA 是 [127.5, 127.5, 127.5]。 */
+ GRAY : Color;
+ /** !#en Solid red, RGBA is [255, 0, 0].
+ !#zh 纯红色,RGBA 是 [255, 0, 0]。 */
+ RED : Color;
+ /** !#en Solid green, RGBA is [0, 255, 0].
+ !#zh 纯绿色,RGBA 是 [0, 255, 0]。 */
+ GREEN : Color;
+ /** !#en Solid blue, RGBA is [0, 0, 255].
+ !#zh 纯蓝色,RGBA 是 [0, 0, 255]。 */
+ BLUE : Color;
+ /** !#en Yellow, RGBA is [255, 235, 4].
+ !#zh 黄色,RGBA 是 [255, 235, 4]。 */
+ YELLOW : Color;
+ /** !#en Orange, RGBA is [255, 127, 0].
+ !#zh 橙色,RGBA 是 [255, 127, 0]。 */
+ ORANGE : Color;
+ /** !#en Cyan, RGBA is [0, 255, 255].
+ !#zh 青色,RGBA 是 [0, 255, 255]。 */
+ CYAN : Color;
+ /** !#en Magenta, RGBA is [255, 0, 255].
+ !#zh 洋红色(品红色),RGBA 是 [255, 0, 255]。 */
+ MAGENTA : Color;
+ /** !#en Clone a new color from the current color.
+ !#zh 克隆当前颜色。
+
+ @example
+ ```js
+ var color = new cc.Color();
+ var newColor = color.clone();// Color {r: 0, g: 0, b: 0, a: 255}
+ ```
+ */
+ clone() : Color;
+ /** !#en TODO
+ !#zh 判断两个颜色是否相等。
+
+ @example
+ ```js
+ var color1 = cc.Color.WHITE;
+ var color2 = new cc.Color(255, 255, 255);
+ cc.log(color1.equals(color2)); // true;
+ color2 = cc.Color.RED;
+ cc.log(color2.equals(color1)); // false;
+ ```
+ */
+ equals(other: (r: number, g: number, b: number, a: number) => void) : boolean;
+ /** !#en TODO
+ !#zh 线性插值
+ @param ratio the interpolation coefficient.
+ @param out optional, the receiving vector.
+
+ @example
+ ```js
+ // Converts a white color to a black one trough time.
+ update: function (dt) {
+ var color = this.node.color;
+ if (color.equals(cc.Color.BLACK)) {
+ return;
+ }
+ this.ratio += dt * 0.1;
+ this.node.color = cc.Color.WHITE.lerp(cc.Color.BLACK, ratio);
+ }
+
+ ```
+ */
+ lerp(to: (r: number, g: number, b: number, a: number) => void, ratio : number, out: (r: number, g: number, b: number, a: number) => void) : Color;
+ /** !#en TODO
+ !#zh 转换为方便阅读的字符串。
+
+ @example
+ ```js
+ var color = cc.Color.WHITE;
+ color.toString(); // "rgba(255, 255, 255, 255)"
+ ```
+ */
+ toString() : string;
+ /** !#en TODO
+ !#zh 设置当前的红色值,并返回当前对象。
+ @param red the new Red component.
+
+ @example
+ ```js
+ var color = new cc.Color();
+ color.setR(255); // Color {r: 255, g: 0, b: 0, a: 255}
+ ```
+ */
+ setR(red : number) : Color;
+ /** !#en TODO
+ !#zh 设置当前的绿色值,并返回当前对象。
+ @param green the new Green component.
+
+ @example
+ ```js
+ var color = new cc.Color();
+ color.setG(255); // Color {r: 0, g: 255, b: 0, a: 255}
+ ```
+ */
+ setG(green : number) : Color;
+ /** !#en TODO
+ !#zh 设置当前的蓝色值,并返回当前对象。
+ @param blue the new Blue component.
+
+ @example
+ ```js
+ var color = new cc.Color();
+ color.setB(255); // Color {r: 0, g: 0, b: 255, a: 255}
+ ```
+ */
+ setB(blue : number) : Color;
+ /** !#en TODO
+ !#zh 设置当前的透明度,并返回当前对象。
+ @param alpha the new Alpha component.
+
+ @example
+ ```js
+ var color = new cc.Color();
+ color.setA(0); // Color {r: 0, g: 0, b: 0, a: 0}
+ ```
+ */
+ setA(alpha : number) : Color;
+ /** !#en TODO
+ !#zh 转换为 CSS 格式。
+ @param opt "rgba", "rgb", "#rgb" or "#rrggbb".
+
+ @example
+ ```js
+ var color = cc.Color.BLACK;
+ color.toCSS(); // "#000";
+ color.toCSS("rgba"); // "rgba(0,0,0,1.00)";
+ color.toCSS("rgb"); // "rgba(0,0,0)";
+ color.toCSS("#rgb"); // "#000";
+ color.toCSS("#rrggbb"); // "#000000";
+ ```
+ */
+ toCSS(opt : string) : string;
+ /** !#en Clamp this color to make all components between 0 to 255。
+ !#zh 限制颜色数值,在 0 到 255 之间。
+
+ @example
+ ```js
+ var color = new cc.Color(1000, 0, 0, 255);
+ color.clamp();
+ cc.log(color); // (255, 0, 0, 255)
+ ```
+ */
+ clamp() : void;
+ /** !#en TODO
+ !#zh 读取 16 进制。
+
+ @example
+ ```js
+ var color = cc.Color.BLACK;
+ color.fromHEX("#FFFF33"); // Color {r: 255, g: 255, b: 51, a: 255};
+ ```
+ */
+ fromHEX(hexString : string) : Color;
+ /** !#en TODO
+ !#zh 转换为 16 进制。
+ @param fmt "#rgb" or "#rrggbb".
+
+ @example
+ ```js
+ var color = cc.Color.BLACK;
+ color.toHEX("#rgb"); // "000";
+ color.toHEX("#rrggbb"); // "000000";
+ ```
+ */
+ toHEX(fmt : string) : string;
+ /** !#en Convert to 24bit rgb value.
+ !#zh 转换为 24bit 的 RGB 值。
+
+ @example
+ ```js
+ var color = cc.Color.YELLOW;
+ color.toRGBValue(); // 16771844;
+ ```
+ */
+ toRGBValue() : number;
+ /** !#en TODO
+ !#zh 读取 HSV(色彩模型)格式。
+
+ @example
+ ```js
+ var color = cc.Color.YELLOW;
+ color.fromHSV(0, 0, 1); // Color {r: 255, g: 255, b: 255, a: 255};
+ ```
+ */
+ fromHSV(h : number, s : number, v : number) : Color;
+ /** !#en TODO
+ !#zh 转换为 HSV(色彩模型)格式。
+
+ @example
+ ```js
+ var color = cc.Color.YELLOW;
+ color.toHSV(); // Object {h: 0.1533864541832669, s: 0.9843137254901961, v: 1};
+ ```
+ */
+ toHSV() : any;
+ /** !#en TODO
+ !#zh RGB 转换为 HSV。
+ @param r red, must be [0, 255].
+ @param g red, must be [0, 255].
+ @param b red, must be [0, 255].
+
+ @example
+ ```js
+ cc.Color.rgb2hsv(255, 255, 255); // Object {h: 0, s: 0, v: 1};
+ ```
+ */
+ rgb2hsv(r : number, g : number, b : number) : any;
+ /** !#en TODO
+ !#zh HSV 转换为 RGB。
+
+ @example
+ ```js
+ cc.Color.hsv2rgb(0, 0, 1); // Object {r: 255, g: 255, b: 255};
+ ```
+ */
+ hsv2rgb(h : number, s : number, v : number) : any;
+ }
+ /** !#en A 2D rectangle defined by x, y position and width, height.
+ !#zh 通过位置和宽高定义的 2D 矩形。 */
+ export class Rect extends ValueType {
+ /** !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ */
+ Rect(x? : number, y? : number, w? : number, h? : number) : Rect;
+ /** !#en Creates a rectangle from two coordinate values.
+ !#zh 根据指定 2 个坐标创建出一个矩形区域。
+
+ @example
+ ```js
+ cc.Rect.fromMinMax(cc.v2(10, 10), cc.v2(20, 20)); // Rect {x: 10, y: 10, width: 10, height: 10};
+ ```
+ */
+ fromMinMax(v1 : Vec2, v2 : Vec2) : Rect;
+ /** !#en Checks if rect contains.
+ !#zh
+ 判断 2 个矩形是否有包含。
+ 返回 1 为 a 包含 b,如果 -1 为 b 包含 a,
+ 0 这则都不包含。
+ @param a Rect a
+ @param b Rect b
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ var b = new cc.rect(5, 5, 5, 5);
+ var c = new cc.rect(20, 20, 10, 10);
+ cc.Rect.contain(a, b); // 1;
+ cc.Rect.contain(b, a); // -1;
+ cc.Rect.contain(a, c); // 0;
+ ```
+ */
+ contain(a: (x: number, y: number, w: number, h: number) => void, b: (x: number, y: number, w: number, h: number) => void) : number;
+ /** !#en TODO
+ !#zh 克隆一个新的 Rect。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ a.clone();// Rect {x: 0, y: 0, width: 10, height: 10}
+ ```
+ */
+ clone() : Rect;
+ /** !#en TODO
+ !#zh 是否等于指定的矩形。
+ @param other !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ var b = new cc.rect(0, 0, 10, 10);
+ a.equals(b);// true;
+ ```
+ */
+ equals(other: (x: number, y: number, w: number, h: number) => void) : boolean;
+ /** !#en TODO
+ !#zh 线性插值
+ @param to !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ @param ratio the interpolation coefficient.
+ @param out optional, the receiving vector.
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ var b = new cc.rect(50, 50, 100, 100);
+ update (dt) {
+ // method 1;
+ var c = a.lerp(b, dt * 0.1);
+ // method 2;
+ a.lerp(b, dt * 0.1, c);
+ }
+ ```
+ */
+ lerp(to: (x: number, y: number, w: number, h: number) => void, ratio : number, out: (x: number, y: number, w: number, h: number) => void) : Rect;
+ /** !#en TODO
+ !#zh 转换为方便阅读的字符串
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ a.toString();// "(0.00, 0.00, 10.00, 10.00)";
+ ```
+ */
+ toString() : string;
+ /** !#en TODO
+ !#zh 矩形 x 轴上的最小值。 */
+ xMin : number;
+ /** !#en TODO
+ !#zh 矩形 y 轴上的最小值。 */
+ yMin : number;
+ /** !#en TODO
+ !#zh 矩形 x 轴上的最大值。 */
+ xMax : number;
+ /** !#en TODO
+ !#zh 矩形 y 轴上的最大值。 */
+ yMax : number;
+ /** !#en TODO
+ !#zh 矩形的中心点。 */
+ center : number;
+ /** !#en TODO
+ !#zh 矩形的大小。 */
+ size : Size;
+ /** !#en TODO
+ !#zh 当前矩形与指定矩形是否相交。
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ var b = new cc.rect(0, 0, 20, 20);
+ a.intersects(b);// true
+ ```
+ */
+ intersects(rect: (x: number, y: number, w: number, h: number) => void) : void;
+ /** !#en TODO
+ !#zh 当前矩形是否包含指定坐标点。
+ Returns true if the point inside this rectangle.
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ var b = new cc.v2(0, 5);
+ a.contains(b);// true
+ ```
+ */
+ contains(point : Vec2) : void;
+ /** !#en Returns true if the other rect totally inside this rectangle.
+ !#zh 当前矩形是否包含指定矩形。
+ @param rect !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+
+ @example
+ ```js
+ var a = new cc.rect(0, 0, 10, 10);
+ var b = new cc.rect(0, 0, 20, 20);
+ a.containsRect(b);// true
+ ```
+ */
+ containsRect(rect: (x: number, y: number, w: number, h: number) => void) : void;
+ }
+ /** !#en
+ cc.Size is the class for size object,
+ please do not use its constructor to create sizes,
+ use {{#crossLink "cc/size:method"}}{{/crossLink}} alias function instead.
+ It will be deprecated soon, please use cc.Vec2 instead.
+
+ !#zh
+ cc.Size 是 size 对象的类。
+ 请不要使用它的构造函数创建的 size,
+ 使用 {{#crossLink "cc/size:method"}}{{/crossLink}} 别名函数。
+ 它不久将被取消,请使用cc.Vec2代替。 */
+ export class Size {
+ /**
+ */
+ Size(width : number, height : number) : Size;
+ /** !#en return a Size object with width = 0 and height = 0.
+ !#zh 返回一个宽度为 0 和高度为 0 的 Size 对象。 */
+ ZERO : Size;
+ /** !#en TODO
+ !#zh 克隆 size 对象。
+
+ @example
+ ```js
+ var a = new cc.size(10, 10);
+ a.clone();// return Size {width: 0, height: 0};
+ ```
+ */
+ clone() : Size;
+ /** !#en TODO
+ !#zh 当前 Size 对象是否等于指定 Size 对象。
+
+ @example
+ ```js
+ var a = new cc.size(10, 10);
+ a.equals(new cc.size(10, 10));// return true;
+ ```
+ */
+ equals(other: (width: number, height: number) => void) : boolean;
+ /** !#en TODO
+ !#zh 线性插值。
+ @param to !#en
+ Constructor of cc.Rect class.
+ see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method.
+ !#zh
+ cc.Rect类的构造函数。可以通过 {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。
+ @param ratio the interpolation coefficient.
+ @param out optional, the receiving vector.
+
+ @example
+ ```js
+ var a = new cc.size(10, 10);
+ var b = new cc.rect(50, 50, 100, 100);
+ update (dt) {
+ // method 1;
+ var c = a.lerp(b, dt * 0.1);
+ // method 2;
+ a.lerp(b, dt * 0.1, c);
+ }
+ ```
+ */
+ lerp(to: (x: number, y: number, w: number, h: number) => void, ratio : number, out: (width: number, height: number) => void) : Size;
+ /** !#en TODO
+ !#zh 转换为方便阅读的字符串。
+
+ @example
+ ```js
+ var a = new cc.size(10, 10);
+ a.toString();// return "(10.00, 10.00)";
+ ```
+ */
+ toString() : string;
+ /** !#en
+ Helper function that creates a cc.Size.
+ Please use cc.p or cc.v2 instead, it will soon replace cc.Size.
+ !#zh
+ 创建一个 cc.Size 对象的帮助函数。
+ 注意:可以使用 cc.p 或者是 cc.v2 代替,它们将很快取代 cc.Size。
+ @param w width or a size object
+ @param h height
+
+ @example
+ ```js
+ var size1 = cc.size();
+ var size2 = cc.size(100,100);
+ var size3 = cc.size(size2);
+ var size4 = cc.size({width: 100, height: 100});
+
+ ```
+ */
+ size(w : number|Size, h : number) : Size;
+ /** !#en Check whether a point's value equals to another.
+ !#zh 检查 Size 对象是否等于另一个。
+
+ @example
+ ```js
+ var a = new cc.size(10, 10);
+ var b = new cc.size(10, 10);
+ cc.sizeEqualToSize(a, b);// return true;
+ var b = new cc.size(5, 10);
+ cc.sizeEqualToSize(a, b);// return false;
+ ```
+ */
+ sizeEqualToSize(size1: (width: number, height: number) => void, size2: (width: number, height: number) => void) : boolean;
+ }
+ /** !#en the device accelerometer reports values for each axis in units of g-force.
+ !#zh 设备重力传感器传递的各个轴的数据。 */
+ export class Acceleration {
+ constructor();
+ /**
+ */
+ Acceleration(x : number, y : number, z : number, timestamp : number) : Acceleration;
+ }
+ /** !#en Blend Function used for textures.
+ !#zh 图像的混合方式。 */
+ export class BlendFunc {
+ constructor();
+ /**
+ @param src1 source blend function
+ @param dst1 destination blend function
+ */
+ BlendFunc(src1 : number, dst1 : number) : BlendFunc;
+ }
+ /** !#en
+ Enum for blend factor
+ Refer to: http://www.andersriggelsen.dk/glblendfunc.php
+ !#zh
+ 混合因子
+ 可参考: http://www.andersriggelsen.dk/glblendfunc.php */
+ export enum BlendFactor {
+ ONE = 0,
+ ZERO = 0,
+ SRC_ALPHA = 0,
+ SRC_COLOR = 0,
+ DST_ALPHA = 0,
+ DST_COLOR = 0,
+ ONE_MINUS_SRC_ALPHA = 0,
+ ONE_MINUS_SRC_COLOR = 0,
+ ONE_MINUS_DST_ALPHA = 0,
+ ONE_MINUS_DST_COLOR = 0,
+ blendFuncDisable = 0,
+ }
+ /** undefined */
+ export class WebGLColor {
+ constructor();
+ /**
+ */
+ WebGLColor(r : number, g : number, b : number, a : number, arrayBuffer : any[], offset : number) : WebGLColor;
+ BYTES_PER_ELEMENT : number;
+ }
+ /** undefined */
+ export class Vertex2F {
+ /**
+ */
+ Vertex2F(x : number, y : number, arrayBuffer : any[], offset : number) : Vertex2F;
+ BYTES_PER_ELEMENT : number;
+ }
+ /** undefined */
+ export class Vertex3F {
+ constructor();
+ /**
+ */
+ Vertex3F(x : number, y : number, z : number, arrayBuffer : any[], offset : number) : Vertex3F;
+ BYTES_PER_ELEMENT : number;
+ }
+ /** undefined */
+ export class Tex2F {
+ constructor();
+ /**
+ */
+ Tex2F(u : number, v : number, arrayBuffer : any[], offset : number) : Tex2F;
+ BYTES_PER_ELEMENT : number;
+ }
+ /** undefined */
+ export class Quad2 {
+ constructor();
+ /**
+ */
+ Quad2(tl: (x: number, y: number, arrayBuffer: any[], offset: number) => void, tr: (x: number, y: number, arrayBuffer: any[], offset: number) => void, bl: (x: number, y: number, arrayBuffer: any[], offset: number) => void, br: (x: number, y: number, arrayBuffer: any[], offset: number) => void, arrayBuffer : any[], offset : number) : Quad2;
+ BYTES_PER_ELEMENT : number;
+ }
+ /** A 3D Quad. 4 * 3 floats */
+ export class Quad3 {
+ /**
+ */
+ Quad3(bl1: (x: number, y: number, z: number, arrayBuffer: any[], offset: number) => void, br1: (x: number, y: number, z: number, arrayBuffer: any[], offset: number) => void, tl1: (x: number, y: number, z: number, arrayBuffer: any[], offset: number) => void, tr1: (x: number, y: number, z: number, arrayBuffer: any[], offset: number) => void, arrayBuffer : any[], offset : number) : Quad3;
+ }
+ /** undefined */
+ export class V3F_C4B_T2F {
+ constructor();
+ /**
+ */
+ V3F_C4B_T2F(vertices: (x: number, y: number, z: number, arrayBuffer: any[], offset: number) => void, colors: (r: number, g: number, b: number, a: number) => void, texCoords: (u: number, v: number, arrayBuffer: any[], offset: number) => void, arrayBuffer : any[], offset : number) : V3F_C4B_T2F;
+ BYTES_PER_ELEMENT() : void;
+ }
+ /** undefined */
+ export class V3F_C4B_T2F_Quad {
+ constructor();
+ /**
+ */
+ V3F_C4B_T2F_Quad(tl: (vertices: Vertex3F, colors: Color, texCoords: Tex2F, arrayBuffer: any[], offset: number) => void, bl: (vertices: Vertex3F, colors: Color, texCoords: Tex2F, arrayBuffer: any[], offset: number) => void, tr: (vertices: Vertex3F, colors: Color, texCoords: Tex2F, arrayBuffer: any[], offset: number) => void, br: (vertices: Vertex3F, colors: Color, texCoords: Tex2F, arrayBuffer: any[], offset: number) => void, arrayBuffer : any[], offset : number) : V3F_C4B_T2F_Quad;
+ BYTES_PER_ELEMENT : number;
+ }
+ /** undefined */
+ export class V2F_C4B_T2F {
+ constructor();
+ /**
+ */
+ V2F_C4B_T2F(vertices: (x: number, y: number, arrayBuffer: any[], offset: number) => void, colors: (r: number, g: number, b: number, a: number) => void, texCoords: (u: number, v: number, arrayBuffer: any[], offset: number) => void, arrayBuffer : any[], offset : number) : V2F_C4B_T2F;
+ BYTES_PER_ELEMENT : number;
+ }
+ /** undefined */
+ export class V2F_C4B_T2F_Triangle {
+ constructor();
+ /**
+ */
+ V2F_C4B_T2F_Triangle(a: (vertices: Vertex2F, colors: Color, texCoords: Tex2F, arrayBuffer: any[], offset: number) => void, b: (vertices: Vertex2F, colors: Color, texCoords: Tex2F, arrayBuffer: any[], offset: number) => void, c: (vertices: Vertex2F, colors: Color, texCoords: Tex2F, arrayBuffer: any[], offset: number) => void, arrayBuffer : any[], offset : number) : V2F_C4B_T2F_Triangle;
+ }
+ /** !#en The base class of all value types.
+ !#zh 所有值类型的基类。 */
+ export class ValueType {
+ constructor();
+ /** !#en This method returns an exact copy of current value.
+ !#zh 克隆当前值,该方法返回一个新对象,新对象的值和原对象相等。
+ */
+ clone() : ValueType;
+ /** !#en Compares this object with the other one.
+ !#zh 当前对象是否等于指定对象。
+ */
+ equals(other : ValueType) : boolean;
+ /** !#en TODO
+ !#zh 转换为方便阅读的字符串。
+ */
+ toString() : string;
+ /** !#en
+ Linearly interpolates between this value to to value by ratio which is in the range [0, 1].
+ When ratio = 0 returns this. When ratio = 1 return to. When ratio = 0.5 returns the average of this and to.
+ !#zh
+ 线性插值。
+ 当 ratio = 0 时返回自身,ratio = 1 时返回目标,ratio = 0.5 返回自身和目标的平均值。。
+ @param to the to value
+ @param ratio the interpolation coefficient
+ */
+ lerp(to : ValueType, ratio : number) : ValueType;
+ }
+ /** !#en Representation of 2D vectors and points.
+ !#zh 表示 2D 向量和坐标 */
+ export class Vec2 extends ValueType {
+ constructor();
+ /** !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ */
+ Vec2(x? : number, y? : number) : Vec2;
+ /** !#en clone a Vec2 value
+ !#zh 克隆一个 Vec2 值
+ */
+ clone() : Vec2;
+ /** !#en TODO
+ !#zh 设置向量值。
+ @param newValue !#en new value to set. !#zh 要设置的新值
+ */
+ set(newValue: (x: number, y: number) => void) : Vec2;
+ /** !#en TODO
+ !#zh 当前的向量是否与指定的向量相等。
+ @param other !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ */
+ equals(other: (x: number, y: number) => void) : boolean;
+ /** !#en TODO
+ !#zh 转换为方便阅读的字符串。
+ */
+ toString() : string;
+ /** !#en TODO
+ !#zh 线性插值。
+ @param to !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ @param ratio the interpolation coefficient
+ @param out optional, the receiving vector
+ */
+ lerp(to: (x: number, y: number) => void, ratio : number, out: (x: number, y: number) => void) : Vec2;
+ /** !#en Adds this vector. If you want to save result to another vector, use add() instead.
+ !#zh 向量加法。如果你想保存结果到另一个向量,使用 add() 代替。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.addSelf(cc.v2(5, 5));// return Vec2 {x: 15, y: 15};
+ ```
+ */
+ addSelf(vector: (x: number, y: number) => void) : Vec2;
+ /** !#en Adds two vectors, and returns the new result.
+ !#zh 向量加法,并返回新结果。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ @param out optional, the receiving vector
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.add(cc.v2(5, 5)); // return Vec2 {x: 15, y: 15};
+ var v1;
+ v.add(cc.v2(5, 5), v1); // return Vec2 {x: 15, y: 15};
+ ```
+ */
+ add(vector: (x: number, y: number) => void, out: (x: number, y: number) => void) : Vec2;
+ /** !#en Subtracts one vector from this. If you want to save result to another vector, use sub() instead.
+ !#zh 向量减法。如果你想保存结果到另一个向量,可使用 sub() 代替。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.subSelf(cc.v2(5, 5));// return Vec2 {x: 5, y: 5};
+ ```
+ */
+ subSelf(vector: (x: number, y: number) => void) : Vec2;
+ /** !#en Subtracts one vector from this, and returns the new result.
+ !#zh 向量减法,并返回新结果。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ @param out optional, the receiving vector
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.sub(cc.v2(5, 5)); // return Vec2 {x: 5, y: 5};
+ var v1;
+ v.sub(cc.v2(5, 5), v1); // return Vec2 {x: 5, y: 5};
+ ```
+ */
+ sub(vector: (x: number, y: number) => void, out: (x: number, y: number) => void) : Vec2;
+ /** !#en Multiplies this by a number. If you want to save result to another vector, use mul() instead.
+ !#zh 缩放当前向量。如果你想结果保存到另一个向量,可使用 mul() 代替。
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.mulSelf(5);// return Vec2 {x: 50, y: 50};
+ ```
+ */
+ mulSelf(num : number) : Vec2;
+ /** !#en Multiplies by a number, and returns the new result.
+ !#zh 缩放当前向量,并返回新结果。
+ @param out optional, the receiving vector
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.mul(5); // return Vec2 {x: 50, y: 50};
+ var v1;
+ v.mul(5, v1); // return Vec2 {x: 50, y: 50};
+ ```
+ */
+ mul(num : number, out: (x: number, y: number) => void) : Vec2;
+ /** !#en Multiplies two vectors.
+ !#zh 分量相乘。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.scaleSelf(cc.v2(5, 5));// return Vec2 {x: 50, y: 50};
+ ```
+ */
+ scaleSelf(vector: (x: number, y: number) => void) : Vec2;
+ /** !#en Multiplies two vectors, and returns the new result.
+ !#zh 分量相乘,并返回新的结果。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ @param out optional, the receiving vector
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.scale(cc.v2(5, 5)); // return Vec2 {x: 50, y: 50};
+ var v1;
+ v.scale(cc.v2(5, 5), v1); // return Vec2 {x: 50, y: 50};
+ ```
+ */
+ scale(vector: (x: number, y: number) => void, out: (x: number, y: number) => void) : Vec2;
+ /** !#en Divides by a number. If you want to save result to another vector, use div() instead.
+ !#zh 向量除法。如果你想结果保存到另一个向量,可使用 div() 代替。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.divSelf(5); // return Vec2 {x: 2, y: 2};
+ ```
+ */
+ divSelf(vector: (x: number, y: number) => void) : Vec2;
+ /** !#en Divides by a number, and returns the new result.
+ !#zh 向量除法,并返回新的结果。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ @param out optional, the receiving vector
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.div(5); // return Vec2 {x: 2, y: 2};
+ var v1;
+ v.div(5, v1); // return Vec2 {x: 2, y: 2};
+ ```
+ */
+ div(vector: (x: number, y: number) => void, out: (x: number, y: number) => void) : Vec2;
+ /** !#en Negates the components. If you want to save result to another vector, use neg() instead.
+ !#zh 向量取反。如果你想结果保存到另一个向量,可使用 neg() 代替。
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.negSelf(); // return Vec2 {x: -10, y: -10};
+ ```
+ */
+ negSelf() : Vec2;
+ /** !#en Negates the components, and returns the new result.
+ !#zh 返回取反后的新向量。
+ @param out optional, the receiving vector
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ var v1;
+ v.neg(v1); // return Vec2 {x: -10, y: -10};
+ ```
+ */
+ neg(out: (x: number, y: number) => void) : Vec2;
+ /** !#en Dot product
+ !#zh 当前向量与指定向量进行点乘。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.dot(cc.v2(5, 5)); // return 100;
+ ```
+ */
+ dot(vector: (x: number, y: number) => void) : number;
+ /** !#en Cross product
+ !#zh 当前向量与指定向量进行叉乘。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.cross(cc.v2(5, 5)); // return 0;
+ ```
+ */
+ cross(vector: (x: number, y: number) => void) : number;
+ /** !#en Returns the length of this vector.
+ !#zh 返回该向量的长度。
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.mag(); // return 14.142135623730951;
+ ```
+ */
+ mag() : number;
+ /** !#en Returns the squared length of this vector.
+ !#zh 返回该向量的长度平方。
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.magSqr(); // return 200;
+ ```
+ */
+ magSqr() : number;
+ /** !#en Make the length of this vector to 1.
+ !#zh 向量归一化,让这个向量的长度为 1。
+
+ @example
+ ```js
+ var v = cc.v2(10, 10);
+ v.normalizeSelf(); // return Vec2 {x: 0.7071067811865475, y: 0.7071067811865475};
+ ```
+ */
+ normalizeSelf() : Vec2;
+ /** !#en
+ Returns this vector with a magnitude of 1.
+
+ Note that the current vector is unchanged and a new normalized vector is returned. If you want to normalize the current vector, use normalizeSelf function.
+ !#zh
+ 返回归一化后的向量。
+
+ 注意,当前向量不变,并返回一个新的归一化向量。如果你想来归一化当前向量,可使用 normalizeSelf 函数。
+ @param out optional, the receiving vector
+ */
+ normalize(out: (x: number, y: number) => void) : Vec2;
+ /** !#en Get angle in radian between this and vector.
+ !#zh 夹角的弧度。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ */
+ angle(vector: (x: number, y: number) => void) : number;
+ /** !#en Get angle in radian between this and vector with direction.
+ !#zh 带方向的夹角的弧度。
+ @param vector !#en
+ Constructor
+ see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ !#zh
+ 构造函数,可查看 {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}}
+ */
+ signAngle(vector: (x: number, y: number) => void) : number;
+ /** !#en rotate
+ !#zh 返回旋转给定弧度后的新向量。
+ @param out optional, the receiving vector
+ */
+ rotate(radians : number, out: (x: number, y: number) => void) : Vec2;
+ /** !#en rotate self
+ !#zh 按指定弧度旋转向量。
+ */
+ rotateSelf(radians : number) : Vec2;
+ /** !#en return a Vec2 object with x = 1 and y = 1.
+ !#zh 新 Vec2 对象。 */
+ ONE : Vec2;
+ /** !#en return a Vec2 object with x = 0 and y = 0.
+ !#zh 返回 x = 0 和 y = 0 的 Vec2 对象。 */
+ ZERO : Vec2;
+ /** !#en return a Vec2 object with x = 0 and y = 1.
+ !#zh 返回 x = 0 和 y = 1 的 Vec2 对象。 */
+ up : Vec2;
+ /** !#en return a Vec2 object with x = 1 and y = 0.
+ !#zh 返回 x = 1 和 y = 0 的 Vec2 对象。 */
+ RIGHT : Vec2;
+ }
+
+ /****************************************************
+ * Node
+ *****************************************************/
+
+ export module Node {
+ /** !#en The event type supported by Node
+ !#zh Node 支持的事件类型 */
+ export enum EventType {
+ TOUCH_START = 0,
+ TOUCH_MOVE = 0,
+ TOUCH_END = 0,
+ TOUCH_CANCEL = 0,
+ MOUSE_DOWN = 0,
+ MOUSE_MOVE = 0,
+ MOUSE_ENTER = 0,
+ MOUSE_LEAVE = 0,
+ MOUSE_UP = 0,
+ MOUSE_WHEEL = 0,
+ }
+ }
+
+ /****************************************************
+ * ParticleSystem
+ *****************************************************/
+
+ export module ParticleSystem {
+ /** !#en Enum for emitter modes
+ !#zh 发射模式 */
+ export enum EmitterMode {
+ GRAVITY = 0,
+ RADIUS = 0,
+ }
+ }
+
+ /****************************************************
+ * ParticleSystem
+ *****************************************************/
+
+ export module ParticleSystem {
+ /** !#en Enum for particles movement type.
+ !#zh 粒子位置类型 */
+ export enum PositionType {
+ FREE = 0,
+ RELATIVE = 0,
+ GROUPED = 0,
+ }
+ }
+
+ /****************************************************
+ * TiledMap
+ *****************************************************/
+
+ export module TiledMap {
+ /** !#en The orientation of tiled map.
+ !#zh Tiled Map 地图方向。 */
+ export enum Orientation {
+ ORTHO = 0,
+ HEX = 0,
+ ISO = 0,
+ NONE = 0,
+ MAP = 0,
+ LAYER = 0,
+ OBJECTGROUP = 0,
+ OBJECT = 0,
+ TILE = 0,
+ HORIZONTAL = 0,
+ VERTICAL = 0,
+ DIAGONAL = 0,
+ FLIPPED_ALL = 0,
+ FLIPPED_MASK = 0,
+ STAGGERAXIS_X = 0,
+ STAGGERAXIS_Y = 0,
+ STAGGERINDEX_ODD = 0,
+ STAGGERINDEX_EVEN = 0,
+ }
+ }
+
+ /****************************************************
+ * Button
+ *****************************************************/
+
+ export module Button {
+ /** !#en Enum for transition type.
+ !#zh 过渡类型 */
+ export enum Transition {
+ NONE = 0,
+ COLOR = 0,
+ SPRITE = 0,
+ }
+ }
+
+ /****************************************************
+ * Component
+ *****************************************************/
+
+ export module Component {
+ /** !#en
+ Component will register a event to target component's handler.
+ And it will trigger the handler when a certain event occurs.
+
+ !@zh
+ “EventHandler” 类用来设置场景中的事件回调,
+ 该类允许用户设置回调目标节点,目标组件名,组件方法名,
+ 并可通过 emit 方法调用目标函数。 */
+ export class EventHandler {
+ /** !#en Event target
+ !#zh 目标节点 */
+ target : Node;
+ /** !#en Component name
+ !#zh 目标组件名 */
+ component : string;
+ /** !#en Event handler
+ !#zh 响应事件函数名 */
+ handler : string;
+ /**
+ */
+ emitEvents(events : Component.EventHandler[], params : any) : void;
+ /** !#en Emit event with params
+ !#zh 触发目标组件上的指定 handler 函数,该参数是回调函数的参数值(可不填)。
+
+ @example
+ ```js
+ // Call Function
+ var eventHandler = new cc.Component.EventHandler();
+ eventHandler.target = newTarget;
+ eventHandler.component = "MainMenu";
+ eventHandler.handler = "OnClick"
+ eventHandler.emit(["param1", "param2", ....]);
+ ```
+ */
+ emit(params : any[]) : void;
+ }
+ }
+
+ /****************************************************
+ * EditBox
+ *****************************************************/
+
+ export module EditBox {
+ /** !#en Enum for keyboard return types
+ !#zh 键盘的返回键类型 */
+ export enum KeyboardReturnType {
+ DEFAULT = 0,
+ DONE = 0,
+ SEND = 0,
+ SEARCH = 0,
+ GO = 0,
+ }
+ }
+
+ /****************************************************
+ * EditBox
+ *****************************************************/
+
+ export module EditBox {
+ /** !#en The EditBox's InputMode defines the type of text that the user is allowed to enter.
+ !#zh 输入模式 */
+ export enum InputMode {
+ ANY = 0,
+ EMAIL_ADDR = 0,
+ NUMERIC = 0,
+ PHONE_NUMBER = 0,
+ URL = 0,
+ DECIMAL = 0,
+ SINGLE_LINE = 0,
+ }
+ }
+
+ /****************************************************
+ * EditBox
+ *****************************************************/
+
+ export module EditBox {
+ /** !#en Enum for the EditBox's input flags
+ !#zh 定义了一些用于设置文本显示和文本格式化的标志位。 */
+ export enum InputFlag {
+ PASSWORD = 0,
+ SENSITIVE = 0,
+ INITIAL_CAPS_WORD = 0,
+ INITIAL_CAPS_SENTENCE = 0,
+ INITIAL_CAPS_ALL_CHARACTERS = 0,
+ }
+ }
+
+ /****************************************************
+ * Label
+ *****************************************************/
+
+ export module Label {
+ /** !#en Enum for text alignment.
+ !#zh 文本横向对齐类型 */
+ export enum HorizontalAlign {
+ LEFT = 0,
+ CENTER = 0,
+ RIGHT = 0,
+ }
+ }
+
+ /****************************************************
+ * Label
+ *****************************************************/
+
+ export module Label {
+ /** !#en Enum for vertical text alignment.
+ !#zh 文本垂直对齐类型 */
+ export enum VerticalAlign {
+ TOP = 0,
+ CENTER = 0,
+ BOTTOM = 0,
+ }
+ }
+
+ /****************************************************
+ * Label
+ *****************************************************/
+
+ export module Label {
+ /** !#en Enum for Overflow.
+ !#zh Overflow 类型 */
+ export enum Overflow {
+ NONE = 0,
+ CLAMP = 0,
+ SHRINK = 0,
+ RESIZE_HEIGHT = 0,
+ }
+ }
+
+ /****************************************************
+ * Label
+ *****************************************************/
+
+ export module Label {
+ /** !#en Enum for font type.
+ !#zh Type 类型 */
+ export enum Type {
+ TTF = 0,
+ BMFont = 0,
+ SystemFont = 0,
+ }
+ }
+
+ /****************************************************
+ * Layout
+ *****************************************************/
+
+ export module Layout {
+ /** !#en Enum for Layout type
+ !#zh 布局类型 */
+ export enum Type {
+ NONE = 0,
+ HORIZONTAL = 0,
+ VERTICAL = 0,
+ GRID = 0,
+ }
+ }
+
+ /****************************************************
+ * Layout
+ *****************************************************/
+
+ export module Layout {
+ /** !#en Enum for Layout Resize Mode
+ !#zh 缩放模式 */
+ export enum ResizeMode {
+ NONE = 0,
+ CONTAINER = 0,
+ CHILDREN = 0,
+ }
+ }
+
+ /****************************************************
+ * Layout
+ *****************************************************/
+
+ export module Layout {
+ /** !#en Enum for Grid Layout start axis direction.
+ !#zh 布局轴向,只用于 GRID 布局。 */
+ export enum AxisDirection {
+ HORIZONTAL = 0,
+ VERTICAL = 0,
+ }
+ }
+
+ /****************************************************
+ * Layout
+ *****************************************************/
+
+ export module Layout {
+ /** !#en Enum for vertical layout direction.
+ !#zh 垂直方向布局方式 */
+ export enum VerticalDirection {
+ BOTTOM_TO_TOP = 0,
+ TOP_TO_BOTTOM = 0,
+ }
+ }
+
+ /****************************************************
+ * Layout
+ *****************************************************/
+
+ export module Layout {
+ /** !#en Enum for horizontal layout direction.
+ !#zh 水平方向布局方式 */
+ export enum HorizontalDirection {
+ LEFT_TO_RIGHT = 0,
+ RIGHT_TO_LEFT = 0,
+ }
+ }
+
+ /****************************************************
+ * Mask
+ *****************************************************/
+
+ export module Mask {
+ /** !#en the type for mask.
+ !#zh 遮罩组件的类型 */
+ export enum Type {
+ RECT = 0,
+ ELLIPSE = 0,
+ type = 0,
+ segements = 0,
+ }
+ }
+
+ /****************************************************
+ * ProgressBar
+ *****************************************************/
+
+ export module ProgressBar {
+ /** !#en Enum for ProgressBar mode
+ !#zh 进度条模式 */
+ export enum Mode {
+ HORIZONTAL = 0,
+ VERTICAL = 0,
+ FILLED = 0,
+ }
+ }
+
+ /****************************************************
+ * Scrollbar
+ *****************************************************/
+
+ export module Scrollbar {
+ /** Enum for Scrollbar direction */
+ export enum Direction {
+ HORIZONTAL = 0,
+ VERTICAL = 0,
+ }
+ }
+
+ /****************************************************
+ * ScrollView
+ *****************************************************/
+
+ export module ScrollView {
+ /** !#en Enum for ScrollView event type.
+ !#zh 滚动视图事件类型 */
+ export enum EventType {
+ SCROLL_TO_TOP = 0,
+ SCROLL_TO_BOTTOM = 0,
+ SCROLL_TO_LEFT = 0,
+ SCROLL_TO_RIGHT = 0,
+ SCROLLING = 0,
+ BOUNCE_TOP = 0,
+ BOUNCE_BOTTOM = 0,
+ BOUNCE_LEFT = 0,
+ BOUNCE_RIGHT = 0,
+ AUTOSCROLL_ENDED = 0,
+ }
+ }
+
+ /****************************************************
+ * Sprite
+ *****************************************************/
+
+ export module Sprite {
+ /** !#en Enum for sprite type.
+ !#zh Sprite 类型 */
+ export enum SpriteType {
+ SIMPLE = 0,
+ SLICED = 0,
+ TILED = 0,
+ FILLED = 0,
+ }
+ }
+
+ /****************************************************
+ * Sprite
+ *****************************************************/
+
+ export module Sprite {
+ /** !#en Enum for fill type.
+ !#zh 填充类型 */
+ export enum FillType {
+ HORIZONTAL = 0,
+ VERTICAL = 0,
+ RADIAL = 0,
+ }
+ }
+
+ /****************************************************
+ * Sprite
+ *****************************************************/
+
+ export module Sprite {
+ /** !#en Sprite Size can track trimmed size, raw size or none.
+ !#zh 精灵尺寸调整模式 */
+ export enum SizeMode {
+ CUSTOM = 0,
+ TRIMMED = 0,
+ RAW = 0,
+ }
+ }
+
+ /****************************************************
+ * VideoPlayer
+ *****************************************************/
+
+ export module VideoPlayer {
+ /** !#en Video event type
+ !#zh 视频事件类型 */
+ export enum EventType {
+ PLAYING = 0,
+ PAUSED = 0,
+ STOPPED = 0,
+ COMPLETED = 0,
+ }
+ }
+
+ /****************************************************
+ * VideoPlayer
+ *****************************************************/
+
+ export module VideoPlayer {
+ /** !#en Enum for video resouce type type.
+ !#zh 视频来源 */
+ export enum ResourceType {
+ REMOTE = 0,
+ LOCAL = 0,
+ }
+ }
+
+ /****************************************************
+ * WebView
+ *****************************************************/
+
+ export module WebView {
+ /** !#en WebView event type
+ !#zh 网页视图事件类型 */
+ export enum EventType {
+ LOADED = 0,
+ LOADING = 0,
+ ERROR = 0,
+ }
+ }
+
+ /****************************************************
+ * Event
+ *****************************************************/
+
+ export module Event {
+ /** !#en The Custom event
+ !#zh 自定义事件 */
+ export class EventCustom extends Event {
+ constructor();
+ /**
+ @param type The name of the event (case-sensitive), e.g. "click", "fire", or "submit"
+ @param bubbles A boolean indicating whether the event bubbles up through the tree or not
+ */
+ EventCustom(type : string, bubbles : boolean) : EventCustom;
+ /** !#en A reference to the detailed data of the event
+ !#zh 事件的详细数据 */
+ detail : any;
+ /** !#en Sets user data
+ !#zh 设置用户数据
+ */
+ setUserData(data : any) : void;
+ /** !#en Gets user data
+ !#zh 获取用户数据
+ */
+ getUserData() : any;
+ /** !#en Gets event name
+ !#zh 获取事件名称
+ */
+ getEventName() : string;
+ }
+ }
+
+ /****************************************************
+ * Event
+ *****************************************************/
+
+ export module Event {
+ /** !#en The mouse event
+ !#zh 鼠标事件类型 */
+ export class EventMouse extends Event {
+ /**
+ @param eventType The mouse event type, UP, DOWN, MOVE, CANCELED
+ @param bubbles A boolean indicating whether the event bubbles up through the tree or not
+ */
+ constructor(eventType : number, bubbles? : boolean);
+ /** !#en Sets scroll data.
+ !#zh 设置鼠标的滚动数据。
+ */
+ setScrollData(scrollX : number, scrollY : number) : void;
+ /** !#en Returns the x axis scroll value.
+ !#zh 获取鼠标滚动的X轴距离,只有滚动时才有效。
+ */
+ getScrollX() : number;
+ /** !#en Returns the y axis scroll value.
+ !#zh 获取滚轮滚动的 Y 轴距离,只有滚动时才有效。
+ */
+ getScrollY() : number;
+ /** !#en Sets cursor location.
+ !#zh 设置当前鼠标位置。
+ */
+ setLocation(x : number, y : number) : void;
+ /** !#en Returns cursor location.
+ !#zh 获取鼠标位置对象,对象包含 x 和 y 属性。
+ */
+ getLocation() : Vec2;
+ /** !#en Returns the current cursor location in screen coordinates.
+ !#zh 获取当前事件在游戏窗口内的坐标位置对象,对象包含 x 和 y 属性。
+ */
+ getLocationInView() : Vec2;
+ /** !#en Returns the previous touch location.
+ !#zh 获取鼠标点击在上一次事件时的位置对象,对象包含 x 和 y 属性。
+ */
+ getPreviousLocation() : Vec2;
+ /** !#en Returns the delta distance from the previous location to current location.
+ !#zh 获取鼠标距离上一次事件移动的距离对象,对象包含 x 和 y 属性。
+ */
+ getDelta() : Vec2;
+ /** !#en Returns the X axis delta distance from the previous location to current location.
+ !#zh 获取鼠标距离上一次事件移动的 X 轴距离。
+ */
+ getDeltaX() : number;
+ /** !#en Returns the Y axis delta distance from the previous location to current location.
+ !#zh 获取鼠标距离上一次事件移动的 Y 轴距离。
+ */
+ getDeltaY() : number;
+ /** !#en Sets mouse button.
+ !#zh 设置鼠标按键。
+ */
+ setButton(button : number) : void;
+ /** !#en Returns mouse button.
+ !#zh 获取鼠标按键。
+ */
+ getButton() : number;
+ /** !#en Returns location X axis data.
+ !#zh 获取鼠标当前位置 X 轴。
+ */
+ getLocationX() : number;
+ /** !#en Returns location Y axis data.
+ !#zh 获取鼠标当前位置 Y 轴。
+ */
+ getLocationY() : number;
+ }
+ }
+
+ /****************************************************
+ * Event
+ *****************************************************/
+
+ export module Event {
+ /** !#en The touch event
+ !#zh 触摸事件 */
+ export class EventTouch extends Event {
+ /**
+ @param touchArr The array of the touches
+ @param bubbles A boolean indicating whether the event bubbles up through the tree or not
+ */
+ constructor(touchArr : any[], bubbles : boolean);
+ /** !#en Returns event code.
+ !#zh 获取事件类型。
+ */
+ getEventCode() : number;
+ /** !#en Returns touches of event.
+ !#zh 获取触摸点的列表。
+ */
+ getTouches() : any[];
+ /** !#en Sets touch location.
+ !#zh 设置当前触点位置
+ */
+ setLocation(x : number, y : number) : void;
+ /** !#en Returns touch location.
+ !#zh 获取触点位置。
+ */
+ getLocation() : Vec2;
+ /** !#en Returns the current touch location in screen coordinates.
+ !#zh 获取当前触点在游戏窗口中的位置。
+ */
+ getLocationInView() : Vec2;
+ /** !#en Returns the previous touch location.
+ !#zh 获取触点在上一次事件时的位置对象,对象包含 x 和 y 属性。
+ */
+ getPreviousLocation() : Vec2;
+ /** !#en Returns the start touch location.
+ !#zh 获获取触点落下时的位置对象,对象包含 x 和 y 属性。
+ */
+ getStartLocation() : Vec2;
+ /** !#en Returns the id of cc.Touch.
+ !#zh 触点的标识 ID,可以用来在多点触摸中跟踪触点。
+ */
+ getID() : number;
+ /** !#en Returns the delta distance from the previous location to current location.
+ !#zh 获取触点距离上一次事件移动的距离对象,对象包含 x 和 y 属性。
+ */
+ getDelta() : Vec2;
+ /** !#en Returns the X axis delta distance from the previous location to current location.
+ !#zh 获取触点距离上一次事件移动的 x 轴距离。
+ */
+ getDeltaX() : number;
+ /** !#en Returns the Y axis delta distance from the previous location to current location.
+ !#zh 获取触点距离上一次事件移动的 y 轴距离。
+ */
+ getDeltaY() : number;
+ /** !#en Returns location X axis data.
+ !#zh 获取当前触点 X 轴位置。
+ */
+ getLocationX() : number;
+ /** !#en Returns location Y axis data.
+ !#zh 获取当前触点 Y 轴位置。
+ */
+ getLocationY() : number;
+ }
+ }
+
+ /****************************************************
+ * Event
+ *****************************************************/
+
+ export module Event {
+ /** !#en The acceleration event
+ !#zh 加速度事件 */
+ export class EventAcceleration extends Event {
+ /**
+ @param acc The acceleration
+ @param bubbles A boolean indicating whether the event bubbles up through the tree or not
+ */
+ constructor(acc : any, bubbles : boolean);
+ }
+ }
+
+ /****************************************************
+ * Event
+ *****************************************************/
+
+ export module Event {
+ /** !#en The keyboard event
+ !#zh 键盘事件 */
+ export class EventKeyboard extends Event {
+ /**
+ @param keyCode The key code of which triggered this event
+ @param isPressed A boolean indicating whether the key have been pressed
+ @param bubbles A boolean indicating whether the event bubbles up through the tree or not
+ */
+ constructor(keyCode : number, isPressed : boolean, bubbles : boolean);
+ }
+ }
+
+ /****************************************************
+ * Graphics
+ *****************************************************/
+
+ export module Graphics {
+ /** !#en Enum for LineCap.
+ !#zh 线段末端属性 */
+ export enum LineCap {
+ BUTT = 0,
+ ROUND = 0,
+ SQUARE = 0,
+ }
+ }
+
+ /****************************************************
+ * Graphics
+ *****************************************************/
+
+ export module Graphics {
+ /** !#en Enum for LineJoin.
+ !#zh 线段拐角属性 */
+ export enum LineJoin {
+ BEVEL = 0,
+ ROUND = 0,
+ MITER = 0,
+ }
+ }
+
+ /****************************************************
+ * Pipeline
+ *****************************************************/
+
+ export module Pipeline {
+ /** The downloader pipe, it can download several types of files:
+ 1. Text
+ 2. Image
+ 3. Script
+ 4. Audio
+ All unknown type will be downloaded as plain text.
+ You can pass custom supported types in the constructor. */
+ export class Downloader {
+ /** Constructor of Downloader, you can pass custom supported types.
+ @param extMap Custom supported types with corresponded handler
+
+ @example
+ ```js
+ var downloader = new Downloader({
+ // This will match all url with `.scene` extension or all url with `scene` type
+ 'scene' : function (url, callback) {}
+ });
+ ```
+ */
+ Downloader(extMap : any) : void;
+ /** Add custom supported types handler or modify existing type handler.
+ @param extMap Custom supported types with corresponded handler
+ */
+ addHandlers(extMap : any) : void;
+ }
+ }
+
+ /****************************************************
+ * Pipeline
+ *****************************************************/
+
+ export module Pipeline {
+ /** The loader pipe, it can load several types of files:
+ 1. Images
+ 2. JSON
+ 3. Plist
+ 4. Audio
+ 5. Font
+ 6. Cocos Creator scene
+ It will not interfere with items of unknown type.
+ You can pass custom supported types in the constructor. */
+ export class Loader {
+ /** Constructor of Loader, you can pass custom supported types.
+ @param extMap Custom supported types with corresponded handler
+
+ @example
+ ```js
+ var loader = new Loader({
+ // This will match all url with `.scene` extension or all url with `scene` type
+ 'scene' : function (url, callback) {}
+ });
+ ```
+ */
+ Loader(extMap : any) : void;
+ /** Add custom supported types handler or modify existing type handler.
+ @param extMap Custom supported types with corresponded handler
+ */
+ addHandlers(extMap : any) : void;
+ }
+ }
+
+ /****************************************************
+ * Texture2D
+ *****************************************************/
+
+ export module Texture2D {
+ /** The texture wrap mode */
+ export enum WrapMode {
+ REPEAT = 0,
+ CLAMP_TO_EDGE = 0,
+ MIRRORED_REPEAT = 0,
+ }
+ }
+}
+/** !#en
+AnySDK is a third party solution that offers game developers SDK integration without making changes to the SDK's features or parameters.It can do all of this while remaining invisible to your end user.Our goal is to handle all the tedious SDK integration work for you so that you can use your time to focus on the game itself.No matter if it’s the channel SDK, user system, payment system, ad system, statistics system, sharing system or any other type of SDK: we’ll take care of it for you.
+!#zh
+AnySDK 为 CP 提供一套第三方 SDK 接入解决方案,整个接入过程,不改变任何 SDK 的功能、特性、参数等,对于最终玩家而言是完全透明无感知的。
+目的是让 CP 商能有更多时间更专注于游戏本身的品质,所有 SDK 的接入工作统统交给我们吧。第三方 SDK 包括了渠道SDK、用户系统、支付系统、广告系统、统计系统、分享系统等等。 */
+declare module anysdk {
+ /** !#en
+ agent manager of plugin
+ !#zh
+ 插件管理对象 */
+ export var agentManager : anysdk.AgentManager;
+ /** !#en
+ agent manager of plugin
+ !#zh
+ 插件管理类 */
+ export class AgentManager {
+ constructor();
+ /** !#en
+ AppKey appSecret and privateKey are the only three parameters generated
+ after the packing tool client finishes creating the game.
+ The oauthLoginServer parameter is the API address provided by the game service
+ to login verification
+ !#zh
+ appKey、appSecret、privateKey是通过 AnySDK 客户端工具创建游戏后生成的。
+ oauthLoginServer参数是游戏服务提供的用来做登陆验证转发的接口地址。
+ */
+ init(appKey : string, appSecret : string, privateKey : string, oauthLoginServer : string) : void;
+ /** !#en
+ load all plugins, the operation includes SDK`s initialization
+ !#zh
+ 加载所有插件,该操作包含了 SDKs 初始化
+ @param target The object to bind to.
+ */
+ loadAllPlugins(callback : Function, target : any) : void;
+ /** !#en
+ unload all plugins
+ !#zh
+ 卸载插件
+ */
+ unloadAllPlugins() : void;
+ /** !#en
+ get user system plugin
+ !#zh
+ 获取用户系统插件
+ */
+ getUserPlugin() : anysdk.ProtocolUser;
+ /** !#en
+ get IAP system plugins
+ !#zh
+ 获取支付系统插件
+ */
+ getIAPPlugins() : anysdk.ProtocolIAP;
+ /** !#en
+ get IAP system plugin
+ !#zh
+ 获取支付系统插件
+ */
+ getIAPPlugin() : anysdk.ProtocolIAP;
+ /** !#en
+ get social system plugin
+ !#zh
+ 获取社交系统插件
+ */
+ getSocialPlugin() : anysdk.ProtocolSocial;
+ /** !#en
+ get share system plugin
+ !#zh
+ 获取分享系统插件
+ */
+ getSharePlugin() : anysdk.ProtocolShare;
+ /** !#en
+ get analytics system plugin
+ !#zh
+ 获取统计系统插件
+ */
+ getAnalyticsPlugin() : anysdk.ProtocolAnalytics;
+ /** !#en
+ get ads system plugin
+ !#zh
+ 获取广告系统插件
+ */
+ getAdsPlugin() : anysdk.ProtocolAds;
+ /** !#en
+ get push system plugin
+ !#zh
+ 获取推送系统插件
+ */
+ getPushPlugin() : anysdk.ProtocolPush;
+ /** !#en
+ get REC system plugin
+ !#zh
+ 获取录屏系统插件
+ */
+ getRECPlugin() : anysdk.ProtocolREC;
+ /** !#en
+ get crash system plugin
+ !#zh
+ 获取崩溃分析系统插件
+ */
+ getCrashPlugin() : anysdk.ProtocolCrash;
+ /** !#en
+ get ad track system plugin
+ !#zh
+ 获取广告追踪系统插件
+ */
+ getAdTrackingPlugin() : anysdk.ProtocolAdTracking;
+ /** !#en
+ get custom system plugin
+ !#zh
+ 获取自定义系统插件
+ */
+ getCustomPlugin() : anysdk.ProtocolCustom;
+ /** !#en
+ get custom parameter
+ !#zh
+ 获取自定义参数
+ */
+ getCustomParam() : string;
+ /** !#en
+ get channel id
+ !#zh
+ 获取渠道唯一表示符
+ */
+ getChannelId() : string;
+ /** !#en
+ get status of analytics
+ !#zh
+ 获取统计状态
+ */
+ isAnaylticsEnabled() : boolean;
+ /** !#en
+ set whether to analytics
+ !#zh
+ 设置是否统计
+ */
+ setIsAnaylticsEnabled(enabled : boolean) : void;
+ /** !#en
+ destory instance
+ !#zh
+ 销毁单例
+ */
+ end() : void;
+ /** !#en
+ get instance
+ !#zh
+ 获取单例
+ */
+ getInstance() : anysdk.AgentManager;
+ }
+ /** !#en
+ plugin protocol
+ !#zh
+ 插件协议 */
+ export class PluginProtocol {
+ /** !#en
+ Check whether the function is supported
+ !#zh
+ 判断函数是否支持
+ */
+ isFunctionSupported(functionName : string) : boolean;
+ /** !#en
+ get plugin name
+ !#zh
+ 获取插件名称
+ */
+ getPluginName() : string;
+ /** !#en
+ get plugin version
+ !#zh
+ 获取插件版本
+ */
+ getPluginVersion() : string;
+ /** !#en
+ get SDK version
+ !#zh
+ 获取 SDK 版本
+ */
+ getSDKVersion() : string;
+ /** !#en
+ void methods for reflections with parameter
+ !#zh
+ 反射调用带参数的void方法
+ @param args optional arguments
+ */
+ callFuncWithParam(funName : string, args? : any|anysdk.PluginParam) : void;
+ /** !#en
+ String methods for reflections with parameter
+ !#zh
+ 反射调用带参数的 String 方法
+ @param args optional arguments
+ */
+ callStringFuncWithParam(funName : string, args? : any|anysdk.PluginParam) : string;
+ /** !#en
+ int methods for reflections with parameter
+ !#zh
+ 反射调用带参数的 Int 方法
+ @param args optional arguments
+ */
+ callIntFuncWithParam(funName : string, args? : any|anysdk.PluginParam) : number;
+ /** !#en
+ boolean methods for reflections with parameter
+ !#zh
+ 反射调用带参数的 boolean 方法
+ @param args optional arguments
+ */
+ callBoolFuncWithParam(funName : string, args? : any|anysdk.PluginParam) : boolean;
+ /** !#en
+ float methods for reflections with parameter
+ !#zh
+ 反射调用带参数的 float 方法
+ @param args optional arguments
+ */
+ callFloatFuncWithParam(funName : string, args? : any|anysdk.PluginParam) : number;
+ }
+ /** !#en
+ user protocol
+ !#zh
+ 用户系统协议接口 */
+ export class ProtocolUser extends PluginProtocol {
+ /** !#en
+ login interface
+ !#zh
+ 登录接口
+ @param args optional arguments
+ */
+ login(args? : string|any) : void;
+ /** !#en
+ get status of login
+ !#zh
+ 获取登录状态
+ */
+ isLogined() : boolean;
+ /** !#en
+ get user ID
+ !#zh
+ 获取用户唯一标示符
+ */
+ getUserID() : string;
+ /** !#en
+ get plugin ID
+ !#zh
+ 获取插件ID
+ */
+ getPluginId() : string;
+ /** !#en
+ set listener
+ !#zh
+ 设置用户系统的监听
+ */
+ setListener(listener : Function, target : any) : void;
+ /** !#en
+ get listener
+ !#zh
+ 获取用户系统的监听
+ */
+ getListener() : Function;
+ /** !#en
+ logout
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 登出,调用前需要判断属性是否存在
+ */
+ logout() : void;
+ /** !#en
+ show toolbar
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 显示悬浮窗,调用前需要判断属性是否存在
+ */
+ showToolBar(place : anysdk.ToolBarPlace) : void;
+ /** !#en
+ hide toolbar
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 隐藏悬浮窗,调用前需要判断属性是否存在
+ */
+ hideToolBar() : void;
+ /** !#en
+ enter platform
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 显示平台中心,调用前需要判断属性是否存在
+ */
+ enterPlatform() : void;
+ /** !#en
+ show exit page
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 显示退出界面,调用前需要判断属性是否存在
+ */
+ exit() : void;
+ /** !#en
+ show pause page
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 显示暂停界面,调用前需要判断属性是否存在
+ */
+ pause() : void;
+ /** !#en
+ Real-name registration
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 实名注册,调用前需要判断属性是否存在
+ */
+ realNameRegister() : void;
+ /** !#en
+ Anti-addiction query
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 防沉迷查询,调用前需要判断属性是否存在
+ */
+ antiAddictionQuery() : void;
+ /** !#en
+ submit game role information
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 提交角色信息,调用前需要判断属性是否存在
+ */
+ submitLoginGameRole(data : any) : void;
+ /** !#en
+ get user information
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 获取用户信息,调用前需要判断属性是否存在
+ */
+ getUserInfo(info : any) : void;
+ /** !#en
+ set login type
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 设置登录类型,调用前需要判断属性是否存在
+ */
+ getAvailableLoginType(info : any) : void;
+ /** !#en
+ set login type
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 设置登录类型,调用前需要判断属性是否存在
+ */
+ setLoginType(loginType : string) : void;
+ /** !#en
+ send to desktop
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 发送到桌面,调用前需要判断属性是否存在
+ */
+ sendToDesktop() : void;
+ /** !#en
+ open bbs
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 打开论坛,调用前需要判断属性是否存在
+ */
+ openBBS() : void;
+ }
+ /** !#en
+ IAP protocol
+ !#zh
+ 支付系统协议接口 */
+ export class ProtocolIAP extends PluginProtocol {
+ /** !#en
+ pay interface
+ !#zh
+ 支付接口
+ @param info Type:map
+ */
+ payForProduct(info : any) : void;
+ /** !#en
+ get order ID
+ !#zh
+ 获取订单ID
+ */
+ getOrderId() : string;
+ /** !#en
+ reset the pay status
+ !#zh
+ 重置支付状态
+ */
+ resetPayState() : void;
+ /** !#en
+ get plugin ID
+ !#zh
+ 获取插件ID
+ */
+ getPluginId() : string;
+ /** !#en
+ set listener
+ !#zh
+ 设置支付系统的监听
+ */
+ setListener(listener : Function, target : any) : void;
+ /** !#en
+ get listener
+ !#zh
+ 获取支付系统的监听
+ */
+ getListener() : Function;
+ }
+ /** !#en
+ analytics protocol
+ !#zh
+ 统计系统协议接口 */
+ export class ProtocolAnalytics extends PluginProtocol {
+ /** !#en
+ Start a new session.
+ !#zh
+ 启动会话
+ */
+ startSession() : void;
+ /** !#en
+ Stop a session.
+ !#zh
+ 关闭会话
+ */
+ stopSession() : void;
+ /** !#en
+ Set the timeout for expiring a session.
+ !#zh
+ 设置会话超时时间
+ @param millis Type: long
+ */
+ setSessionContinueMillis(millis : number) : void;
+ /** !#en
+ log an error
+ !#zh
+ 捕捉异常
+ */
+ logError(errorId : string, message : string) : void;
+ /** !#en
+ log an event.
+ !#zh
+ 捕捉事件
+ @param args optional arguments Type: map
+ */
+ logEvent(errorId : string, args? : any) : void;
+ /** !#en
+ Track an event begin.
+ !#zh
+ 统计事件开始
+ */
+ logTimedEventBegin(eventId : string) : void;
+ /** !#en
+ Track an event end.
+ !#zh
+ 统计事件结束
+ */
+ logTimedEventEnd(eventId : string) : void;
+ /** !#en
+ set Whether to catch uncaught exceptions to server.
+ !#zh
+ 设置是否开启自动异常捕捉
+ */
+ setCaptureUncaughtException(enabled : boolean) : void;
+ /** !#en
+ analytics account information
+ !#zh
+ 统计玩家帐户信息
+ @param paramMap Type: map
+ */
+ setAccount(paramMap : any) : void;
+ /** !#en
+ track user to request payment
+ !#zh
+ 跟踪用户支付请求
+ @param paramMap Type: map
+ */
+ onChargeRequest(paramMap : any) : void;
+ /** !#en
+ track Successful payment
+ !#zh
+ 追踪用户支付成功
+ */
+ onChargeSuccess(orderID : string) : void;
+ /** !#en
+ track failed payment
+ !#zh
+ 追踪用户支付失败
+ @param paramMap Type: map
+ */
+ onChargeFail(paramMap : any) : void;
+ /** !#en
+ track Successful payment
+ !#zh
+ 统计玩家支付成功
+ @param paramMap Type: map
+ */
+ onChargeOnlySuccess(paramMap : any) : void;
+ /** !#en
+ track user purchase
+ !#zh
+ 统计玩家消费
+ @param paramMap Type: map
+ */
+ onPurchase(paramMap : any) : void;
+ /** !#en
+ track user to use goods
+ !#zh
+ 统计玩家使用道具
+ @param paramMap Type: map
+ */
+ onUse(paramMap : any) : void;
+ /** !#en
+ track user to reward goods
+ !#zh
+ 统计玩家获取奖励
+ @param paramMap Type: map
+ */
+ onReward(paramMap : any) : void;
+ /** !#en
+ start level
+ !#zh
+ 开始关卡
+ @param paramMap Type: map
+ */
+ startLevel(paramMap : any) : void;
+ /** !#en
+ finish level
+ !#zh
+ 结束关卡
+ */
+ finishLevel(levelID : string) : void;
+ /** !#en
+ failed level
+ !#zh
+ 关卡失败
+ @param paramMap Type: map
+ */
+ failLevel(paramMap : any) : void;
+ /** !#en
+ start task
+ !#zh
+ 开始任务
+ @param paramMap Type: map
+ */
+ startTask(paramMap : any) : void;
+ /** !#en
+ finish task
+ !#zh
+ 完成任务
+ */
+ finishTask(taskID : string) : void;
+ /** !#en
+ failed task
+ !#zh
+ 任务失败
+ @param paramMap Type: map
+ */
+ failTask(paramMap : any) : void;
+ }
+ /** !#en
+ share protocol
+ !#zh
+ 分享系统协议接口 */
+ export class ProtocolShare extends PluginProtocol {
+ /** !#en
+ share interface
+ !#zh
+ 分享
+ @param info Type: map
+ */
+ share(info : any) : void;
+ /** !#en
+ set listener
+ !#zh
+ 设置分享系统的监听
+ */
+ setListener(listener : Function, target : any) : void;
+ /** !#en
+ get listener
+ !#zh
+ 获取分享系统的监听
+ */
+ getListener() : Function;
+ }
+ /** !#en
+ ads protocol
+ !#zh
+ 广告系统协议接口 */
+ export class ProtocolAds extends PluginProtocol {
+ /** !#en
+ hide ads view
+ !#zh
+ 隐藏广告
+ */
+ hideAds(adstype : anysdk.AdsType, idx : number) : void;
+ /** !#en
+ preload ads view
+ !#zh
+ 预加载广告
+ */
+ preloadAds(adstype : anysdk.AdsType, idx : number) : void;
+ /** !#en
+ query points
+ !#zh
+ 查询分数
+ */
+ queryPoints() : number;
+ /** !#en
+ get whether the ads type is supported
+ !#zh
+ 获取广告类型是否支持
+ */
+ isAdTypeSupported(arg0 : anysdk.AdsType) : boolean;
+ /** !#en
+ spend point
+ !#zh
+ 消费分数
+ */
+ spendPoints(points : number) : void;
+ /** !#en
+ set listener
+ !#zh
+ 设置广告系统的监听
+ */
+ setListener(listener : Function, target : any) : void;
+ /** !#en
+ get listener
+ !#zh
+ 获取广告系统的监听
+ */
+ getListener() : Function;
+ }
+ /** !#en
+ social protocol
+ !#zh
+ 社交系统协议接口 */
+ export class ProtocolSocial extends PluginProtocol {
+ /** !#en
+ sign in
+ !#zh
+ 登录
+ */
+ signIn() : void;
+ /** !#en
+ sign out
+ !#zh
+ 登出
+ */
+ signOut() : void;
+ /** !#en
+ submit score
+ !#zh
+ 提交分数
+ @param score Type: long
+ */
+ submitScore(leadboardID : string, score : number) : void;
+ /** !#en
+ show the id of Leaderboard page
+ !#zh
+ 根据唯一标识符显示排行榜
+ */
+ showLeaderboard(leaderboardID : string) : void;
+ /** !#en
+ show the page of achievements
+ !#zh
+ 显示成就榜
+ */
+ showAchievements() : void;
+ /** !#en
+ unlock achievement
+ !#zh
+ 解锁成就
+ @param info Type: map
+ */
+ share(info : any) : void;
+ /** !#en
+ set listener
+ !#zh
+ 设置社交系统的监听
+ */
+ setListener(listener : Function, target : any) : void;
+ /** !#en
+ get listener
+ !#zh
+ 获取社交系统的监听
+ */
+ getListener() : Function;
+ /** !#en
+ get friends info
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 获取好友信息,调用前需要判断属性是否存在
+ */
+ pauseRecording() : void;
+ /** !#en
+ interact
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 订阅,调用前需要判断属性是否存在
+ */
+ interact() : void;
+ /** !#en
+ subscribe
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 关注,调用前需要判断属性是否存在
+ */
+ subscribe() : void;
+ }
+ /** !#en
+ push protocol
+ !#zh
+ 推送系统协议接口 */
+ export class ProtocolPush extends PluginProtocol {
+ /** !#en
+ start Push services
+ !#zh
+ 启动推送服务
+ */
+ startPush() : void;
+ /** !#en
+ close Push services
+ !#zh
+ 暂停推送服务
+ */
+ closePush() : void;
+ /** !#en
+ delete alias
+ !#zh
+ 删除别名
+ */
+ delAlias(alias : string) : void;
+ /** !#en
+ set alias
+ !#zh
+ 设置别名
+ */
+ setAlias(alias : string) : void;
+ /** !#en
+ delete tags
+ !#zh
+ 删除标签
+ @param tags Type: list
+ */
+ delTags(tags : any) : void;
+ /** !#en
+ set tags
+ !#zh
+ 设置标签
+ @param tags Type: list
+ */
+ setTags(tags : any) : void;
+ /** !#en
+ set listener
+ !#zh
+ 设置推送系统的监听
+ */
+ setListener(listener : Function, target : any) : void;
+ /** !#en
+ get listener
+ !#zh
+ 获取推送系统的监听
+ */
+ getListener() : Function;
+ }
+ /** !#en
+ crash protocol
+ !#zh
+ 崩溃分析系统协议接口 */
+ export class ProtocolCrash extends PluginProtocol {
+ /** !#en
+ set user identifier
+ !#zh
+ 统计用户唯一标识符
+ */
+ setUserIdentifier(identifier : string) : void;
+ /** !#en
+ The uploader captured in exception information
+ !#zh
+ 上报异常信息
+ */
+ reportException(message : string, exception : string) : void;
+ /** !#en
+ customize logging
+ !#zh
+ 自定义日志记录
+ */
+ leaveBreadcrumb(breadcrumb : string) : void;
+ }
+ /** !#en
+ REC protocol
+ !#zh
+ 录屏系统协议接口 */
+ export class ProtocolREC extends PluginProtocol {
+ /** !#en
+ share video
+ !#zh
+ 分享视频
+ @param info Type: map
+ */
+ share(info : any) : void;
+ /** !#en
+ Start to record video
+ !#zh
+ 开始录制视频
+ */
+ startRecording() : void;
+ /** !#en
+ Start to record video
+ !#zh
+ 结束录制视频
+ */
+ stopRecording() : void;
+ /** !#en
+ set listener
+ !#zh
+ 设置录屏系统的监听
+ */
+ setListener(listener : Function, target : any) : void;
+ /** !#en
+ get listener
+ !#zh
+ 获取录屏系统的监听
+ */
+ getListener() : Function;
+ /** !#en
+ pause to record video
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 暂停录制视频,调用前需要判断属性是否存在
+ */
+ pauseRecording() : void;
+ /** !#en
+ resume to record video
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 恢复录制视频,调用前需要判断属性是否存在
+ */
+ resumeRecording() : void;
+ /** !#en
+ get whether the device is isAvailable
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 获取设备是否可用,调用前需要判断属性是否存在
+ */
+ isAvailable() : boolean;
+ /** !#en
+ get status of recording
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 获取录制状态,调用前需要判断属性是否存在
+ */
+ isRecording() : boolean;
+ /** !#en
+ show toolbar
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 显示悬浮窗,调用前需要判断属性是否存在
+ */
+ showToolBar() : void;
+ /** !#en
+ hide toolbar
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 隐藏悬浮窗,调用前需要判断属性是否存在
+ */
+ hideToolBar() : void;
+ /** !#en
+ show video center
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 显示视频中心,调用前需要判断属性是否存在
+ */
+ showVideoCenter() : void;
+ /** !#en
+ enter platform
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 显示平台中心,调用前需要判断属性是否存在
+ */
+ enterPlatform() : void;
+ /** !#en
+ Set the video data, it is recommended to check whether are recorded firstly
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 设置视频相关数据,建议先检查是否是正在录制,调用前需要判断属性是否存在
+ @param info Type: map
+ */
+ setMetaData(info : any) : void;
+ }
+ /** !#en
+ ad tracking protocol
+ !#zh
+ 广告追踪系统协议接口 */
+ export class ProtocolAdTracking extends PluginProtocol {
+ /** !#en
+ Call this method if you want to track register events as happening during a section.
+ !#zh
+ 统计用户注册信息
+ @param productInfo Type: map
+ */
+ onPay(productInfo : any) : void;
+ /** !#en
+ Call this method if you want to track register events as happening during a section.
+ !#zh
+ 统计用户注册信息
+ @param userInfo Type: map
+ */
+ onLogin(userInfo : any) : void;
+ /** !#en
+ Call this method if you want to track register events as happening during a section.
+ !#zh
+ 统计用户注册信息
+ */
+ onRegister(userId : string) : void;
+ /** !#en
+ Call this method if you want to track custom events with parameters as happening during a section.
+ !#zh
+ 统计自定义事件
+ @param paramMap Type: map
+ */
+ trackEvent(eventId : string, paramMap : any) : void;
+ /** !#en
+ Call this method with parameters if you want to create role as happening during a section.
+ !#zh
+ 统计创建角色事件,调用前需要判断属性是否存在
+ @param userInfo Type: map
+ */
+ onCreateRole(userInfo : any) : void;
+ /** !#en
+ Call this method if you want to track levelup events with parameters as happening during a section.
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 统计角色升级事件,调用前需要判断属性是否存在
+ @param info Type: map
+ */
+ onLevelUp(info : any) : void;
+ /** !#en
+ Invoke this method with parameters if you want to start to pay as happening during a section.
+ Before to invoke, you need to verdict whether this properties existed
+ !#zh
+ 统计开始充值事件,调用前需要判断属性是否存在
+ @param info Type: map
+ */
+ onStartToPay(info : any) : void;
+ }
+ /** !#en
+ custom protocol
+ !#zh
+ 自定义系统协议接口 */
+ export class ProtocolCustom extends PluginProtocol {
+ /** !#en
+ set listener
+ !#zh
+ 设置自定义系统的监听
+ */
+ setListener(listener : Function, target : any) : void;
+ /** !#en
+ get listener
+ !#zh
+ 获取自定义系统的监听
+ */
+ getListener() : Function;
+ }
+ /** !#en
+ Data structure class
+ !#zh
+ 数据结构类 */
+ export class PluginParam {
+ constructor();
+ /** !#en
+ create plugin parameters
+ !#zh
+ 创建对象
+ */
+ create(parameters : number|string|any) : anysdk.PluginParam;
+ }
+ /** !#en The callback of user system
+ !#zh 用户系统回调 */
+ export enum UserActionResultCode {
+ kInitSuccess = 0,
+ kInitFail = 0,
+ kLoginSuccess = 0,
+ kLoginNetworkError = 0,
+ kLoginNoNeed = 0,
+ kLoginFail = 0,
+ kLoginCancel = 0,
+ kLogoutSuccess = 0,
+ kLogoutFail = 0,
+ kPlatformEnter = 0,
+ kPlatformBack = 0,
+ kPausePage = 0,
+ kExitPage = 0,
+ kAntiAddictionQuery = 0,
+ kRealNameRegister = 0,
+ kAccountSwitchSuccess = 0,
+ kAccountSwitchFail = 0,
+ kOpenShop = 0,
+ kAccountSwitchCancel = 0,
+ kUserExtension = 0,
+ kSendToDesktopSuccess = 0,
+ kSendToDesktopFail = 0,
+ kGetAvailableLoginTypeSuccess = 0,
+ kGetAvailableLoginTypeFail = 0,
+ kGetUserInfoSuccess = 0,
+ kGetUserInfoFail = 0,
+ kOpenBBSSuccess = 0,
+ kOpenBBSFail = 0,
+ }
+ /** !#en The toolbar position of user type
+ !#zh 用户系统悬浮窗位置 */
+ export enum ToolBarPlace {
+ kToolBarTopLeft = 0,
+ kToolBarTopRight = 0,
+ kToolBarMidLeft = 0,
+ kToolBarMidRight = 0,
+ kToolBarBottomLeft = 0,
+ kToolBarBottomRight = 0,
+ }
+ /** !#en The callback of requesting reStringge
+ !#zh 支付系统支付请求回调 */
+ export enum PayResultCode {
+ kPaySuccess = 0,
+ kPayFail = 0,
+ kPayCancel = 0,
+ kPayNetworkError = 0,
+ kPayProductionInforIncomplete = 0,
+ kPayInitSuccess = 0,
+ kPayInitFail = 0,
+ kPayNowPaying = 0,
+ kPayReStringgeSuccess = 0,
+ kPayExtension = 0,
+ kPayNeedLoginAgain = 0,
+ kRequestSuccess = 0,
+ kRequestFail = 0,
+ }
+ /** !#en The enum of account type
+ !#zh 统计系统的账号类型 */
+ export enum AccountType {
+ ANONYMOUS = 0,
+ REGISTED = 0,
+ SINA_WEIBO = 0,
+ TENCENT_WEIBO = 0,
+ QQ = 0,
+ ND91 = 0,
+ }
+ /** !#en The enum of account operation
+ !#zh 统计系统的账号操作 */
+ export enum AccountOperate {
+ LOGIN = 0,
+ LOGOUT = 0,
+ REGISTER = 0,
+ }
+ /** !#en The enum of gender
+ !#zh 统计系统的账号性别 */
+ export enum AccountGender {
+ MALE = 0,
+ FEMALE = 0,
+ UNKNOWN = 0,
+ }
+ /** !#en The enum of task type
+ !#zh 统计系统的任务类型 */
+ export enum TaskType {
+ GUIDE_LINE = 0,
+ MAIN_LINE = 0,
+ BRANCH_LINE = 0,
+ DAILY = 0,
+ ACTIVITY = 0,
+ OTHER = 0,
+ }
+ /** !#en The callback of share system
+ !#zh 分享系统回调 */
+ export enum ShareResultCode {
+ kShareSuccess = 0,
+ kShareFail = 0,
+ kShareCancel = 0,
+ kShareNetworkError = 0,
+ kShareExtension = 0,
+ }
+ /** !#en The callback of social system
+ !#zh 社交系统回调 */
+ export enum SocialRetCode {
+ kScoreSubmitSucceed = 0,
+ kScoreSubmitfail = 0,
+ kAchUnlockSucceed = 0,
+ kAchUnlockFail = 0,
+ kSocialSignInSucceed = 0,
+ kSocialSignInFail = 0,
+ kSocialSignOutSucceed = 0,
+ kSocialSignOutFail = 0,
+ kSocialGetGameFriends = 0,
+ kSocialExtensionCode = 0,
+ kSocialGetFriendsInfoSuccess = 0,
+ kSocialGetFriendsInfoFail = 0,
+ kSocialAlreadySubscription = 0,
+ kSocialNoSubscription = 0,
+ kSocialSubscriptionFail = 0,
+ }
+ /** !#en The callback of ads system
+ !#zh 广告系统回调 */
+ export enum AdsResultCode {
+ kAdsReceived = 0,
+ kAdsShown = 0,
+ kAdsDismissed = 0,
+ kPointsSpendSucceed = 0,
+ kPointsSpendFailed = 0,
+ kNetworkError = 0,
+ kUnknownError = 0,
+ kOfferWallOnPointsChanged = 0,
+ kRewardedVideoWithReward = 0,
+ kInAppPurchaseFinished = 0,
+ kAdsClicked = 0,
+ kAdsExtension = 0,
+ }
+ /** !#en The enum of ads position
+ !#zh 广告位置 */
+ export enum AdsPos {
+ kPosCenter = 0,
+ kPosTop = 0,
+ kPosTopLeft = 0,
+ kPosTopRight = 0,
+ kPosBottom = 0,
+ kPosBottomLeft = 0,
+ kPosBottomRight = 0,
+ }
+ /** !#en The enum of ads type
+ !#zh 广告类型 */
+ export enum AdsType {
+ AD_TYPE_BANNER = 0,
+ AD_TYPE_FULLSCREEN = 0,
+ AD_TYPE_MOREAPP = 0,
+ AD_TYPE_OFFERWALL = 0,
+ AD_TYPE_REWARDEDVIDEOc = 0,
+ AD_TYPE_NATIVEEXPRESS = 0,
+ AD_TYPE_NATIVEADVANCED = 0,
+ }
+ /** !#en The callback of push system
+ !#zh 推送系统回调 */
+ export enum PushActionResultCode {
+ kPushReceiveMessage = 0,
+ kPushExtensionCode = 0,
+ }
+ /** !#en The callback of custom system
+ !#zh 自定义系统回调 */
+ export enum CustomResultCode {
+ kCustomExtension = 0,
+ }
+ /** !#en The callback of REC system
+ !#zh 录屏系统回调 */
+ export enum RECResultCode {
+ kRECInitSuccess = 0,
+ kRECInitFail = 0,
+ kRECStartRecording = 0,
+ kRECStopRecording = 0,
+ kRECPauseRecording = 0,
+ kRECResumeRecording = 0,
+ kRECEnterSDKPage = 0,
+ kRECQuitSDKPage = 0,
+ kRECShareSuccess = 0,
+ kRECShareFail = 0,
+ kRECExtension = 0,
+ }
+}
+/** !#en
+The global main namespace of Spine, all classes, functions,
+properties and constants of Spine are defined in this namespace
+!#zh
+Spine 的全局的命名空间,
+与 Spine 相关的所有的类,函数,属性,常量都在这个命名空间中定义。 */
+declare module sp {
+ /** !#en
+ The official spine runtime.
+ See http://en.esotericsoftware.com/spine-using-runtimes
+ !#zh
+ 官方 Spine Runtime。
+ 可查看 Spine 官方文档 http://en.esotericsoftware.com/spine-using-runtimes */
+ export var spine : any;
+ /** !#en
+ The skeleton of Spine
+
+ (Skeleton has a reference to a SkeletonData and stores the state for skeleton instance,
+ which consists of the current pose's bone SRT, slot colors, and which slot attachments are visible.
+ Multiple skeletons can use the same SkeletonData which includes all animations, skins, and attachments.)
+ !#zh
+ Spine 骨骼动画
+
+ (Skeleton 具有对骨骼数据的引用并且存储了骨骼实例的状态,
+ 它由当前的骨骼动作,slot 颜色,和可见的 slot attachments 组成。
+ 多个 Skeleton 可以使用相同的骨骼数据,其中包括所有的动画,皮肤和 attachments。 */
+ export class Skeleton extends cc._RendererUnderSG {
+ constructor();
+ /** !#en The skeletal animation is paused?
+ !#zh 该骨骼动画是否暂停。 */
+ paused : boolean;
+ /** !#en
+ The skeleton data contains the skeleton information (bind pose bones, slots, draw order,
+ attachments, skins, etc) and animations but does not hold any state.
+ Multiple skeletons can share the same skeleton data.
+ !#zh
+ 骨骼数据包含了骨骼信息(绑定骨骼动作,slots,渲染顺序,
+ attachments,皮肤等等)和动画但不持有任何状态。
+ 多个 Skeleton 可以共用相同的骨骼数据。 */
+ skeletonData : SkeletonData;
+ /** !#en The name of default skin.
+ !#zh 默认的皮肤名称。 */
+ defaultSkin : string;
+ /** !#en The name of default animation.
+ !#zh 默认的动画名称。 */
+ defaultAnimation : string;
+ /** !#en The name of current playing animation.
+ !#zh 当前播放的动画名称。 */
+ animation : string;
+ _defaultSkinIndex : number;
+ /** !#en TODO
+ !#zh 是否循环播放当前骨骼动画。 */
+ loop : boolean;
+ /** !#en The time scale of this skeleton.
+ !#zh 当前骨骼中所有动画的时间缩放率。 */
+ timeScale : number;
+ /** !#en Indicates whether open debug slots.
+ !#zh 是否显示 slot 的 debug 信息。 */
+ debugSlots : boolean;
+ /** !#en Indicates whether open debug bones.
+ !#zh 是否显示 bone 的 debug 信息。 */
+ debugBones : boolean;
+ /** !#en Computes the world SRT from the local SRT for each bone.
+ !#zh 重新更新所有骨骼的世界 Transform,
+ 当获取 bone 的数值未更新时,即可使用该函数进行更新数值。
+
+ @example
+ ```js
+ var bone = spine.findBone('head');
+ cc.log(bone.worldX); // return 0;
+ spine.updateWorldTransform();
+ bone = spine.findBone('head');
+ cc.log(bone.worldX); // return -23.12;
+ ```
+ */
+ updateWorldTransform() : void;
+ /** !#en Sets the bones and slots to the setup pose.
+ !#zh 还原到起始动作
+ */
+ setToSetupPose() : void;
+ /** !#en
+ Sets the bones to the setup pose,
+ using the values from the `BoneData` list in the `SkeletonData`.
+ !#zh
+ 设置 bone 到起始动作
+ 使用 SkeletonData 中的 BoneData 列表中的值。
+ */
+ setBonesToSetupPose() : void;
+ /** !#en
+ Sets the slots to the setup pose,
+ using the values from the `SlotData` list in the `SkeletonData`.
+ !#zh
+ 设置 slot 到起始动作。
+ 使用 SkeletonData 中的 SlotData 列表中的值。
+ */
+ setSlotsToSetupPose() : void;
+ /** !#en
+ Finds a bone by name.
+ This does a string comparison for every bone.
+ !#zh
+ 通过名称查找 bone。
+ 这里对每个 bone 的名称进行了对比。
+ */
+ findBone(boneName : string) : spine.Bone;
+ /** !#en
+ Finds a slot by name.
+ This does a string comparison for every slot.
+ !#zh
+ 通过名称查找 slot。
+ 这里对每个 slot 的名称进行了比较。
+ */
+ findSlot(slotName : string) : spine.Slot;
+ /** !#en
+ Finds a skin by name and makes it the active skin.
+ This does a string comparison for every skin.
+ Note that setting the skin does not change which attachments are visible.
+ !#zh
+ 按名称查找皮肤,激活该皮肤。
+ 这里对每个皮肤的名称进行了比较。
+ 注意:设置皮肤不会改变 attachment 的可见性。。
+ */
+ setSkin(skinName : string) : spine.Skin;
+ /** !#en
+ Returns the attachment for the slot and attachment name.
+ The skeleton looks first in its skin, then in the skeleton data’s default skin.
+ !#zh
+ 通过 slot 和 attachment 的名称获取 attachment。
+ Skeleton 优先查找它的皮肤,然后才是 Skeleton Data 中默认的皮肤。
+ */
+ getAttachment(slotName : string, attachmentName : string) : spine.RegionAttachment;
+ /** !#en
+ Sets the attachment for the slot and attachment name.
+ The skeleton looks first in its skin, then in the skeleton data’s default skin.
+ !#zh
+ 通过 slot 和 attachment 的名字来设置 attachment。
+ Skeleton 优先查找它的皮肤,然后才是 Skeleton Data 中默认的皮肤。
+ */
+ setAttachment(slotName : string, attachmentName : string) : void;
+ /** !#en Sets skeleton data to sp.Skeleton.
+ !#zh 设置 Skeleton 中的 Skeleton Data。
+ */
+ setSkeletonData(skeletonData : spine.SkeletonData, ownsSkeletonData : spine.SkeletonData) : void;
+ /** !#en Sets animation state data.
+ !#zh 设置动画状态数据。
+ */
+ setAnimationStateData(stateData : spine.AnimationStateData) : void;
+ /** !#en
+ Mix applies all keyframe values,
+ interpolated for the specified time and mixed with the current values.
+ !#zh 为所有关键帧设定混合及混合时间(从当前值开始差值)。
+ */
+ setMix(fromAnimation : string, toAnimation : string, duration : number) : void;
+ /** !#en Sets event listener.
+ !#zh 设置动画事件监听器。
+ */
+ setAnimationListener(target : any, callback : Function) : void;
+ /** !#en Set the current animation. Any queued animations are cleared.
+ !#zh 设置当前动画。队列中的任何的动画将被清除。
+ */
+ setAnimation(trackIndex : number, name : string, loop : boolean) : spine.TrackEntry;
+ /** !#en Adds an animation to be played delay seconds after the current or last queued animation.
+ !#zh 添加一个动画到动画队列尾部,还可以延迟指定的秒数。
+ */
+ addAnimation(trackIndex : number, name : string, loop : boolean, delay? : number) : spine.TrackEntry;
+ /** !#en Returns track entry by trackIndex.
+ !#zh 通过 track 索引获取 TrackEntry。
+ */
+ getCurrent(trackIndex : void) : spine.TrackEntry;
+ /** !#en Clears all tracks of animation state.
+ !#zh 清除所有 track 的动画状态。
+ */
+ clearTracks() : void;
+ /** !#en Clears track of animation state by trackIndex.
+ !#zh 清除出指定 track 的动画状态。
+ */
+ clearTrack(trackIndex : number) : void;
+ /** !#en Set the start event listener.
+ !#zh 用来设置开始播放动画的事件监听。
+ */
+ setStartListener(listener : Function) : void;
+ /** !#en Set the end event listener.
+ !#zh 用来设置动画播放完后的事件监听。
+ */
+ setEndListener(listener : Function) : void;
+ }
+ /** !#en The skeleton data of spine.
+ !#zh Spine 的 骨骼数据。 */
+ export class SkeletonData extends cc.Asset {
+ /** !#en See http://en.esotericsoftware.com/spine-json-format
+ !#zh 可查看 Spine 官方文档 http://zh.esotericsoftware.com/spine-json-format */
+ skeletonJson : any;
+ atlasText : string;
+ textures : cc.Texture2D;
+ /** !#en
+ A scale can be specified on the JSON or binary loader which will scale the bone positions,
+ image sizes, and animation translations.
+ This can be useful when using different sized images than were used when designing the skeleton
+ in Spine. For example, if using images that are half the size than were used in Spine,
+ a scale of 0.5 can be used. This is commonly used for games that can run with either low or high
+ resolution texture atlases.
+ see http://en.esotericsoftware.com/spine-using-runtimes#Scaling
+ !#zh 可查看 Spine 官方文档: http://zh.esotericsoftware.com/spine-using-runtimes#Scaling */
+ scale : number;
+ /** !#en Get the included SkeletonData used in spine runtime.
+ !#zh 获取 Spine Runtime 使用的 SkeletonData。
+ */
+ getRuntimeData(quiet? : boolean) : spine.SkeletonData;
+ }
+ /** !#en The event type of spine skeleton animation.
+ !#zh 骨骼动画事件类型。 */
+ export enum AnimationEventType {
+ START = 0,
+ END = 0,
+ COMPLETE = 0,
+ EVENT = 0,
+ }
+}
+/** This module provides some JavaScript utilities.
+All members can be accessed with cc.js */
+declare module js {
+ /** Check the obj whether is number or not
+ If a number is created by using 'new Number(10086)', the typeof it will be "object"...
+ Then you can use this function if you care about this case.
+ */
+ export function isNumber(obj : any) : boolean;
+ /** Check the obj whether is string or not.
+ If a string is created by using 'new String("blabla")', the typeof it will be "object"...
+ Then you can use this function if you care about this case.
+ */
+ export function isString(obj : any) : boolean;
+ /** This method is deprecated, use cc.js.mixin please.
+ Copy all properties not defined in obj from arguments[1...n]
+ @param obj object to extend its properties
+ @param sourceObj source object to copy properties from
+ */
+ export function addon(obj : any, sourceObj : any) : any;
+ /** copy all properties from arguments[1...n] to obj
+ */
+ export function mixin(obj : any, sourceObj : any) : any;
+ /** Derive the class from the supplied base class.
+ Both classes are just native javascript constructors, not created by cc.Class, so
+ usually you will want to inherit using {{#crossLink "cc/Class:method"}}cc.Class {{/crossLink}} instead.
+ @param base the baseclass to inherit
+ */
+ export function extend(cls : Function, base : Function) : Function;
+ /** Removes all enumerable properties from object
+ */
+ export function clear(obj : any) : void;
+ /** Get property descriptor in object and all its ancestors
+ */
+ export function getPropertyDescriptor(obj : any, name : string) : any;
+ /** Get class name of the object, if object is just a {} (and which class named 'Object'), it will return null.
+ (modified from the code from this stackoverflow post )
+ @param obj instance or constructor
+ */
+ export function getClassName(obj : any|Function) : string;
+ /** Register the class by specified name manually
+ */
+ export function setClassName(className : string, constructor : Function) : void;
+ /** Unregister a class from fireball.
+
+ If you dont need a registered class anymore, you should unregister the class so that Fireball will not keep its reference anymore.
+ Please note that its still your responsibility to free other references to the class.
+ @param constructor the class you will want to unregister, any number of classes can be added
+ */
+ export function unregisterClass(constructor : Function) : void;
+ /** Get the registered class by name
+ */
+ export function getClassByName(classname : string) : Function;
+ /** Define get set accessor, just help to call Object.defineProperty(...)
+ */
+ export function getset(obj : any, prop : string, getter : Function, setter : Function, enumerable? : boolean) : void;
+ /** Define get accessor, just help to call Object.defineProperty(...)
+ */
+ export function get(obj : any, prop : string, getter : Function, enumerable? : boolean) : void;
+ /** Define set accessor, just help to call Object.defineProperty(...)
+ */
+ export function set(obj : any, prop : string, setter : Function, enumerable? : boolean) : void;
+ /** Defines a polyfill field for obsoleted codes.
+ @param obj YourObject or YourClass.prototype
+ @param obsoleted "OldParam" or "YourClass.OldParam"
+ @param newPropName "NewParam"
+ */
+ export function obsolete(obj : any, obsoleted : string, newPropName : string, writable? : boolean) : void;
+ /** Defines all polyfill fields for obsoleted codes corresponding to the enumerable properties of props.
+ @param obj YourObject or YourClass.prototype
+ @param objName "YourObject" or "YourClass"
+ */
+ export function obsoletes(obj : any, objName : any, props : any, writable? : boolean) : void;
+ /** A string tool to construct a string with format string.
+ for example:
+ cc.js.formatStr("a: %s, b: %s", a, b);
+ cc.js.formatStr(a, b, c);
+ */
+ export function formatStr() : string;
+ /** undefined */
+ export class array {
+ /** Removes the first occurrence of a specific object from the array.
+ */
+ remove(array : any[], value : any) : boolean;
+ /** Removes the array item at the specified index.
+ */
+ removeAt(array : any[], index : number) : void;
+ /** Determines whether the array contains a specific value.
+ */
+ contains(array : any[], value : any) : boolean;
+ /** Verify array's Type
+ */
+ verifyType(array : any[], type : Function) : boolean;
+ /** Removes from array all values in minusArr. For each Value in minusArr, the first matching instance in array will be removed.
+ @param array Source Array
+ @param minusArr minus Array
+ */
+ removeArray(array : any[], minusArr : any[]) : void;
+ /** Inserts some objects at index
+ */
+ appendObjectsAt(array : any[], addObjs : any[], index : number) : any[];
+ /** Copy an array's item to a new array (its performance is better than Array.slice)
+ */
+ copy(array : any[]) : any[];
+ /** Exact same function as Array.prototype.indexOf.
+ HACK: ugliy hack for Baidu mobile browser compatibility,
+ stupid Baidu guys modify Array.prototype.indexOf for all pages loaded,
+ their version changes strict comparison to non-strict comparison,
+ it also ignores the second parameter of the original API,
+ and this will cause event handler enter infinite loop.
+ Baidu developers, if you ever see this documentation,
+ here is the standard: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
+ Seriously !
+ @param searchElement Element to locate in the array.
+ @param fromIndex The index to start the search at
+ */
+ indexOf(searchElement : any, fromIndex? : number) : number;
+ }
+}
\ No newline at end of file
diff --git a/client/jsconfig.json b/client/jsconfig.json
new file mode 100755
index 0000000..0e40e9a
--- /dev/null
+++ b/client/jsconfig.json
@@ -0,0 +1,13 @@
+{
+ "compilerOptions": {
+ "target": "es6",
+ "module": "commonjs"
+ },
+ "exclude": [
+ "node_modules",
+ "library",
+ "local",
+ "settings",
+ "temp"
+ ]
+}
\ No newline at end of file
diff --git a/client/project.json b/client/project.json
new file mode 100755
index 0000000..4257d04
--- /dev/null
+++ b/client/project.json
@@ -0,0 +1,4 @@
+{
+ "engine": "cocos2d-html5",
+ "packages": "packages"
+}
\ No newline at end of file
diff --git a/client/settings/builder.json b/client/settings/builder.json
new file mode 100755
index 0000000..216cd67
--- /dev/null
+++ b/client/settings/builder.json
@@ -0,0 +1,17 @@
+{
+ "excludeScenes": [],
+ "includeAnySDK": false,
+ "includeSdk": [
+ "anysdk"
+ ],
+ "orientation": {
+ "landscapeLeft": true,
+ "landscapeRight": true,
+ "portrait": false,
+ "upsideDown": false
+ },
+ "packageName": "com.babykylin.qpgames",
+ "startScene": "7898c3aa-75db-4523-8b22-e60bf7d83784",
+ "title": "SCMJ",
+ "webOrientation": "landscape"
+}
\ No newline at end of file
diff --git a/client/settings/builder.panel.json b/client/settings/builder.panel.json
new file mode 100755
index 0000000..024f53f
--- /dev/null
+++ b/client/settings/builder.panel.json
@@ -0,0 +1,13 @@
+{
+ "excludeScenes": [],
+ "packageName": "org.cocos2d.helloworld",
+ "startScene": "2d2f792f-a40c-49bb-a189-ed176a246e49",
+ "title": "HelloWorld",
+ "orientation": {
+ "landscapeRight": true,
+ "landscapeLeft": true,
+ "portrait": false,
+ "upsideDown": false
+ },
+ "webOrientation": "auto"
+}
\ No newline at end of file
diff --git a/client/settings/project.json b/client/settings/project.json
new file mode 100755
index 0000000..e5d631f
--- /dev/null
+++ b/client/settings/project.json
@@ -0,0 +1,18 @@
+{
+ "collision-matrix": [
+ [
+ true
+ ]
+ ],
+ "excluded-modules": [
+ "TiledMap",
+ "Spine Skeleton",
+ "ParticleSystem",
+ "Collider",
+ "VideoPlayer"
+ ],
+ "group-list": [
+ "default"
+ ],
+ "start-scene": "7898c3aa-75db-4523-8b22-e60bf7d83784"
+}
\ No newline at end of file
diff --git a/client/template-banner.png b/client/template-banner.png
new file mode 100755
index 0000000..d24a435
Binary files /dev/null and b/client/template-banner.png differ
diff --git a/client/template.json b/client/template.json
new file mode 100755
index 0000000..3bcc784
--- /dev/null
+++ b/client/template.json
@@ -0,0 +1,5 @@
+{
+ "name": "TEMPLATES.helloworld.name",
+ "desc": "TEMPLATES.helloworld.desc",
+ "banner": "template-banner.png"
+}
\ No newline at end of file
diff --git a/docs/.DS_Store b/docs/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/docs/.DS_Store differ
diff --git "a/docs/CentOS\346\234\215\345\212\241\345\231\250\351\203\250\347\275\262\346\214\207\345\215\227.pdf" "b/docs/CentOS\346\234\215\345\212\241\345\231\250\351\203\250\347\275\262\346\214\207\345\215\227.pdf"
new file mode 100755
index 0000000..53e1b33
Binary files /dev/null and "b/docs/CentOS\346\234\215\345\212\241\345\231\250\351\203\250\347\275\262\346\214\207\345\215\227.pdf" differ
diff --git "a/docs/\345\271\274\351\272\237\346\243\213\347\211\214-\345\233\233\345\267\235\351\272\273\345\260\206\347\211\210\346\235\203\345\243\260\346\230\216.docx" "b/docs/\345\271\274\351\272\237\346\243\213\347\211\214-\345\233\233\345\267\235\351\272\273\345\260\206\347\211\210\346\235\203\345\243\260\346\230\216.docx"
new file mode 100644
index 0000000..d125944
Binary files /dev/null and "b/docs/\345\271\274\351\272\237\346\243\213\347\211\214-\345\233\233\345\267\235\351\272\273\345\260\206\347\211\210\346\235\203\345\243\260\346\230\216.docx" differ
diff --git "a/docs/\345\271\274\351\272\237\346\243\213\347\211\214\344\273\243\347\240\201\350\256\262\350\247\243.xlsx" "b/docs/\345\271\274\351\272\237\346\243\213\347\211\214\344\273\243\347\240\201\350\256\262\350\247\243.xlsx"
new file mode 100755
index 0000000..51174ef
Binary files /dev/null and "b/docs/\345\271\274\351\272\237\346\243\213\347\211\214\344\273\243\347\240\201\350\256\262\350\247\243.xlsx" differ
diff --git "a/docs/\345\271\274\351\272\237\346\243\213\347\211\214\346\220\255\345\273\272\346\214\207\345\215\227.pdf" "b/docs/\345\271\274\351\272\237\346\243\213\347\211\214\346\220\255\345\273\272\346\214\207\345\215\227.pdf"
new file mode 100755
index 0000000..9897359
Binary files /dev/null and "b/docs/\345\271\274\351\272\237\346\243\213\347\211\214\346\220\255\345\273\272\346\214\207\345\215\227.pdf" differ
diff --git a/server/.vscode/launch.json b/server/.vscode/launch.json
new file mode 100755
index 0000000..f6eae5e
--- /dev/null
+++ b/server/.vscode/launch.json
@@ -0,0 +1,37 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "启动",
+ "type": "node",
+ "request": "launch",
+ "program": "${workspaceRoot}/majiang_server/majiang_server.js",
+ "stopOnEntry": false,
+ "args": ["${workspaceRoot}/configs_local.js"],
+ "cwd": "${workspaceRoot}",
+ "preLaunchTask": null,
+ "runtimeExecutable": null,
+ "runtimeArgs": [
+ "--nolazy"
+ ],
+ "env": {
+ "NODE_ENV": "development"
+ },
+ "externalConsole": false,
+ "sourceMaps": false,
+ "outDir": null
+ },
+ {
+ "name": "附加",
+ "type": "node",
+ "request": "attach",
+ "port": 5858,
+ "address": "localhost",
+ "restart": false,
+ "sourceMaps": false,
+ "outDir": null,
+ "localRoot": "${workspaceRoot}",
+ "remoteRoot": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/server/1.account_server.bat b/server/1.account_server.bat
new file mode 100755
index 0000000..e561de6
--- /dev/null
+++ b/server/1.account_server.bat
@@ -0,0 +1,4 @@
+set MAIN_JS=%~dp0\account_server\app.js
+set CONFIG=%~dp0\configs_win.js
+call node.exe %MAIN_JS% %CONFIG%
+pause
\ No newline at end of file
diff --git a/server/2.hall_server.bat b/server/2.hall_server.bat
new file mode 100755
index 0000000..799f23b
--- /dev/null
+++ b/server/2.hall_server.bat
@@ -0,0 +1,4 @@
+set MAIN_JS=%~dp0\hall_server\app.js
+set CONFIG=%~dp0\configs_win.js
+call node.exe %MAIN_JS% %CONFIG%
+pause
\ No newline at end of file
diff --git a/server/3.game_server.bat b/server/3.game_server.bat
new file mode 100755
index 0000000..e35ff68
--- /dev/null
+++ b/server/3.game_server.bat
@@ -0,0 +1,4 @@
+set MAIN_JS=%~dp0\game_server\app.js
+set CONFIG=%~dp0\configs_win.js
+call node.exe %MAIN_JS% %CONFIG%
+pause
\ No newline at end of file
diff --git a/server/account_server/account_server.js b/server/account_server/account_server.js
new file mode 100755
index 0000000..cd523aa
--- /dev/null
+++ b/server/account_server/account_server.js
@@ -0,0 +1,219 @@
+var crypto = require('../utils/crypto');
+var express = require('express');
+var db = require('../utils/db');
+var http = require("../utils/http");
+
+var app = express();
+var hallAddr = "";
+
+function send(res,ret){
+ var str = JSON.stringify(ret);
+ res.send(str)
+}
+
+var config = null;
+
+exports.start = function(cfg){
+ config = cfg;
+ hallAddr = config.HALL_IP + ":" + config.HALL_CLIENT_PORT;
+ app.listen(config.CLIENT_PORT);
+ console.log("account server is listening on " + config.CLIENT_PORT);
+}
+
+
+
+
+
+//设置跨域访问
+app.all('*', function(req, res, next) {
+ res.header("Access-Control-Allow-Origin", "*");
+ res.header("Access-Control-Allow-Headers", "X-Requested-With");
+ res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
+ res.header("X-Powered-By",' 3.2.1')
+ res.header("Content-Type", "application/json;charset=utf-8");
+ next();
+});
+
+app.get('/register',function(req,res){
+ var account = req.query.account;
+ var password = req.query.password;
+
+ var fnFailed = function(){
+ send(res,{errcode:1,errmsg:"account has been used."});
+ };
+
+ var fnSucceed = function(){
+ send(res,{errcode:0,errmsg:"ok"});
+ };
+
+ db.is_user_exist(account,function(exist){
+ if(exist){
+ db.create_account(account,password,function(ret){
+ if (ret) {
+ fnSucceed();
+ }
+ else{
+ fnFailed();
+ }
+ });
+ }
+ else{
+ fnFailed();
+ console.log("account has been used.");
+ }
+ });
+});
+
+app.get('/get_version',function(req,res){
+ var ret = {
+ version:config.VERSION,
+ }
+ send(res,ret);
+});
+
+app.get('/get_serverinfo',function(req,res){
+ var ret = {
+ version:config.VERSION,
+ hall:hallAddr,
+ appweb:config.APP_WEB,
+ }
+ send(res,ret);
+});
+
+app.get('/guest',function(req,res){
+ var account = "guest_" + req.query.account;
+ var sign = crypto.md5(account + req.ip + config.ACCOUNT_PRI_KEY);
+ var ret = {
+ errcode:0,
+ errmsg:"ok",
+ account:account,
+ halladdr:hallAddr,
+ sign:sign
+ }
+ send(res,ret);
+});
+
+app.get('/auth',function(req,res){
+ var account = req.query.account;
+ var password = req.query.password;
+
+ db.get_account_info(account,password,function(info){
+ if(info == null){
+ send(res,{errcode:1,errmsg:"invalid account"});
+ return;
+ }
+
+ var account = "vivi_" + req.query.account;
+ var sign = get_md5(account + req.ip + config.ACCOUNT_PRI_KEY);
+ var ret = {
+ errcode:0,
+ errmsg:"ok",
+ account:account,
+ sign:sign
+ }
+ send(res,ret);
+ });
+});
+
+var appInfo = {
+ Android:{
+ appid:"wxe39f08522d35c80c",
+ secret:"fa88e3a3ca5a11b06499902cea4b9c01",
+ },
+ iOS:{
+ appid:"wxcb508816c5c4e2a4",
+ secret:"7de38489ede63089269e3410d5905038",
+ }
+};
+
+function get_access_token(code,os,callback){
+ var info = appInfo[os];
+ if(info == null){
+ callback(false,null);
+ }
+ var data = {
+ appid:info.appid,
+ secret:info.secret,
+ code:code,
+ grant_type:"authorization_code"
+ };
+
+ http.get2("https://api.weixin.qq.com/sns/oauth2/access_token",data,callback,true);
+}
+
+function get_state_info(access_token,openid,callback){
+ var data = {
+ access_token:access_token,
+ openid:openid
+ };
+
+ http.get2("https://api.weixin.qq.com/sns/userinfo",data,callback,true);
+}
+
+function create_user(account,name,sex,headimgurl,callback){
+ var coins = 1000;
+ var gems = 21;
+ db.is_user_exist(account,function(ret){
+ if(!ret){
+ db.create_user(account,name,coins,gems,sex,headimgurl,function(ret){
+ callback();
+ });
+ }
+ else{
+ db.update_user_info(account,name,headimgurl,sex,function(ret){
+ callback();
+ });
+ }
+ });
+};
+app.get('/wechat_auth',function(req,res){
+ var code = req.query.code;
+ var os = req.query.os;
+ if(code == null || code == "" || os == null || os == ""){
+ return;
+ }
+ console.log(os);
+ get_access_token(code,os,function(suc,data){
+ if(suc){
+ var access_token = data.access_token;
+ var openid = data.openid;
+ get_state_info(access_token,openid,function(suc2,data2){
+ if(suc2){
+ var openid = data2.openid;
+ var nickname = data2.nickname;
+ var sex = data2.sex;
+ var headimgurl = data2.headimgurl;
+ var account = "wx_" + openid;
+ create_user(account,nickname,sex,headimgurl,function(){
+ var sign = crypto.md5(account + req.ip + config.ACCOUNT_PRI_KEY);
+ var ret = {
+ errcode:0,
+ errmsg:"ok",
+ account:account,
+ halladdr:hallAddr,
+ sign:sign
+ };
+ send(res,ret);
+ });
+ }
+ });
+ }
+ else{
+ send(res,{errcode:-1,errmsg:"unkown err."});
+ }
+ });
+});
+
+app.get('/base_info',function(req,res){
+ var userid = req.query.userid;
+ db.get_user_base_info(userid,function(data){
+ var ret = {
+ errcode:0,
+ errmsg:"ok",
+ name:data.name,
+ sex:data.sex,
+ headimgurl:data.headimg
+ };
+ send(res,ret);
+ });
+});
\ No newline at end of file
diff --git a/server/account_server/app.js b/server/account_server/app.js
new file mode 100755
index 0000000..4f2a8b7
--- /dev/null
+++ b/server/account_server/app.js
@@ -0,0 +1,14 @@
+var db = require('../utils/db');
+var configs = require(process.argv[2]);
+
+//init db pool.
+db.init(configs.mysql());
+
+//
+
+var config = configs.account_server();
+var as = require('./account_server');
+as.start(config);
+
+var dapi = require('./dealer_api');
+dapi.start(config);
\ No newline at end of file
diff --git a/server/account_server/dealer_api.js b/server/account_server/dealer_api.js
new file mode 100755
index 0000000..13a2b03
--- /dev/null
+++ b/server/account_server/dealer_api.js
@@ -0,0 +1,58 @@
+var crypto = require('../utils/crypto');
+var express = require('express');
+var db = require('../utils/db');
+var http = require("../utils/http");
+
+var app = express();
+
+function send(res,ret){
+ var str = JSON.stringify(ret);
+ res.send(str)
+}
+
+
+exports.start = function(config){
+ app.listen(config.DEALDER_API_PORT,config.DEALDER_API_IP);
+ console.log("dealer api is listening on " + config.DEALDER_API_IP + ":" + config.DEALDER_API_PORT);
+};
+
+//设置跨域访问
+app.all('*', function(req, res, next) {
+ res.header("Access-Control-Allow-Origin", "*");
+ res.header("Access-Control-Allow-Headers", "X-Requested-With");
+ res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
+ res.header("X-Powered-By",' 3.2.1')
+ res.header("Content-Type", "application/json;charset=utf-8");
+ next();
+});
+
+app.get('/get_user_info',function(req,res){
+ var userid = req.query.userid;
+ db.get_user_data_by_userid(userid,function (data) {
+ if(data){
+ var ret = {
+ userid:userid,
+ name:data.name,
+ gems:data.gems,
+ headimg:data.headimg
+ }
+ http.send(res,0,"ok",ret);
+ }
+ else{
+ http.send(res,1,"null");
+ }
+ });
+});
+
+app.get('/add_user_gems',function(req,res){
+ var userid = req.query.userid;
+ var gems = req.query.gems;
+ db.add_user_gems(userid,gems,function(suc){
+ if(suc){
+ http.send(res,0,"ok");
+ }
+ else{
+ http.send(res,1,"failed");
+ }
+ });
+});
\ No newline at end of file
diff --git a/server/configs_win.js b/server/configs_win.js
new file mode 100755
index 0000000..736d3f8
--- /dev/null
+++ b/server/configs_win.js
@@ -0,0 +1,69 @@
+var HALL_IP = "127.0.0.1";
+var HALL_CLIENT_PORT = 9001;
+var HALL_ROOM_PORT = 9002;
+
+var ACCOUNT_PRI_KEY = "^&*#$%()@";
+var ROOM_PRI_KEY = "~!@#$(*&^%$&";
+
+var LOCAL_IP = 'localhost';
+
+exports.mysql = function(){
+ return {
+ HOST:'127.0.0.1',
+ USER:'root',
+ PSWD:'',
+ DB:'db_babykylin',
+ PORT:3306,
+ }
+}
+
+//账号服配置
+exports.account_server = function(){
+ return {
+ CLIENT_PORT:9000,
+ HALL_IP:HALL_IP,
+ HALL_CLIENT_PORT:HALL_CLIENT_PORT,
+ ACCOUNT_PRI_KEY:ACCOUNT_PRI_KEY,
+
+ //
+ DEALDER_API_IP:LOCAL_IP,
+ DEALDER_API_PORT:12581,
+ VERSION:'20161227',
+ APP_WEB:'http://fir.im/2f17',
+ };
+};
+
+//大厅服配置
+exports.hall_server = function(){
+ return {
+ HALL_IP:HALL_IP,
+ CLEINT_PORT:HALL_CLIENT_PORT,
+ FOR_ROOM_IP:LOCAL_IP,
+ ROOM_PORT:HALL_ROOM_PORT,
+ ACCOUNT_PRI_KEY:ACCOUNT_PRI_KEY,
+ ROOM_PRI_KEY:ROOM_PRI_KEY
+ };
+};
+
+//游戏服配置
+exports.game_server = function(){
+ return {
+ SERVER_ID:"001",
+
+ //暴露给大厅服的HTTP端口号
+ HTTP_PORT:9003,
+ //HTTP TICK的间隔时间,用于向大厅服汇报情况
+ HTTP_TICK_TIME:5000,
+ //大厅服IP
+ HALL_IP:LOCAL_IP,
+ FOR_HALL_IP:LOCAL_IP,
+ //大厅服端口
+ HALL_PORT:HALL_ROOM_PORT,
+ //与大厅服协商好的通信加密KEY
+ ROOM_PRI_KEY:ROOM_PRI_KEY,
+
+ //暴露给客户端的接口
+ CLIENT_IP:HALL_IP,
+ CLIENT_PORT:10000,
+ };
+};
\ No newline at end of file
diff --git a/server/game_server/app.js b/server/game_server/app.js
new file mode 100755
index 0000000..235df99
--- /dev/null
+++ b/server/game_server/app.js
@@ -0,0 +1,17 @@
+var http_service = require("./http_service");
+var socket_service = require("./socket_service");
+
+//从配置文件获取服务器信息
+var configs = require(process.argv[2]);
+var config = configs.game_server();
+
+var db = require('../utils/db');
+db.init(configs.mysql());
+
+//开启HTTP服务
+http_service.start(config);
+
+//开启外网SOCKET服务
+socket_service.start(config);
+
+//require('./gamemgr');
\ No newline at end of file
diff --git a/server/game_server/gamemgr_xlch.js b/server/game_server/gamemgr_xlch.js
new file mode 100755
index 0000000..a193913
--- /dev/null
+++ b/server/game_server/gamemgr_xlch.js
@@ -0,0 +1,2290 @@
+var roomMgr = require("./roommgr");
+var userMgr = require("./usermgr");
+var mjutils = require('./mjutils');
+var db = require("../utils/db");
+var crypto = require("../utils/crypto");
+var games = {};
+var gamesIdBase = 0;
+
+var ACTION_CHUPAI = 1;
+var ACTION_MOPAI = 2;
+var ACTION_PENG = 3;
+var ACTION_GANG = 4;
+var ACTION_HU = 5;
+var ACTION_ZIMO = 6;
+
+var gameSeatsOfUsers = {};
+
+function getMJType(id){
+ if(id >= 0 && id < 9){
+ //筒
+ return 0;
+ }
+ else if(id >= 9 && id < 18){
+ //条
+ return 1;
+ }
+ else if(id >= 18 && id < 27){
+ //万
+ return 2;
+ }
+}
+
+function shuffle(game) {
+
+ var mahjongs = game.mahjongs;
+
+ /*
+ var idx = 0;
+ for(var i = 0; i < 12; ++i){
+ game.mahjongs[idx++] = 0;
+ }
+
+ for(var i = 0; i < 12; ++i){
+ game.mahjongs[idx++] = 1;
+ }
+
+ for(var i = 0; i < 12; ++i){
+ game.mahjongs[idx++] = 2;
+ }
+
+ for(var i = 0; i < 12; ++i){
+ game.mahjongs[idx++] = 3;
+ }
+
+
+ for(var i = idx; i < game.mahjongs.length; ++i){
+ game.mahjongs[i] = 4;
+ }
+ return;
+ */
+
+ //筒 (0 ~ 8 表示筒子
+ var index = 0;
+ for(var i = 0; i < 9; ++i){
+ for(var c = 0; c < 4; ++c){
+ mahjongs[index] = i;
+ index++;
+ }
+ }
+
+ //条 9 ~ 17表示条子
+ for(var i = 9; i < 18; ++i){
+ for(var c = 0; c < 4; ++c){
+ mahjongs[index] = i;
+ index++;
+ }
+ }
+
+ //万
+ //条 18 ~ 26表示万
+ for(var i = 18; i < 27; ++i){
+ for(var c = 0; c < 4; ++c){
+ mahjongs[index] = i;
+ index++;
+ }
+ }
+
+ for(var i = 0; i < mahjongs.length; ++i){
+ var lastIndex = mahjongs.length - 1 - i;
+ var index = Math.floor(Math.random() * lastIndex);
+ var t = mahjongs[index];
+ mahjongs[index] = mahjongs[lastIndex];
+ mahjongs[lastIndex] = t;
+ }
+}
+
+function mopai(game,seatIndex) {
+ if(game.currentIndex == game.mahjongs.length){
+ return -1;
+ }
+ var data = game.gameSeats[seatIndex];
+ var mahjongs = data.holds;
+ var pai = game.mahjongs[game.currentIndex];
+ mahjongs.push(pai);
+
+ //统计牌的数目 ,用于快速判定(空间换时间)
+ var c = data.countMap[pai];
+ if(c == null) {
+ c = 0;
+ }
+ data.countMap[pai] = c + 1;
+ game.currentIndex ++;
+ return pai;
+}
+
+function deal(game){
+ //强制清0
+ game.currentIndex = 0;
+
+ //每人13张 一共 13*4 = 52张 庄家多一张 53张
+ var seatIndex = game.button;
+ for(var i = 0; i < 52; ++i){
+ var mahjongs = game.gameSeats[seatIndex].holds;
+ if(mahjongs == null){
+ mahjongs = [];
+ game.gameSeats[seatIndex].holds = mahjongs;
+ }
+ mopai(game,seatIndex);
+ seatIndex ++;
+ seatIndex %= 4;
+ }
+
+ //庄家多摸最后一张
+ mopai(game,game.button);
+ //当前轮设置为庄家
+ game.turn = game.button;
+}
+
+//检查是否可以碰
+function checkCanPeng(game,seatData,targetPai) {
+ if(getMJType(targetPai) == seatData.que){
+ return;
+ }
+ var count = seatData.countMap[targetPai];
+ if(count != null && count >= 2){
+ seatData.canPeng = true;
+ }
+}
+
+//检查是否可以点杠
+function checkCanDianGang(game,seatData,targetPai){
+ //检查玩家手上的牌
+ //如果没有牌了,则不能再杠
+ if(game.mahjongs.length <= game.currentIndex){
+ return;
+ }
+ if(getMJType(targetPai) == seatData.que){
+ return;
+ }
+ var count = seatData.countMap[targetPai];
+ if(count != null && count >= 3){
+ seatData.canGang = true;
+ seatData.gangPai.push(targetPai);
+ return;
+ }
+}
+
+//检查是否可以暗杠
+function checkCanAnGang(game,seatData){
+ //如果没有牌了,则不能再杠
+ if(game.mahjongs.length <= game.currentIndex){
+ return;
+ }
+
+ for(var key in seatData.countMap){
+ var pai = parseInt(key);
+ if(getMJType(pai) != seatData.que){
+ var c = seatData.countMap[key];
+ if(c != null && c == 4){
+ seatData.canGang = true;
+ seatData.gangPai.push(pai);
+ }
+ }
+ }
+}
+
+//检查是否可以弯杠(自己摸起来的时候)
+function checkCanWanGang(game,seatData){
+ //如果没有牌了,则不能再杠
+ if(game.mahjongs.length <= game.currentIndex){
+ return;
+ }
+
+ //从碰过的牌中选
+ for(var i = 0; i < seatData.pengs.length; ++i){
+ var pai = seatData.pengs[i];
+ if(seatData.countMap[pai] == 1){
+ seatData.canGang = true;
+ seatData.gangPai.push(pai);
+ }
+ }
+}
+
+function checkCanHu(game,seatData,targetPai) {
+ game.lastHuPaiSeat = -1;
+ if(getMJType(targetPai) == seatData.que){
+ return;
+ }
+ seatData.canHu = false;
+ for(var k in seatData.tingMap){
+ if(targetPai == k){
+ seatData.canHu = true;
+ }
+ }
+}
+
+function clearAllOptions(game,seatData){
+ var fnClear = function(sd){
+ sd.canPeng = false;
+ sd.canGang = false;
+ sd.gangPai = [];
+ sd.canHu = false;
+ sd.lastFangGangSeat = -1;
+ }
+ if(seatData){
+ fnClear(seatData);
+ }
+ else{
+ game.qiangGangContext = null;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ fnClear(game.gameSeats[i]);
+ }
+ }
+}
+
+//检查听牌
+function checkCanTingPai(game,seatData){
+ seatData.tingMap = {};
+
+ //检查手上的牌是不是已打缺,如果未打缺,则不进行判定
+ for(var i = 0; i < seatData.holds.length; ++i){
+ var pai = seatData.holds[i];
+ if(getMJType(pai) == seatData.que){
+ return;
+ }
+ }
+
+ //检查是否是七对 前提是没有碰,也没有杠 ,即手上拥有13张牌
+ if(seatData.holds.length == 13){
+ //有5对牌
+ var hu = false;
+ var danPai = -1;
+ var pairCount = 0;
+ for(var k in seatData.countMap){
+ var c = seatData.countMap[k];
+ if( c == 2 || c == 3){
+ pairCount++;
+ }
+ else if(c == 4){
+ pairCount += 2;
+ }
+
+ if(c == 1 || c == 3){
+ //如果已经有单牌了,表示不止一张单牌,并没有下叫。直接闪
+ if(danPai >= 0){
+ break;
+ }
+ danPai = k;
+ }
+ }
+
+ //检查是否有6对 并且单牌是不是目标牌
+ if(pairCount == 6){
+ //七对只能和一张,就是手上那张单牌
+ //七对的番数= 2番+N个4个牌(即龙七对)
+ seatData.tingMap[danPai] = {
+ fan:2,
+ pattern:"7pairs"
+ };
+ //如果是,则直接返回咯
+ }
+ }
+
+ //检查是否是对对胡 由于四川麻将没有吃,所以只需要检查手上的牌
+ //对对胡叫牌有两种情况
+ //1、N坎 + 1张单牌
+ //2、N-1坎 + 两对牌
+ var singleCount = 0;
+ var colCount = 0;
+ var pairCount = 0;
+ var arr = [];
+ for(var k in seatData.countMap){
+ var c = seatData.countMap[k];
+ if(c == 1){
+ singleCount++;
+ arr.push(k);
+ }
+ else if(c == 2){
+ pairCount++;
+ arr.push(k);
+ }
+ else if(c == 3){
+ colCount++;
+ }
+ else if(c == 4){
+ //手上有4个一样的牌,在四川麻将中是和不了对对胡的 随便加点东西
+ singleCount++;
+ pairCount+=2;
+ }
+ }
+
+ if((pairCount == 2 && singleCount == 0) || (pairCount == 0 && singleCount == 1) ){
+ for(var i = 0; i < arr.length; ++ i){
+ //对对胡1番
+ var p = arr[i];
+ if(seatData.tingMap[p] == null){
+ seatData.tingMap[p] = {
+ pattern:"duidui",
+ fan:1
+ };
+ }
+ }
+ }
+
+ //console.log(seatData.holds);
+ //console.log(seatData.countMap);
+ //console.log("singleCount:" + singleCount + ",colCount:" + colCount + ",pairCount:" + pairCount);
+ //检查是不是平胡
+ if(seatData.que != 0){
+ mjutils.checkTingPai(seatData,0,9);
+ }
+
+ if(seatData.que != 1){
+ mjutils.checkTingPai(seatData,9,18);
+ }
+
+ if(seatData.que != 2){
+ mjutils.checkTingPai(seatData,18,27);
+ }
+}
+
+function getSeatIndex(userId){
+ var seatIndex = roomMgr.getUserSeat(userId);
+ if(seatIndex == null){
+ return null;
+ }
+ return seatIndex;
+}
+
+function getGameByUserID(userId){
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return null;
+ }
+ var game = games[roomId];
+ return game;
+}
+
+function hasOperations(seatData){
+ if(seatData.canGang || seatData.canPeng || seatData.canHu){
+ return true;
+ }
+ return false;
+}
+
+function sendOperations(game,seatData,pai) {
+ if(hasOperations(seatData)){
+ if(pai == -1){
+ pai = seatData.holds[seatData.holds.length - 1];
+ }
+
+ var data = {
+ pai:pai,
+ hu:seatData.canHu,
+ peng:seatData.canPeng,
+ gang:seatData.canGang,
+ gangpai:seatData.gangPai
+ };
+
+ //如果可以有操作,则进行操作
+ userMgr.sendMsg(seatData.userId,'game_action_push',data);
+
+ data.si = seatData.seatIndex;
+ }
+ else{
+ userMgr.sendMsg(seatData.userId,'game_action_push');
+ }
+}
+
+function moveToNextUser(game,nextSeat){
+ game.fangpaoshumu = 0;
+ //找到下一个没有和牌的玩家
+ if(nextSeat == null){
+ game.turn ++;
+ game.turn %= 4;
+ return;
+ }
+ else{
+ game.turn = nextSeat;
+ }
+}
+
+function doUserMoPai(game){
+ game.chuPai = -1;
+ var turnSeat = game.gameSeats[game.turn];
+ turnSeat.lastFangGangSeat = -1;
+ turnSeat.guoHuFan = -1;
+ var pai = mopai(game,game.turn);
+ //牌摸完了,结束
+ if(pai == -1){
+ doGameOver(game,turnSeat.userId);
+ return;
+ }
+ else{
+ var numOfMJ = game.mahjongs.length - game.currentIndex;
+ userMgr.broacastInRoom('mj_count_push',numOfMJ,turnSeat.userId,true);
+ }
+
+ recordGameAction(game,game.turn,ACTION_MOPAI,pai);
+
+ //通知前端新摸的牌
+ userMgr.sendMsg(turnSeat.userId,'game_mopai_push',pai);
+ //检查是否可以暗杠或者胡
+ //检查胡,直杠,弯杠
+ if(!turnSeat.hued){
+ checkCanAnGang(game,turnSeat);
+ }
+
+ //如果未胡牌,或者摸起来的牌可以杠,才检查弯杠
+ if(!turnSeat.hued || turnSeat.holds[turnSeat.holds.length-1] == pai){
+ checkCanWanGang(game,turnSeat,pai);
+ }
+
+
+ //检查看是否可以和
+ checkCanHu(game,turnSeat,pai);
+
+ //广播通知玩家出牌方
+ turnSeat.canChuPai = true;
+ userMgr.broacastInRoom('game_chupai_push',turnSeat.userId,turnSeat.userId,true);
+
+ //通知玩家做对应操作
+ sendOperations(game,turnSeat,game.chuPai);
+}
+
+function isSameType(type,arr){
+ for(var i = 0; i < arr.length; ++i){
+ var t = getMJType(arr[i]);
+ if(type != -1 && type != t){
+ return false;
+ }
+ type = t;
+ }
+ return true;
+}
+
+function isQingYiSe(gameSeatData){
+ var type = getMJType(gameSeatData.holds[0]);
+
+ //检查手上的牌
+ if(isSameType(type,gameSeatData.holds) == false){
+ return false;
+ }
+
+ //检查杠下的牌
+ if(isSameType(type,gameSeatData.angangs) == false){
+ return false;
+ }
+ if(isSameType(type,gameSeatData.wangangs) == false){
+ return false;
+ }
+ if(isSameType(type,gameSeatData.diangangs) == false){
+ return false;
+ }
+
+ //检查碰牌
+ if(isSameType(type,gameSeatData.pengs) == false){
+ return false;
+ }
+ return true;
+}
+
+function isMenQing(gameSeatData){
+ return (gameSeatData.pengs.length + gameSeatData.wangangs.length + gameSeatData.diangangs.length) == 0;
+}
+
+function isZhongZhang(gameSeatData){
+ var fn = function(arr){
+ for(var i = 0; i < arr.length; ++i){
+ var pai = arr[i];
+ if(pai == 0 || pai == 8 || pai == 9 || pai == 17 || pai == 18 || pai == 26){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ if(fn(gameSeatData.pengs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.angangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.diangangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.wangangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.holds) == false){
+ return false;
+ }
+ return true;
+}
+
+function isJiangDui(gameSeatData){
+ var fn = function(arr){
+ for(var i = 0; i < arr.length; ++i){
+ var pai = arr[i];
+ if(pai != 1 && pai != 4 && pai != 7
+ && pai != 9 && pai != 13 && pai != 16
+ && pai != 18 && pai != 21 && pai != 25
+ ){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ if(fn(gameSeatData.pengs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.angangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.diangangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.wangangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.holds) == false){
+ return false;
+ }
+ return true;
+}
+
+function isTinged(seatData){
+ for(var k in seatData.tingMap){
+ return true;
+ }
+ return false;
+}
+
+function computeFanScore(game,fan){
+ if(fan > game.conf.maxFan){
+ fan = game.conf.maxFan;
+ }
+ return (1 << fan) * game.conf.baseScore;
+}
+
+//是否需要查大叫(有人没有下叫)
+function needChaDaJiao(game){
+ //查叫
+ var numOfHued = 0;
+ var numOfTinged = 0;
+ var numOfUntinged = 0;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ts = game.gameSeats[i];
+ if(ts.hued){
+ numOfHued ++;
+ numOfTinged++;
+ }
+ else if(isTinged(ts)){
+ numOfTinged++;
+ }
+ else{
+ numOfUntinged++;
+ }
+ }
+
+ //如果没有任何一个人叫牌,则不需要查叫
+ if(numOfTinged == 0){
+ return false;
+ }
+
+ //如果都听牌了,也不需要查叫
+ if(numOfUntinged == 0){
+ return false;
+ }
+ return true;
+}
+
+function findMaxFanTingPai(ts){
+ //找出最大番
+ var cur = null;
+ for(var k in ts.tingMap){
+ var tpai = ts.tingMap[k];
+ if(cur == null || tpai.fan > cur.fan){
+ cur = tpai;
+ cur.pai = parseInt(k);
+ }
+ }
+ return cur;
+}
+
+function findUnTingedPlayers(game){
+ var arr = [];
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ts = game.gameSeats[i];
+ //如果没有胡,且没有听牌
+ if(!ts.hued && !isTinged(ts)){
+ arr.push(i);
+ }
+ }
+ return arr;
+}
+
+function getNumOfGen(seatData){
+ var numOfGangs = seatData.diangangs.length + seatData.wangangs.length + seatData.angangs.length;
+ for(var k = 0; k < seatData.pengs.length; ++k){
+ var pai = seatData.pengs[k];
+ if(seatData.countMap[pai] == 1){
+ numOfGangs++;
+ }
+ }
+ for(var k in seatData.countMap){
+ if(seatData.countMap[k] == 4){
+ numOfGangs++;
+ }
+ }
+ return numOfGangs;
+}
+
+function chaJiao(game){
+ var arr = findUnTingedPlayers(game);
+ if(arr.length == 0){
+ return;
+ }
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ts = game.gameSeats[i];
+ //如果听牌了,则未叫牌的人要给钱
+ if(isTinged(ts)){
+ var cur = findMaxFanTingPai(ts);
+ ts.huInfo.push({
+ ishupai:true,
+ action:"chadajiao",
+ fan:cur.fan,
+ pattern:cur.pattern,
+ pai:cur.pai,
+ numofgen:getNumOfGen(ts),
+ });
+
+ for(var j = 0; j < arr.length; ++j){
+ game.gameSeats[arr[j]].huInfo.push({
+ action:"beichadajiao",
+ target:i,
+ index:ts.huInfo.length-1,
+ });
+ }
+ }
+ }
+}
+
+function calculateResult(game,roomInfo){
+
+ var isNeedChaDaJia = needChaDaJiao(game);
+ if(isNeedChaDaJia){
+ chaJiao(game);
+ }
+
+ var baseScore = game.conf.baseScore;
+
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var sd = game.gameSeats[i];
+ //对所有胡牌的玩家进行统计
+ if(isTinged(sd)){
+ //收杠钱
+ var additonalscore = 0;
+ for(var a = 0; a < sd.actions.length; ++a){
+ var ac = sd.actions[a];
+ if(ac.type == "fanggang"){
+ var ts = game.gameSeats[ac.targets[0]];
+ //检查放杠的情况,如果目标没有和牌,且没有叫牌,则不算 用于优化前端显示
+ if(isNeedChaDaJia && (ts.hued) == false && (isTinged(ts) == false)){
+ ac.state = "nop";
+ }
+ }
+ else if(ac.type == "angang" || ac.type == "wangang" || ac.type == "diangang"){
+ if(ac.state != "nop"){
+ var acscore = ac.score;
+ additonalscore += ac.targets.length * acscore * baseScore;
+ //扣掉目标方的分
+ for(var t = 0; t < ac.targets.length; ++t){
+ var six = ac.targets[t];
+ game.gameSeats[six].score -= acscore * baseScore;
+ }
+ }
+ }
+ else if(ac.type == "maozhuanyu"){
+ //对于呼叫转移,如果对方没有叫牌,表示不得行
+ if(isTinged(ac.owner)){
+ //如果
+ var ref = ac.ref;
+ var acscore = ref.score;
+ var total = ref.targets.length * acscore * baseScore;
+ additonalscore += total;
+ //扣掉目标方的分
+ if(ref.payTimes == 0){
+ for(var t = 0; t < ref.targets.length; ++t){
+ var six = ref.targets[t];
+ game.gameSeats[six].score -= acscore * baseScore;
+ }
+ }
+ else{
+ //如果已经被扣过一次了,则由杠牌这家赔
+ ac.owner.score -= total;
+ }
+ ref.payTimes++;
+ ac.owner = null;
+ ac.ref = null;
+ }
+ }
+ }
+
+ if(isQingYiSe(sd)){
+ sd.qingyise = true;
+ }
+
+ if(game.conf.menqing){
+ sd.isMenQing = isMenQing(sd);
+ }
+
+ //金钩胡
+ if(sd.holds.length == 1 || sd.holds.length == 2){
+ sd.isJinGouHu = true;
+ }
+
+ sd.numAnGang = sd.angangs.length;
+ sd.numMingGang = sd.wangangs.length + sd.diangangs.length;
+
+ //进行胡牌结算
+ for(var j = 0; j < sd.huInfo.length; ++j){
+ var info = sd.huInfo[j];
+ if(!info.ishupai){
+ sd.numDianPao++;
+ continue;
+ }
+ //统计自己的番子和分数
+ //基础番(平胡0番,对对胡1番、七对2番) + 清一色2番 + 杠+1番
+ //杠上花+1番,杠上炮+1番 抢杠胡+1番,金钩胡+1番,海底胡+1番
+ var fan = info.fan;
+ sd.holds.push(info.pai);
+ if(sd.countMap[info.pai] != null){
+ sd.countMap[info.pai] ++;
+ }
+ else{
+ sd.countMap[info.pai] = 1;
+ }
+
+ if(sd.qingyise){
+ fan += 2;
+ }
+
+ //金钩胡
+ if(sd.isJinGouHu){
+ fan += 1;
+ }
+
+ if(info.isHaiDiHu){
+ fan += 1;
+ }
+
+ if(game.conf.tiandihu){
+ if(info.isTianHu){
+ fan += 3;
+ }
+ else if(info.isDiHu){
+ fan += 2;
+ }
+ }
+
+ var isjiangdui = false;
+ if(game.conf.jiangdui){
+ if(info.pattern == "7pairs"){
+ if(info.numofgen > 0){
+ info.numofgen -= 1;
+ info.pattern == "l7pairs";
+ isjiangdui = isJiangDui(sd);
+ if(isjiangdui){
+ info.pattern == "j7paris";
+ fan += 2;
+ }
+ else{
+ fan += 1;
+ }
+ }
+ }
+ else if(info.pattern == "duidui"){
+ isjiangdui = isJiangDui(sd);
+ if(isjiangdui){
+ info.pattern = "jiangdui";
+ fan += 2;
+ }
+ }
+ }
+
+ if(game.conf.menqing){
+ //不是将对,才检查中张
+ if(!isjiangdui){
+ sd.isZhongZhang = isZhongZhang(sd);
+ if(sd.isZhongZhang){
+ fan += 1;
+ }
+ }
+
+ if(sd.isMenQing){
+ fan += 1;
+ }
+ }
+
+ fan += info.numofgen;
+
+ if(info.action == "ganghua" || info.action == "dianganghua" || info.action == "gangpaohu" || info.action == "qiangganghu"){
+ fan += 1;
+ }
+
+ var extraScore = 0;
+ if(info.iszimo){
+ if(game.conf.zimo == 0){
+ //自摸加底
+ extraScore = baseScore;
+ }
+ else if(game.conf.zimo == 1){
+ fan += 1;
+ }
+ else{
+ //nothing.
+ }
+ }
+ //和牌的玩家才加这个分
+ var score = computeFanScore(game,fan) + extraScore;
+ if(info.action == "chadajiao"){
+ //收所有没有叫牌的人的钱
+ for(var t = 0; t < game.gameSeats.length; ++t){
+ if(!isTinged(game.gameSeats[t])){
+ game.gameSeats[t].score -= score;
+ sd.score += score;
+ //被查叫次数
+ if(game.gameSeats[t] != sd){
+ game.gameSeats[t].numChaJiao++;
+ }
+ }
+ }
+ }
+ else if(info.iszimo){
+ //收所有人的钱
+ sd.score += score * game.gameSeats.length;
+ for(var t = 0; t < game.gameSeats.length; ++t){
+ game.gameSeats[t].score -= score;
+ }
+ sd.numZiMo++;
+ }
+ else{
+ //收放炮者的钱
+ sd.score += score;
+ game.gameSeats[info.target].score -= score;
+ sd.numJiePao++;
+ }
+
+ //撤除胡的那张牌
+ sd.holds.pop();
+ sd.countMap[info.pai]--;
+
+ if(fan > game.conf.maxFan){
+ fan = game.conf.maxFan;
+ }
+ info.fan = fan;
+ }
+ //一定要用 += 。 因为此时的sd.score可能是负的
+ sd.score += additonalscore;
+ }
+ else{
+ for(var a = sd.actions.length -1; a >= 0; --a){
+ var ac = sd.actions[a];
+ if(ac.type == "angang" || ac.type == "wangang" || ac.type == "diangang"){
+ //如果3家都胡牌,则需要结算。否则认为是查叫
+ if(isNeedChaDaJia){
+ sd.actions.splice(a,1);
+ }
+ else{
+ if(ac.state != "nop"){
+ var acscore = ac.score;
+ sd.score += ac.targets.length * acscore * baseScore;
+ //扣掉目标方的分
+ for(var t = 0; t < ac.targets.length; ++t){
+ var six = ac.targets[t];
+ game.gameSeats[six].score -= acscore * baseScore;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+function doGameOver(game,userId,forceEnd){
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return;
+ }
+
+ var results = [];
+ var dbresult = [0,0,0,0];
+
+ var fnNoticeResult = function(isEnd){
+ var endinfo = null;
+ if(isEnd){
+ endinfo = [];
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var rs = roomInfo.seats[i];
+ endinfo.push({
+ numzimo:rs.numZiMo,
+ numjiepao:rs.numJiePao,
+ numdianpao:rs.numDianPao,
+ numangang:rs.numAnGang,
+ numminggang:rs.numMingGang,
+ numchadajiao:rs.numChaJiao,
+ });
+ }
+ }
+
+ userMgr.broacastInRoom('game_over_push',{results:results,endinfo:endinfo},userId,true);
+ //如果局数已够,则进行整体结算,并关闭房间
+ if(isEnd){
+ setTimeout(function(){
+ if(roomInfo.numOfGames > 1){
+ store_history(roomInfo);
+ }
+ userMgr.kickAllInRoom(roomId);
+ roomMgr.destroy(roomId);
+ db.archive_games(roomInfo.uuid);
+ },1500);
+ }
+ }
+
+ if(game != null){
+ if(!forceEnd){
+ calculateResult(game,roomInfo);
+ }
+
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var rs = roomInfo.seats[i];
+ var sd = game.gameSeats[i];
+
+ rs.ready = false;
+ rs.score += sd.score
+ rs.numZiMo += sd.numZiMo;
+ rs.numJiePao += sd.numJiePao;
+ rs.numDianPao += sd.numDianPao;
+ rs.numAnGang += sd.numAnGang;
+ rs.numMingGang += sd.numMingGang;
+ rs.numChaJiao += sd.numChaJiao;
+
+ var userRT = {
+ userId:sd.userId,
+ actions:[],
+ pengs:sd.pengs,
+ wangangs:sd.wangangs,
+ diangangs:sd.diangangs,
+ angangs:sd.angangs,
+ holds:sd.holds,
+ score:sd.score,
+ totalscore:rs.score,
+ qingyise:sd.qingyise,
+ menqing:sd.isMenQing,
+ jingouhu:sd.isJinGouHu,
+ huinfo:sd.huInfo,
+ }
+
+ for(var k in sd.actions){
+ userRT.actions[k] = {
+ type:sd.actions[k].type,
+ };
+ }
+ results.push(userRT);
+
+
+ dbresult[i] = sd.score;
+ delete gameSeatsOfUsers[sd.userId];
+ }
+ delete games[roomId];
+
+ var old = roomInfo.nextButton;
+ if(game.yipaoduoxiang >= 0){
+ roomInfo.nextButton = game.yipaoduoxiang;
+ }
+ else if(game.firstHupai >= 0){
+ roomInfo.nextButton = game.firstHupai;
+ }
+ else{
+ roomInfo.nextButton = (game.turn + 1) % 4;
+ }
+
+ if(old != roomInfo.nextButton){
+ db.update_next_button(roomId,roomInfo.nextButton);
+ }
+ }
+
+ if(forceEnd || game == null){
+ fnNoticeResult(true);
+ }
+ else{
+ //保存游戏
+ store_game(game,function(ret){
+ db.update_game_result(roomInfo.uuid,game.gameIndex,dbresult);
+
+ //记录玩家操作
+ var str = JSON.stringify(game.actionList);
+ db.update_game_action_records(roomInfo.uuid,game.gameIndex,str);
+
+ //保存游戏局数
+ db.update_num_of_turns(roomId,roomInfo.numOfGames);
+
+ //如果是第一次,则扣除房卡
+ if(roomInfo.numOfGames == 1){
+ var cost = 2;
+ if(roomInfo.conf.maxGames == 8){
+ cost = 3;
+ }
+ db.cost_gems(game.gameSeats[0].userId,cost);
+ }
+
+ var isEnd = (roomInfo.numOfGames >= roomInfo.conf.maxGames);
+ fnNoticeResult(isEnd);
+ });
+ }
+}
+
+function recordUserAction(game,seatData,type,target){
+ var d = {type:type,targets:[]};
+ if(target != null){
+ if(typeof(target) == 'number'){
+ d.targets.push(target);
+ }
+ else{
+ d.targets = target;
+ }
+ }
+ else{
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var s = game.gameSeats[i];
+ //血流成河,所有自摸,暗杠,弯杠,都算三家
+ if(i != seatData.seatIndex/* && s.hued == false*/){
+ d.targets.push(i);
+ }
+ }
+ }
+
+ seatData.actions.push(d);
+ return d;
+}
+
+function recordGameAction(game,si,action,pai){
+ game.actionList.push(si);
+ game.actionList.push(action);
+ if(pai != null){
+ game.actionList.push(pai);
+ }
+}
+
+exports.setReady = function(userId,callback){
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return;
+ }
+
+ roomMgr.setReady(userId,true);
+
+ var game = games[roomId];
+ if(game == null){
+ if(roomInfo.seats.length == 4){
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var s = roomInfo.seats[i];
+ if(s.ready == false || userMgr.isOnline(s.userId)==false){
+ return;
+ }
+ }
+ //4个人到齐了,并且都准备好了,则开始新的一局
+ exports.begin(roomId);
+ }
+ }
+ else{
+ var numOfMJ = game.mahjongs.length - game.currentIndex;
+ var remainingGames = roomInfo.conf.maxGames - roomInfo.numOfGames;
+
+ var data = {
+ state:game.state,
+ numofmj:numOfMJ,
+ button:game.button,
+ turn:game.turn,
+ chuPai:game.chuPai,
+ };
+
+ data.seats = [];
+ var seatData = null;
+ for(var i = 0; i < 4; ++i){
+ var sd = game.gameSeats[i];
+
+ var s = {
+ userid:sd.userId,
+ folds:sd.folds,
+ angangs:sd.angangs,
+ diangangs:sd.diangangs,
+ wangangs:sd.wangangs,
+ pengs:sd.pengs,
+ que:sd.que,
+ hued:sd.hued,
+ huinfo:sd.huInfo,
+ iszimo:sd.iszimo,
+ }
+ if(sd.userId == userId){
+ s.holds = sd.holds;
+ s.huanpais = sd.huanpais;
+ seatData = sd;
+ }
+ else{
+ s.huanpais = sd.huanpais? []:null;
+ }
+ data.seats.push(s);
+ }
+
+ //同步整个信息给客户端
+ userMgr.sendMsg(userId,'game_sync_push',data);
+ sendOperations(game,seatData,game.chuPai);
+ }
+}
+
+function store_single_history(userId,history){
+ db.get_user_history(userId,function(data){
+ if(data == null){
+ data = [];
+ }
+ while(data.length >= 10){
+ data.shift();
+ }
+ data.push(history);
+ db.update_user_history(userId,data);
+ });
+}
+
+function store_history(roomInfo){
+ var seats = roomInfo.seats;
+ var history = {
+ uuid:roomInfo.uuid,
+ id:roomInfo.id,
+ time:roomInfo.createTime,
+ seats:new Array(4)
+ };
+
+ for(var i = 0; i < seats.length; ++i){
+ var rs = seats[i];
+ var hs = history.seats[i] = {};
+ hs.userid = rs.userId;
+ hs.name = crypto.toBase64(rs.name);
+ hs.score = rs.score;
+ }
+
+ for(var i = 0; i < seats.length; ++i){
+ var s = seats[i];
+ store_single_history(s.userId,history);
+ }
+}
+
+
+function construct_game_base_info(game){
+ var baseInfo = {
+ type:game.conf.type,
+ button:game.button,
+ index:game.gameIndex,
+ mahjongs:game.mahjongs,
+ game_seats:new Array(4)
+ }
+ for(var i = 0; i < 4; ++i){
+ baseInfo.game_seats[i] = game.gameSeats[i].holds;
+ }
+ game.baseInfoJson = JSON.stringify(baseInfo);
+}
+
+function store_game(game,callback){
+ db.create_game(game.roomInfo.uuid,game.gameIndex,game.baseInfoJson,callback);
+}
+
+//开始新的一局
+exports.begin = function(roomId) {
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return;
+ }
+ var seats = roomInfo.seats;
+
+ var game = {
+ conf:roomInfo.conf,
+ roomInfo:roomInfo,
+ gameIndex:roomInfo.numOfGames,
+
+ button:roomInfo.nextButton,
+ mahjongs:new Array(108),
+ currentIndex:0,
+ gameSeats:new Array(4),
+
+ numOfQue:0,
+ turn:0,
+ chuPai:-1,
+ state:"idle",
+ firstHupai:-1,
+ yipaoduoxiang:-1,
+ fangpaoshumu:-1,
+ actionList:[],
+ chupaiCnt:0,
+ };
+
+ roomInfo.numOfGames++;
+
+ for(var i = 0; i < 4; ++i){
+ var data = game.gameSeats[i] = {};
+
+ data.game = game;
+
+ data.seatIndex = i;
+
+ data.userId = seats[i].userId;
+ //持有的牌
+ data.holds = [];
+ //打出的牌
+ data.folds = [];
+ //暗杠的牌
+ data.angangs = [];
+ //点杠的牌
+ data.diangangs = [];
+ //弯杠的牌
+ data.wangangs = [];
+ //碰了的牌
+ data.pengs = [];
+ //缺一门
+ data.que = -1;
+
+ //换三张的牌
+ data.huanpais = null;
+
+ //玩家手上的牌的数目,用于快速判定碰杠
+ data.countMap = {};
+ //玩家听牌,用于快速判定胡了的番数
+ data.tingMap = {};
+ data.pattern = "";
+
+ //是否可以杠
+ data.canGang = false;
+ //用于记录玩家可以杠的牌
+ data.gangPai = [];
+
+ //是否可以碰
+ data.canPeng = false;
+ //是否可以胡
+ data.canHu = false;
+ //是否可以出牌
+ data.canChuPai = false;
+
+ //如果guoHuFan >=0 表示处于过胡状态,
+ //如果过胡状态,那么只能胡大于过胡番数的牌
+ data.guoHuFan = -1;
+
+ //是否胡了
+ data.hued = false;
+ //
+ data.actions = [];
+
+ //是否是自摸
+ data.iszimo = false;
+ data.isGangHu = false;
+ data.fan = 0;
+ data.score = 0;
+ data.huInfo = [];
+
+
+ data.lastFangGangSeat = -1;
+
+ //统计信息
+ data.numZiMo = 0;
+ data.numJiePao = 0;
+ data.numDianPao = 0;
+ data.numAnGang = 0;
+ data.numMingGang = 0;
+ data.numChaJiao = 0;
+
+ gameSeatsOfUsers[data.userId] = data;
+ }
+ games[roomId] = game;
+ //洗牌
+ shuffle(game);
+ //发牌
+ deal(game);
+
+
+
+ var numOfMJ = game.mahjongs.length - game.currentIndex;
+ var huansanzhang = roomInfo.conf.hsz;
+
+ for(var i = 0; i < seats.length; ++i){
+ //开局时,通知前端必要的数据
+ var s = seats[i];
+ //通知玩家手牌
+ userMgr.sendMsg(s.userId,'game_holds_push',game.gameSeats[i].holds);
+ //通知还剩多少张牌
+ userMgr.sendMsg(s.userId,'mj_count_push',numOfMJ);
+ //通知还剩多少局
+ userMgr.sendMsg(s.userId,'game_num_push',roomInfo.numOfGames);
+ //通知游戏开始
+ userMgr.sendMsg(s.userId,'game_begin_push',game.button);
+
+ if(huansanzhang == true){
+ game.state = "huanpai";
+ //通知准备换牌
+ userMgr.sendMsg(s.userId,'game_huanpai_push');
+ }
+ else{
+ game.state = "dingque";
+ //通知准备定缺
+ userMgr.sendMsg(s.userId,'game_dingque_push');
+ }
+ }
+};
+
+exports.huanSanZhang = function(userId,p1,p2,p3){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var game = seatData.game;
+ if(game.state != "huanpai"){
+ console.log("can't recv huansanzhang when game.state == " + game.state);
+ return;
+ }
+
+ if(seatData.huanpais != null){
+ console.log("player has done this action.");
+ return;
+ }
+
+ if(seatData.countMap[p1] == null || seatData.countMap[p1] == 0){
+ return;
+ }
+ seatData.countMap[p1]--;
+
+ if(seatData.countMap[p2] == null || seatData.countMap[p2] == 0){
+ seatData.countMap[p1]++;
+ return;
+ }
+ seatData.countMap[p2]--;
+
+ if(seatData.countMap[p3] == null || seatData.countMap[p3] == 0){
+ seatData.countMap[p1]++;
+ seatData.countMap[p2]++;
+ return;
+ }
+
+ seatData.countMap[p1]++;
+ seatData.countMap[p2]++;
+
+ seatData.huanpais = [p1,p2,p3];
+
+ for(var i = 0; i < seatData.huanpais.length; ++i){
+ var p = seatData.huanpais[i];
+ var idx = seatData.holds.indexOf(p);
+ seatData.holds.splice(idx,1);
+ seatData.countMap[p] --;
+ }
+ userMgr.sendMsg(seatData.userId,'game_holds_push',seatData.holds);
+
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var sd = game.gameSeats[i];
+ if(sd == seatData){
+ var rd = {
+ si:seatData.userId,
+ huanpais:seatData.huanpais
+ };
+ userMgr.sendMsg(sd.userId,'huanpai_notify',rd);
+ }
+ else{
+ var rd = {
+ si:seatData.userId,
+ huanpais:[]
+ };
+ userMgr.sendMsg(sd.userId,'huanpai_notify',rd);
+ }
+ }
+
+
+ //如果还有未换牌的玩家,则继承等待
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ if(game.gameSeats[i].huanpais == null){
+ return;
+ }
+ }
+
+
+ //换牌函数
+ var fn = function(s1,huanjin){
+ for(var i = 0; i < huanjin.length; ++i){
+ var p = huanjin[i];
+ s1.holds.push(p);
+ if(s1.countMap[p] == null){
+ s1.countMap[p] = 0;
+ }
+ s1.countMap[p] ++;
+ }
+ }
+
+ //开始换牌
+ var f = Math.random();
+ var s = game.gameSeats;
+ var huanpaiMethod = 0;
+ //对家换牌
+ if(f < 0.33){
+ fn(s[0],s[2].huanpais);
+ fn(s[1],s[3].huanpais);
+ fn(s[2],s[0].huanpais);
+ fn(s[3],s[1].huanpais);
+ huanpaiMethod = 0;
+ }
+ //换下家的牌
+ else if(f < 0.66){
+ fn(s[0],s[1].huanpais);
+ fn(s[1],s[2].huanpais);
+ fn(s[2],s[3].huanpais);
+ fn(s[3],s[0].huanpais);
+ huanpaiMethod = 1;
+ }
+ //换上家的牌
+ else{
+ fn(s[0],s[3].huanpais);
+ fn(s[1],s[0].huanpais);
+ fn(s[2],s[1].huanpais);
+ fn(s[3],s[2].huanpais);
+ huanpaiMethod = 2;
+ }
+
+ var rd = {
+ method:huanpaiMethod,
+ }
+ game.huanpaiMethod = huanpaiMethod;
+
+ game.state = "dingque";
+ for(var i = 0; i < s.length; ++i){
+ var userId = s[i].userId;
+ userMgr.sendMsg(userId,'game_huanpai_over_push',rd);
+
+ userMgr.sendMsg(userId,'game_holds_push',s[i].holds);
+ //通知准备定缺
+ userMgr.sendMsg(userId,'game_dingque_push');
+ }
+};
+
+exports.dingQue = function(userId,type){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var game = seatData.game;
+ if(game.state != "dingque"){
+ console.log("can't recv dingQue when game.state == " + game.state);
+ return;
+ }
+
+ if(seatData.que < 0){
+ game.numOfQue++;
+ }
+
+ seatData.que = type;
+
+
+ //检查玩家可以做的动作
+ //如果4个人都定缺了,通知庄家出牌
+ if(game.numOfQue == 4){
+ construct_game_base_info(game);
+
+ var arr = [1,1,1,1];
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ arr[i] = game.gameSeats[i].que;
+ }
+ userMgr.broacastInRoom('game_dingque_finish_push',arr,seatData.userId,true);
+ userMgr.broacastInRoom('game_playing_push',null,seatData.userId,true);
+
+ //进行听牌检查
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var duoyu = -1;
+ var gs = game.gameSeats[i];
+ if(gs.holds.length == 14){
+ duoyu = gs.holds.pop();
+ gs.countMap[duoyu] -= 1;
+ }
+ checkCanTingPai(game,gs);
+ if(duoyu >= 0){
+ gs.holds.push(duoyu);
+ gs.countMap[duoyu] ++;
+ }
+ }
+
+ var turnSeat = game.gameSeats[game.turn];
+ game.state = "playing";
+ //通知玩家出牌方
+ turnSeat.canChuPai = true;
+ userMgr.broacastInRoom('game_chupai_push',turnSeat.userId,turnSeat.userId,true);
+ //检查是否可以暗杠或者胡
+ //直杠
+ checkCanAnGang(game,turnSeat);
+ //检查胡 用最后一张来检查
+ checkCanHu(game,turnSeat,turnSeat.holds[turnSeat.holds.length - 1]);
+ //通知前端
+ sendOperations(game,turnSeat,game.chuPai);
+ }
+ else{
+ userMgr.broacastInRoom('game_dingque_notify_push',seatData.userId,seatData.userId,true);
+ }
+};
+
+exports.chuPai = function(userId,pai){
+
+ pai = Number.parseInt(pai);
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var game = seatData.game;
+ var seatIndex = seatData.seatIndex;
+ //如果不该他出,则忽略
+ if(game.turn != seatData.seatIndex){
+ console.log("not your turn.");
+ return;
+ }
+
+ if(seatData.canChuPai == false){
+ console.log('no need chupai.');
+ return;
+ }
+
+ if(hasOperations(seatData)){
+ console.log('plz guo before you chupai.');
+ return;
+ }
+
+ //如果是胡了的人,则只能打最后一张牌
+ if(seatData.hued){
+ if(seatData.holds[seatData.holds.length - 1] != pai){
+ console.log('only deal last one when hued.');
+ return;
+ }
+ }
+
+ //从此人牌中扣除
+ var index = seatData.holds.indexOf(pai);
+ if(index == -1){
+ console.log("holds:" + seatData.holds);
+ console.log("can't find mj." + pai);
+ return;
+ }
+
+ seatData.canChuPai = false;
+ game.chupaiCnt ++;
+ seatData.guoHuFan = -1;
+
+ seatData.holds.splice(index,1);
+ seatData.countMap[pai] --;
+ game.chuPai = pai;
+ recordGameAction(game,seatData.seatIndex,ACTION_CHUPAI,pai);
+ checkCanTingPai(game,seatData);
+ userMgr.broacastInRoom('game_chupai_notify_push',{userId:seatData.userId,pai:pai},seatData.userId,true);
+
+ //如果出的牌可以胡,则算过胡
+ if(seatData.tingMap[game.chuPai]){
+ seatData.guoHuFan = seatData.tingMap[game.chuPai].fan;
+ }
+
+ //检查是否有人要胡,要碰 要杠
+ var hasActions = false;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ //玩家自己不检查
+ if(game.turn == i){
+ continue;
+ }
+ var ddd = game.gameSeats[i];
+ //未胡牌的才检查杠和碰
+ if(!ddd.hued){
+ checkCanPeng(game,ddd,pai);
+ checkCanDianGang(game,ddd,pai);
+ }
+
+ checkCanHu(game,ddd,pai);
+ if(seatData.lastFangGangSeat == -1){
+ if(ddd.canHu && ddd.guoHuFan >= 0 && ddd.tingMap[pai].fan <= ddd.guoHuFan){
+ console.log("ddd.guoHuFan:" + ddd.guoHuFan);
+ ddd.canHu = false;
+ userMgr.sendMsg(ddd.userId,'guohu_push');
+ }
+ }
+
+ if(hasOperations(ddd)){
+ sendOperations(game,ddd,game.chuPai);
+ hasActions = true;
+ }
+ }
+
+ //如果没有人有操作,则向下一家发牌,并通知他出牌
+ if(!hasActions){
+ setTimeout(function(){
+ userMgr.broacastInRoom('guo_notify_push',{userId:seatData.userId,pai:game.chuPai},seatData.userId,true);
+ seatData.folds.push(game.chuPai);
+ game.chuPai = -1;
+ moveToNextUser(game);
+ doUserMoPai(game);
+ },500);
+ }
+};
+
+exports.peng = function(userId){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var game = seatData.game;
+
+ //如果是他出的牌,则忽略
+ if(game.turn == seatData.seatIndex){
+ console.log("it's your turn.");
+ return;
+ }
+
+ //如果没有碰的机会,则不能再碰
+ if(seatData.canPeng == false){
+ console.log("seatData.peng == false");
+ return;
+ }
+
+ //和的了,就不要再来了
+ if(seatData.hued){
+ console.log('you have already hued. no kidding plz.');
+ return;
+ }
+
+ //如果有人可以胡牌,则需要等待
+ var i = game.turn;
+ while(true){
+ var i = (i + 1)%4;
+ if(i == game.turn){
+ break;
+ }
+ else{
+ var ddd = game.gameSeats[i];
+ if(ddd.canHu && i != seatData.seatIndex){
+ return;
+ }
+ }
+ }
+
+
+ clearAllOptions(game);
+
+ //验证手上的牌的数目
+ var pai = game.chuPai;
+ var c = seatData.countMap[pai];
+ if(c == null || c < 2){
+ console.log("pai:" + pai + ",count:" + c);
+ console.log(seatData.holds);
+ console.log("lack of mj.");
+ return;
+ }
+
+ //进行碰牌处理
+ //扣掉手上的牌
+ //从此人牌中扣除
+ for(var i = 0; i < 2; ++i){
+ var index = seatData.holds.indexOf(pai);
+ if(index == -1){
+ console.log("can't find mj.");
+ return;
+ }
+ seatData.holds.splice(index,1);
+ seatData.countMap[pai] --;
+ }
+ seatData.pengs.push(pai);
+ game.chuPai = -1;
+
+ recordGameAction(game,seatData.seatIndex,ACTION_PENG,pai);
+
+ //广播通知其它玩家
+ userMgr.broacastInRoom('peng_notify_push',{userid:seatData.userId,pai:pai},seatData.userId,true);
+
+ //碰的玩家打牌
+ moveToNextUser(game,seatData.seatIndex);
+
+ //广播通知玩家出牌方
+ seatData.canChuPai = true;
+ userMgr.broacastInRoom('game_chupai_push',seatData.userId,seatData.userId,true);
+};
+
+exports.isPlaying = function(userId){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ return false;
+ }
+
+ var game = seatData.game;
+
+ if(game.state == "idle"){
+ return false;
+ }
+ return true;
+}
+
+function checkCanQiangGang(game,turnSeat,seatData,pai){
+ var hasActions = false;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ //杠牌者不检查
+ if(seatData.seatIndex == i){
+ continue;
+ }
+ var ddd = game.gameSeats[i];
+ checkCanHu(game,ddd,pai);
+ if(ddd.canHu){
+ sendOperations(game,ddd,pai);
+ hasActions = true;
+ }
+ }
+ if(hasActions){
+ game.qiangGangContext = {
+ turnSeat:turnSeat,
+ seatData:seatData,
+ pai:pai,
+ isValid:true,
+ }
+ }
+ else{
+ game.qiangGangContext = null;
+ }
+ return game.qiangGangContext != null;
+}
+
+function doGang(game,turnSeat,seatData,gangtype,numOfCnt,pai){
+ var seatIndex = seatData.seatIndex;
+ var gameTurn = turnSeat.seatIndex;
+
+ var isZhuanShouGang = false;
+ if(gangtype == "wangang"){
+ var idx = seatData.pengs.indexOf(pai);
+ if(idx >= 0){
+ seatData.pengs.splice(idx,1);
+ }
+
+ //如果最后一张牌不是杠的牌,则认为是转手杠
+ if(seatData.holds[seatData.holds.length - 1] != pai){
+ isZhuanShouGang = true;
+ }
+ }
+ //进行碰牌处理
+ //扣掉手上的牌
+ //从此人牌中扣除
+ for(var i = 0; i < numOfCnt; ++i){
+ var index = seatData.holds.indexOf(pai);
+ if(index == -1){
+ console.log(seatData.holds);
+ console.log("can't find mj.");
+ return;
+ }
+ seatData.holds.splice(index,1);
+ seatData.countMap[pai] --;
+ }
+
+ recordGameAction(game,seatData.seatIndex,ACTION_GANG,pai);
+
+ //记录下玩家的杠牌
+ if(gangtype == "angang"){
+ seatData.angangs.push(pai);
+ var ac = recordUserAction(game,seatData,"angang");
+ ac.score = game.conf.baseScore*2;
+ }
+ else if(gangtype == "diangang"){
+ seatData.diangangs.push(pai);
+ var ac = recordUserAction(game,seatData,"diangang",gameTurn);
+ ac.score = game.conf.baseScore*2;
+ var fs = turnSeat;
+ recordUserAction(game,fs,"fanggang",seatIndex);
+ }
+ else if(gangtype == "wangang"){
+ seatData.wangangs.push(pai);
+ if(isZhuanShouGang == false){
+ var ac = recordUserAction(game,seatData,"wangang");
+ ac.score = game.conf.baseScore;
+ }
+ else{
+ recordUserAction(game,seatData,"zhuanshougang");
+ }
+
+ }
+
+ checkCanTingPai(game,seatData);
+ //通知其他玩家,有人杠了牌
+ userMgr.broacastInRoom('gang_notify_push',{userid:seatData.userId,pai:pai,gangtype:gangtype},seatData.userId,true);
+
+ //变成自己的轮子
+ moveToNextUser(game,seatIndex);
+ //再次摸牌
+ doUserMoPai(game);
+
+ //只能放在这里。因为过手就会清除杠牌标记
+ seatData.lastFangGangSeat = gameTurn;
+}
+
+exports.gang = function(userId,pai){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var seatIndex = seatData.seatIndex;
+ var game = seatData.game;
+
+ //如果没有杠的机会,则不能再杠
+ if(seatData.canGang == false) {
+ console.log("seatData.gang == false");
+ return;
+ }
+
+ var numOfCnt = seatData.countMap[pai];
+
+ //胡了的,只能直杠
+ if(numOfCnt != 1 && seatData.hued){
+ console.log('you have already hued. no kidding plz.');
+ return;
+ }
+
+ if(seatData.gangPai.indexOf(pai) == -1){
+ console.log("the given pai can't be ganged.");
+ return;
+ }
+
+ //如果有人可以胡牌,则需要等待
+ var i = game.turn;
+ while(true){
+ var i = (i + 1)%4;
+ if(i == game.turn){
+ break;
+ }
+ else{
+ var ddd = game.gameSeats[i];
+ if(ddd.canHu && i != seatData.seatIndex){
+ return;
+ }
+ }
+ }
+
+
+
+ var gangtype = ""
+ //弯杠 去掉碰牌
+ if(numOfCnt == 1){
+ gangtype = "wangang"
+ }
+ else if(numOfCnt == 3){
+ gangtype = "diangang"
+ }
+ else if(numOfCnt == 4){
+ gangtype = "angang";
+ }
+ else{
+ console.log("invalid pai count.");
+ return;
+ }
+
+ game.chuPai = -1;
+ clearAllOptions(game);
+ seatData.canChuPai = false;
+
+ userMgr.broacastInRoom('hangang_notify_push',seatIndex,seatData.userId,true);
+
+ //如果是弯杠,则需要检查是否可以抢杠
+ var turnSeat = game.gameSeats[game.turn];
+ if(numOfCnt == 1){
+ var canQiangGang = checkCanQiangGang(game,turnSeat,seatData,pai);
+ if(canQiangGang){
+ return;
+ }
+ }
+
+ doGang(game,turnSeat,seatData,gangtype,numOfCnt,pai);
+};
+
+exports.hu = function(userId){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var seatIndex = seatData.seatIndex;
+ var game = seatData.game;
+
+ //如果他不能和牌,那和个啥啊
+ if(seatData.canHu == false){
+ console.log("invalid request.");
+ return;
+ }
+
+ //标记为和牌
+ seatData.hued = true;
+ var hupai = game.chuPai;
+ var isZimo = false;
+
+ var turnSeat = game.gameSeats[game.turn];
+
+ var huData = {
+ ishupai:true,
+ pai:-1,
+ action:null,
+ isGangHu:false,
+ isQiangGangHu:false,
+ iszimo:false,
+ target:-1,
+ fan:0,
+ pattern:null,
+ isHaiDiHu:false,
+ isTianHu:false,
+ isDiHu:false,
+ };
+
+ huData.numofgen = getNumOfGen(seatData);
+
+ seatData.huInfo.push(huData);
+
+ huData.isGangHu = turnSeat.lastFangGangSeat >= 0;
+ var notify = -1;
+
+ if(game.qiangGangContext != null){
+ hupai = game.qiangGangContext.pai;
+ var gangSeat = game.qiangGangContext.seatData;
+ notify = hupai;
+ huData.iszimo = false;
+ huData.action = "qiangganghu";
+ huData.isQiangGangHu = true;
+ huData.target = gangSeat.seatIndex;
+ huData.pai = hupai;
+
+ recordGameAction(game,seatIndex,ACTION_HU,hupai);
+ game.qiangGangContext.isValid = false;
+
+ var idx = gangSeat.holds.indexOf(hupai);
+ if(idx != -1){
+ gangSeat.holds.splice(idx,1);
+ gangSeat.countMap[hupai]--;
+ userMgr.sendMsg(gangSeat.userId,'game_holds_push',gangSeat.holds);
+ }
+
+ gangSeat.huInfo.push({
+ action:"beiqianggang",
+ target:seatData.seatIndex,
+ index:seatData.huInfo.length-1,
+ });
+ }
+ else if(game.chuPai == -1){
+ hupai = seatData.holds.pop();
+ seatData.countMap[hupai] --;
+ notify = hupai;
+ huData.pai = hupai;
+ if(huData.isGangHu){
+ if(turnSeat.lastFangGangSeat == seatIndex){
+ huData.action = "ganghua";
+ huData.iszimo = true;
+ }
+ else{
+ var diangganghua_zimo = game.conf.dianganghua == 1;
+ huData.action = "dianganghua";
+ huData.iszimo = diangganghua_zimo;
+ huData.target = turnSeat.lastFangGangSeat;
+ }
+ }
+ else{
+ huData.action = "zimo";
+ huData.iszimo = true;
+ }
+
+ isZimo = true;
+ recordGameAction(game,seatIndex,ACTION_ZIMO,hupai);
+ }
+ else{
+ notify = game.chuPai;
+ huData.pai = hupai;
+
+ var at = "hu";
+ //炮胡
+ if(turnSeat.lastFangGangSeat >= 0){
+ at = "gangpaohu";
+ }
+
+ huData.action = at;
+ huData.iszimo = false;
+ huData.target = game.turn;
+
+ //毛转雨
+ if(turnSeat.lastFangGangSeat >= 0){
+ for(var i = turnSeat.actions.length-1; i >= 0; --i){
+ var t = turnSeat.actions[i];
+ if(t.type == "diangang" || t.type == "wangang" || t.type == "angang"){
+ t.state = "nop";
+ t.payTimes = 0;
+
+ var nac = {
+ type:"maozhuanyu",
+ owner:turnSeat,
+ ref:t
+ }
+ seatData.actions.push(nac);
+ break;
+ }
+ }
+ }
+
+ //记录玩家放炮信息
+ var fs = game.gameSeats[game.turn];
+ if(at == "gangpaohu"){
+ at = "gangpao";
+ }
+ else{
+ at = "fangpao";
+ }
+ fs.huInfo.push({
+ action:at,
+ target:seatData.seatIndex,
+ index:seatData.huInfo.length-1,
+ });
+
+ recordGameAction(game,seatIndex,ACTION_HU,hupai);
+
+ game.fangpaoshumu++;
+
+ if(game.fangpaoshumu > 1){
+ game.yipaoduoxiang = seatIndex;
+ }
+ }
+
+ if(game.firstHupai < 0){
+ game.firstHupai = seatIndex;
+ }
+
+ //保存番数
+ var ti = seatData.tingMap[hupai];
+ huData.fan = ti.fan;
+ huData.pattern = ti.pattern;
+ huData.iszimo = isZimo;
+ //如果是最后一张牌,则认为是海底胡
+ huData.isHaiDiHu = game.currentIndex == game.mahjongs.length;
+
+ if(game.conf.tiandihu){
+ if(game.chupaiCnt == 0 && game.button == seatData.seatIndex && game.chuPai == -1){
+ huData.isTianHu = true;
+ }
+ else if(game.chupaiCnt == 1 && game.turn == game.button && game.button != seatData.seatIndex && game.chuPai != -1){
+ huData.isDiHu = true;
+ }
+ }
+
+ clearAllOptions(game,seatData);
+
+ //通知前端,有人和牌了
+ userMgr.broacastInRoom('hu_push',{seatindex:seatIndex,iszimo:isZimo,hupai:notify},seatData.userId,true);
+
+ //
+ if(game.lastHuPaiSeat == -1){
+ game.lastHuPaiSeat = seatIndex;
+ }
+ else{
+ var lp = (game.lastFangGangSeat - game.turn + 4) % 4;
+ var cur = (seatData.seatIndex - game.turn + 4) % 4;
+ if(cur > lp){
+ game.lastHuPaiSeat = seatData.seatIndex;
+ }
+ }
+
+ //清空所有非胡牌操作
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ddd = game.gameSeats[i];
+ ddd.canPeng = false;
+ ddd.canGang = false;
+ ddd.canChuPai = false;
+ sendOperations(game,ddd,hupai);
+ }
+
+ //如果还有人可以胡牌,则等待
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ddd = game.gameSeats[i];
+ if(ddd.canHu){
+ return;
+ }
+ }
+
+ //和牌的下家继续打
+ clearAllOptions(game);
+ game.turn = game.lastHuPaiSeat;
+ moveToNextUser(game);
+ doUserMoPai(game);
+};
+
+exports.guo = function(userId){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var seatIndex = seatData.seatIndex;
+ var game = seatData.game;
+
+ //如果玩家没有对应的操作,则也认为是非法消息
+ if((seatData.canGang || seatData.canPeng || seatData.canHu) == false){
+ console.log("no need guo.");
+ return;
+ }
+
+ //如果是玩家自己的轮子,不是接牌,则不需要额外操作
+ var doNothing = game.chuPai == -1 && game.turn == seatIndex;
+
+ userMgr.sendMsg(seatData.userId,"guo_result");
+ clearAllOptions(game,seatData);
+
+ //这里还要处理过胡的情况
+ if(game.chuPai >= 0 && seatData.canHu){
+ seatData.guoHuFan = seatData.tingMap[game.chuPai].fan;
+ }
+
+ if(doNothing){
+ return;
+ }
+
+ //如果还有人可以操作,则等待
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ddd = game.gameSeats[i];
+ if(hasOperations(ddd)){
+ return;
+ }
+ }
+
+ //如果是已打出的牌,则需要通知。
+ if(game.chuPai >= 0){
+ var uid = game.gameSeats[game.turn].userId;
+ userMgr.broacastInRoom('guo_notify_push',{userId:uid,pai:game.chuPai},seatData.userId,true);
+ seatData.folds.push(game.chuPai);
+ game.chuPai = -1;
+ }
+
+
+ var qiangGangContext = game.qiangGangContext;
+ //清除所有的操作
+ clearAllOptions(game);
+
+ if(qiangGangContext != null && qiangGangContext.isValid){
+ doGang(game,qiangGangContext.turnSeat,qiangGangContext.seatData,"wangang",1,qiangGangContext.pai);
+ }
+ else{
+ //下家摸牌
+ moveToNextUser(game);
+ doUserMoPai(game);
+ }
+};
+
+exports.hasBegan = function(roomId){
+ var game = games[roomId];
+ if(game != null){
+ return true;
+ }
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo != null){
+ return roomInfo.numOfGames > 0;
+ }
+ return false;
+};
+
+
+var dissolvingList = [];
+
+exports.doDissolve = function(roomId){
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return null;
+ }
+
+ var game = games[roomId];
+ doGameOver(game,roomInfo.seats[0].userId,true);
+};
+
+exports.dissolveRequest = function(roomId,userId){
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return null;
+ }
+
+ if(roomInfo.dr != null){
+ return null;
+ }
+
+ var seatIndex = roomMgr.getUserSeat(userId);
+ if(seatIndex == null){
+ return null;
+ }
+
+ roomInfo.dr = {
+ endTime:Date.now() + 30000,
+ states:[false,false,false,false]
+ };
+ roomInfo.dr.states[seatIndex] = true;
+
+ dissolvingList.push(roomId);
+
+ return roomInfo;
+};
+
+exports.dissolveAgree = function(roomId,userId,agree){
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return null;
+ }
+
+ if(roomInfo.dr == null){
+ return null;
+ }
+
+ var seatIndex = roomMgr.getUserSeat(userId);
+ if(seatIndex == null){
+ return null;
+ }
+
+ if(agree){
+ roomInfo.dr.states[seatIndex] = true;
+ }
+ else{
+ roomInfo.dr = null;
+ var idx = dissolvingList.indexOf(roomId);
+ if(idx != -1){
+ dissolvingList.splice(idx,1);
+ }
+ }
+ return roomInfo;
+};
+
+
+
+function update() {
+ for(var i = dissolvingList.length - 1; i >= 0; --i){
+ var roomId = dissolvingList[i];
+
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo != null && roomInfo.dr != null){
+ if(Date.now() > roomInfo.dr.endTime){
+ console.log("delete room and games");
+ exports.doDissolve(roomId);
+ dissolvingList.splice(i,1);
+ }
+ }
+ else{
+ dissolvingList.splice(i,1);
+ }
+ }
+}
+
+setInterval(update,1000);
\ No newline at end of file
diff --git a/server/game_server/gamemgr_xzdd.js b/server/game_server/gamemgr_xzdd.js
new file mode 100755
index 0000000..3fcf911
--- /dev/null
+++ b/server/game_server/gamemgr_xzdd.js
@@ -0,0 +1,2299 @@
+var roomMgr = require("./roommgr");
+var userMgr = require("./usermgr");
+var mjutils = require('./mjutils');
+var db = require("../utils/db");
+var crypto = require("../utils/crypto");
+var games = {};
+var gamesIdBase = 0;
+
+var ACTION_CHUPAI = 1;
+var ACTION_MOPAI = 2;
+var ACTION_PENG = 3;
+var ACTION_GANG = 4;
+var ACTION_HU = 5;
+var ACTION_ZIMO = 6;
+
+var gameSeatsOfUsers = {};
+
+function getMJType(id){
+ if(id >= 0 && id < 9){
+ //筒
+ return 0;
+ }
+ else if(id >= 9 && id < 18){
+ //条
+ return 1;
+ }
+ else if(id >= 18 && id < 27){
+ //万
+ return 2;
+ }
+}
+
+function shuffle(game) {
+
+ var mahjongs = game.mahjongs;
+
+ /*
+ var idx = 0;
+ for(var i = 0; i < 12; ++i){
+ game.mahjongs[idx++] = 0;
+ }
+
+ for(var i = 0; i < 12; ++i){
+ game.mahjongs[idx++] = 1;
+ }
+
+ for(var i = 0; i < 12; ++i){
+ game.mahjongs[idx++] = 2;
+ }
+
+ for(var i = 0; i < 12; ++i){
+ game.mahjongs[idx++] = 3;
+ }
+
+
+ for(var i = idx; i < game.mahjongs.length; ++i){
+ game.mahjongs[i] = 4;
+ }
+ return;
+ */
+
+ //筒 (0 ~ 8 表示筒子
+ var index = 0;
+ for(var i = 0; i < 9; ++i){
+ for(var c = 0; c < 4; ++c){
+ mahjongs[index] = i;
+ index++;
+ }
+ }
+
+ //条 9 ~ 17表示条子
+ for(var i = 9; i < 18; ++i){
+ for(var c = 0; c < 4; ++c){
+ mahjongs[index] = i;
+ index++;
+ }
+ }
+
+ //万
+ //条 18 ~ 26表示万
+ for(var i = 18; i < 27; ++i){
+ for(var c = 0; c < 4; ++c){
+ mahjongs[index] = i;
+ index++;
+ }
+ }
+
+ for(var i = 0; i < mahjongs.length; ++i){
+ var lastIndex = mahjongs.length - 1 - i;
+ var index = Math.floor(Math.random() * lastIndex);
+ var t = mahjongs[index];
+ mahjongs[index] = mahjongs[lastIndex];
+ mahjongs[lastIndex] = t;
+ }
+}
+
+function mopai(game,seatIndex) {
+ if(game.currentIndex == game.mahjongs.length){
+ return -1;
+ }
+ var data = game.gameSeats[seatIndex];
+ var mahjongs = data.holds;
+ var pai = game.mahjongs[game.currentIndex];
+ mahjongs.push(pai);
+
+ //统计牌的数目 ,用于快速判定(空间换时间)
+ var c = data.countMap[pai];
+ if(c == null) {
+ c = 0;
+ }
+ data.countMap[pai] = c + 1;
+ game.currentIndex ++;
+ return pai;
+}
+
+function deal(game){
+ //强制清0
+ game.currentIndex = 0;
+
+ //每人13张 一共 13*4 = 52张 庄家多一张 53张
+ var seatIndex = game.button;
+ for(var i = 0; i < 52; ++i){
+ var mahjongs = game.gameSeats[seatIndex].holds;
+ if(mahjongs == null){
+ mahjongs = [];
+ game.gameSeats[seatIndex].holds = mahjongs;
+ }
+ mopai(game,seatIndex);
+ seatIndex ++;
+ seatIndex %= 4;
+ }
+
+ //庄家多摸最后一张
+ mopai(game,game.button);
+ //当前轮设置为庄家
+ game.turn = game.button;
+}
+
+//检查是否可以碰
+function checkCanPeng(game,seatData,targetPai) {
+ if(getMJType(targetPai) == seatData.que){
+ return;
+ }
+ var count = seatData.countMap[targetPai];
+ if(count != null && count >= 2){
+ seatData.canPeng = true;
+ }
+}
+
+//检查是否可以点杠
+function checkCanDianGang(game,seatData,targetPai){
+ //检查玩家手上的牌
+ //如果没有牌了,则不能再杠
+ if(game.mahjongs.length <= game.currentIndex){
+ return;
+ }
+ if(getMJType(targetPai) == seatData.que){
+ return;
+ }
+ var count = seatData.countMap[targetPai];
+ if(count != null && count >= 3){
+ seatData.canGang = true;
+ seatData.gangPai.push(targetPai);
+ return;
+ }
+}
+
+//检查是否可以暗杠
+function checkCanAnGang(game,seatData){
+ //如果没有牌了,则不能再杠
+ if(game.mahjongs.length <= game.currentIndex){
+ return;
+ }
+
+ for(var key in seatData.countMap){
+ var pai = parseInt(key);
+ if(getMJType(pai) != seatData.que){
+ var c = seatData.countMap[key];
+ if(c != null && c == 4){
+ seatData.canGang = true;
+ seatData.gangPai.push(pai);
+ }
+ }
+ }
+}
+
+//检查是否可以弯杠(自己摸起来的时候)
+function checkCanWanGang(game,seatData){
+ //如果没有牌了,则不能再杠
+ if(game.mahjongs.length <= game.currentIndex){
+ return;
+ }
+
+ //从碰过的牌中选
+ for(var i = 0; i < seatData.pengs.length; ++i){
+ var pai = seatData.pengs[i];
+ if(seatData.countMap[pai] == 1){
+ seatData.canGang = true;
+ seatData.gangPai.push(pai);
+ }
+ }
+}
+
+function checkCanHu(game,seatData,targetPai) {
+ game.lastHuPaiSeat = -1;
+ if(getMJType(targetPai) == seatData.que){
+ return;
+ }
+ seatData.canHu = false;
+ for(var k in seatData.tingMap){
+ if(targetPai == k){
+ seatData.canHu = true;
+ }
+ }
+}
+
+function clearAllOptions(game,seatData){
+ var fnClear = function(sd){
+ sd.canPeng = false;
+ sd.canGang = false;
+ sd.gangPai = [];
+ sd.canHu = false;
+ sd.lastFangGangSeat = -1;
+ }
+ if(seatData){
+ fnClear(seatData);
+ }
+ else{
+ game.qiangGangContext = null;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ fnClear(game.gameSeats[i]);
+ }
+ }
+}
+
+//检查听牌
+function checkCanTingPai(game,seatData){
+ seatData.tingMap = {};
+
+ //检查手上的牌是不是已打缺,如果未打缺,则不进行判定
+ for(var i = 0; i < seatData.holds.length; ++i){
+ var pai = seatData.holds[i];
+ if(getMJType(pai) == seatData.que){
+ return;
+ }
+ }
+
+ //检查是否是七对 前提是没有碰,也没有杠 ,即手上拥有13张牌
+ if(seatData.holds.length == 13){
+ //有5对牌
+ var hu = false;
+ var danPai = -1;
+ var pairCount = 0;
+ for(var k in seatData.countMap){
+ var c = seatData.countMap[k];
+ if( c == 2 || c == 3){
+ pairCount++;
+ }
+ else if(c == 4){
+ pairCount += 2;
+ }
+
+ if(c == 1 || c == 3){
+ //如果已经有单牌了,表示不止一张单牌,并没有下叫。直接闪
+ if(danPai >= 0){
+ break;
+ }
+ danPai = k;
+ }
+ }
+
+ //检查是否有6对 并且单牌是不是目标牌
+ if(pairCount == 6){
+ //七对只能和一张,就是手上那张单牌
+ //七对的番数= 2番+N个4个牌(即龙七对)
+ seatData.tingMap[danPai] = {
+ fan:2,
+ pattern:"7pairs"
+ };
+ //如果是,则直接返回咯
+ }
+ }
+
+ //检查是否是对对胡 由于四川麻将没有吃,所以只需要检查手上的牌
+ //对对胡叫牌有两种情况
+ //1、N坎 + 1张单牌
+ //2、N-1坎 + 两对牌
+ var singleCount = 0;
+ var colCount = 0;
+ var pairCount = 0;
+ var arr = [];
+ for(var k in seatData.countMap){
+ var c = seatData.countMap[k];
+ if(c == 1){
+ singleCount++;
+ arr.push(k);
+ }
+ else if(c == 2){
+ pairCount++;
+ arr.push(k);
+ }
+ else if(c == 3){
+ colCount++;
+ }
+ else if(c == 4){
+ //手上有4个一样的牌,在四川麻将中是和不了对对胡的 随便加点东西
+ singleCount++;
+ pairCount+=2;
+ }
+ }
+
+ if((pairCount == 2 && singleCount == 0) || (pairCount == 0 && singleCount == 1) ){
+ for(var i = 0; i < arr.length; ++ i){
+ //对对胡1番
+ var p = arr[i];
+ if(seatData.tingMap[p] == null){
+ seatData.tingMap[p] = {
+ pattern:"duidui",
+ fan:1
+ };
+ }
+ }
+ }
+
+ //console.log(seatData.holds);
+ //console.log(seatData.countMap);
+ //console.log("singleCount:" + singleCount + ",colCount:" + colCount + ",pairCount:" + pairCount);
+ //检查是不是平胡
+ if(seatData.que != 0){
+ mjutils.checkTingPai(seatData,0,9);
+ }
+
+ if(seatData.que != 1){
+ mjutils.checkTingPai(seatData,9,18);
+ }
+
+ if(seatData.que != 2){
+ mjutils.checkTingPai(seatData,18,27);
+ }
+}
+
+function getSeatIndex(userId){
+ var seatIndex = roomMgr.getUserSeat(userId);
+ if(seatIndex == null){
+ return null;
+ }
+ return seatIndex;
+}
+
+function getGameByUserID(userId){
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return null;
+ }
+ var game = games[roomId];
+ return game;
+}
+
+function hasOperations(seatData){
+ if(seatData.canGang || seatData.canPeng || seatData.canHu){
+ return true;
+ }
+ return false;
+}
+
+function sendOperations(game,seatData,pai) {
+ if(hasOperations(seatData)){
+ if(pai == -1){
+ pai = seatData.holds[seatData.holds.length - 1];
+ }
+
+ var data = {
+ pai:pai,
+ hu:seatData.canHu,
+ peng:seatData.canPeng,
+ gang:seatData.canGang,
+ gangpai:seatData.gangPai
+ };
+
+ //如果可以有操作,则进行操作
+ userMgr.sendMsg(seatData.userId,'game_action_push',data);
+
+ data.si = seatData.seatIndex;
+ }
+ else{
+ userMgr.sendMsg(seatData.userId,'game_action_push');
+ }
+}
+
+function moveToNextUser(game,nextSeat){
+ game.fangpaoshumu = 0;
+ //找到下一个没有和牌的玩家
+ if(nextSeat == null){
+ while(true){
+ game.turn ++;
+ game.turn %= 4;
+ var turnSeat = game.gameSeats[game.turn];
+ if(turnSeat.hued == false){
+ return;
+ }
+ }
+ }
+ else{
+ game.turn = nextSeat;
+ }
+}
+
+function doUserMoPai(game){
+ game.chuPai = -1;
+ var turnSeat = game.gameSeats[game.turn];
+ turnSeat.lastFangGangSeat = -1;
+ turnSeat.guoHuFan = -1;
+ var pai = mopai(game,game.turn);
+ //牌摸完了,结束
+ if(pai == -1){
+ doGameOver(game,turnSeat.userId);
+ return;
+ }
+ else{
+ var numOfMJ = game.mahjongs.length - game.currentIndex;
+ userMgr.broacastInRoom('mj_count_push',numOfMJ,turnSeat.userId,true);
+ }
+
+ recordGameAction(game,game.turn,ACTION_MOPAI,pai);
+
+ //通知前端新摸的牌
+ userMgr.sendMsg(turnSeat.userId,'game_mopai_push',pai);
+ //检查是否可以暗杠或者胡
+ //检查胡,直杠,弯杠
+ checkCanAnGang(game,turnSeat);
+ checkCanWanGang(game,turnSeat,pai);
+
+ //检查看是否可以和
+ checkCanHu(game,turnSeat,pai);
+
+ //广播通知玩家出牌方
+ turnSeat.canChuPai = true;
+ userMgr.broacastInRoom('game_chupai_push',turnSeat.userId,turnSeat.userId,true);
+
+ //通知玩家做对应操作
+ sendOperations(game,turnSeat,game.chuPai);
+}
+
+function isSameType(type,arr){
+ for(var i = 0; i < arr.length; ++i){
+ var t = getMJType(arr[i]);
+ if(type != -1 && type != t){
+ return false;
+ }
+ type = t;
+ }
+ return true;
+}
+
+function isQingYiSe(gameSeatData){
+ var type = getMJType(gameSeatData.holds[0]);
+
+ //检查手上的牌
+ if(isSameType(type,gameSeatData.holds) == false){
+ return false;
+ }
+
+ //检查杠下的牌
+ if(isSameType(type,gameSeatData.angangs) == false){
+ return false;
+ }
+ if(isSameType(type,gameSeatData.wangangs) == false){
+ return false;
+ }
+ if(isSameType(type,gameSeatData.diangangs) == false){
+ return false;
+ }
+
+ //检查碰牌
+ if(isSameType(type,gameSeatData.pengs) == false){
+ return false;
+ }
+ return true;
+}
+
+function isMenQing(gameSeatData){
+ return (gameSeatData.pengs.length + gameSeatData.wangangs.length + gameSeatData.diangangs.length) == 0;
+}
+
+function isZhongZhang(gameSeatData){
+ var fn = function(arr){
+ for(var i = 0; i < arr.length; ++i){
+ var pai = arr[i];
+ if(pai == 0 || pai == 8 || pai == 9 || pai == 17 || pai == 18 || pai == 26){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ if(fn(gameSeatData.pengs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.angangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.diangangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.wangangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.holds) == false){
+ return false;
+ }
+ return true;
+}
+
+function isJiangDui(gameSeatData){
+ var fn = function(arr){
+ for(var i = 0; i < arr.length; ++i){
+ var pai = arr[i];
+ if(pai != 1 && pai != 4 && pai != 7
+ && pai != 9 && pai != 13 && pai != 16
+ && pai != 18 && pai != 21 && pai != 25
+ ){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ if(fn(gameSeatData.pengs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.angangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.diangangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.wangangs) == false){
+ return false;
+ }
+ if(fn(gameSeatData.holds) == false){
+ return false;
+ }
+ return true;
+}
+
+function isTinged(seatData){
+ for(var k in seatData.tingMap){
+ return true;
+ }
+ return false;
+}
+
+function computeFanScore(game,fan){
+ if(fan > game.conf.maxFan){
+ fan = game.conf.maxFan;
+ }
+ return (1 << fan) * game.conf.baseScore;
+}
+
+//是否需要查大叫(有两家以上未胡,且有人没有下叫)
+function needChaDaJiao(game){
+ //查叫
+ var numOfHued = 0;
+ var numOfTinged = 0;
+ var numOfUntinged = 0;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ts = game.gameSeats[i];
+ if(ts.hued){
+ numOfHued ++;
+ numOfTinged++;
+ }
+ else if(isTinged(ts)){
+ numOfTinged++;
+ }
+ else{
+ numOfUntinged++;
+ }
+ }
+
+ //如果三家都胡牌了,不需要查叫
+ if(numOfHued == 3){
+ return false;
+ }
+
+ //如果没有任何一个人叫牌,也没有任何一个胡牌,则不需要查叫
+ if(numOfTinged == 0){
+ return false;
+ }
+
+ //如果都听牌了,也不需要查叫
+ if(numOfUntinged == 0){
+ return false;
+ }
+ return true;
+}
+
+function findMaxFanTingPai(ts){
+ //找出最大番
+ var cur = null;
+ for(var k in ts.tingMap){
+ var tpai = ts.tingMap[k];
+ if(cur == null || tpai.fan > cur.fan){
+ cur = tpai;
+ }
+ }
+ return cur;
+}
+
+function findUnTingedPlayers(game){
+ var arr = [];
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ts = game.gameSeats[i];
+ //如果没有胡,且没有听牌
+ if(!ts.hued && !isTinged(ts)){
+ arr.push(i);
+ recordUserAction(game,ts,"beichadajiao",-1);
+ }
+ }
+ return arr;
+}
+
+function chaJiao(game){
+ var arr = findUnTingedPlayers(game);
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ts = game.gameSeats[i];
+ //如果没有胡,但是听牌了,则未叫牌的人要给钱
+ if(!ts.hued && isTinged(ts)){
+ var cur = findMaxFanTingPai(ts);
+ ts.fan = cur.fan;
+ ts.pattern = cur.pattern;
+ recordUserAction(game,ts,"chadajiao",arr);
+ }
+ }
+}
+
+function calculateResult(game,roomInfo){
+
+ var isNeedChaDaJia = needChaDaJiao(game);
+ if(isNeedChaDaJia){
+ chaJiao(game);
+ }
+
+ var baseScore = game.conf.baseScore;
+ var numOfHued = 0;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ if(game.gameSeats[i].hued == true){
+ numOfHued++;
+ }
+ }
+
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var sd = game.gameSeats[i];
+
+ //统计杠的数目
+ sd.numAnGang = sd.angangs.length;
+ sd.numMingGang = sd.wangangs.length + sd.diangangs.length;
+
+ //对所有胡牌的玩家进行统计
+ if(isTinged(sd)){
+ //统计自己的番子和分数
+ //基础番(平胡0番,对对胡1番、七对2番) + 清一色2番 + 杠+1番
+ //杠上花+1番,杠上炮+1番 抢杠胡+1番,金钩胡+1番,海底胡+1番
+ var fan = sd.fan;
+ if(isQingYiSe(sd)){
+ sd.qingyise = true;
+ fan += 2;
+ }
+
+ var numOfGangs = sd.diangangs.length + sd.wangangs.length + sd.angangs.length;
+ for(var j = 0; j < sd.pengs.length; ++j){
+ var pai = sd.pengs[j];
+ if(sd.countMap[pai] == 1){
+ numOfGangs++;
+ }
+ }
+ for(var k in sd.countMap){
+ if(sd.countMap[k] == 4){
+ numOfGangs++;
+ }
+ }
+ sd.numofgen = numOfGangs;
+
+ //金钩胡
+ if(sd.holds.length == 1 || sd.holds.length == 2){
+ fan += 1;
+ sd.isJinGouHu = true;
+ }
+
+ if(sd.isHaiDiHu){
+ fan += 1;
+ }
+
+ if(game.conf.tiandihu){
+ if(sd.isTianHu){
+ fan += 3;
+ }
+ else if(sd.isDiHu){
+ fan += 2;
+ }
+ }
+
+ var isjiangdui = false;
+ if(game.conf.jiangdui){
+ if(sd.pattern == "7pairs"){
+ if(sd.numofgen > 0){
+ sd.numofgen -= 1;
+ sd.pattern == "l7pairs";
+ isjiangdui = isJiangDui(sd);
+ if(isjiangdui){
+ sd.pattern == "j7paris";
+ fan += 2;
+ }
+ else{
+ fan += 1;
+ }
+ }
+ }
+ else if(sd.pattern == "duidui"){
+ isjiangdui = isJiangDui(sd);
+ if(isjiangdui){
+ sd.pattern = "jiangdui";
+ fan += 2;
+ }
+ }
+ }
+
+ if(game.conf.menqing){
+ //不是将对,才检查中张
+ if(!isjiangdui){
+ sd.isZhongZhang = isZhongZhang(sd);
+ if(sd.isZhongZhang){
+ fan += 1;
+ }
+ }
+
+ sd.isMenQing = isMenQing(sd);
+ if(sd.isMenQing){
+ fan += 1;
+ }
+ }
+
+ fan += sd.numofgen;
+ if(sd.isGangHu){
+ fan += 1;
+ }
+ if(sd.isQiangGangHu){
+ fan += 1;
+ }
+
+ //收杠钱
+ var additonalscore = 0;
+ for(var a = 0; a < sd.actions.length; ++a){
+ var ac = sd.actions[a];
+ if(ac.type == "fanggang"){
+ var ts = game.gameSeats[ac.targets[0]];
+ //检查放杠的情况,如果目标没有和牌,且没有叫牌,则不算 用于优化前端显示
+ if(isNeedChaDaJia && (ts.hued) == false && (isTinged(ts) == false)){
+ ac.state = "nop";
+ }
+ }
+ else if(ac.type == "angang" || ac.type == "wangang" || ac.type == "diangang"){
+ if(ac.state != "nop"){
+ var acscore = ac.score;
+ additonalscore += ac.targets.length * acscore * baseScore;
+ //扣掉目标方的分
+ for(var t = 0; t < ac.targets.length; ++t){
+ var six = ac.targets[t];
+ game.gameSeats[six].score -= acscore * baseScore;
+ }
+ }
+ }
+ else if(ac.type == "maozhuanyu"){
+ //对于呼叫转移,如果对方没有叫牌,表示不得行
+ if(isTinged(ac.owner)){
+ //如果
+ var ref = ac.ref;
+ var acscore = ref.score;
+ var total = ref.targets.length * acscore * baseScore;
+ additonalscore += total;
+ //扣掉目标方的分
+ if(ref.payTimes == 0){
+ for(var t = 0; t < ref.targets.length; ++t){
+ var six = ref.targets[t];
+ game.gameSeats[six].score -= acscore * baseScore;
+ }
+ }
+ else{
+ //如果已经被扣过一次了,则由杠牌这家赔
+ ac.owner.score -= total;
+ }
+ ref.payTimes++;
+ ac.owner = null;
+ ac.ref = null;
+ }
+ }
+ else if(ac.type == "zimo" || ac.type == "hu" || ac.type == "ganghua" || ac.type == "dianganghua" || ac.type == "gangpaohu" || ac.type == "qiangganghu" || ac.type == "chadajiao"){
+ var extraScore = 0;
+ if(ac.iszimo){
+ if(game.conf.zimo == 0){
+ //自摸加底
+ extraScore = baseScore;
+ }
+ if(game.conf.zimo == 1){
+ fan += 1;
+ }
+ else{
+ //nothing.
+ }
+ sd.numZiMo ++;
+ }
+ else{
+ if(ac.type != "chadajiao"){
+ sd.numJiePao ++;
+ }
+ }
+
+ var score = computeFanScore(game,fan) + extraScore;
+ sd.score += score * ac.targets.length;
+
+ for(var t = 0; t < ac.targets.length; ++t){
+ var six = ac.targets[t];
+ var td = game.gameSeats[six];
+ td.score -= score;
+ if(td != sd){
+ if(ac.type == "chadajiao"){
+ td.numChaJiao ++;
+ }
+ else if(!ac.iszimo){
+ td.numDianPao ++;
+ }
+ }
+ }
+ }
+ }
+
+ if(fan > game.conf.maxFan){
+ fan = game.conf.maxFan;
+ }
+ //一定要用 += 。 因为此时的sd.score可能是负的
+ sd.score += additonalscore;
+ if(sd.pattern != null){
+ sd.fan = fan;
+ }
+ }
+ else{
+ for(var a = sd.actions.length -1; a >= 0; --a){
+ var ac = sd.actions[a];
+ if(ac.type == "angang" || ac.type == "wangang" || ac.type == "diangang"){
+ //如果3家都胡牌,则需要结算。否则认为是查叫
+ if(numOfHued < 3){
+ sd.actions.splice(a,1);
+ }
+ else{
+ if(ac.state != "nop"){
+ var acscore = ac.score;
+ sd.score += ac.targets.length * acscore * baseScore;
+ //扣掉目标方的分
+ for(var t = 0; t < ac.targets.length; ++t){
+ var six = ac.targets[t];
+ game.gameSeats[six].score -= acscore * baseScore;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+function doGameOver(game,userId,forceEnd){
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return;
+ }
+
+ var results = [];
+ var dbresult = [0,0,0,0];
+
+ var fnNoticeResult = function(isEnd){
+ var endinfo = null;
+ if(isEnd){
+ endinfo = [];
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var rs = roomInfo.seats[i];
+ endinfo.push({
+ numzimo:rs.numZiMo,
+ numjiepao:rs.numJiePao,
+ numdianpao:rs.numDianPao,
+ numangang:rs.numAnGang,
+ numminggang:rs.numMingGang,
+ numchadajiao:rs.numChaJiao,
+ });
+ }
+ }
+ userMgr.broacastInRoom('game_over_push',{results:results,endinfo:endinfo},userId,true);
+ //如果局数已够,则进行整体结算,并关闭房间
+ if(isEnd){
+ setTimeout(function(){
+ if(roomInfo.numOfGames > 1){
+ store_history(roomInfo);
+ }
+
+ userMgr.kickAllInRoom(roomId);
+ roomMgr.destroy(roomId);
+ db.archive_games(roomInfo.uuid);
+ },1500);
+ }
+ }
+
+ if(game != null){
+ if(!forceEnd){
+ calculateResult(game,roomInfo);
+ }
+
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var rs = roomInfo.seats[i];
+ var sd = game.gameSeats[i];
+
+ rs.ready = false;
+ rs.score += sd.score;
+ rs.numZiMo += sd.numZiMo;
+ rs.numJiePao += sd.numJiePao;
+ rs.numDianPao += sd.numDianPao;
+ rs.numAnGang += sd.numAnGang;
+ rs.numMingGang += sd.numMingGang;
+ rs.numChaJiao += sd.numChaJiao;
+
+ var userRT = {
+ userId:sd.userId,
+ pengs:sd.pengs,
+ actions:[],
+ wangangs:sd.wangangs,
+ diangangs:sd.diangangs,
+ angangs:sd.angangs,
+ numofgen:sd.numofgen,
+ holds:sd.holds,
+ fan:sd.fan,
+ score:sd.score,
+ totalscore:rs.score,
+ qingyise:sd.qingyise,
+ pattern:sd.pattern,
+ isganghu:sd.isGangHu,
+ menqing:sd.isMenQing,
+ zhongzhang:sd.isZhongZhang,
+ jingouhu:sd.isJinGouHu,
+ haidihu:sd.isHaiDiHu,
+ tianhu:sd.isTianHu,
+ dihu:sd.isDiHu,
+ huorder:game.hupaiList.indexOf(i),
+ };
+
+ for(var k in sd.actions){
+ userRT.actions[k] = {
+ type:sd.actions[k].type,
+ };
+ }
+ results.push(userRT);
+
+
+ dbresult[i] = sd.score;
+ delete gameSeatsOfUsers[sd.userId];
+ }
+ delete games[roomId];
+
+ var old = roomInfo.nextButton;
+ if(game.yipaoduoxiang >= 0){
+ roomInfo.nextButton = game.yipaoduoxiang;
+ }
+ else if(game.firstHupai >= 0){
+ roomInfo.nextButton = game.firstHupai;
+ }
+ else{
+ roomInfo.nextButton = (game.turn + 1) % 4;
+ }
+
+ if(old != roomInfo.nextButton){
+ db.update_next_button(roomId,roomInfo.nextButton);
+ }
+ }
+
+ if(forceEnd || game == null){
+ fnNoticeResult(true);
+ }
+ else{
+ //保存游戏
+ store_game(game,function(ret){
+
+ db.update_game_result(roomInfo.uuid,game.gameIndex,dbresult);
+
+ //记录打牌信息
+ var str = JSON.stringify(game.actionList);
+ db.update_game_action_records(roomInfo.uuid,game.gameIndex,str);
+
+ //保存游戏局数
+ db.update_num_of_turns(roomId,roomInfo.numOfGames);
+
+ //如果是第一次,并且不是强制解散 则扣除房卡
+ if(roomInfo.numOfGames == 1){
+ var cost = 2;
+ if(roomInfo.conf.maxGames == 8){
+ cost = 3;
+ }
+ db.cost_gems(game.gameSeats[0].userId,cost);
+ }
+
+ var isEnd = (roomInfo.numOfGames >= roomInfo.conf.maxGames);
+ fnNoticeResult(isEnd);
+ });
+ }
+}
+
+function recordUserAction(game,seatData,type,target){
+ var d = {type:type,targets:[]};
+ if(target != null){
+ if(typeof(target) == 'number'){
+ d.targets.push(target);
+ }
+ else{
+ d.targets = target;
+ }
+ }
+ else{
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var s = game.gameSeats[i];
+ if(i != seatData.seatIndex && s.hued == false){
+ d.targets.push(i);
+ }
+ }
+ }
+
+ seatData.actions.push(d);
+ return d;
+}
+
+function recordGameAction(game,si,action,pai){
+ game.actionList.push(si);
+ game.actionList.push(action);
+ if(pai != null){
+ game.actionList.push(pai);
+ }
+}
+
+exports.setReady = function(userId,callback){
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return;
+ }
+
+ roomMgr.setReady(userId,true);
+
+ var game = games[roomId];
+ if(game == null){
+ if(roomInfo.seats.length == 4){
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var s = roomInfo.seats[i];
+ if(s.ready == false || userMgr.isOnline(s.userId)==false){
+ return;
+ }
+ }
+ //4个人到齐了,并且都准备好了,则开始新的一局
+ exports.begin(roomId);
+ }
+ }
+ else{
+ var numOfMJ = game.mahjongs.length - game.currentIndex;
+ var remainingGames = roomInfo.conf.maxGames - roomInfo.numOfGames;
+
+ var data = {
+ state:game.state,
+ numofmj:numOfMJ,
+ button:game.button,
+ turn:game.turn,
+ chuPai:game.chuPai,
+ huanpaimethod:game.huanpaiMethod
+ };
+
+ data.seats = [];
+ var seatData = null;
+ for(var i = 0; i < 4; ++i){
+ var sd = game.gameSeats[i];
+
+ var s = {
+ userid:sd.userId,
+ folds:sd.folds,
+ angangs:sd.angangs,
+ diangangs:sd.diangangs,
+ wangangs:sd.wangangs,
+ pengs:sd.pengs,
+ que:sd.que,
+ hued:sd.hued,
+ iszimo:sd.iszimo,
+ }
+ if(sd.userId == userId){
+ s.holds = sd.holds;
+ s.huanpais = sd.huanpais;
+ seatData = sd;
+ }
+ else{
+ s.huanpais = sd.huanpais? []:null;
+ }
+ data.seats.push(s);
+ }
+
+ //同步整个信息给客户端
+ userMgr.sendMsg(userId,'game_sync_push',data);
+ sendOperations(game,seatData,game.chuPai);
+ }
+}
+
+function store_single_history(userId,history){
+ db.get_user_history(userId,function(data){
+ if(data == null){
+ data = [];
+ }
+ while(data.length >= 10){
+ data.shift();
+ }
+ data.push(history);
+ db.update_user_history(userId,data);
+ });
+}
+
+function store_history(roomInfo){
+ var seats = roomInfo.seats;
+ var history = {
+ uuid:roomInfo.uuid,
+ id:roomInfo.id,
+ time:roomInfo.createTime,
+ seats:new Array(4)
+ };
+
+ for(var i = 0; i < seats.length; ++i){
+ var rs = seats[i];
+ var hs = history.seats[i] = {};
+ hs.userid = rs.userId;
+ hs.name = crypto.toBase64(rs.name);
+ hs.score = rs.score;
+ }
+
+ for(var i = 0; i < seats.length; ++i){
+ var s = seats[i];
+ store_single_history(s.userId,history);
+ }
+}
+
+function construct_game_base_info(game){
+ var baseInfo = {
+ type:game.conf.type,
+ button:game.button,
+ index:game.gameIndex,
+ mahjongs:game.mahjongs,
+ game_seats:new Array(4)
+ }
+
+ for(var i = 0; i < 4; ++i){
+ baseInfo.game_seats[i] = game.gameSeats[i].holds;
+ }
+ game.baseInfoJson = JSON.stringify(baseInfo);
+}
+
+function store_game(game,callback){
+ db.create_game(game.roomInfo.uuid,game.gameIndex,game.baseInfoJson,callback);
+}
+
+//开始新的一局
+exports.begin = function(roomId) {
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return;
+ }
+ var seats = roomInfo.seats;
+
+ var game = {
+ conf:roomInfo.conf,
+ roomInfo:roomInfo,
+ gameIndex:roomInfo.numOfGames,
+
+ button:roomInfo.nextButton,
+ mahjongs:new Array(108),
+ currentIndex:0,
+ gameSeats:new Array(4),
+
+ numOfQue:0,
+ turn:0,
+ chuPai:-1,
+ state:"idle",
+ firstHupai:-1,
+ yipaoduoxiang:-1,
+ fangpaoshumu:-1,
+ actionList:[],
+ hupaiList:[],
+ chupaiCnt:0,
+ };
+
+ roomInfo.numOfGames++;
+
+ for(var i = 0; i < 4; ++i){
+ var data = game.gameSeats[i] = {};
+
+ data.game = game;
+
+ data.seatIndex = i;
+
+ data.userId = seats[i].userId;
+ //持有的牌
+ data.holds = [];
+ //打出的牌
+ data.folds = [];
+ //暗杠的牌
+ data.angangs = [];
+ //点杠的牌
+ data.diangangs = [];
+ //弯杠的牌
+ data.wangangs = [];
+ //碰了的牌
+ data.pengs = [];
+ //缺一门
+ data.que = -1;
+
+ //换三张的牌
+ data.huanpais = null;
+
+ //玩家手上的牌的数目,用于快速判定碰杠
+ data.countMap = {};
+ //玩家听牌,用于快速判定胡了的番数
+ data.tingMap = {};
+ data.pattern = "";
+
+ //是否可以杠
+ data.canGang = false;
+ //用于记录玩家可以杠的牌
+ data.gangPai = [];
+
+ //是否可以碰
+ data.canPeng = false;
+ //是否可以胡
+ data.canHu = false;
+ //是否可以出牌
+ data.canChuPai = false;
+
+ //如果guoHuFan >=0 表示处于过胡状态,
+ //如果过胡状态,那么只能胡大于过胡番数的牌
+ data.guoHuFan = -1;
+
+ //是否胡了
+ data.hued = false;
+ //是否是自摸
+ data.iszimo = false;
+
+ data.isGangHu = false;
+
+ //
+ data.actions = [];
+
+ data.fan = 0;
+ data.score = 0;
+ data.lastFangGangSeat = -1;
+
+ //统计信息
+ data.numZiMo = 0;
+ data.numJiePao = 0;
+ data.numDianPao = 0;
+ data.numAnGang = 0;
+ data.numMingGang = 0;
+ data.numChaJiao = 0;
+
+ gameSeatsOfUsers[data.userId] = data;
+ }
+ games[roomId] = game;
+ //洗牌
+ shuffle(game);
+ //发牌
+ deal(game);
+
+
+
+ var numOfMJ = game.mahjongs.length - game.currentIndex;
+ var huansanzhang = roomInfo.conf.hsz;
+
+ for(var i = 0; i < seats.length; ++i){
+ //开局时,通知前端必要的数据
+ var s = seats[i];
+ //通知玩家手牌
+ userMgr.sendMsg(s.userId,'game_holds_push',game.gameSeats[i].holds);
+ //通知还剩多少张牌
+ userMgr.sendMsg(s.userId,'mj_count_push',numOfMJ);
+ //通知还剩多少局
+ userMgr.sendMsg(s.userId,'game_num_push',roomInfo.numOfGames);
+ //通知游戏开始
+ userMgr.sendMsg(s.userId,'game_begin_push',game.button);
+
+ if(huansanzhang == true){
+ game.state = "huanpai";
+ //通知准备换牌
+ userMgr.sendMsg(s.userId,'game_huanpai_push');
+ }
+ else{
+ game.state = "dingque";
+ //通知准备定缺
+ userMgr.sendMsg(s.userId,'game_dingque_push');
+ }
+ }
+};
+
+exports.huanSanZhang = function(userId,p1,p2,p3){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var game = seatData.game;
+ if(game.state != "huanpai"){
+ console.log("can't recv huansanzhang when game.state == " + game.state);
+ return;
+ }
+
+ if(seatData.huanpais != null){
+ console.log("player has done this action.");
+ return;
+ }
+
+ if(seatData.countMap[p1] == null || seatData.countMap[p1] == 0){
+ return;
+ }
+ seatData.countMap[p1]--;
+
+ if(seatData.countMap[p2] == null || seatData.countMap[p2] == 0){
+ seatData.countMap[p1]++;
+ return;
+ }
+ seatData.countMap[p2]--;
+
+ if(seatData.countMap[p3] == null || seatData.countMap[p3] == 0){
+ seatData.countMap[p1]++;
+ seatData.countMap[p2]++;
+ return;
+ }
+
+ seatData.countMap[p1]++;
+ seatData.countMap[p2]++;
+
+ seatData.huanpais = [p1,p2,p3];
+
+ for(var i = 0; i < seatData.huanpais.length; ++i){
+ var p = seatData.huanpais[i];
+ var idx = seatData.holds.indexOf(p);
+ seatData.holds.splice(idx,1);
+ seatData.countMap[p] --;
+ }
+ userMgr.sendMsg(seatData.userId,'game_holds_push',seatData.holds);
+
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var sd = game.gameSeats[i];
+ if(sd == seatData){
+ var rd = {
+ si:seatData.userId,
+ huanpais:seatData.huanpais
+ };
+ userMgr.sendMsg(sd.userId,'huanpai_notify',rd);
+ }
+ else{
+ var rd = {
+ si:seatData.userId,
+ huanpais:[]
+ };
+ userMgr.sendMsg(sd.userId,'huanpai_notify',rd);
+ }
+ }
+
+ //如果还有未换牌的玩家,则继承等待
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ if(game.gameSeats[i].huanpais == null){
+ return;
+ }
+ }
+
+
+ //换牌函数
+ var fn = function(s1,huanjin){
+ for(var i = 0; i < huanjin.length; ++i){
+ var p = huanjin[i];
+ s1.holds.push(p);
+ if(s1.countMap[p] == null){
+ s1.countMap[p] = 0;
+ }
+ s1.countMap[p] ++;
+ }
+ }
+
+ //开始换牌
+ var f = Math.random();
+ var s = game.gameSeats;
+ var huanpaiMethod = 0;
+ //对家换牌
+ if(f < 0.33){
+ fn(s[0],s[2].huanpais);
+ fn(s[1],s[3].huanpais);
+ fn(s[2],s[0].huanpais);
+ fn(s[3],s[1].huanpais);
+ huanpaiMethod = 0;
+ }
+ //换下家的牌
+ else if(f < 0.66){
+ fn(s[0],s[1].huanpais);
+ fn(s[1],s[2].huanpais);
+ fn(s[2],s[3].huanpais);
+ fn(s[3],s[0].huanpais);
+ huanpaiMethod = 1;
+ }
+ //换上家的牌
+ else{
+ fn(s[0],s[3].huanpais);
+ fn(s[1],s[0].huanpais);
+ fn(s[2],s[1].huanpais);
+ fn(s[3],s[2].huanpais);
+ huanpaiMethod = 2;
+ }
+
+ var rd = {
+ method:huanpaiMethod,
+ }
+ game.huanpaiMethod = huanpaiMethod;
+
+ game.state = "dingque";
+ for(var i = 0; i < s.length; ++i){
+ var userId = s[i].userId;
+ userMgr.sendMsg(userId,'game_huanpai_over_push',rd);
+
+ userMgr.sendMsg(userId,'game_holds_push',s[i].holds);
+ //通知准备定缺
+ userMgr.sendMsg(userId,'game_dingque_push');
+ }
+};
+
+exports.dingQue = function(userId,type){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var game = seatData.game;
+ if(game.state != "dingque"){
+ console.log("can't recv dingQue when game.state == " + game.state);
+ return;
+ }
+
+ if(seatData.que < 0){
+ game.numOfQue++;
+ }
+
+ seatData.que = type;
+
+
+ //检查玩家可以做的动作
+ //如果4个人都定缺了,通知庄家出牌
+ if(game.numOfQue == 4){
+ construct_game_base_info(game);
+ var arr = [1,1,1,1];
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ arr[i] = game.gameSeats[i].que;
+ }
+ userMgr.broacastInRoom('game_dingque_finish_push',arr,seatData.userId,true);
+ userMgr.broacastInRoom('game_playing_push',null,seatData.userId,true);
+
+ //进行听牌检查
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var duoyu = -1;
+ var gs = game.gameSeats[i];
+ if(gs.holds.length == 14){
+ duoyu = gs.holds.pop();
+ gs.countMap[duoyu] -= 1;
+ }
+ checkCanTingPai(game,gs);
+ if(duoyu >= 0){
+ gs.holds.push(duoyu);
+ gs.countMap[duoyu] ++;
+ }
+ }
+
+ var turnSeat = game.gameSeats[game.turn];
+ game.state = "playing";
+ //通知玩家出牌方
+ turnSeat.canChuPai = true;
+ userMgr.broacastInRoom('game_chupai_push',turnSeat.userId,turnSeat.userId,true);
+ //检查是否可以暗杠或者胡
+ //直杠
+ checkCanAnGang(game,turnSeat);
+ //检查胡 用最后一张来检查
+ checkCanHu(game,turnSeat,turnSeat.holds[turnSeat.holds.length - 1]);
+ //通知前端
+ sendOperations(game,turnSeat,game.chuPai);
+ }
+ else{
+ userMgr.broacastInRoom('game_dingque_notify_push',seatData.userId,seatData.userId,true);
+ }
+};
+
+exports.chuPai = function(userId,pai){
+
+ pai = Number.parseInt(pai);
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var game = seatData.game;
+ var seatIndex = seatData.seatIndex;
+ //如果不该他出,则忽略
+ if(game.turn != seatData.seatIndex){
+ console.log("not your turn.");
+ return;
+ }
+
+ if(seatData.hued){
+ console.log('you have already hued. no kidding plz.');
+ return;
+ }
+
+ if(seatData.canChuPai == false){
+ console.log('no need chupai.');
+ return;
+ }
+
+ if(hasOperations(seatData)){
+ console.log('plz guo before you chupai.');
+ return;
+ }
+
+ //从此人牌中扣除
+ var index = seatData.holds.indexOf(pai);
+ if(index == -1){
+ console.log("holds:" + seatData.holds);
+ console.log("can't find mj." + pai);
+ return;
+ }
+
+ seatData.canChuPai = false;
+ game.chupaiCnt ++;
+ seatData.guoHuFan = -1;
+
+ seatData.holds.splice(index,1);
+ seatData.countMap[pai] --;
+ game.chuPai = pai;
+ recordGameAction(game,seatData.seatIndex,ACTION_CHUPAI,pai);
+ checkCanTingPai(game,seatData);
+
+ userMgr.broacastInRoom('game_chupai_notify_push',{userId:seatData.userId,pai:pai},seatData.userId,true);
+
+ //如果出的牌可以胡,则算过胡
+ if(seatData.tingMap[game.chuPai]){
+ seatData.guoHuFan = seatData.tingMap[game.chuPai].fan;
+ }
+
+ //检查是否有人要胡,要碰 要杠
+ var hasActions = false;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ //玩家自己不检查
+ if(game.turn == i){
+ continue;
+ }
+ var ddd = game.gameSeats[i];
+ //已经和牌的不再检查
+ if(ddd.hued){
+ continue;
+ }
+
+ checkCanHu(game,ddd,pai);
+ if(seatData.lastFangGangSeat == -1){
+ if(ddd.canHu && ddd.guoHuFan >= 0 && ddd.tingMap[pai].fan <= ddd.guoHuFan){
+ console.log("ddd.guoHuFan:" + ddd.guoHuFan);
+ ddd.canHu = false;
+ userMgr.sendMsg(ddd.userId,'guohu_push');
+ }
+ }
+ checkCanPeng(game,ddd,pai);
+ checkCanDianGang(game,ddd,pai);
+ if(hasOperations(ddd)){
+ sendOperations(game,ddd,game.chuPai);
+ hasActions = true;
+ }
+ }
+
+ //如果没有人有操作,则向下一家发牌,并通知他出牌
+ if(!hasActions){
+ setTimeout(function(){
+ userMgr.broacastInRoom('guo_notify_push',{userId:seatData.userId,pai:game.chuPai},seatData.userId,true);
+ seatData.folds.push(game.chuPai);
+ game.chuPai = -1;
+ moveToNextUser(game);
+ doUserMoPai(game);
+ },500);
+ }
+};
+
+exports.peng = function(userId){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var game = seatData.game;
+
+ //如果是他出的牌,则忽略
+ if(game.turn == seatData.seatIndex){
+ console.log("it's your turn.");
+ return;
+ }
+
+ //如果没有碰的机会,则不能再碰
+ if(seatData.canPeng == false){
+ console.log("seatData.peng == false");
+ return;
+ }
+
+ //和的了,就不要再来了
+ if(seatData.hued){
+ console.log('you have already hued. no kidding plz.');
+ return;
+ }
+
+ //如果有人可以胡牌,则需要等待
+ var i = game.turn;
+ while(true){
+ var i = (i + 1)%4;
+ if(i == game.turn){
+ break;
+ }
+ else{
+ var ddd = game.gameSeats[i];
+ if(ddd.canHu && i != seatData.seatIndex){
+ return;
+ }
+ }
+ }
+
+
+ clearAllOptions(game);
+
+ //验证手上的牌的数目
+ var pai = game.chuPai;
+ var c = seatData.countMap[pai];
+ if(c == null || c < 2){
+ console.log("pai:" + pai + ",count:" + c);
+ console.log(seatData.holds);
+ console.log("lack of mj.");
+ return;
+ }
+
+ //进行碰牌处理
+ //扣掉手上的牌
+ //从此人牌中扣除
+ for(var i = 0; i < 2; ++i){
+ var index = seatData.holds.indexOf(pai);
+ if(index == -1){
+ console.log("can't find mj.");
+ return;
+ }
+ seatData.holds.splice(index,1);
+ seatData.countMap[pai] --;
+ }
+ seatData.pengs.push(pai);
+ game.chuPai = -1;
+
+ recordGameAction(game,seatData.seatIndex,ACTION_PENG,pai);
+
+ //广播通知其它玩家
+ userMgr.broacastInRoom('peng_notify_push',{userid:seatData.userId,pai:pai},seatData.userId,true);
+
+ //碰的玩家打牌
+ moveToNextUser(game,seatData.seatIndex);
+
+ //广播通知玩家出牌方
+ seatData.canChuPai = true;
+ userMgr.broacastInRoom('game_chupai_push',seatData.userId,seatData.userId,true);
+};
+
+exports.isPlaying = function(userId){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ return false;
+ }
+
+ var game = seatData.game;
+
+ if(game.state == "idle"){
+ return false;
+ }
+ return true;
+}
+
+function checkCanQiangGang(game,turnSeat,seatData,pai){
+ var hasActions = false;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ //杠牌者不检查
+ if(seatData.seatIndex == i){
+ continue;
+ }
+ var ddd = game.gameSeats[i];
+ //已经和牌的不再检查
+ if(ddd.hued){
+ continue;
+ }
+
+ checkCanHu(game,ddd,pai);
+ if(ddd.canHu){
+ sendOperations(game,ddd,pai);
+ hasActions = true;
+ }
+ }
+ if(hasActions){
+ game.qiangGangContext = {
+ turnSeat:turnSeat,
+ seatData:seatData,
+ pai:pai,
+ isValid:true,
+ }
+ }
+ else{
+ game.qiangGangContext = null;
+ }
+ return game.qiangGangContext != null;
+}
+
+function doGang(game,turnSeat,seatData,gangtype,numOfCnt,pai){
+ var seatIndex = seatData.seatIndex;
+ var gameTurn = turnSeat.seatIndex;
+
+ var isZhuanShouGang = false;
+ if(gangtype == "wangang"){
+ var idx = seatData.pengs.indexOf(pai);
+ if(idx >= 0){
+ seatData.pengs.splice(idx,1);
+ }
+
+ //如果最后一张牌不是杠的牌,则认为是转手杠
+ if(seatData.holds[seatData.holds.length - 1] != pai){
+ isZhuanShouGang = true;
+ }
+ }
+ //进行碰牌处理
+ //扣掉手上的牌
+ //从此人牌中扣除
+ for(var i = 0; i < numOfCnt; ++i){
+ var index = seatData.holds.indexOf(pai);
+ if(index == -1){
+ console.log(seatData.holds);
+ console.log("can't find mj.");
+ return;
+ }
+ seatData.holds.splice(index,1);
+ seatData.countMap[pai] --;
+ }
+
+ recordGameAction(game,seatData.seatIndex,ACTION_GANG,pai);
+
+ //记录下玩家的杠牌
+ if(gangtype == "angang"){
+ seatData.angangs.push(pai);
+ var ac = recordUserAction(game,seatData,"angang");
+ ac.score = game.conf.baseScore*2;
+ }
+ else if(gangtype == "diangang"){
+ seatData.diangangs.push(pai);
+ var ac = recordUserAction(game,seatData,"diangang",gameTurn);
+ ac.score = game.conf.baseScore*2;
+ var fs = turnSeat;
+ recordUserAction(game,fs,"fanggang",seatIndex);
+ }
+ else if(gangtype == "wangang"){
+ seatData.wangangs.push(pai);
+ if(isZhuanShouGang == false){
+ var ac = recordUserAction(game,seatData,"wangang");
+ ac.score = game.conf.baseScore;
+ }
+ else{
+ recordUserAction(game,seatData,"zhuanshougang");
+ }
+ }
+
+ checkCanTingPai(game,seatData);
+ //通知其他玩家,有人杠了牌
+ userMgr.broacastInRoom('gang_notify_push',{userid:seatData.userId,pai:pai,gangtype:gangtype},seatData.userId,true);
+
+ //变成自己的轮子
+ moveToNextUser(game,seatIndex);
+ //再次摸牌
+ doUserMoPai(game);
+
+ //只能放在这里。因为过手就会清除杠牌标记
+ seatData.lastFangGangSeat = gameTurn;
+}
+
+exports.gang = function(userId,pai){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var seatIndex = seatData.seatIndex;
+ var game = seatData.game;
+
+ //如果没有杠的机会,则不能再杠
+ if(seatData.canGang == false) {
+ console.log("seatData.gang == false");
+ return;
+ }
+
+ //和的了,就不要再来了
+ if(seatData.hued){
+ console.log('you have already hued. no kidding plz.');
+ return;
+ }
+
+ if(seatData.gangPai.indexOf(pai) == -1){
+ console.log("the given pai can't be ganged.");
+ return;
+ }
+
+ //如果有人可以胡牌,则需要等待
+ var i = game.turn;
+ while(true){
+ var i = (i + 1)%4;
+ if(i == game.turn){
+ break;
+ }
+ else{
+ var ddd = game.gameSeats[i];
+ if(ddd.canHu && i != seatData.seatIndex){
+ return;
+ }
+ }
+ }
+
+ var numOfCnt = seatData.countMap[pai];
+
+ var gangtype = ""
+ //弯杠 去掉碰牌
+ if(numOfCnt == 1){
+ gangtype = "wangang"
+ }
+ else if(numOfCnt == 3){
+ gangtype = "diangang"
+ }
+ else if(numOfCnt == 4){
+ gangtype = "angang";
+ }
+ else{
+ console.log("invalid pai count.");
+ return;
+ }
+
+ game.chuPai = -1;
+ clearAllOptions(game);
+ seatData.canChuPai = false;
+
+ userMgr.broacastInRoom('hangang_notify_push',seatIndex,seatData.userId,true);
+
+ //如果是弯杠,则需要检查是否可以抢杠
+ var turnSeat = game.gameSeats[game.turn];
+ if(numOfCnt == 1){
+ var canQiangGang = checkCanQiangGang(game,turnSeat,seatData,pai);
+ if(canQiangGang){
+ return;
+ }
+ }
+
+ doGang(game,turnSeat,seatData,gangtype,numOfCnt,pai);
+};
+
+exports.hu = function(userId){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var seatIndex = seatData.seatIndex;
+ var game = seatData.game;
+
+ //如果他不能和牌,那和个啥啊
+ if(seatData.canHu == false){
+ console.log("invalid request.");
+ return;
+ }
+
+ //和的了,就不要再来了
+ if(seatData.hued){
+ console.log('you have already hued. no kidding plz.');
+ return;
+ }
+
+ //标记为和牌
+ seatData.hued = true;
+ var hupai = game.chuPai;
+ var isZimo = false;
+
+ var turnSeat = game.gameSeats[game.turn];
+ seatData.isGangHu = turnSeat.lastFangGangSeat >= 0;
+ var notify = -1;
+
+ if(game.qiangGangContext != null){
+ var gangSeat = game.qiangGangContext.seatData;
+ hupai = game.qiangGangContext.pai;
+ notify = hupai;
+ var ac = recordUserAction(game,seatData,"qiangganghu",gangSeat.seatIndex);
+ ac.iszimo = false;
+ recordGameAction(game,seatIndex,ACTION_HU,hupai);
+ seatData.isQiangGangHu = true;
+ game.qiangGangContext.isValid = false;
+
+
+ var idx = gangSeat.holds.indexOf(hupai);
+ if(idx != -1){
+ gangSeat.holds.splice(idx,1);
+ gangSeat.countMap[hupai]--;
+ userMgr.sendMsg(gangSeat.userId,'game_holds_push',gangSeat.holds);
+ }
+ //将牌添加到玩家的手牌列表,供前端显示
+ seatData.holds.push(hupai);
+ if(seatData.countMap[hupai]){
+ seatData.countMap[hupai]++;
+ }
+ else{
+ seatData.countMap[hupai] = 1;
+ }
+
+ recordUserAction(game,gangSeat,"beiqianggang",seatIndex);
+ }
+ else if(game.chuPai == -1){
+ hupai = seatData.holds[seatData.holds.length - 1];
+ notify = -1;
+ if(seatData.isGangHu){
+ if(turnSeat.lastFangGangSeat == seatIndex){
+ var ac = recordUserAction(game,seatData,"ganghua");
+ ac.iszimo = true;
+ }
+ else{
+ var diangganghua_zimo = game.conf.dianganghua == 1;
+ if(diangganghua_zimo){
+ var ac = recordUserAction(game,seatData,"dianganghua");
+ ac.iszimo = true;
+ }
+ else{
+ var ac = recordUserAction(game,seatData,"dianganghua",turnSeat.lastFangGangSeat);
+ ac.iszimo = false;
+ }
+ }
+ }
+ else{
+ var ac = recordUserAction(game,seatData,"zimo");
+ ac.iszimo = true;
+ }
+
+ isZimo = true;
+ recordGameAction(game,seatIndex,ACTION_ZIMO,hupai);
+ }
+ else{
+ notify = game.chuPai;
+ //将牌添加到玩家的手牌列表,供前端显示
+ seatData.holds.push(game.chuPai);
+ if(seatData.countMap[game.chuPai]){
+ seatData.countMap[game.chuPai]++;
+ }
+ else{
+ seatData.countMap[game.chuPai] = 1;
+ }
+
+ console.log(seatData.holds);
+
+ var at = "hu";
+ //炮胡
+ if(turnSeat.lastFangGangSeat >= 0){
+ at = "gangpaohu";
+ }
+
+ var ac = recordUserAction(game,seatData,at,game.turn);
+ ac.iszimo = false;
+
+ //毛转雨
+ if(turnSeat.lastFangGangSeat >= 0){
+ for(var i = turnSeat.actions.length-1; i >= 0; --i){
+ var t = turnSeat.actions[i];
+ if(t.type == "diangang" || t.type == "wangang" || t.type == "angang"){
+ t.state = "nop";
+ t.payTimes = 0;
+
+ var nac = {
+ type:"maozhuanyu",
+ owner:turnSeat,
+ ref:t
+ }
+ seatData.actions.push(nac);
+ break;
+ }
+ }
+ }
+
+ //记录玩家放炮信息
+ var fs = game.gameSeats[game.turn];
+ recordUserAction(game,fs,"fangpao",seatIndex);
+
+ recordGameAction(game,seatIndex,ACTION_HU,hupai);
+
+ game.fangpaoshumu++;
+
+ if(game.fangpaoshumu > 1){
+ game.yipaoduoxiang = seatIndex;
+ }
+ }
+
+ if(game.firstHupai < 0){
+ game.firstHupai = seatIndex;
+ }
+
+ //保存番数
+ var ti = seatData.tingMap[hupai];
+ seatData.fan = ti.fan;
+ seatData.pattern = ti.pattern;
+ seatData.iszimo = isZimo;
+ //如果是最后一张牌,则认为是海底胡
+ seatData.isHaiDiHu = game.currentIndex == game.mahjongs.length;
+ game.hupaiList.push(seatData.seatIndex);
+
+ if(game.conf.tiandihu){
+ if(game.chupaiCnt == 0 && game.button == seatData.seatIndex && game.chuPai == -1){
+ seatData.isTianHu = true;
+ }
+ else if(game.chupaiCnt == 1 && game.turn == game.button && game.button != seatData.seatIndex && game.chuPai != -1){
+ seatData.isDiHu = true;
+ }
+ }
+
+ clearAllOptions(game,seatData);
+
+ //通知前端,有人和牌了
+ userMgr.broacastInRoom('hu_push',{seatindex:seatIndex,iszimo:isZimo,hupai:notify},seatData.userId,true);
+
+ //
+ if(game.lastHuPaiSeat == -1){
+ game.lastHuPaiSeat = seatIndex;
+ }
+ else{
+ var lp = (game.lastFangGangSeat - game.turn + 4) % 4;
+ var cur = (seatData.seatIndex - game.turn + 4) % 4;
+ if(cur > lp){
+ game.lastHuPaiSeat = seatData.seatIndex;
+ }
+ }
+
+ //如果只有一家没有胡,则结束
+ var numOfHued = 0;
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ddd = game.gameSeats[i];
+ if(ddd.hued){
+ numOfHued ++;
+ }
+ }
+ //和了三家
+ if(numOfHued == 3){
+ doGameOver(game,seatData.userId);
+ return;
+ }
+
+ //清空所有非胡牌操作
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ddd = game.gameSeats[i];
+ ddd.canPeng = false;
+ ddd.canGang = false;
+ ddd.canChuPai = false;
+ sendOperations(game,ddd,hupai);
+ }
+
+ //如果还有人可以胡牌,则等待
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ddd = game.gameSeats[i];
+ if(ddd.canHu){
+ return;
+ }
+ }
+
+ //和牌的下家继续打
+ clearAllOptions(game);
+ game.turn = game.lastHuPaiSeat;
+ moveToNextUser(game);
+ doUserMoPai(game);
+};
+
+exports.guo = function(userId){
+ var seatData = gameSeatsOfUsers[userId];
+ if(seatData == null){
+ console.log("can't find user game data.");
+ return;
+ }
+
+ var seatIndex = seatData.seatIndex;
+ var game = seatData.game;
+
+ //如果玩家没有对应的操作,则也认为是非法消息
+ if((seatData.canGang || seatData.canPeng || seatData.canHu) == false){
+ console.log("no need guo.");
+ return;
+ }
+
+ //如果是玩家自己的轮子,不是接牌,则不需要额外操作
+ var doNothing = game.chuPai == -1 && game.turn == seatIndex;
+
+ userMgr.sendMsg(seatData.userId,"guo_result");
+ clearAllOptions(game,seatData);
+
+ //这里还要处理过胡的情况
+ if(game.chuPai >= 0 && seatData.canHu){
+ seatData.guoHuFan = seatData.tingMap[game.chuPai].fan;
+ }
+
+ if(doNothing){
+ return;
+ }
+
+ //如果还有人可以操作,则等待
+ for(var i = 0; i < game.gameSeats.length; ++i){
+ var ddd = game.gameSeats[i];
+ if(hasOperations(ddd)){
+ return;
+ }
+ }
+
+ //如果是已打出的牌,则需要通知。
+ if(game.chuPai >= 0){
+ var uid = game.gameSeats[game.turn].userId;
+ userMgr.broacastInRoom('guo_notify_push',{userId:uid,pai:game.chuPai},seatData.userId,true);
+ seatData.folds.push(game.chuPai);
+ game.chuPai = -1;
+ }
+
+
+ var qiangGangContext = game.qiangGangContext;
+ //清除所有的操作
+ clearAllOptions(game);
+
+ if(qiangGangContext != null && qiangGangContext.isValid){
+ doGang(game,qiangGangContext.turnSeat,qiangGangContext.seatData,"wangang",1,qiangGangContext.pai);
+ }
+ else{
+ //下家摸牌
+ moveToNextUser(game);
+ doUserMoPai(game);
+ }
+};
+
+exports.hasBegan = function(roomId){
+ var game = games[roomId];
+ if(game != null){
+ return true;
+ }
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo != null){
+ return roomInfo.numOfGames > 0;
+ }
+ return false;
+};
+
+
+var dissolvingList = [];
+
+exports.doDissolve = function(roomId){
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return null;
+ }
+
+ var game = games[roomId];
+ doGameOver(game,roomInfo.seats[0].userId,true);
+};
+
+exports.dissolveRequest = function(roomId,userId){
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return null;
+ }
+
+ if(roomInfo.dr != null){
+ return null;
+ }
+
+ var seatIndex = roomMgr.getUserSeat(userId);
+ if(seatIndex == null){
+ return null;
+ }
+
+ roomInfo.dr = {
+ endTime:Date.now() + 30000,
+ states:[false,false,false,false]
+ };
+ roomInfo.dr.states[seatIndex] = true;
+
+ dissolvingList.push(roomId);
+
+ return roomInfo;
+};
+
+exports.dissolveAgree = function(roomId,userId,agree){
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return null;
+ }
+
+ if(roomInfo.dr == null){
+ return null;
+ }
+
+ var seatIndex = roomMgr.getUserSeat(userId);
+ if(seatIndex == null){
+ return null;
+ }
+
+ if(agree){
+ roomInfo.dr.states[seatIndex] = true;
+ }
+ else{
+ roomInfo.dr = null;
+ var idx = dissolvingList.indexOf(roomId);
+ if(idx != -1){
+ dissolvingList.splice(idx,1);
+ }
+ }
+ return roomInfo;
+};
+
+
+
+function update() {
+ for(var i = dissolvingList.length - 1; i >= 0; --i){
+ var roomId = dissolvingList[i];
+
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo != null && roomInfo.dr != null){
+ if(Date.now() > roomInfo.dr.endTime){
+ console.log("delete room and games");
+ exports.doDissolve(roomId);
+ dissolvingList.splice(i,1);
+ }
+ }
+ else{
+ dissolvingList.splice(i,1);
+ }
+ }
+}
+
+setInterval(update,1000);
+
+/*
+var mokgame = {
+ gameSeats:[{folds:[]}],
+ mahjongs:[],
+ currentIndex:-1,
+ conf:{
+ wz_yaojidai:2,
+ }
+}
+var mokseat = {
+ holds:[9,9,9,9,1,2,3,3,4,5,18,18,18,18],
+ isBaoTing:true,
+ countMap:{},
+ pengs:[],
+ feis:[],
+ diangangs:[],
+ angangs:[],
+ wangangs:[],
+ diansuos:[],
+ wansuos:[],
+ ansuos:[],
+ gangPai:[]
+}
+
+for(var k in mokseat.holds){
+ var pai = mokseat.holds[k];
+ if(mokseat.countMap[pai]){
+ mokseat.countMap[pai] ++;
+ }
+ else{
+ mokseat.countMap[pai] = 1;
+ }
+}
+checkCanAnGang(mokgame,mokseat);
+console.log(mokseat.gangPai);
+*/
\ No newline at end of file
diff --git a/server/game_server/http_service.js b/server/game_server/http_service.js
new file mode 100755
index 0000000..b7d4c72
--- /dev/null
+++ b/server/game_server/http_service.js
@@ -0,0 +1,188 @@
+var crypto = require('../utils/crypto');
+var express = require('express');
+var db = require('../utils/db');
+var http = require('../utils/http');
+var roomMgr = require("./roommgr");
+var userMgr = require("./usermgr");
+var tokenMgr = require("./tokenmgr");
+
+var app = express();
+var config = null;
+
+var serverIp = "";
+
+//测试
+app.all('*', function(req, res, next) {
+ res.header("Access-Control-Allow-Origin", "*");
+ res.header("Access-Control-Allow-Headers", "X-Requested-With");
+ res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
+ res.header("X-Powered-By",' 3.2.1');
+ res.header("Content-Type", "application/json;charset=utf-8");
+ next();
+});
+
+app.get('/get_server_info',function(req,res){
+ var serverId = req.query.serverid;
+ var sign = req.query.sign;
+ console.log(serverId);
+ console.log(sign);
+ if(serverId != config.SERVER_ID || sign == null){
+ http.send(res,1,"invalid parameters");
+ return;
+ }
+
+ var md5 = crypto.md5(serverId + config.ROOM_PRI_KEY);
+ if(md5 != sign){
+ http.send(res,1,"sign check failed.");
+ return;
+ }
+
+ var locations = roomMgr.getUserLocations();
+ var arr = [];
+ for(var userId in locations){
+ var roomId = locations[userId].roomId;
+ arr.push(userId);
+ arr.push(roomId);
+ }
+ http.send(res,0,"ok",{userroominfo:arr});
+});
+
+app.get('/create_room',function(req,res){
+ var userId = parseInt(req.query.userid);
+ var sign = req.query.sign;
+ var gems = req.query.gems;
+ var conf = req.query.conf
+ if(userId == null || sign == null || conf == null){
+ http.send(res,1,"invalid parameters");
+ return;
+ }
+
+ var md5 = crypto.md5(userId + conf + gems + config.ROOM_PRI_KEY);
+ if(md5 != req.query.sign){
+ console.log("invalid reuqest.");
+ http.send(res,1,"sign check failed.");
+ return;
+ }
+
+ conf = JSON.parse(conf);
+ roomMgr.createRoom(userId,conf,gems,serverIp,config.CLIENT_PORT,function(errcode,roomId){
+ if(errcode != 0 || roomId == null){
+ http.send(res,errcode,"create failed.");
+ return;
+ }
+ else{
+ http.send(res,0,"ok",{roomid:roomId});
+ }
+ });
+});
+
+app.get('/enter_room',function(req,res){
+ var userId = parseInt(req.query.userid);
+ var name = req.query.name;
+ var roomId = req.query.roomid;
+ var sign = req.query.sign;
+ if(userId == null || roomId == null || sign == null){
+ http.send(res,1,"invalid parameters");
+ return;
+ }
+
+ var md5 = crypto.md5(userId + name + roomId + config.ROOM_PRI_KEY);
+ console.log(req.query);
+ console.log(md5);
+ if(md5 != sign){
+ http.send(res,2,"sign check failed.");
+ return;
+ }
+
+ //安排玩家坐下
+ roomMgr.enterRoom(roomId,userId,name,function(ret){
+ if(ret != 0){
+ if(ret == 1){
+ http.send(res,4,"room is full.");
+ }
+ else if(ret == 2){
+ http.send(res,3,"can't find room.");
+ }
+ return;
+ }
+
+ var token = tokenMgr.createToken(userId,5000);
+ http.send(res,0,"ok",{token:token});
+ });
+});
+
+app.get('/ping',function(req,res){
+ var sign = req.query.sign;
+ var md5 = crypto.md5(config.ROOM_PRI_KEY);
+ if(md5 != sign){
+ return;
+ }
+ http.send(res,0,"pong");
+});
+
+app.get('/is_room_runing',function(req,res){
+ var roomId = req.query.roomid;
+ var sign = req.query.sign;
+ if(roomId == null || sign == null){
+ http.send(res,1,"invalid parameters");
+ return;
+ }
+
+ var md5 = crypto.md5(roomId + config.ROOM_PRI_KEY);
+ if(md5 != sign){
+ http.send(res,2,"sign check failed.");
+ return;
+ }
+
+ //var roomInfo = roomMgr.getRoom(roomId);
+ http.send(res,0,"ok",{runing:true});
+});
+
+var gameServerInfo = null;
+var lastTickTime = 0;
+
+//向大厅服定时心跳
+function update(){
+ if(lastTickTime + config.HTTP_TICK_TIME < Date.now()){
+ lastTickTime = Date.now();
+ gameServerInfo.load = roomMgr.getTotalRooms();
+ http.get(config.HALL_IP,config.HALL_PORT,"/register_gs",gameServerInfo,function(ret,data){
+ if(ret == true){
+ if(data.errcode != 0){
+ console.log(data.errmsg);
+ }
+
+ if(data.ip != null){
+ serverIp = data.ip;
+ }
+ }
+ else{
+ //
+ lastTickTime = 0;
+ }
+ });
+
+ var mem = process.memoryUsage();
+ var format = function(bytes) {
+ return (bytes/1024/1024).toFixed(2)+'MB';
+ };
+ //console.log('Process: heapTotal '+format(mem.heapTotal) + ' heapUsed ' + format(mem.heapUsed) + ' rss ' + format(mem.rss));
+ }
+}
+
+exports.start = function($config){
+ config = $config;
+
+ //
+ gameServerInfo = {
+ id:config.SERVER_ID,
+ clientip:config.CLIENT_IP,
+ clientport:config.CLIENT_PORT,
+ httpPort:config.HTTP_PORT,
+ load:roomMgr.getTotalRooms(),
+ };
+
+ setInterval(update,1000);
+ app.listen(config.HTTP_PORT,config.FOR_HALL_IP);
+ console.log("game server is listening on " + config.FOR_HALL_IP + ":" + config.HTTP_PORT);
+};
\ No newline at end of file
diff --git a/server/game_server/mjutils.js b/server/game_server/mjutils.js
new file mode 100755
index 0000000..81434fc
--- /dev/null
+++ b/server/game_server/mjutils.js
@@ -0,0 +1,261 @@
+function checkTingPai(seatData,begin,end){
+ for(var i = begin; i < end; ++i){
+ //如果这牌已经在和了,就不用检查了
+ if(seatData.tingMap[i] != null){
+ continue;
+ }
+ //将牌加入到计数中
+ var old = seatData.countMap[i];
+ if(old == null){
+ old = 0;
+ seatData.countMap[i] = 1;
+ }
+ else{
+ seatData.countMap[i] ++;
+ }
+
+ seatData.holds.push(i);
+ //逐个判定手上的牌
+ var ret = checkCanHu(seatData);
+ if(ret){
+ //平胡 0番
+ seatData.tingMap[i] = {
+ pattern:"normal",
+ fan:0
+ };
+ }
+
+ //搞完以后,撤消刚刚加的牌
+ seatData.countMap[i] = old;
+ seatData.holds.pop();
+ }
+}
+
+var kanzi = [];
+var record = false;
+function debugRecord(pai){
+ if(record){
+ kanzi.push(pai);
+ }
+}
+
+function matchSingle(seatData,selected){
+ //分开匹配 A-2,A-1,A
+ var matched = true;
+ var v = selected % 9;
+ if(v < 2){
+ matched = false;
+ }
+ else{
+ for(var i = 0; i < 3; ++i){
+ var t = selected - 2 + i;
+ var cc = seatData.countMap[t];
+ if(cc == null){
+ matched = false;
+ break;
+ }
+ if(cc == 0){
+ matched = false;
+ break;
+ }
+ }
+ }
+
+
+ //匹配成功,扣除相应数值
+ if(matched){
+ seatData.countMap[selected - 2] --;
+ seatData.countMap[selected - 1] --;
+ seatData.countMap[selected] --;
+ var ret = checkSingle(seatData);
+ seatData.countMap[selected - 2] ++;
+ seatData.countMap[selected - 1] ++;
+ seatData.countMap[selected] ++;
+ if(ret == true){
+ debugRecord(selected - 2);
+ debugRecord(selected - 1);
+ debugRecord(selected);
+ return true;
+ }
+ }
+
+ //分开匹配 A-1,A,A + 1
+ matched = true;
+ if(v < 1 || v > 7){
+ matched = false;
+ }
+ else{
+ for(var i = 0; i < 3; ++i){
+ var t = selected - 1 + i;
+ var cc = seatData.countMap[t];
+ if(cc == null){
+ matched = false;
+ break;
+ }
+ if(cc == 0){
+ matched = false;
+ break;
+ }
+ }
+ }
+
+ //匹配成功,扣除相应数值
+ if(matched){
+ seatData.countMap[selected - 1] --;
+ seatData.countMap[selected] --;
+ seatData.countMap[selected + 1] --;
+ var ret = checkSingle(seatData);
+ seatData.countMap[selected - 1] ++;
+ seatData.countMap[selected] ++;
+ seatData.countMap[selected + 1] ++;
+ if(ret == true){
+ debugRecord(selected - 1);
+ debugRecord(selected);
+ debugRecord(selected + 1);
+ return true;
+ }
+ }
+
+
+ //分开匹配 A,A+1,A + 2
+ matched = true;
+ if(v > 6){
+ matched = false;
+ }
+ else{
+ for(var i = 0; i < 3; ++i){
+ var t = selected + i;
+ var cc = seatData.countMap[t];
+ if(cc == null){
+ matched = false;
+ break;
+ }
+ if(cc == 0){
+ matched = false;
+ break;
+ }
+ }
+ }
+
+ //匹配成功,扣除相应数值
+ if(matched){
+ seatData.countMap[selected] --;
+ seatData.countMap[selected + 1] --;
+ seatData.countMap[selected + 2] --;
+ var ret = checkSingle(seatData);
+ seatData.countMap[selected] ++;
+ seatData.countMap[selected + 1] ++;
+ seatData.countMap[selected + 2] ++;
+ if(ret == true){
+ debugRecord(selected);
+ debugRecord(selected + 1);
+ debugRecord(selected + 2);
+ return true;
+ }
+ }
+ return false;
+}
+
+function checkSingle(seatData){
+ var holds = seatData.holds;
+ var selected = -1;
+ var c = 0;
+ for(var i = 0; i < holds.length; ++i){
+ var pai = holds[i];
+ c = seatData.countMap[pai];
+ if(c != 0){
+ selected = pai;
+ break;
+ }
+ }
+ //如果没有找到剩余牌,则表示匹配成功了
+ if(selected == -1){
+ return true;
+ }
+ //否则,进行匹配
+ if(c == 3){
+ //直接作为一坎
+ seatData.countMap[selected] = 0;
+ debugRecord(selected);
+ debugRecord(selected);
+ debugRecord(selected);
+ var ret = checkSingle(seatData);
+ //立即恢复对数据的修改
+ seatData.countMap[selected] = c;
+ if(ret == true){
+ return true;
+ }
+ }
+ else if(c == 4){
+ //直接作为一坎
+ seatData.countMap[selected] = 1;
+ debugRecord(selected);
+ debugRecord(selected);
+ debugRecord(selected);
+ var ret = checkSingle(seatData);
+ //立即恢复对数据的修改
+ seatData.countMap[selected] = c;
+ //如果作为一坎能够把牌匹配完,直接返回TRUE。
+ if(ret == true){
+ return true;
+ }
+ }
+
+ //按单牌处理
+ return matchSingle(seatData,selected);
+}
+
+function checkCanHu(seatData){
+ for(var k in seatData.countMap){
+ k = parseInt(k);
+ var c = seatData.countMap[k];
+ if(c < 2){
+ continue;
+ }
+ //如果当前牌大于等于2,则将它选为将牌
+ seatData.countMap[k] -= 2;
+ //逐个判定剩下的牌是否满足 3N规则,一个牌会有以下几种情况
+ //1、0张,则不做任何处理
+ //2、2张,则只可能是与其它牌形成匹配关系
+ //3、3张,则可能是单张形成 A-2,A-1,A A-1,A,A+1 A,A+1,A+2,也可能是直接成为一坎
+ //4、4张,则只可能是一坎+单张
+ kanzi = [];
+ var ret = checkSingle(seatData);
+ seatData.countMap[k] += 2;
+ if(ret){
+ //kanzi.push(k);
+ //kanzi.push(k);
+ //console.log(kanzi);
+ return true;
+ }
+ }
+}
+
+/*
+console.log(Date.now());
+//检查筒子
+checkTingPai(seatData,0,9);
+//检查条子
+checkTingPai(seatData,9,18);
+//检查万字
+checkTingPai(seatData,18,27);
+console.log(Date.now());
+
+for(k in seatData.tingMap){
+ console.log(nameMap[k]);
+}
+*/
+
+exports.checkTingPai = checkTingPai;
+
+exports.getMJType = function(pai){
+ if(id >= 0 && id < 9){
+ return 0;
+ }
+ else if(id >= 9 && id < 18){
+ return 1;
+ }
+ else if(id >= 18 && id < 27){
+ return 2;
+ }
+}
\ No newline at end of file
diff --git a/server/game_server/roommgr.js b/server/game_server/roommgr.js
new file mode 100755
index 0000000..93b37a2
--- /dev/null
+++ b/server/game_server/roommgr.js
@@ -0,0 +1,368 @@
+var db = require('../utils/db');
+
+var rooms = {};
+var creatingRooms = {};
+
+var userLocation = {};
+var totalRooms = 0;
+
+var DI_FEN = [1,2,5];
+var MAX_FAN = [3,4,5];
+var JU_SHU = [4,8];
+var JU_SHU_COST = [2,3];
+
+function generateRoomId(){
+ var roomId = "";
+ for(var i = 0; i < 6; ++i){
+ roomId += Math.floor(Math.random()*10);
+ }
+ return roomId;
+}
+
+function constructRoomFromDb(dbdata){
+ var roomInfo = {
+ uuid:dbdata.uuid,
+ id:dbdata.id,
+ numOfGames:dbdata.num_of_turns,
+ createTime:dbdata.create_time,
+ nextButton:dbdata.next_button,
+ seats:new Array(4),
+ conf:JSON.parse(dbdata.base_info)
+ };
+
+
+ if(roomInfo.conf.type == "xlch"){
+ roomInfo.gameMgr = require("./gamemgr_xlch");
+ }
+ else{
+ roomInfo.gameMgr = require("./gamemgr_xzdd");
+ }
+ var roomId = roomInfo.id;
+
+ for(var i = 0; i < 4; ++i){
+ var s = roomInfo.seats[i] = {};
+ s.userId = dbdata["user_id" + i];
+ s.score = dbdata["user_score" + i];
+ s.name = dbdata["user_name" + i];
+ s.ready = false;
+ s.seatIndex = i;
+ s.numZiMo = 0;
+ s.numJiePao = 0;
+ s.numDianPao = 0;
+ s.numAnGang = 0;
+ s.numMingGang = 0;
+ s.numChaJiao = 0;
+
+ if(s.userId > 0){
+ userLocation[s.userId] = {
+ roomId:roomId,
+ seatIndex:i
+ };
+ }
+ }
+ rooms[roomId] = roomInfo;
+ totalRooms++;
+ return roomInfo;
+}
+
+exports.createRoom = function(creator,roomConf,gems,ip,port,callback){
+ if(
+ roomConf.type == null
+ || roomConf.difen == null
+ || roomConf.zimo == null
+ || roomConf.jiangdui == null
+ || roomConf.huansanzhang == null
+ || roomConf.zuidafanshu == null
+ || roomConf.jushuxuanze == null
+ || roomConf.dianganghua == null
+ || roomConf.menqing == null
+ || roomConf.tiandihu == null){
+ callback(1,null);
+ return;
+ }
+
+ if(roomConf.difen < 0 || roomConf.difen > DI_FEN.length){
+ callback(1,null);
+ return;
+ }
+
+ if(roomConf.zimo < 0 || roomConf.zimo > 2){
+ callback(1,null);
+ return;
+ }
+
+ if(roomConf.zuidafanshu < 0 || roomConf.zuidafanshu > MAX_FAN.length){
+ callback(1,null);
+ return;
+ }
+
+ if(roomConf.jushuxuanze < 0 || roomConf.jushuxuanze > JU_SHU.length){
+ callback(1,null);
+ return;
+ }
+
+ var cost = JU_SHU_COST[roomConf.jushuxuanze];
+ if(cost > gems){
+ callback(2222,null);
+ return;
+ }
+
+ var fnCreate = function(){
+ var roomId = generateRoomId();
+ if(rooms[roomId] != null || creatingRooms[roomId] != null){
+ fnCreate();
+ }
+ else{
+ creatingRooms[roomId] = true;
+ db.is_room_exist(roomId, function(ret) {
+
+ if(ret){
+ delete creatingRooms[roomId];
+ fnCreate();
+ }
+ else{
+ var createTime = Math.ceil(Date.now()/1000);
+ var roomInfo = {
+ uuid:"",
+ id:roomId,
+ numOfGames:0,
+ createTime:createTime,
+ nextButton:0,
+ seats:[],
+ conf:{
+ type:roomConf.type,
+ baseScore:DI_FEN[roomConf.difen],
+ zimo:roomConf.zimo,
+ jiangdui:roomConf.jiangdui,
+ hsz:roomConf.huansanzhang,
+ dianganghua:parseInt(roomConf.dianganghua),
+ menqing:roomConf.menqing,
+ tiandihu:roomConf.tiandihu,
+ maxFan:MAX_FAN[roomConf.zuidafanshu],
+ maxGames:JU_SHU[roomConf.jushuxuanze],
+ creator:creator,
+ }
+ };
+
+ if(roomConf.type == "xlch"){
+ roomInfo.gameMgr = require("./gamemgr_xlch");
+ }
+ else{
+ roomInfo.gameMgr = require("./gamemgr_xzdd");
+ }
+ console.log(roomInfo.conf);
+
+ for(var i = 0; i < 4; ++i){
+ roomInfo.seats.push({
+ userId:0,
+ score:0,
+ name:"",
+ ready:false,
+ seatIndex:i,
+ numZiMo:0,
+ numJiePao:0,
+ numDianPao:0,
+ numAnGang:0,
+ numMingGang:0,
+ numChaJiao:0,
+ });
+ }
+
+
+ //写入数据库
+ var conf = roomInfo.conf;
+ db.create_room(roomInfo.id,roomInfo.conf,ip,port,createTime,function(uuid){
+ delete creatingRooms[roomId];
+ if(uuid != null){
+ roomInfo.uuid = uuid;
+ console.log(uuid);
+ rooms[roomId] = roomInfo;
+ totalRooms++;
+ callback(0,roomId);
+ }
+ else{
+ callback(3,null);
+ }
+ });
+ }
+ });
+ }
+ }
+
+ fnCreate();
+};
+
+exports.destroy = function(roomId){
+ var roomInfo = rooms[roomId];
+ if(roomInfo == null){
+ return;
+ }
+
+ for(var i = 0; i < 4; ++i){
+ var userId = roomInfo.seats[i].userId;
+ if(userId > 0){
+ delete userLocation[userId];
+ db.set_room_id_of_user(userId,null);
+ }
+ }
+
+ delete rooms[roomId];
+ totalRooms--;
+ db.delete_room(roomId);
+}
+
+exports.getTotalRooms = function(){
+ return totalRooms;
+}
+
+exports.getRoom = function(roomId){
+ return rooms[roomId];
+};
+
+exports.isCreator = function(roomId,userId){
+ var roomInfo = rooms[roomId];
+ if(roomInfo == null){
+ return false;
+ }
+ return roomInfo.conf.creator == userId;
+};
+
+exports.enterRoom = function(roomId,userId,userName,callback){
+ var fnTakeSeat = function(room){
+ if(exports.getUserRoom(userId) == roomId){
+ //已存在
+ return 0;
+ }
+
+ for(var i = 0; i < 4; ++i){
+ var seat = room.seats[i];
+ if(seat.userId <= 0){
+ seat.userId = userId;
+ seat.name = userName;
+ userLocation[userId] = {
+ roomId:roomId,
+ seatIndex:i
+ };
+ //console.log(userLocation[userId]);
+ db.update_seat_info(roomId,i,seat.userId,"",seat.name);
+ //正常
+ return 0;
+ }
+ }
+ //房间已满
+ return 1;
+ }
+ var room = rooms[roomId];
+ if(room){
+ var ret = fnTakeSeat(room);
+ callback(ret);
+ }
+ else{
+ db.get_room_data(roomId,function(dbdata){
+ if(dbdata == null){
+ //找不到房间
+ callback(2);
+ }
+ else{
+ //construct room.
+ room = constructRoomFromDb(dbdata);
+ //
+ var ret = fnTakeSeat(room);
+ callback(ret);
+ }
+ });
+ }
+};
+
+exports.setReady = function(userId,value){
+ var roomId = exports.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+
+ var room = exports.getRoom(roomId);
+ if(room == null){
+ return;
+ }
+
+ var seatIndex = exports.getUserSeat(userId);
+ if(seatIndex == null){
+ return;
+ }
+
+ var s = room.seats[seatIndex];
+ s.ready = value;
+}
+
+exports.isReady = function(userId){
+ var roomId = exports.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+
+ var room = exports.getRoom(roomId);
+ if(room == null){
+ return;
+ }
+
+ var seatIndex = exports.getUserSeat(userId);
+ if(seatIndex == null){
+ return;
+ }
+
+ var s = room.seats[seatIndex];
+ return s.ready;
+}
+
+
+exports.getUserRoom = function(userId){
+ var location = userLocation[userId];
+ if(location != null){
+ return location.roomId;
+ }
+ return null;
+};
+
+exports.getUserSeat = function(userId){
+ var location = userLocation[userId];
+ //console.log(userLocation[userId]);
+ if(location != null){
+ return location.seatIndex;
+ }
+ return null;
+};
+
+exports.getUserLocations = function(){
+ return userLocation;
+};
+
+exports.exitRoom = function(userId){
+ var location = userLocation[userId];
+ if(location == null)
+ return;
+
+ var roomId = location.roomId;
+ var seatIndex = location.seatIndex;
+ var room = rooms[roomId];
+ delete userLocation[userId];
+ if(room == null || seatIndex == null) {
+ return;
+ }
+
+ var seat = room.seats[seatIndex];
+ seat.userId = 0;
+ seat.name = "";
+
+ var numOfPlayers = 0;
+ for(var i = 0; i < room.seats.length; ++i){
+ if(room.seats[i].userId > 0){
+ numOfPlayers++;
+ }
+ }
+
+ db.set_room_id_of_user(userId,null);
+
+ if(numOfPlayers == 0){
+ exports.destroy(roomId);
+ }
+};
\ No newline at end of file
diff --git a/server/game_server/socket_service.js b/server/game_server/socket_service.js
new file mode 100755
index 0000000..f43ee92
--- /dev/null
+++ b/server/game_server/socket_service.js
@@ -0,0 +1,432 @@
+var crypto = require('../utils/crypto');
+var db = require('../utils/db');
+
+var tokenMgr = require('./tokenmgr');
+var roomMgr = require('./roommgr');
+var userMgr = require('./usermgr');
+var io = null;
+exports.start = function(config,mgr){
+ io = require('socket.io')(config.CLIENT_PORT);
+
+ io.sockets.on('connection',function(socket){
+ socket.on('login',function(data){
+ data = JSON.parse(data);
+ if(socket.userId != null){
+ //已经登陆过的就忽略
+ return;
+ }
+ var token = data.token;
+ var roomId = data.roomid;
+ var time = data.time;
+ var sign = data.sign;
+
+ console.log(roomId);
+ console.log(token);
+ console.log(time);
+ console.log(sign);
+
+
+ //检查参数合法性
+ if(token == null || roomId == null || sign == null || time == null){
+ console.log(1);
+ socket.emit('login_result',{errcode:1,errmsg:"invalid parameters"});
+ return;
+ }
+
+ //检查参数是否被篡改
+ var md5 = crypto.md5(roomId + token + time + config.ROOM_PRI_KEY);
+ if(md5 != sign){
+ console.log(2);
+ socket.emit('login_result',{errcode:2,errmsg:"login failed. invalid sign!"});
+ return;
+ }
+
+ //检查token是否有效
+ if(tokenMgr.isTokenValid(token)==false){
+ console.log(3);
+ socket.emit('login_result',{errcode:3,errmsg:"token out of time."});
+ return;
+ }
+
+ //检查房间合法性
+ var userId = tokenMgr.getUserID(token);
+ var roomId = roomMgr.getUserRoom(userId);
+
+ userMgr.bind(userId,socket);
+ socket.userId = userId;
+
+ //返回房间信息
+ var roomInfo = roomMgr.getRoom(roomId);
+
+ var seatIndex = roomMgr.getUserSeat(userId);
+ roomInfo.seats[seatIndex].ip = socket.handshake.address;
+
+ var userData = null;
+ var seats = [];
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var rs = roomInfo.seats[i];
+ var online = false;
+ if(rs.userId > 0){
+ online = userMgr.isOnline(rs.userId);
+ }
+
+ seats.push({
+ userid:rs.userId,
+ ip:rs.ip,
+ score:rs.score,
+ name:rs.name,
+ online:online,
+ ready:rs.ready,
+ seatindex:i
+ });
+
+ if(userId == rs.userId){
+ userData = seats[i];
+ }
+ }
+
+ //通知前端
+ var ret = {
+ errcode:0,
+ errmsg:"ok",
+ data:{
+ roomid:roomInfo.id,
+ conf:roomInfo.conf,
+ numofgames:roomInfo.numOfGames,
+ seats:seats
+ }
+ };
+ socket.emit('login_result',ret);
+
+ //通知其它客户端
+ userMgr.broacastInRoom('new_user_comes_push',userData,userId);
+
+ socket.gameMgr = roomInfo.gameMgr;
+
+ //玩家上线,强制设置为TRUE
+ socket.gameMgr.setReady(userId);
+
+ socket.emit('login_finished');
+
+ if(roomInfo.dr != null){
+ var dr = roomInfo.dr;
+ var ramaingTime = (dr.endTime - Date.now()) / 1000;
+ var data = {
+ time:ramaingTime,
+ states:dr.states
+ }
+ userMgr.sendMsg(userId,'dissolve_notice_push',data);
+ }
+ });
+
+ socket.on('ready',function(data){
+ var userId = socket.userId;
+ if(userId == null){
+ return;
+ }
+ socket.gameMgr.setReady(userId);
+ userMgr.broacastInRoom('user_ready_push',{userid:userId,ready:true},userId,true);
+ });
+
+ //换牌
+ socket.on('huanpai',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ if(data == null){
+ return;
+ }
+
+ if(typeof(data) == "string"){
+ data = JSON.parse(data);
+ }
+
+ var p1 = data.p1;
+ var p2 = data.p2;
+ var p3 = data.p3;
+ if(p1 == null || p2 == null || p3 == null){
+ console.log("invalid data");
+ return;
+ }
+ socket.gameMgr.huanSanZhang(socket.userId,p1,p2,p3);
+ });
+
+ //定缺
+ socket.on('dingque',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ var que = data;
+ socket.gameMgr.dingQue(socket.userId,que);
+ });
+
+ //出牌
+ socket.on('chupai',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ var pai = data;
+ socket.gameMgr.chuPai(socket.userId,pai);
+ });
+
+ //碰
+ socket.on('peng',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ socket.gameMgr.peng(socket.userId);
+ });
+
+ //杠
+ socket.on('gang',function(data){
+ if(socket.userId == null || data == null){
+ return;
+ }
+ var pai = -1;
+ if(typeof(data) == "number"){
+ pai = data;
+ }
+ else if(typeof(data) == "string"){
+ pai = parseInt(data);
+ }
+ else{
+ console.log("gang:invalid param");
+ return;
+ }
+ socket.gameMgr.gang(socket.userId,pai);
+ });
+
+ //胡
+ socket.on('hu',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ socket.gameMgr.hu(socket.userId);
+ });
+
+ //过 遇上胡,碰,杠的时候,可以选择过
+ socket.on('guo',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ socket.gameMgr.guo(socket.userId);
+ });
+
+ //聊天
+ socket.on('chat',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ var chatContent = data;
+ userMgr.broacastInRoom('chat_push',{sender:socket.userId,content:chatContent},socket.userId,true);
+ });
+
+ //快速聊天
+ socket.on('quick_chat',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ var chatId = data;
+ userMgr.broacastInRoom('quick_chat_push',{sender:socket.userId,content:chatId},socket.userId,true);
+ });
+
+ //语音聊天
+ socket.on('voice_msg',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ console.log(data.length);
+ userMgr.broacastInRoom('voice_msg_push',{sender:socket.userId,content:data},socket.userId,true);
+ });
+
+ //表情
+ socket.on('emoji',function(data){
+ if(socket.userId == null){
+ return;
+ }
+ var phizId = data;
+ userMgr.broacastInRoom('emoji_push',{sender:socket.userId,content:phizId},socket.userId,true);
+ });
+
+ //语音使用SDK不出现在这里
+
+ //退出房间
+ socket.on('exit',function(data){
+ var userId = socket.userId;
+ if(userId == null){
+ return;
+ }
+
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+
+ //如果游戏已经开始,则不可以
+ if(socket.gameMgr.hasBegan(roomId)){
+ return;
+ }
+
+ //如果是房主,则只能走解散房间
+ if(roomMgr.isCreator(userId)){
+ return;
+ }
+
+ //通知其它玩家,有人退出了房间
+ userMgr.broacastInRoom('exit_notify_push',userId,userId,false);
+
+ roomMgr.exitRoom(userId);
+ userMgr.del(userId);
+
+ socket.emit('exit_result');
+ socket.disconnect();
+ });
+
+ //解散房间
+ socket.on('dispress',function(data){
+ var userId = socket.userId;
+ if(userId == null){
+ return;
+ }
+
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+
+ //如果游戏已经开始,则不可以
+ if(socket.gameMgr.hasBegan(roomId)){
+ return;
+ }
+
+ //如果不是房主,则不能解散房间
+ if(roomMgr.isCreator(roomId,userId) == false){
+ return;
+ }
+
+ userMgr.broacastInRoom('dispress_push',{},userId,true);
+ userMgr.kickAllInRoom(roomId);
+ roomMgr.destroy(roomId);
+ socket.disconnect();
+ });
+
+ //解散房间
+ socket.on('dissolve_request',function(data){
+ var userId = socket.userId;
+ console.log(1);
+ if(userId == null){
+ console.log(2);
+ return;
+ }
+
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ console.log(3);
+ return;
+ }
+
+ //如果游戏未开始,则不可以
+ if(socket.gameMgr.hasBegan(roomId) == false){
+ console.log(4);
+ return;
+ }
+
+ var ret = socket.gameMgr.dissolveRequest(roomId,userId);
+ if(ret != null){
+ var dr = ret.dr;
+ var ramaingTime = (dr.endTime - Date.now()) / 1000;
+ var data = {
+ time:ramaingTime,
+ states:dr.states
+ }
+ console.log(5);
+ userMgr.broacastInRoom('dissolve_notice_push',data,userId,true);
+ }
+ console.log(6);
+ });
+
+ socket.on('dissolve_agree',function(data){
+ var userId = socket.userId;
+
+ if(userId == null){
+ return;
+ }
+
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+
+ var ret = socket.gameMgr.dissolveAgree(roomId,userId,true);
+ if(ret != null){
+ var dr = ret.dr;
+ var ramaingTime = (dr.endTime - Date.now()) / 1000;
+ var data = {
+ time:ramaingTime,
+ states:dr.states
+ }
+ userMgr.broacastInRoom('dissolve_notice_push',data,userId,true);
+
+ var doAllAgree = true;
+ for(var i = 0; i < dr.states.length; ++i){
+ if(dr.states[i] == false){
+ doAllAgree = false;
+ break;
+ }
+ }
+
+ if(doAllAgree){
+ socket.gameMgr.doDissolve(roomId);
+ }
+ }
+ });
+
+ socket.on('dissolve_reject',function(data){
+ var userId = socket.userId;
+
+ if(userId == null){
+ return;
+ }
+
+ var roomId = roomMgr.getUserRoom(userId);
+ if(roomId == null){
+ return;
+ }
+
+ var ret = socket.gameMgr.dissolveAgree(roomId,userId,false);
+ if(ret != null){
+ userMgr.broacastInRoom('dissolve_cancel_push',{},userId,true);
+ }
+ });
+
+ //断开链接
+ socket.on('disconnect',function(data){
+ var userId = socket.userId;
+ if(!userId){
+ return;
+ }
+ var data = {
+ userid:userId,
+ online:false
+ };
+
+ //通知房间内其它玩家
+ userMgr.broacastInRoom('user_state_push',data,userId);
+
+ //清除玩家的在线信息
+ userMgr.del(userId);
+ socket.userId = null;
+ });
+
+ socket.on('game_ping',function(data){
+ var userId = socket.userId;
+ if(!userId){
+ return;
+ }
+ //console.log('game_ping');
+ socket.emit('game_pong');
+ });
+ });
+
+ console.log("game server is listening on " + config.CLIENT_PORT);
+};
\ No newline at end of file
diff --git a/server/game_server/tokenmgr.js b/server/game_server/tokenmgr.js
new file mode 100755
index 0000000..0bb0aa5
--- /dev/null
+++ b/server/game_server/tokenmgr.js
@@ -0,0 +1,48 @@
+var crypto = require("../utils/crypto");
+
+var tokens = {};
+var users = {};
+
+exports.createToken = function(userId,lifeTime){
+ var token = users[userId];
+ if(token != null){
+ this.delToken(token);
+ }
+
+ var time = Date.now();
+ token = crypto.md5(userId + "!@#$%^&" + time);
+ tokens[token] = {
+ userId: userId,
+ time: time,
+ lifeTime: lifeTime
+ };
+ users[userId] = token;
+ return token;
+};
+
+exports.getToken = function(userId){
+ return users[userId];
+};
+
+exports.getUserID = function(token){
+ return tokens[token].userId;
+};
+
+exports.isTokenValid = function(token){
+ var info = tokens[token];
+ if(info == null){
+ return false;
+ }
+ if(info.time + info.lifetime < Date.now()){
+ return false;
+ }
+ return true;
+};
+
+exports.delToken = function(token){
+ var info = tokens[token];
+ if(info != null){
+ tokens[token] = null;
+ users[info.userId] = null;
+ }
+};
\ No newline at end of file
diff --git a/server/game_server/usermgr.js b/server/game_server/usermgr.js
new file mode 100755
index 0000000..76cead6
--- /dev/null
+++ b/server/game_server/usermgr.js
@@ -0,0 +1,89 @@
+var roomMgr = require('./roommgr');
+var userList = {};
+var userOnline = 0;
+exports.bind = function(userId,socket){
+ userList[userId] = socket;
+ userOnline++;
+};
+
+exports.del = function(userId,socket){
+ delete userList[userId];
+ userOnline--;
+};
+
+exports.get = function(userId){
+ return userList[userId];
+};
+
+exports.isOnline = function(userId){
+ var data = userList[userId];
+ if(data != null){
+ return true;
+ }
+ return false;
+};
+
+exports.getOnlineCount = function(){
+ return userOnline;
+}
+
+exports.sendMsg = function(userId,event,msgdata){
+ console.log(event);
+ var userInfo = userList[userId];
+ if(userInfo == null){
+ return;
+ }
+ var socket = userInfo;
+ if(socket == null){
+ return;
+ }
+
+ socket.emit(event,msgdata);
+};
+
+exports.kickAllInRoom = function(roomId){
+ if(roomId == null){
+ return;
+ }
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return;
+ }
+
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var rs = roomInfo.seats[i];
+
+ //如果不需要发给发送方,则跳过
+ if(rs.userId > 0){
+ var socket = userList[rs.userId];
+ if(socket != null){
+ exports.del(rs.userId);
+ socket.disconnect();
+ }
+ }
+ }
+};
+
+exports.broacastInRoom = function(event,data,sender,includingSender){
+ var roomId = roomMgr.getUserRoom(sender);
+ if(roomId == null){
+ return;
+ }
+ var roomInfo = roomMgr.getRoom(roomId);
+ if(roomInfo == null){
+ return;
+ }
+
+ for(var i = 0; i < roomInfo.seats.length; ++i){
+ var rs = roomInfo.seats[i];
+
+ //如果不需要发给发送方,则跳过
+ if(rs.userId == sender && includingSender != true){
+ continue;
+ }
+ var socket = userList[rs.userId];
+ if(socket != null){
+ socket.emit(event,data);
+ }
+ }
+};
\ No newline at end of file
diff --git a/server/hall_server/app.js b/server/hall_server/app.js
new file mode 100755
index 0000000..47946e7
--- /dev/null
+++ b/server/hall_server/app.js
@@ -0,0 +1,11 @@
+var client_service = require("./client_service");
+var room_service = require("./room_service");
+
+var configs = require(process.argv[2]);
+var config = configs.hall_server();
+
+var db = require('../utils/db');
+db.init(configs.mysql());
+
+client_service.start(config);
+room_service.start(config);
\ No newline at end of file
diff --git a/server/hall_server/client_service.js b/server/hall_server/client_service.js
new file mode 100755
index 0000000..d6edb0d
--- /dev/null
+++ b/server/hall_server/client_service.js
@@ -0,0 +1,317 @@
+var crypto = require('../utils/crypto');
+var express = require('express');
+var db = require('../utils/db');
+var http = require('../utils/http');
+var room_service = require("./room_service");
+
+var app = express();
+var config = null;
+
+function check_account(req,res){
+ var account = req.query.account;
+ var sign = req.query.sign;
+ if(account == null || sign == null){
+ http.send(res,1,"unknown error");
+ return false;
+ }
+ /*
+ var serverSign = crypto.md5(account + req.ip + config.ACCOUNT_PRI_KEY);
+ if(serverSign != sign){
+ http.send(res,2,"login failed.");
+ return false;
+ }
+ */
+ return true;
+}
+
+//设置跨域访问
+app.all('*', function(req, res, next) {
+ res.header("Access-Control-Allow-Origin", "*");
+ res.header("Access-Control-Allow-Headers", "X-Requested-With");
+ res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
+ res.header("X-Powered-By",' 3.2.1');
+ res.header("Content-Type", "application/json;charset=utf-8");
+ next();
+});
+
+app.get('/login',function(req,res){
+ if(!check_account(req,res)){
+ return;
+ }
+
+ var ip = req.ip;
+ if(ip.indexOf("::ffff:") != -1){
+ ip = ip.substr(7);
+ }
+
+ var account = req.query.account;
+ db.get_user_data(account,function(data){
+ if(data == null){
+ http.send(res,0,"ok");
+ return;
+ }
+
+ var ret = {
+ account:data.account,
+ userid:data.userid,
+ name:data.name,
+ lv:data.lv,
+ exp:data.exp,
+ coins:data.coins,
+ gems:data.gems,
+ ip:ip,
+ sex:data.sex,
+ };
+
+ db.get_room_id_of_user(data.userid,function(roomId){
+ //如果用户处于房间中,则需要对其房间进行检查。 如果房间还在,则通知用户进入
+ if(roomId != null){
+ //检查房间是否存在于数据库中
+ db.is_room_exist(roomId,function (retval){
+ if(retval){
+ ret.roomid = roomId;
+ }
+ else{
+ //如果房间不在了,表示信息不同步,清除掉用户记录
+ db.set_room_id_of_user(data.userid,null);
+ }
+ http.send(res,0,"ok",ret);
+ });
+ }
+ else {
+ http.send(res,0,"ok",ret);
+ }
+ });
+ });
+});
+
+app.get('/create_user',function(req,res){
+ if(!check_account(req,res)){
+ return;
+ }
+ var account = req.query.account;
+ var name = req.query.name;
+ var coins = 1000;
+ var gems = 21;
+ console.log(name);
+
+ db.is_user_exist(account,function(ret){
+ if(!ret){
+ db.create_user(account,name,coins,gems,0,null,function(ret){
+ if (ret == null) {
+ http.send(res,2,"system error.");
+ }
+ else{
+ http.send(res,0,"ok");
+ }
+ });
+ }
+ else{
+ http.send(res,1,"account have already exist.");
+ }
+ });
+});
+
+app.get('/create_private_room',function(req,res){
+ //验证参数合法性
+ var data = req.query;
+ //验证玩家身份
+ if(!check_account(req,res)){
+ return;
+ }
+
+ var account = data.account;
+
+ data.account = null;
+ data.sign = null;
+ var conf = data.conf;
+ db.get_user_data(account,function(data){
+ if(data == null){
+ http.send(res,1,"system error");
+ return;
+ }
+ var userId = data.userid;
+ var name = data.name;
+ //验证玩家状态
+ db.get_room_id_of_user(userId,function(roomId){
+ if(roomId != null){
+ http.send(res,-1,"user is playing in room now.");
+ return;
+ }
+ //创建房间
+ room_service.createRoom(account,userId,conf,function(err,roomId){
+ if(err == 0 && roomId != null){
+ room_service.enterRoom(userId,name,roomId,function(errcode,enterInfo){
+ if(enterInfo){
+ var ret = {
+ roomid:roomId,
+ ip:enterInfo.ip,
+ port:enterInfo.port,
+ token:enterInfo.token,
+ time:Date.now()
+ };
+ ret.sign = crypto.md5(ret.roomid + ret.token + ret.time + config.ROOM_PRI_KEY);
+ http.send(res,0,"ok",ret);
+ }
+ else{
+ http.send(res,errcode,"room doesn't exist.");
+ }
+ });
+ }
+ else{
+ http.send(res,err,"create failed.");
+ }
+ });
+ });
+ });
+});
+
+app.get('/enter_private_room',function(req,res){
+ var data = req.query;
+ var roomId = data.roomid;
+ if(roomId == null){
+ http.send(res,-1,"parameters don't match api requirements.");
+ return;
+ }
+ if(!check_account(req,res)){
+ return;
+ }
+
+ var account = data.account;
+
+ db.get_user_data(account,function(data){
+ if(data == null){
+ http.send(res,-1,"system error");
+ return;
+ }
+ var userId = data.userid;
+ var name = data.name;
+
+ //验证玩家状态
+ //todo
+ //进入房间
+ room_service.enterRoom(userId,name,roomId,function(errcode,enterInfo){
+ if(enterInfo){
+ var ret = {
+ roomid:roomId,
+ ip:enterInfo.ip,
+ port:enterInfo.port,
+ token:enterInfo.token,
+ time:Date.now()
+ };
+ ret.sign = crypto.md5(roomId + ret.token + ret.time + config.ROOM_PRI_KEY);
+ http.send(res,0,"ok",ret);
+ }
+ else{
+ http.send(res,errcode,"enter room failed.");
+ }
+ });
+ });
+});
+
+app.get('/get_history_list',function(req,res){
+ var data = req.query;
+ if(!check_account(req,res)){
+ return;
+ }
+ var account = data.account;
+ db.get_user_data(account,function(data){
+ if(data == null){
+ http.send(res,-1,"system error");
+ return;
+ }
+ var userId = data.userid;
+ db.get_user_history(userId,function(history){
+ http.send(res,0,"ok",{history:history});
+ });
+ });
+});
+
+app.get('/get_games_of_room',function(req,res){
+ var data = req.query;
+ var uuid = data.uuid;
+ if(uuid == null){
+ http.send(res,-1,"parameters don't match api requirements.");
+ return;
+ }
+ if(!check_account(req,res)){
+ return;
+ }
+ db.get_games_of_room(uuid,function(data){
+ console.log(data);
+ http.send(res,0,"ok",{data:data});
+ });
+});
+
+app.get('/get_detail_of_game',function(req,res){
+ var data = req.query;
+ var uuid = data.uuid;
+ var index = data.index;
+ if(uuid == null || index == null){
+ http.send(res,-1,"parameters don't match api requirements.");
+ return;
+ }
+ if(!check_account(req,res)){
+ return;
+ }
+ db.get_detail_of_game(uuid,index,function(data){
+ http.send(res,0,"ok",{data:data});
+ });
+});
+
+app.get('/get_user_status',function(req,res){
+ if(!check_account(req,res)){
+ return;
+ }
+ var account = req.query.account;
+ db.get_gems(account,function(data){
+ if(data != null){
+ http.send(res,0,"ok",{gems:data.gems});
+ }
+ else{
+ http.send(res,1,"get gems failed.");
+ }
+ });
+});
+
+app.get('/get_message',function(req,res){
+ if(!check_account(req,res)){
+ return;
+ }
+ var type = req.query.type;
+
+ if(type == null){
+ http.send(res,-1,"parameters don't match api requirements.");
+ return;
+ }
+
+ var version = req.query.version;
+ db.get_message(type,version,function(data){
+ if(data != null){
+ http.send(res,0,"ok",{msg:data.msg,version:data.version});
+ }
+ else{
+ http.send(res,1,"get message failed.");
+ }
+ });
+});
+
+app.get('/is_server_online',function(req,res){
+ if(!check_account(req,res)){
+ return;
+ }
+ var ip = req.query.ip;
+ var port = req.query.port;
+ room_service.isServerOnline(ip,port,function(isonline){
+ var ret = {
+ isonline:isonline
+ };
+ http.send(res,0,"ok",ret);
+ });
+});
+
+exports.start = function($config){
+ config = $config;
+ app.listen(config.CLEINT_PORT);
+ console.log("client service is listening on port " + config.CLEINT_PORT);
+};
\ No newline at end of file
diff --git a/server/hall_server/room_service.js b/server/hall_server/room_service.js
new file mode 100755
index 0000000..a95b676
--- /dev/null
+++ b/server/hall_server/room_service.js
@@ -0,0 +1,232 @@
+var crypto = require('../utils/crypto');
+var express = require('express');
+var db = require('../utils/db');
+var http = require('../utils/http');
+var app = express();
+
+var hallIp = null;
+var config = null;
+var rooms = {};
+var serverMap = {};
+var roomIdOfUsers = {};
+
+//设置跨域访问
+app.all('*', function(req, res, next) {
+ res.header("Access-Control-Allow-Origin", "*");
+ res.header("Access-Control-Allow-Headers", "X-Requested-With");
+ res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
+ res.header("X-Powered-By",' 3.2.1');
+ res.header("Content-Type", "application/json;charset=utf-8");
+ next();
+});
+
+app.get('/register_gs',function(req,res){
+
+ var ip = req.ip;
+ var clientip = req.query.clientip;
+ var clientport = req.query.clientport;
+ var httpPort = req.query.httpPort;
+ var load = req.query.load;
+ var id = clientip + ":" + clientport;
+
+ if(serverMap[id]){
+ var info = serverMap[id];
+ if(info.clientport != clientport
+ || info.httpPort != httpPort
+ || info.ip != ip
+ ){
+ console.log("duplicate gsid:" + id + ",addr:" + ip + "(" + httpPort + ")");
+ http.send(res,1,"duplicate gsid:" + id);
+ return;
+ }
+ info.load = load;
+ http.send(res,0,"ok",{ip:ip});
+ return;
+ }
+ serverMap[id] = {
+ ip:ip,
+ id:id,
+ clientip:clientip,
+ clientport:clientport,
+ httpPort:httpPort,
+ load:load
+ };
+ http.send(res,0,"ok",{ip:ip});
+ console.log("game server registered.\n\tid:" + id + "\n\taddr:" + ip + "\n\thttp port:" + httpPort + "\n\tsocket clientport:" + clientport);
+
+ var reqdata = {
+ serverid:id,
+ sign:crypto.md5(id+config.ROOM_PRI_KEY)
+ };
+ //获取服务器信息
+ http.get(ip,httpPort,"/get_server_info",reqdata,function(ret,data){
+ if(ret && data.errcode == 0){
+ for(var i = 0; i < data.userroominfo.length; i += 2){
+ var userId = data.userroominfo[i];
+ var roomId = data.userroominfo[i+1];
+ }
+ }
+ else{
+ console.log(data.errmsg);
+ }
+ });
+});
+
+function chooseServer(){
+ var serverinfo = null;
+ for(var s in serverMap){
+ var info = serverMap[s];
+ if(serverinfo == null){
+ serverinfo = info;
+ }
+ else{
+ if(serverinfo.load > info.load){
+ serverinfo = info;
+ }
+ }
+ }
+ return serverinfo;
+}
+
+exports.createRoom = function(account,userId,roomConf,fnCallback){
+ var serverinfo = chooseServer();
+ if(serverinfo == null){
+ fnCallback(101,null);
+ return;
+ }
+
+ db.get_gems(account,function(data){
+ if(data != null){
+ //2、请求创建房间
+ var reqdata = {
+ userid:userId,
+ gems:data.gems,
+ conf:roomConf
+ };
+ reqdata.sign = crypto.md5(userId + roomConf + data.gems + config.ROOM_PRI_KEY);
+ http.get(serverinfo.ip,serverinfo.httpPort,"/create_room",reqdata,function(ret,data){
+ //console.log(data);
+ if(ret){
+ if(data.errcode == 0){
+ fnCallback(0,data.roomid);
+ }
+ else{
+ fnCallback(data.errcode,null);
+ }
+ return;
+ }
+ fnCallback(102,null);
+ });
+ }
+ else{
+ fnCallback(103,null);
+ }
+ });
+};
+
+exports.enterRoom = function(userId,name,roomId,fnCallback){
+ var reqdata = {
+ userid:userId,
+ name:name,
+ roomid:roomId
+ };
+ reqdata.sign = crypto.md5(userId + name + roomId + config.ROOM_PRI_KEY);
+
+ var checkRoomIsRuning = function(serverinfo,roomId,callback){
+ var sign = crypto.md5(roomId + config.ROOM_PRI_KEY);
+ http.get(serverinfo.ip,serverinfo.httpPort,"/is_room_runing",{roomid:roomId,sign:sign},function(ret,data){
+ if(ret){
+ if(data.errcode == 0 && data.runing == true){
+ callback(true);
+ }
+ else{
+ callback(false);
+ }
+ }
+ else{
+ callback(false);
+ }
+ });
+ }
+
+ var enterRoomReq = function(serverinfo){
+ http.get(serverinfo.ip,serverinfo.httpPort,"/enter_room",reqdata,function(ret,data){
+ console.log(data);
+ if(ret){
+ if(data.errcode == 0){
+ db.set_room_id_of_user(userId,roomId,function(ret){
+ fnCallback(0,{
+ ip:serverinfo.clientip,
+ port:serverinfo.clientport,
+ token:data.token
+ });
+ });
+ }
+ else{
+ console.log(data.errmsg);
+ fnCallback(data.errcode,null);
+ }
+ }
+ else{
+ fnCallback(-1,null);
+ }
+ });
+ };
+
+ var chooseServerAndEnter = function(serverinfo){
+ serverinfo = chooseServer();
+ if(serverinfo != null){
+ enterRoomReq(serverinfo);
+ }
+ else{
+ fnCallback(-1,null);
+ }
+ }
+
+ db.get_room_addr(roomId,function(ret,ip,port){
+ if(ret){
+ var id = ip + ":" + port;
+ var serverinfo = serverMap[id];
+ if(serverinfo != null){
+ checkRoomIsRuning(serverinfo,roomId,function(isRuning){
+ if(isRuning){
+ enterRoomReq(serverinfo);
+ }
+ else{
+ chooseServerAndEnter(serverinfo);
+ }
+ });
+ }
+ else{
+ chooseServerAndEnter(serverinfo);
+ }
+ }
+ else{
+ fnCallback(-2,null);
+ }
+ });
+};
+
+exports.isServerOnline = function(ip,port,callback){
+ var id = ip + ":" + port;
+ var serverInfo = serverMap[id];
+ if(!serverInfo){
+ callback(false);
+ return;
+ }
+ var sign = crypto.md5(config.ROOM_PRI_KEY);
+ http.get(serverInfo.ip,serverInfo.httpPort,"/ping",{sign:sign},function(ret,data){
+ if(ret){
+ callback(true);
+ }
+ else{
+ callback(false);
+ }
+ });
+};
+
+exports.start = function($config){
+ config = $config;
+ app.listen(config.ROOM_PORT,config.FOR_ROOM_IP);
+ console.log("room service is listening on " + config.FOR_ROOM_IP + ":" + config.ROOM_PORT);
+};
\ No newline at end of file
diff --git a/server/node_modules/express/History.md b/server/node_modules/express/History.md
new file mode 100755
index 0000000..40a5ed7
--- /dev/null
+++ b/server/node_modules/express/History.md
@@ -0,0 +1,3142 @@
+4.14.0 / 2016-06-16
+===================
+
+ * Add `acceptRanges` option to `res.sendFile`/`res.sendfile`
+ * Add `cacheControl` option to `res.sendFile`/`res.sendfile`
+ * Add `options` argument to `req.range`
+ - Includes the `combine` option
+ * Encode URL in `res.location`/`res.redirect` if not already encoded
+ * Fix some redirect handling in `res.sendFile`/`res.sendfile`
+ * Fix Windows absolute path check using forward slashes
+ * Improve error with invalid arguments to `req.get()`
+ * Improve performance for `res.json`/`res.jsonp` in most cases
+ * Improve `Range` header handling in `res.sendFile`/`res.sendfile`
+ * deps: accepts@~1.3.3
+ - Fix including type extensions in parameters in `Accept` parsing
+ - Fix parsing `Accept` parameters with quoted equals
+ - Fix parsing `Accept` parameters with quoted semicolons
+ - Many performance improvments
+ - deps: mime-types@~2.1.11
+ - deps: negotiator@0.6.1
+ * deps: content-type@~1.0.2
+ - perf: enable strict mode
+ * deps: cookie@0.3.1
+ - Add `sameSite` option
+ - Fix cookie `Max-Age` to never be a floating point number
+ - Improve error message when `encode` is not a function
+ - Improve error message when `expires` is not a `Date`
+ - Throw better error for invalid argument to parse
+ - Throw on invalid values provided to `serialize`
+ - perf: enable strict mode
+ - perf: hoist regular expression
+ - perf: use for loop in parse
+ - perf: use string concatination for serialization
+ * deps: finalhandler@0.5.0
+ - Change invalid or non-numeric status code to 500
+ - Overwrite status message to match set status code
+ - Prefer `err.statusCode` if `err.status` is invalid
+ - Set response headers from `err.headers` object
+ - Use `statuses` instead of `http` module for status messages
+ * deps: proxy-addr@~1.1.2
+ - Fix accepting various invalid netmasks
+ - Fix IPv6-mapped IPv4 validation edge cases
+ - IPv4 netmasks must be contingous
+ - IPv6 addresses cannot be used as a netmask
+ - deps: ipaddr.js@1.1.1
+ * deps: qs@6.2.0
+ - Add `decoder` option in `parse` function
+ * deps: range-parser@~1.2.0
+ - Add `combine` option to combine overlapping ranges
+ - Fix incorrectly returning -1 when there is at least one valid range
+ - perf: remove internal function
+ * deps: send@0.14.1
+ - Add `acceptRanges` option
+ - Add `cacheControl` option
+ - Attempt to combine multiple ranges into single range
+ - Correctly inherit from `Stream` class
+ - Fix `Content-Range` header in 416 responses when using `start`/`end` options
+ - Fix `Content-Range` header missing from default 416 responses
+ - Fix redirect error when `path` contains raw non-URL characters
+ - Fix redirect when `path` starts with multiple forward slashes
+ - Ignore non-byte `Range` headers
+ - deps: http-errors@~1.5.0
+ - deps: range-parser@~1.2.0
+ - deps: statuses@~1.3.0
+ - perf: remove argument reassignment
+ * deps: serve-static@~1.11.1
+ - Add `acceptRanges` option
+ - Add `cacheControl` option
+ - Attempt to combine multiple ranges into single range
+ - Fix redirect error when `req.url` contains raw non-URL characters
+ - Ignore non-byte `Range` headers
+ - Use status code 301 for redirects
+ - deps: send@0.14.1
+ * deps: type-is@~1.6.13
+ - Fix type error when given invalid type to match against
+ - deps: mime-types@~2.1.11
+ * deps: vary@~1.1.0
+ - Only accept valid field names in the `field` argument
+ * perf: use strict equality when possible
+
+4.13.4 / 2016-01-21
+===================
+
+ * deps: content-disposition@0.5.1
+ - perf: enable strict mode
+ * deps: cookie@0.1.5
+ - Throw on invalid values provided to `serialize`
+ * deps: depd@~1.1.0
+ - Support web browser loading
+ - perf: enable strict mode
+ * deps: escape-html@~1.0.3
+ - perf: enable strict mode
+ - perf: optimize string replacement
+ - perf: use faster string coercion
+ * deps: finalhandler@0.4.1
+ - deps: escape-html@~1.0.3
+ * deps: merge-descriptors@1.0.1
+ - perf: enable strict mode
+ * deps: methods@~1.1.2
+ - perf: enable strict mode
+ * deps: parseurl@~1.3.1
+ - perf: enable strict mode
+ * deps: proxy-addr@~1.0.10
+ - deps: ipaddr.js@1.0.5
+ - perf: enable strict mode
+ * deps: range-parser@~1.0.3
+ - perf: enable strict mode
+ * deps: send@0.13.1
+ - deps: depd@~1.1.0
+ - deps: destroy@~1.0.4
+ - deps: escape-html@~1.0.3
+ - deps: range-parser@~1.0.3
+ * deps: serve-static@~1.10.2
+ - deps: escape-html@~1.0.3
+ - deps: parseurl@~1.3.0
+ - deps: send@0.13.1
+
+4.13.3 / 2015-08-02
+===================
+
+ * Fix infinite loop condition using `mergeParams: true`
+ * Fix inner numeric indices incorrectly altering parent `req.params`
+
+4.13.2 / 2015-07-31
+===================
+
+ * deps: accepts@~1.2.12
+ - deps: mime-types@~2.1.4
+ * deps: array-flatten@1.1.1
+ - perf: enable strict mode
+ * deps: path-to-regexp@0.1.7
+ - Fix regression with escaped round brackets and matching groups
+ * deps: type-is@~1.6.6
+ - deps: mime-types@~2.1.4
+
+4.13.1 / 2015-07-05
+===================
+
+ * deps: accepts@~1.2.10
+ - deps: mime-types@~2.1.2
+ * deps: qs@4.0.0
+ - Fix dropping parameters like `hasOwnProperty`
+ - Fix various parsing edge cases
+ * deps: type-is@~1.6.4
+ - deps: mime-types@~2.1.2
+ - perf: enable strict mode
+ - perf: remove argument reassignment
+
+4.13.0 / 2015-06-20
+===================
+
+ * Add settings to debug output
+ * Fix `res.format` error when only `default` provided
+ * Fix issue where `next('route')` in `app.param` would incorrectly skip values
+ * Fix hiding platform issues with `decodeURIComponent`
+ - Only `URIError`s are a 400
+ * Fix using `*` before params in routes
+ * Fix using capture groups before params in routes
+ * Simplify `res.cookie` to call `res.append`
+ * Use `array-flatten` module for flattening arrays
+ * deps: accepts@~1.2.9
+ - deps: mime-types@~2.1.1
+ - perf: avoid argument reassignment & argument slice
+ - perf: avoid negotiator recursive construction
+ - perf: enable strict mode
+ - perf: remove unnecessary bitwise operator
+ * deps: cookie@0.1.3
+ - perf: deduce the scope of try-catch deopt
+ - perf: remove argument reassignments
+ * deps: escape-html@1.0.2
+ * deps: etag@~1.7.0
+ - Always include entity length in ETags for hash length extensions
+ - Generate non-Stats ETags using MD5 only (no longer CRC32)
+ - Improve stat performance by removing hashing
+ - Improve support for JXcore
+ - Remove base64 padding in ETags to shorten
+ - Support "fake" stats objects in environments without fs
+ - Use MD5 instead of MD4 in weak ETags over 1KB
+ * deps: finalhandler@0.4.0
+ - Fix a false-positive when unpiping in Node.js 0.8
+ - Support `statusCode` property on `Error` objects
+ - Use `unpipe` module for unpiping requests
+ - deps: escape-html@1.0.2
+ - deps: on-finished@~2.3.0
+ - perf: enable strict mode
+ - perf: remove argument reassignment
+ * deps: fresh@0.3.0
+ - Add weak `ETag` matching support
+ * deps: on-finished@~2.3.0
+ - Add defined behavior for HTTP `CONNECT` requests
+ - Add defined behavior for HTTP `Upgrade` requests
+ - deps: ee-first@1.1.1
+ * deps: path-to-regexp@0.1.6
+ * deps: send@0.13.0
+ - Allow Node.js HTTP server to set `Date` response header
+ - Fix incorrectly removing `Content-Location` on 304 response
+ - Improve the default redirect response headers
+ - Send appropriate headers on default error response
+ - Use `http-errors` for standard emitted errors
+ - Use `statuses` instead of `http` module for status messages
+ - deps: escape-html@1.0.2
+ - deps: etag@~1.7.0
+ - deps: fresh@0.3.0
+ - deps: on-finished@~2.3.0
+ - perf: enable strict mode
+ - perf: remove unnecessary array allocations
+ * deps: serve-static@~1.10.0
+ - Add `fallthrough` option
+ - Fix reading options from options prototype
+ - Improve the default redirect response headers
+ - Malformed URLs now `next()` instead of 400
+ - deps: escape-html@1.0.2
+ - deps: send@0.13.0
+ - perf: enable strict mode
+ - perf: remove argument reassignment
+ * deps: type-is@~1.6.3
+ - deps: mime-types@~2.1.1
+ - perf: reduce try block size
+ - perf: remove bitwise operations
+ * perf: enable strict mode
+ * perf: isolate `app.render` try block
+ * perf: remove argument reassignments in application
+ * perf: remove argument reassignments in request prototype
+ * perf: remove argument reassignments in response prototype
+ * perf: remove argument reassignments in routing
+ * perf: remove argument reassignments in `View`
+ * perf: skip attempting to decode zero length string
+ * perf: use saved reference to `http.STATUS_CODES`
+
+4.12.4 / 2015-05-17
+===================
+
+ * deps: accepts@~1.2.7
+ - deps: mime-types@~2.0.11
+ - deps: negotiator@0.5.3
+ * deps: debug@~2.2.0
+ - deps: ms@0.7.1
+ * deps: depd@~1.0.1
+ * deps: etag@~1.6.0
+ - Improve support for JXcore
+ - Support "fake" stats objects in environments without `fs`
+ * deps: finalhandler@0.3.6
+ - deps: debug@~2.2.0
+ - deps: on-finished@~2.2.1
+ * deps: on-finished@~2.2.1
+ - Fix `isFinished(req)` when data buffered
+ * deps: proxy-addr@~1.0.8
+ - deps: ipaddr.js@1.0.1
+ * deps: qs@2.4.2
+ - Fix allowing parameters like `constructor`
+ * deps: send@0.12.3
+ - deps: debug@~2.2.0
+ - deps: depd@~1.0.1
+ - deps: etag@~1.6.0
+ - deps: ms@0.7.1
+ - deps: on-finished@~2.2.1
+ * deps: serve-static@~1.9.3
+ - deps: send@0.12.3
+ * deps: type-is@~1.6.2
+ - deps: mime-types@~2.0.11
+
+4.12.3 / 2015-03-17
+===================
+
+ * deps: accepts@~1.2.5
+ - deps: mime-types@~2.0.10
+ * deps: debug@~2.1.3
+ - Fix high intensity foreground color for bold
+ - deps: ms@0.7.0
+ * deps: finalhandler@0.3.4
+ - deps: debug@~2.1.3
+ * deps: proxy-addr@~1.0.7
+ - deps: ipaddr.js@0.1.9
+ * deps: qs@2.4.1
+ - Fix error when parameter `hasOwnProperty` is present
+ * deps: send@0.12.2
+ - Throw errors early for invalid `extensions` or `index` options
+ - deps: debug@~2.1.3
+ * deps: serve-static@~1.9.2
+ - deps: send@0.12.2
+ * deps: type-is@~1.6.1
+ - deps: mime-types@~2.0.10
+
+4.12.2 / 2015-03-02
+===================
+
+ * Fix regression where `"Request aborted"` is logged using `res.sendFile`
+
+4.12.1 / 2015-03-01
+===================
+
+ * Fix constructing application with non-configurable prototype properties
+ * Fix `ECONNRESET` errors from `res.sendFile` usage
+ * Fix `req.host` when using "trust proxy" hops count
+ * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count
+ * Fix wrong `code` on aborted connections from `res.sendFile`
+ * deps: merge-descriptors@1.0.0
+
+4.12.0 / 2015-02-23
+===================
+
+ * Fix `"trust proxy"` setting to inherit when app is mounted
+ * Generate `ETag`s for all request responses
+ - No longer restricted to only responses for `GET` and `HEAD` requests
+ * Use `content-type` to parse `Content-Type` headers
+ * deps: accepts@~1.2.4
+ - Fix preference sorting to be stable for long acceptable lists
+ - deps: mime-types@~2.0.9
+ - deps: negotiator@0.5.1
+ * deps: cookie-signature@1.0.6
+ * deps: send@0.12.1
+ - Always read the stat size from the file
+ - Fix mutating passed-in `options`
+ - deps: mime@1.3.4
+ * deps: serve-static@~1.9.1
+ - deps: send@0.12.1
+ * deps: type-is@~1.6.0
+ - fix argument reassignment
+ - fix false-positives in `hasBody` `Transfer-Encoding` check
+ - support wildcard for both type and subtype (`*/*`)
+ - deps: mime-types@~2.0.9
+
+4.11.2 / 2015-02-01
+===================
+
+ * Fix `res.redirect` double-calling `res.end` for `HEAD` requests
+ * deps: accepts@~1.2.3
+ - deps: mime-types@~2.0.8
+ * deps: proxy-addr@~1.0.6
+ - deps: ipaddr.js@0.1.8
+ * deps: type-is@~1.5.6
+ - deps: mime-types@~2.0.8
+
+4.11.1 / 2015-01-20
+===================
+
+ * deps: send@0.11.1
+ - Fix root path disclosure
+ * deps: serve-static@~1.8.1
+ - Fix redirect loop in Node.js 0.11.14
+ - Fix root path disclosure
+ - deps: send@0.11.1
+
+4.11.0 / 2015-01-13
+===================
+
+ * Add `res.append(field, val)` to append headers
+ * Deprecate leading `:` in `name` for `app.param(name, fn)`
+ * Deprecate `req.param()` -- use `req.params`, `req.body`, or `req.query` instead
+ * Deprecate `app.param(fn)`
+ * Fix `OPTIONS` responses to include the `HEAD` method properly
+ * Fix `res.sendFile` not always detecting aborted connection
+ * Match routes iteratively to prevent stack overflows
+ * deps: accepts@~1.2.2
+ - deps: mime-types@~2.0.7
+ - deps: negotiator@0.5.0
+ * deps: send@0.11.0
+ - deps: debug@~2.1.1
+ - deps: etag@~1.5.1
+ - deps: ms@0.7.0
+ - deps: on-finished@~2.2.0
+ * deps: serve-static@~1.8.0
+ - deps: send@0.11.0
+
+4.10.8 / 2015-01-13
+===================
+
+ * Fix crash from error within `OPTIONS` response handler
+ * deps: proxy-addr@~1.0.5
+ - deps: ipaddr.js@0.1.6
+
+4.10.7 / 2015-01-04
+===================
+
+ * Fix `Allow` header for `OPTIONS` to not contain duplicate methods
+ * Fix incorrect "Request aborted" for `res.sendFile` when `HEAD` or 304
+ * deps: debug@~2.1.1
+ * deps: finalhandler@0.3.3
+ - deps: debug@~2.1.1
+ - deps: on-finished@~2.2.0
+ * deps: methods@~1.1.1
+ * deps: on-finished@~2.2.0
+ * deps: serve-static@~1.7.2
+ - Fix potential open redirect when mounted at root
+ * deps: type-is@~1.5.5
+ - deps: mime-types@~2.0.7
+
+4.10.6 / 2014-12-12
+===================
+
+ * Fix exception in `req.fresh`/`req.stale` without response headers
+
+4.10.5 / 2014-12-10
+===================
+
+ * Fix `res.send` double-calling `res.end` for `HEAD` requests
+ * deps: accepts@~1.1.4
+ - deps: mime-types@~2.0.4
+ * deps: type-is@~1.5.4
+ - deps: mime-types@~2.0.4
+
+4.10.4 / 2014-11-24
+===================
+
+ * Fix `res.sendfile` logging standard write errors
+
+4.10.3 / 2014-11-23
+===================
+
+ * Fix `res.sendFile` logging standard write errors
+ * deps: etag@~1.5.1
+ * deps: proxy-addr@~1.0.4
+ - deps: ipaddr.js@0.1.5
+ * deps: qs@2.3.3
+ - Fix `arrayLimit` behavior
+
+4.10.2 / 2014-11-09
+===================
+
+ * Correctly invoke async router callback asynchronously
+ * deps: accepts@~1.1.3
+ - deps: mime-types@~2.0.3
+ * deps: type-is@~1.5.3
+ - deps: mime-types@~2.0.3
+
+4.10.1 / 2014-10-28
+===================
+
+ * Fix handling of URLs containing `://` in the path
+ * deps: qs@2.3.2
+ - Fix parsing of mixed objects and values
+
+4.10.0 / 2014-10-23
+===================
+
+ * Add support for `app.set('views', array)`
+ - Views are looked up in sequence in array of directories
+ * Fix `res.send(status)` to mention `res.sendStatus(status)`
+ * Fix handling of invalid empty URLs
+ * Use `content-disposition` module for `res.attachment`/`res.download`
+ - Sends standards-compliant `Content-Disposition` header
+ - Full Unicode support
+ * Use `path.resolve` in view lookup
+ * deps: debug@~2.1.0
+ - Implement `DEBUG_FD` env variable support
+ * deps: depd@~1.0.0
+ * deps: etag@~1.5.0
+ - Improve string performance
+ - Slightly improve speed for weak ETags over 1KB
+ * deps: finalhandler@0.3.2
+ - Terminate in progress response only on error
+ - Use `on-finished` to determine request status
+ - deps: debug@~2.1.0
+ - deps: on-finished@~2.1.1
+ * deps: on-finished@~2.1.1
+ - Fix handling of pipelined requests
+ * deps: qs@2.3.0
+ - Fix parsing of mixed implicit and explicit arrays
+ * deps: send@0.10.1
+ - deps: debug@~2.1.0
+ - deps: depd@~1.0.0
+ - deps: etag@~1.5.0
+ - deps: on-finished@~2.1.1
+ * deps: serve-static@~1.7.1
+ - deps: send@0.10.1
+
+4.9.8 / 2014-10-17
+==================
+
+ * Fix `res.redirect` body when redirect status specified
+ * deps: accepts@~1.1.2
+ - Fix error when media type has invalid parameter
+ - deps: negotiator@0.4.9
+
+4.9.7 / 2014-10-10
+==================
+
+ * Fix using same param name in array of paths
+
+4.9.6 / 2014-10-08
+==================
+
+ * deps: accepts@~1.1.1
+ - deps: mime-types@~2.0.2
+ - deps: negotiator@0.4.8
+ * deps: serve-static@~1.6.4
+ - Fix redirect loop when index file serving disabled
+ * deps: type-is@~1.5.2
+ - deps: mime-types@~2.0.2
+
+4.9.5 / 2014-09-24
+==================
+
+ * deps: etag@~1.4.0
+ * deps: proxy-addr@~1.0.3
+ - Use `forwarded` npm module
+ * deps: send@0.9.3
+ - deps: etag@~1.4.0
+ * deps: serve-static@~1.6.3
+ - deps: send@0.9.3
+
+4.9.4 / 2014-09-19
+==================
+
+ * deps: qs@2.2.4
+ - Fix issue with object keys starting with numbers truncated
+
+4.9.3 / 2014-09-18
+==================
+
+ * deps: proxy-addr@~1.0.2
+ - Fix a global leak when multiple subnets are trusted
+ - deps: ipaddr.js@0.1.3
+
+4.9.2 / 2014-09-17
+==================
+
+ * Fix regression for empty string `path` in `app.use`
+ * Fix `router.use` to accept array of middleware without path
+ * Improve error message for bad `app.use` arguments
+
+4.9.1 / 2014-09-16
+==================
+
+ * Fix `app.use` to accept array of middleware without path
+ * deps: depd@0.4.5
+ * deps: etag@~1.3.1
+ * deps: send@0.9.2
+ - deps: depd@0.4.5
+ - deps: etag@~1.3.1
+ - deps: range-parser@~1.0.2
+ * deps: serve-static@~1.6.2
+ - deps: send@0.9.2
+
+4.9.0 / 2014-09-08
+==================
+
+ * Add `res.sendStatus`
+ * Invoke callback for sendfile when client aborts
+ - Applies to `res.sendFile`, `res.sendfile`, and `res.download`
+ - `err` will be populated with request aborted error
+ * Support IP address host in `req.subdomains`
+ * Use `etag` to generate `ETag` headers
+ * deps: accepts@~1.1.0
+ - update `mime-types`
+ * deps: cookie-signature@1.0.5
+ * deps: debug@~2.0.0
+ * deps: finalhandler@0.2.0
+ - Set `X-Content-Type-Options: nosniff` header
+ - deps: debug@~2.0.0
+ * deps: fresh@0.2.4
+ * deps: media-typer@0.3.0
+ - Throw error when parameter format invalid on parse
+ * deps: qs@2.2.3
+ - Fix issue where first empty value in array is discarded
+ * deps: range-parser@~1.0.2
+ * deps: send@0.9.1
+ - Add `lastModified` option
+ - Use `etag` to generate `ETag` header
+ - deps: debug@~2.0.0
+ - deps: fresh@0.2.4
+ * deps: serve-static@~1.6.1
+ - Add `lastModified` option
+ - deps: send@0.9.1
+ * deps: type-is@~1.5.1
+ - fix `hasbody` to be true for `content-length: 0`
+ - deps: media-typer@0.3.0
+ - deps: mime-types@~2.0.1
+ * deps: vary@~1.0.0
+ - Accept valid `Vary` header string as `field`
+
+4.8.8 / 2014-09-04
+==================
+
+ * deps: send@0.8.5
+ - Fix a path traversal issue when using `root`
+ - Fix malicious path detection for empty string path
+ * deps: serve-static@~1.5.4
+ - deps: send@0.8.5
+
+4.8.7 / 2014-08-29
+==================
+
+ * deps: qs@2.2.2
+ - Remove unnecessary cloning
+
+4.8.6 / 2014-08-27
+==================
+
+ * deps: qs@2.2.0
+ - Array parsing fix
+ - Performance improvements
+
+4.8.5 / 2014-08-18
+==================
+
+ * deps: send@0.8.3
+ - deps: destroy@1.0.3
+ - deps: on-finished@2.1.0
+ * deps: serve-static@~1.5.3
+ - deps: send@0.8.3
+
+4.8.4 / 2014-08-14
+==================
+
+ * deps: qs@1.2.2
+ * deps: send@0.8.2
+ - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
+ * deps: serve-static@~1.5.2
+ - deps: send@0.8.2
+
+4.8.3 / 2014-08-10
+==================
+
+ * deps: parseurl@~1.3.0
+ * deps: qs@1.2.1
+ * deps: serve-static@~1.5.1
+ - Fix parsing of weird `req.originalUrl` values
+ - deps: parseurl@~1.3.0
+ - deps: utils-merge@1.0.0
+
+4.8.2 / 2014-08-07
+==================
+
+ * deps: qs@1.2.0
+ - Fix parsing array of objects
+
+4.8.1 / 2014-08-06
+==================
+
+ * fix incorrect deprecation warnings on `res.download`
+ * deps: qs@1.1.0
+ - Accept urlencoded square brackets
+ - Accept empty values in implicit array notation
+
+4.8.0 / 2014-08-05
+==================
+
+ * add `res.sendFile`
+ - accepts a file system path instead of a URL
+ - requires an absolute path or `root` option specified
+ * deprecate `res.sendfile` -- use `res.sendFile` instead
+ * support mounted app as any argument to `app.use()`
+ * deps: qs@1.0.2
+ - Complete rewrite
+ - Limits array length to 20
+ - Limits object depth to 5
+ - Limits parameters to 1,000
+ * deps: send@0.8.1
+ - Add `extensions` option
+ * deps: serve-static@~1.5.0
+ - Add `extensions` option
+ - deps: send@0.8.1
+
+4.7.4 / 2014-08-04
+==================
+
+ * fix `res.sendfile` regression for serving directory index files
+ * deps: send@0.7.4
+ - Fix incorrect 403 on Windows and Node.js 0.11
+ - Fix serving index files without root dir
+ * deps: serve-static@~1.4.4
+ - deps: send@0.7.4
+
+4.7.3 / 2014-08-04
+==================
+
+ * deps: send@0.7.3
+ - Fix incorrect 403 on Windows and Node.js 0.11
+ * deps: serve-static@~1.4.3
+ - Fix incorrect 403 on Windows and Node.js 0.11
+ - deps: send@0.7.3
+
+4.7.2 / 2014-07-27
+==================
+
+ * deps: depd@0.4.4
+ - Work-around v8 generating empty stack traces
+ * deps: send@0.7.2
+ - deps: depd@0.4.4
+ * deps: serve-static@~1.4.2
+
+4.7.1 / 2014-07-26
+==================
+
+ * deps: depd@0.4.3
+ - Fix exception when global `Error.stackTraceLimit` is too low
+ * deps: send@0.7.1
+ - deps: depd@0.4.3
+ * deps: serve-static@~1.4.1
+
+4.7.0 / 2014-07-25
+==================
+
+ * fix `req.protocol` for proxy-direct connections
+ * configurable query parser with `app.set('query parser', parser)`
+ - `app.set('query parser', 'extended')` parse with "qs" module
+ - `app.set('query parser', 'simple')` parse with "querystring" core module
+ - `app.set('query parser', false)` disable query string parsing
+ - `app.set('query parser', true)` enable simple parsing
+ * deprecate `res.json(status, obj)` -- use `res.status(status).json(obj)` instead
+ * deprecate `res.jsonp(status, obj)` -- use `res.status(status).jsonp(obj)` instead
+ * deprecate `res.send(status, body)` -- use `res.status(status).send(body)` instead
+ * deps: debug@1.0.4
+ * deps: depd@0.4.2
+ - Add `TRACE_DEPRECATION` environment variable
+ - Remove non-standard grey color from color output
+ - Support `--no-deprecation` argument
+ - Support `--trace-deprecation` argument
+ * deps: finalhandler@0.1.0
+ - Respond after request fully read
+ - deps: debug@1.0.4
+ * deps: parseurl@~1.2.0
+ - Cache URLs based on original value
+ - Remove no-longer-needed URL mis-parse work-around
+ - Simplify the "fast-path" `RegExp`
+ * deps: send@0.7.0
+ - Add `dotfiles` option
+ - Cap `maxAge` value to 1 year
+ - deps: debug@1.0.4
+ - deps: depd@0.4.2
+ * deps: serve-static@~1.4.0
+ - deps: parseurl@~1.2.0
+ - deps: send@0.7.0
+ * perf: prevent multiple `Buffer` creation in `res.send`
+
+4.6.1 / 2014-07-12
+==================
+
+ * fix `subapp.mountpath` regression for `app.use(subapp)`
+
+4.6.0 / 2014-07-11
+==================
+
+ * accept multiple callbacks to `app.use()`
+ * add explicit "Rosetta Flash JSONP abuse" protection
+ - previous versions are not vulnerable; this is just explicit protection
+ * catch errors in multiple `req.param(name, fn)` handlers
+ * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead
+ * fix `res.send(status, num)` to send `num` as json (not error)
+ * remove unnecessary escaping when `res.jsonp` returns JSON response
+ * support non-string `path` in `app.use(path, fn)`
+ - supports array of paths
+ - supports `RegExp`
+ * router: fix optimization on router exit
+ * router: refactor location of `try` blocks
+ * router: speed up standard `app.use(fn)`
+ * deps: debug@1.0.3
+ - Add support for multiple wildcards in namespaces
+ * deps: finalhandler@0.0.3
+ - deps: debug@1.0.3
+ * deps: methods@1.1.0
+ - add `CONNECT`
+ * deps: parseurl@~1.1.3
+ - faster parsing of href-only URLs
+ * deps: path-to-regexp@0.1.3
+ * deps: send@0.6.0
+ - deps: debug@1.0.3
+ * deps: serve-static@~1.3.2
+ - deps: parseurl@~1.1.3
+ - deps: send@0.6.0
+ * perf: fix arguments reassign deopt in some `res` methods
+
+4.5.1 / 2014-07-06
+==================
+
+ * fix routing regression when altering `req.method`
+
+4.5.0 / 2014-07-04
+==================
+
+ * add deprecation message to non-plural `req.accepts*`
+ * add deprecation message to `res.send(body, status)`
+ * add deprecation message to `res.vary()`
+ * add `headers` option to `res.sendfile`
+ - use to set headers on successful file transfer
+ * add `mergeParams` option to `Router`
+ - merges `req.params` from parent routes
+ * add `req.hostname` -- correct name for what `req.host` returns
+ * deprecate things with `depd` module
+ * deprecate `req.host` -- use `req.hostname` instead
+ * fix behavior when handling request without routes
+ * fix handling when `route.all` is only route
+ * invoke `router.param()` only when route matches
+ * restore `req.params` after invoking router
+ * use `finalhandler` for final response handling
+ * use `media-typer` to alter content-type charset
+ * deps: accepts@~1.0.7
+ * deps: send@0.5.0
+ - Accept string for `maxage` (converted by `ms`)
+ - Include link in default redirect response
+ * deps: serve-static@~1.3.0
+ - Accept string for `maxAge` (converted by `ms`)
+ - Add `setHeaders` option
+ - Include HTML link in redirect response
+ - deps: send@0.5.0
+ * deps: type-is@~1.3.2
+
+4.4.5 / 2014-06-26
+==================
+
+ * deps: cookie-signature@1.0.4
+ - fix for timing attacks
+
+4.4.4 / 2014-06-20
+==================
+
+ * fix `res.attachment` Unicode filenames in Safari
+ * fix "trim prefix" debug message in `express:router`
+ * deps: accepts@~1.0.5
+ * deps: buffer-crc32@0.2.3
+
+4.4.3 / 2014-06-11
+==================
+
+ * fix persistence of modified `req.params[name]` from `app.param()`
+ * deps: accepts@1.0.3
+ - deps: negotiator@0.4.6
+ * deps: debug@1.0.2
+ * deps: send@0.4.3
+ - Do not throw un-catchable error on file open race condition
+ - Use `escape-html` for HTML escaping
+ - deps: debug@1.0.2
+ - deps: finished@1.2.2
+ - deps: fresh@0.2.2
+ * deps: serve-static@1.2.3
+ - Do not throw un-catchable error on file open race condition
+ - deps: send@0.4.3
+
+4.4.2 / 2014-06-09
+==================
+
+ * fix catching errors from top-level handlers
+ * use `vary` module for `res.vary`
+ * deps: debug@1.0.1
+ * deps: proxy-addr@1.0.1
+ * deps: send@0.4.2
+ - fix "event emitter leak" warnings
+ - deps: debug@1.0.1
+ - deps: finished@1.2.1
+ * deps: serve-static@1.2.2
+ - fix "event emitter leak" warnings
+ - deps: send@0.4.2
+ * deps: type-is@1.2.1
+
+4.4.1 / 2014-06-02
+==================
+
+ * deps: methods@1.0.1
+ * deps: send@0.4.1
+ - Send `max-age` in `Cache-Control` in correct format
+ * deps: serve-static@1.2.1
+ - use `escape-html` for escaping
+ - deps: send@0.4.1
+
+4.4.0 / 2014-05-30
+==================
+
+ * custom etag control with `app.set('etag', val)`
+ - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation
+ - `app.set('etag', 'weak')` weak tag
+ - `app.set('etag', 'strong')` strong etag
+ - `app.set('etag', false)` turn off
+ - `app.set('etag', true)` standard etag
+ * mark `res.send` ETag as weak and reduce collisions
+ * update accepts to 1.0.2
+ - Fix interpretation when header not in request
+ * update send to 0.4.0
+ - Calculate ETag with md5 for reduced collisions
+ - Ignore stream errors after request ends
+ - deps: debug@0.8.1
+ * update serve-static to 1.2.0
+ - Calculate ETag with md5 for reduced collisions
+ - Ignore stream errors after request ends
+ - deps: send@0.4.0
+
+4.3.2 / 2014-05-28
+==================
+
+ * fix handling of errors from `router.param()` callbacks
+
+4.3.1 / 2014-05-23
+==================
+
+ * revert "fix behavior of multiple `app.VERB` for the same path"
+ - this caused a regression in the order of route execution
+
+4.3.0 / 2014-05-21
+==================
+
+ * add `req.baseUrl` to access the path stripped from `req.url` in routes
+ * fix behavior of multiple `app.VERB` for the same path
+ * fix issue routing requests among sub routers
+ * invoke `router.param()` only when necessary instead of every match
+ * proper proxy trust with `app.set('trust proxy', trust)`
+ - `app.set('trust proxy', 1)` trust first hop
+ - `app.set('trust proxy', 'loopback')` trust loopback addresses
+ - `app.set('trust proxy', '10.0.0.1')` trust single IP
+ - `app.set('trust proxy', '10.0.0.1/16')` trust subnet
+ - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list
+ - `app.set('trust proxy', false)` turn off
+ - `app.set('trust proxy', true)` trust everything
+ * set proper `charset` in `Content-Type` for `res.send`
+ * update type-is to 1.2.0
+ - support suffix matching
+
+4.2.0 / 2014-05-11
+==================
+
+ * deprecate `app.del()` -- use `app.delete()` instead
+ * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead
+ - the edge-case `res.json(status, num)` requires `res.status(status).json(num)`
+ * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead
+ - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)`
+ * fix `req.next` when inside router instance
+ * include `ETag` header in `HEAD` requests
+ * keep previous `Content-Type` for `res.jsonp`
+ * support PURGE method
+ - add `app.purge`
+ - add `router.purge`
+ - include PURGE in `app.all`
+ * update debug to 0.8.0
+ - add `enable()` method
+ - change from stderr to stdout
+ * update methods to 1.0.0
+ - add PURGE
+
+4.1.2 / 2014-05-08
+==================
+
+ * fix `req.host` for IPv6 literals
+ * fix `res.jsonp` error if callback param is object
+
+4.1.1 / 2014-04-27
+==================
+
+ * fix package.json to reflect supported node version
+
+4.1.0 / 2014-04-24
+==================
+
+ * pass options from `res.sendfile` to `send`
+ * preserve casing of headers in `res.header` and `res.set`
+ * support unicode file names in `res.attachment` and `res.download`
+ * update accepts to 1.0.1
+ - deps: negotiator@0.4.0
+ * update cookie to 0.1.2
+ - Fix for maxAge == 0
+ - made compat with expires field
+ * update send to 0.3.0
+ - Accept API options in options object
+ - Coerce option types
+ - Control whether to generate etags
+ - Default directory access to 403 when index disabled
+ - Fix sending files with dots without root set
+ - Include file path in etag
+ - Make "Can't set headers after they are sent." catchable
+ - Send full entity-body for multi range requests
+ - Set etags to "weak"
+ - Support "If-Range" header
+ - Support multiple index paths
+ - deps: mime@1.2.11
+ * update serve-static to 1.1.0
+ - Accept options directly to `send` module
+ - Resolve relative paths at middleware setup
+ - Use parseurl to parse the URL from request
+ - deps: send@0.3.0
+ * update type-is to 1.1.0
+ - add non-array values support
+ - add `multipart` as a shorthand
+
+4.0.0 / 2014-04-09
+==================
+
+ * remove:
+ - node 0.8 support
+ - connect and connect's patches except for charset handling
+ - express(1) - moved to [express-generator](https://github.com/expressjs/generator)
+ - `express.createServer()` - it has been deprecated for a long time. Use `express()`
+ - `app.configure` - use logic in your own app code
+ - `app.router` - is removed
+ - `req.auth` - use `basic-auth` instead
+ - `req.accepted*` - use `req.accepts*()` instead
+ - `res.location` - relative URL resolution is removed
+ - `res.charset` - include the charset in the content type when using `res.set()`
+ - all bundled middleware except `static`
+ * change:
+ - `app.route` -> `app.mountpath` when mounting an express app in another express app
+ - `json spaces` no longer enabled by default in development
+ - `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings`
+ - `req.params` is now an object instead of an array
+ - `res.locals` is no longer a function. It is a plain js object. Treat it as such.
+ - `res.headerSent` -> `res.headersSent` to match node.js ServerResponse object
+ * refactor:
+ - `req.accepts*` with [accepts](https://github.com/expressjs/accepts)
+ - `req.is` with [type-is](https://github.com/expressjs/type-is)
+ - [path-to-regexp](https://github.com/component/path-to-regexp)
+ * add:
+ - `app.router()` - returns the app Router instance
+ - `app.route()` - Proxy to the app's `Router#route()` method to create a new route
+ - Router & Route - public API
+
+3.21.2 / 2015-07-31
+===================
+
+ * deps: connect@2.30.2
+ - deps: body-parser@~1.13.3
+ - deps: compression@~1.5.2
+ - deps: errorhandler@~1.4.2
+ - deps: method-override@~2.3.5
+ - deps: serve-index@~1.7.2
+ - deps: type-is@~1.6.6
+ - deps: vhost@~3.0.1
+ * deps: vary@~1.0.1
+ - Fix setting empty header from empty `field`
+ - perf: enable strict mode
+ - perf: remove argument reassignments
+
+3.21.1 / 2015-07-05
+===================
+
+ * deps: basic-auth@~1.0.3
+ * deps: connect@2.30.1
+ - deps: body-parser@~1.13.2
+ - deps: compression@~1.5.1
+ - deps: errorhandler@~1.4.1
+ - deps: morgan@~1.6.1
+ - deps: pause@0.1.0
+ - deps: qs@4.0.0
+ - deps: serve-index@~1.7.1
+ - deps: type-is@~1.6.4
+
+3.21.0 / 2015-06-18
+===================
+
+ * deps: basic-auth@1.0.2
+ - perf: enable strict mode
+ - perf: hoist regular expression
+ - perf: parse with regular expressions
+ - perf: remove argument reassignment
+ * deps: connect@2.30.0
+ - deps: body-parser@~1.13.1
+ - deps: bytes@2.1.0
+ - deps: compression@~1.5.0
+ - deps: cookie@0.1.3
+ - deps: cookie-parser@~1.3.5
+ - deps: csurf@~1.8.3
+ - deps: errorhandler@~1.4.0
+ - deps: express-session@~1.11.3
+ - deps: finalhandler@0.4.0
+ - deps: fresh@0.3.0
+ - deps: morgan@~1.6.0
+ - deps: serve-favicon@~2.3.0
+ - deps: serve-index@~1.7.0
+ - deps: serve-static@~1.10.0
+ - deps: type-is@~1.6.3
+ * deps: cookie@0.1.3
+ - perf: deduce the scope of try-catch deopt
+ - perf: remove argument reassignments
+ * deps: escape-html@1.0.2
+ * deps: etag@~1.7.0
+ - Always include entity length in ETags for hash length extensions
+ - Generate non-Stats ETags using MD5 only (no longer CRC32)
+ - Improve stat performance by removing hashing
+ - Improve support for JXcore
+ - Remove base64 padding in ETags to shorten
+ - Support "fake" stats objects in environments without fs
+ - Use MD5 instead of MD4 in weak ETags over 1KB
+ * deps: fresh@0.3.0
+ - Add weak `ETag` matching support
+ * deps: mkdirp@0.5.1
+ - Work in global strict mode
+ * deps: send@0.13.0
+ - Allow Node.js HTTP server to set `Date` response header
+ - Fix incorrectly removing `Content-Location` on 304 response
+ - Improve the default redirect response headers
+ - Send appropriate headers on default error response
+ - Use `http-errors` for standard emitted errors
+ - Use `statuses` instead of `http` module for status messages
+ - deps: escape-html@1.0.2
+ - deps: etag@~1.7.0
+ - deps: fresh@0.3.0
+ - deps: on-finished@~2.3.0
+ - perf: enable strict mode
+ - perf: remove unnecessary array allocations
+
+3.20.3 / 2015-05-17
+===================
+
+ * deps: connect@2.29.2
+ - deps: body-parser@~1.12.4
+ - deps: compression@~1.4.4
+ - deps: connect-timeout@~1.6.2
+ - deps: debug@~2.2.0
+ - deps: depd@~1.0.1
+ - deps: errorhandler@~1.3.6
+ - deps: finalhandler@0.3.6
+ - deps: method-override@~2.3.3
+ - deps: morgan@~1.5.3
+ - deps: qs@2.4.2
+ - deps: response-time@~2.3.1
+ - deps: serve-favicon@~2.2.1
+ - deps: serve-index@~1.6.4
+ - deps: serve-static@~1.9.3
+ - deps: type-is@~1.6.2
+ * deps: debug@~2.2.0
+ - deps: ms@0.7.1
+ * deps: depd@~1.0.1
+ * deps: proxy-addr@~1.0.8
+ - deps: ipaddr.js@1.0.1
+ * deps: send@0.12.3
+ - deps: debug@~2.2.0
+ - deps: depd@~1.0.1
+ - deps: etag@~1.6.0
+ - deps: ms@0.7.1
+ - deps: on-finished@~2.2.1
+
+3.20.2 / 2015-03-16
+===================
+
+ * deps: connect@2.29.1
+ - deps: body-parser@~1.12.2
+ - deps: compression@~1.4.3
+ - deps: connect-timeout@~1.6.1
+ - deps: debug@~2.1.3
+ - deps: errorhandler@~1.3.5
+ - deps: express-session@~1.10.4
+ - deps: finalhandler@0.3.4
+ - deps: method-override@~2.3.2
+ - deps: morgan@~1.5.2
+ - deps: qs@2.4.1
+ - deps: serve-index@~1.6.3
+ - deps: serve-static@~1.9.2
+ - deps: type-is@~1.6.1
+ * deps: debug@~2.1.3
+ - Fix high intensity foreground color for bold
+ - deps: ms@0.7.0
+ * deps: merge-descriptors@1.0.0
+ * deps: proxy-addr@~1.0.7
+ - deps: ipaddr.js@0.1.9
+ * deps: send@0.12.2
+ - Throw errors early for invalid `extensions` or `index` options
+ - deps: debug@~2.1.3
+
+3.20.1 / 2015-02-28
+===================
+
+ * Fix `req.host` when using "trust proxy" hops count
+ * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count
+
+3.20.0 / 2015-02-18
+===================
+
+ * Fix `"trust proxy"` setting to inherit when app is mounted
+ * Generate `ETag`s for all request responses
+ - No longer restricted to only responses for `GET` and `HEAD` requests
+ * Use `content-type` to parse `Content-Type` headers
+ * deps: connect@2.29.0
+ - Use `content-type` to parse `Content-Type` headers
+ - deps: body-parser@~1.12.0
+ - deps: compression@~1.4.1
+ - deps: connect-timeout@~1.6.0
+ - deps: cookie-parser@~1.3.4
+ - deps: cookie-signature@1.0.6
+ - deps: csurf@~1.7.0
+ - deps: errorhandler@~1.3.4
+ - deps: express-session@~1.10.3
+ - deps: http-errors@~1.3.1
+ - deps: response-time@~2.3.0
+ - deps: serve-index@~1.6.2
+ - deps: serve-static@~1.9.1
+ - deps: type-is@~1.6.0
+ * deps: cookie-signature@1.0.6
+ * deps: send@0.12.1
+ - Always read the stat size from the file
+ - Fix mutating passed-in `options`
+ - deps: mime@1.3.4
+
+3.19.2 / 2015-02-01
+===================
+
+ * deps: connect@2.28.3
+ - deps: compression@~1.3.1
+ - deps: csurf@~1.6.6
+ - deps: errorhandler@~1.3.3
+ - deps: express-session@~1.10.2
+ - deps: serve-index@~1.6.1
+ - deps: type-is@~1.5.6
+ * deps: proxy-addr@~1.0.6
+ - deps: ipaddr.js@0.1.8
+
+3.19.1 / 2015-01-20
+===================
+
+ * deps: connect@2.28.2
+ - deps: body-parser@~1.10.2
+ - deps: serve-static@~1.8.1
+ * deps: send@0.11.1
+ - Fix root path disclosure
+
+3.19.0 / 2015-01-09
+===================
+
+ * Fix `OPTIONS` responses to include the `HEAD` method property
+ * Use `readline` for prompt in `express(1)`
+ * deps: commander@2.6.0
+ * deps: connect@2.28.1
+ - deps: body-parser@~1.10.1
+ - deps: compression@~1.3.0
+ - deps: connect-timeout@~1.5.0
+ - deps: csurf@~1.6.4
+ - deps: debug@~2.1.1
+ - deps: errorhandler@~1.3.2
+ - deps: express-session@~1.10.1
+ - deps: finalhandler@0.3.3
+ - deps: method-override@~2.3.1
+ - deps: morgan@~1.5.1
+ - deps: serve-favicon@~2.2.0
+ - deps: serve-index@~1.6.0
+ - deps: serve-static@~1.8.0
+ - deps: type-is@~1.5.5
+ * deps: debug@~2.1.1
+ * deps: methods@~1.1.1
+ * deps: proxy-addr@~1.0.5
+ - deps: ipaddr.js@0.1.6
+ * deps: send@0.11.0
+ - deps: debug@~2.1.1
+ - deps: etag@~1.5.1
+ - deps: ms@0.7.0
+ - deps: on-finished@~2.2.0
+
+3.18.6 / 2014-12-12
+===================
+
+ * Fix exception in `req.fresh`/`req.stale` without response headers
+
+3.18.5 / 2014-12-11
+===================
+
+ * deps: connect@2.27.6
+ - deps: compression@~1.2.2
+ - deps: express-session@~1.9.3
+ - deps: http-errors@~1.2.8
+ - deps: serve-index@~1.5.3
+ - deps: type-is@~1.5.4
+
+3.18.4 / 2014-11-23
+===================
+
+ * deps: connect@2.27.4
+ - deps: body-parser@~1.9.3
+ - deps: compression@~1.2.1
+ - deps: errorhandler@~1.2.3
+ - deps: express-session@~1.9.2
+ - deps: qs@2.3.3
+ - deps: serve-favicon@~2.1.7
+ - deps: serve-static@~1.5.1
+ - deps: type-is@~1.5.3
+ * deps: etag@~1.5.1
+ * deps: proxy-addr@~1.0.4
+ - deps: ipaddr.js@0.1.5
+
+3.18.3 / 2014-11-09
+===================
+
+ * deps: connect@2.27.3
+ - Correctly invoke async callback asynchronously
+ - deps: csurf@~1.6.3
+
+3.18.2 / 2014-10-28
+===================
+
+ * deps: connect@2.27.2
+ - Fix handling of URLs containing `://` in the path
+ - deps: body-parser@~1.9.2
+ - deps: qs@2.3.2
+
+3.18.1 / 2014-10-22
+===================
+
+ * Fix internal `utils.merge` deprecation warnings
+ * deps: connect@2.27.1
+ - deps: body-parser@~1.9.1
+ - deps: express-session@~1.9.1
+ - deps: finalhandler@0.3.2
+ - deps: morgan@~1.4.1
+ - deps: qs@2.3.0
+ - deps: serve-static@~1.7.1
+ * deps: send@0.10.1
+ - deps: on-finished@~2.1.1
+
+3.18.0 / 2014-10-17
+===================
+
+ * Use `content-disposition` module for `res.attachment`/`res.download`
+ - Sends standards-compliant `Content-Disposition` header
+ - Full Unicode support
+ * Use `etag` module to generate `ETag` headers
+ * deps: connect@2.27.0
+ - Use `http-errors` module for creating errors
+ - Use `utils-merge` module for merging objects
+ - deps: body-parser@~1.9.0
+ - deps: compression@~1.2.0
+ - deps: connect-timeout@~1.4.0
+ - deps: debug@~2.1.0
+ - deps: depd@~1.0.0
+ - deps: express-session@~1.9.0
+ - deps: finalhandler@0.3.1
+ - deps: method-override@~2.3.0
+ - deps: morgan@~1.4.0
+ - deps: response-time@~2.2.0
+ - deps: serve-favicon@~2.1.6
+ - deps: serve-index@~1.5.0
+ - deps: serve-static@~1.7.0
+ * deps: debug@~2.1.0
+ - Implement `DEBUG_FD` env variable support
+ * deps: depd@~1.0.0
+ * deps: send@0.10.0
+ - deps: debug@~2.1.0
+ - deps: depd@~1.0.0
+ - deps: etag@~1.5.0
+
+3.17.8 / 2014-10-15
+===================
+
+ * deps: connect@2.26.6
+ - deps: compression@~1.1.2
+ - deps: csurf@~1.6.2
+ - deps: errorhandler@~1.2.2
+
+3.17.7 / 2014-10-08
+===================
+
+ * deps: connect@2.26.5
+ - Fix accepting non-object arguments to `logger`
+ - deps: serve-static@~1.6.4
+
+3.17.6 / 2014-10-02
+===================
+
+ * deps: connect@2.26.4
+ - deps: morgan@~1.3.2
+ - deps: type-is@~1.5.2
+
+3.17.5 / 2014-09-24
+===================
+
+ * deps: connect@2.26.3
+ - deps: body-parser@~1.8.4
+ - deps: serve-favicon@~2.1.5
+ - deps: serve-static@~1.6.3
+ * deps: proxy-addr@~1.0.3
+ - Use `forwarded` npm module
+ * deps: send@0.9.3
+ - deps: etag@~1.4.0
+
+3.17.4 / 2014-09-19
+===================
+
+ * deps: connect@2.26.2
+ - deps: body-parser@~1.8.3
+ - deps: qs@2.2.4
+
+3.17.3 / 2014-09-18
+===================
+
+ * deps: proxy-addr@~1.0.2
+ - Fix a global leak when multiple subnets are trusted
+ - deps: ipaddr.js@0.1.3
+
+3.17.2 / 2014-09-15
+===================
+
+ * Use `crc` instead of `buffer-crc32` for speed
+ * deps: connect@2.26.1
+ - deps: body-parser@~1.8.2
+ - deps: depd@0.4.5
+ - deps: express-session@~1.8.2
+ - deps: morgan@~1.3.1
+ - deps: serve-favicon@~2.1.3
+ - deps: serve-static@~1.6.2
+ * deps: depd@0.4.5
+ * deps: send@0.9.2
+ - deps: depd@0.4.5
+ - deps: etag@~1.3.1
+ - deps: range-parser@~1.0.2
+
+3.17.1 / 2014-09-08
+===================
+
+ * Fix error in `req.subdomains` on empty host
+
+3.17.0 / 2014-09-08
+===================
+
+ * Support `X-Forwarded-Host` in `req.subdomains`
+ * Support IP address host in `req.subdomains`
+ * deps: connect@2.26.0
+ - deps: body-parser@~1.8.1
+ - deps: compression@~1.1.0
+ - deps: connect-timeout@~1.3.0
+ - deps: cookie-parser@~1.3.3
+ - deps: cookie-signature@1.0.5
+ - deps: csurf@~1.6.1
+ - deps: debug@~2.0.0
+ - deps: errorhandler@~1.2.0
+ - deps: express-session@~1.8.1
+ - deps: finalhandler@0.2.0
+ - deps: fresh@0.2.4
+ - deps: media-typer@0.3.0
+ - deps: method-override@~2.2.0
+ - deps: morgan@~1.3.0
+ - deps: qs@2.2.3
+ - deps: serve-favicon@~2.1.3
+ - deps: serve-index@~1.2.1
+ - deps: serve-static@~1.6.1
+ - deps: type-is@~1.5.1
+ - deps: vhost@~3.0.0
+ * deps: cookie-signature@1.0.5
+ * deps: debug@~2.0.0
+ * deps: fresh@0.2.4
+ * deps: media-typer@0.3.0
+ - Throw error when parameter format invalid on parse
+ * deps: range-parser@~1.0.2
+ * deps: send@0.9.1
+ - Add `lastModified` option
+ - Use `etag` to generate `ETag` header
+ - deps: debug@~2.0.0
+ - deps: fresh@0.2.4
+ * deps: vary@~1.0.0
+ - Accept valid `Vary` header string as `field`
+
+3.16.10 / 2014-09-04
+====================
+
+ * deps: connect@2.25.10
+ - deps: serve-static@~1.5.4
+ * deps: send@0.8.5
+ - Fix a path traversal issue when using `root`
+ - Fix malicious path detection for empty string path
+
+3.16.9 / 2014-08-29
+===================
+
+ * deps: connect@2.25.9
+ - deps: body-parser@~1.6.7
+ - deps: qs@2.2.2
+
+3.16.8 / 2014-08-27
+===================
+
+ * deps: connect@2.25.8
+ - deps: body-parser@~1.6.6
+ - deps: csurf@~1.4.1
+ - deps: qs@2.2.0
+
+3.16.7 / 2014-08-18
+===================
+
+ * deps: connect@2.25.7
+ - deps: body-parser@~1.6.5
+ - deps: express-session@~1.7.6
+ - deps: morgan@~1.2.3
+ - deps: serve-static@~1.5.3
+ * deps: send@0.8.3
+ - deps: destroy@1.0.3
+ - deps: on-finished@2.1.0
+
+3.16.6 / 2014-08-14
+===================
+
+ * deps: connect@2.25.6
+ - deps: body-parser@~1.6.4
+ - deps: qs@1.2.2
+ - deps: serve-static@~1.5.2
+ * deps: send@0.8.2
+ - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
+
+3.16.5 / 2014-08-11
+===================
+
+ * deps: connect@2.25.5
+ - Fix backwards compatibility in `logger`
+
+3.16.4 / 2014-08-10
+===================
+
+ * Fix original URL parsing in `res.location`
+ * deps: connect@2.25.4
+ - Fix `query` middleware breaking with argument
+ - deps: body-parser@~1.6.3
+ - deps: compression@~1.0.11
+ - deps: connect-timeout@~1.2.2
+ - deps: express-session@~1.7.5
+ - deps: method-override@~2.1.3
+ - deps: on-headers@~1.0.0
+ - deps: parseurl@~1.3.0
+ - deps: qs@1.2.1
+ - deps: response-time@~2.0.1
+ - deps: serve-index@~1.1.6
+ - deps: serve-static@~1.5.1
+ * deps: parseurl@~1.3.0
+
+3.16.3 / 2014-08-07
+===================
+
+ * deps: connect@2.25.3
+ - deps: multiparty@3.3.2
+
+3.16.2 / 2014-08-07
+===================
+
+ * deps: connect@2.25.2
+ - deps: body-parser@~1.6.2
+ - deps: qs@1.2.0
+
+3.16.1 / 2014-08-06
+===================
+
+ * deps: connect@2.25.1
+ - deps: body-parser@~1.6.1
+ - deps: qs@1.1.0
+
+3.16.0 / 2014-08-05
+===================
+
+ * deps: connect@2.25.0
+ - deps: body-parser@~1.6.0
+ - deps: compression@~1.0.10
+ - deps: csurf@~1.4.0
+ - deps: express-session@~1.7.4
+ - deps: qs@1.0.2
+ - deps: serve-static@~1.5.0
+ * deps: send@0.8.1
+ - Add `extensions` option
+
+3.15.3 / 2014-08-04
+===================
+
+ * fix `res.sendfile` regression for serving directory index files
+ * deps: connect@2.24.3
+ - deps: serve-index@~1.1.5
+ - deps: serve-static@~1.4.4
+ * deps: send@0.7.4
+ - Fix incorrect 403 on Windows and Node.js 0.11
+ - Fix serving index files without root dir
+
+3.15.2 / 2014-07-27
+===================
+
+ * deps: connect@2.24.2
+ - deps: body-parser@~1.5.2
+ - deps: depd@0.4.4
+ - deps: express-session@~1.7.2
+ - deps: morgan@~1.2.2
+ - deps: serve-static@~1.4.2
+ * deps: depd@0.4.4
+ - Work-around v8 generating empty stack traces
+ * deps: send@0.7.2
+ - deps: depd@0.4.4
+
+3.15.1 / 2014-07-26
+===================
+
+ * deps: connect@2.24.1
+ - deps: body-parser@~1.5.1
+ - deps: depd@0.4.3
+ - deps: express-session@~1.7.1
+ - deps: morgan@~1.2.1
+ - deps: serve-index@~1.1.4
+ - deps: serve-static@~1.4.1
+ * deps: depd@0.4.3
+ - Fix exception when global `Error.stackTraceLimit` is too low
+ * deps: send@0.7.1
+ - deps: depd@0.4.3
+
+3.15.0 / 2014-07-22
+===================
+
+ * Fix `req.protocol` for proxy-direct connections
+ * Pass options from `res.sendfile` to `send`
+ * deps: connect@2.24.0
+ - deps: body-parser@~1.5.0
+ - deps: compression@~1.0.9
+ - deps: connect-timeout@~1.2.1
+ - deps: debug@1.0.4
+ - deps: depd@0.4.2
+ - deps: express-session@~1.7.0
+ - deps: finalhandler@0.1.0
+ - deps: method-override@~2.1.2
+ - deps: morgan@~1.2.0
+ - deps: multiparty@3.3.1
+ - deps: parseurl@~1.2.0
+ - deps: serve-static@~1.4.0
+ * deps: debug@1.0.4
+ * deps: depd@0.4.2
+ - Add `TRACE_DEPRECATION` environment variable
+ - Remove non-standard grey color from color output
+ - Support `--no-deprecation` argument
+ - Support `--trace-deprecation` argument
+ * deps: parseurl@~1.2.0
+ - Cache URLs based on original value
+ - Remove no-longer-needed URL mis-parse work-around
+ - Simplify the "fast-path" `RegExp`
+ * deps: send@0.7.0
+ - Add `dotfiles` option
+ - Cap `maxAge` value to 1 year
+ - deps: debug@1.0.4
+ - deps: depd@0.4.2
+
+3.14.0 / 2014-07-11
+===================
+
+ * add explicit "Rosetta Flash JSONP abuse" protection
+ - previous versions are not vulnerable; this is just explicit protection
+ * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead
+ * fix `res.send(status, num)` to send `num` as json (not error)
+ * remove unnecessary escaping when `res.jsonp` returns JSON response
+ * deps: basic-auth@1.0.0
+ - support empty password
+ - support empty username
+ * deps: connect@2.23.0
+ - deps: debug@1.0.3
+ - deps: express-session@~1.6.4
+ - deps: method-override@~2.1.0
+ - deps: parseurl@~1.1.3
+ - deps: serve-static@~1.3.1
+ * deps: debug@1.0.3
+ - Add support for multiple wildcards in namespaces
+ * deps: methods@1.1.0
+ - add `CONNECT`
+ * deps: parseurl@~1.1.3
+ - faster parsing of href-only URLs
+
+3.13.0 / 2014-07-03
+===================
+
+ * add deprecation message to `app.configure`
+ * add deprecation message to `req.auth`
+ * use `basic-auth` to parse `Authorization` header
+ * deps: connect@2.22.0
+ - deps: csurf@~1.3.0
+ - deps: express-session@~1.6.1
+ - deps: multiparty@3.3.0
+ - deps: serve-static@~1.3.0
+ * deps: send@0.5.0
+ - Accept string for `maxage` (converted by `ms`)
+ - Include link in default redirect response
+
+3.12.1 / 2014-06-26
+===================
+
+ * deps: connect@2.21.1
+ - deps: cookie-parser@1.3.2
+ - deps: cookie-signature@1.0.4
+ - deps: express-session@~1.5.2
+ - deps: type-is@~1.3.2
+ * deps: cookie-signature@1.0.4
+ - fix for timing attacks
+
+3.12.0 / 2014-06-21
+===================
+
+ * use `media-typer` to alter content-type charset
+ * deps: connect@2.21.0
+ - deprecate `connect(middleware)` -- use `app.use(middleware)` instead
+ - deprecate `connect.createServer()` -- use `connect()` instead
+ - fix `res.setHeader()` patch to work with with get -> append -> set pattern
+ - deps: compression@~1.0.8
+ - deps: errorhandler@~1.1.1
+ - deps: express-session@~1.5.0
+ - deps: serve-index@~1.1.3
+
+3.11.0 / 2014-06-19
+===================
+
+ * deprecate things with `depd` module
+ * deps: buffer-crc32@0.2.3
+ * deps: connect@2.20.2
+ - deprecate `verify` option to `json` -- use `body-parser` npm module instead
+ - deprecate `verify` option to `urlencoded` -- use `body-parser` npm module instead
+ - deprecate things with `depd` module
+ - use `finalhandler` for final response handling
+ - use `media-typer` to parse `content-type` for charset
+ - deps: body-parser@1.4.3
+ - deps: connect-timeout@1.1.1
+ - deps: cookie-parser@1.3.1
+ - deps: csurf@1.2.2
+ - deps: errorhandler@1.1.0
+ - deps: express-session@1.4.0
+ - deps: multiparty@3.2.9
+ - deps: serve-index@1.1.2
+ - deps: type-is@1.3.1
+ - deps: vhost@2.0.0
+
+3.10.5 / 2014-06-11
+===================
+
+ * deps: connect@2.19.6
+ - deps: body-parser@1.3.1
+ - deps: compression@1.0.7
+ - deps: debug@1.0.2
+ - deps: serve-index@1.1.1
+ - deps: serve-static@1.2.3
+ * deps: debug@1.0.2
+ * deps: send@0.4.3
+ - Do not throw un-catchable error on file open race condition
+ - Use `escape-html` for HTML escaping
+ - deps: debug@1.0.2
+ - deps: finished@1.2.2
+ - deps: fresh@0.2.2
+
+3.10.4 / 2014-06-09
+===================
+
+ * deps: connect@2.19.5
+ - fix "event emitter leak" warnings
+ - deps: csurf@1.2.1
+ - deps: debug@1.0.1
+ - deps: serve-static@1.2.2
+ - deps: type-is@1.2.1
+ * deps: debug@1.0.1
+ * deps: send@0.4.2
+ - fix "event emitter leak" warnings
+ - deps: finished@1.2.1
+ - deps: debug@1.0.1
+
+3.10.3 / 2014-06-05
+===================
+
+ * use `vary` module for `res.vary`
+ * deps: connect@2.19.4
+ - deps: errorhandler@1.0.2
+ - deps: method-override@2.0.2
+ - deps: serve-favicon@2.0.1
+ * deps: debug@1.0.0
+
+3.10.2 / 2014-06-03
+===================
+
+ * deps: connect@2.19.3
+ - deps: compression@1.0.6
+
+3.10.1 / 2014-06-03
+===================
+
+ * deps: connect@2.19.2
+ - deps: compression@1.0.4
+ * deps: proxy-addr@1.0.1
+
+3.10.0 / 2014-06-02
+===================
+
+ * deps: connect@2.19.1
+ - deprecate `methodOverride()` -- use `method-override` npm module instead
+ - deps: body-parser@1.3.0
+ - deps: method-override@2.0.1
+ - deps: multiparty@3.2.8
+ - deps: response-time@2.0.0
+ - deps: serve-static@1.2.1
+ * deps: methods@1.0.1
+ * deps: send@0.4.1
+ - Send `max-age` in `Cache-Control` in correct format
+
+3.9.0 / 2014-05-30
+==================
+
+ * custom etag control with `app.set('etag', val)`
+ - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation
+ - `app.set('etag', 'weak')` weak tag
+ - `app.set('etag', 'strong')` strong etag
+ - `app.set('etag', false)` turn off
+ - `app.set('etag', true)` standard etag
+ * Include ETag in HEAD requests
+ * mark `res.send` ETag as weak and reduce collisions
+ * update connect to 2.18.0
+ - deps: compression@1.0.3
+ - deps: serve-index@1.1.0
+ - deps: serve-static@1.2.0
+ * update send to 0.4.0
+ - Calculate ETag with md5 for reduced collisions
+ - Ignore stream errors after request ends
+ - deps: debug@0.8.1
+
+3.8.1 / 2014-05-27
+==================
+
+ * update connect to 2.17.3
+ - deps: body-parser@1.2.2
+ - deps: express-session@1.2.1
+ - deps: method-override@1.0.2
+
+3.8.0 / 2014-05-21
+==================
+
+ * keep previous `Content-Type` for `res.jsonp`
+ * set proper `charset` in `Content-Type` for `res.send`
+ * update connect to 2.17.1
+ - fix `res.charset` appending charset when `content-type` has one
+ - deps: express-session@1.2.0
+ - deps: morgan@1.1.1
+ - deps: serve-index@1.0.3
+
+3.7.0 / 2014-05-18
+==================
+
+ * proper proxy trust with `app.set('trust proxy', trust)`
+ - `app.set('trust proxy', 1)` trust first hop
+ - `app.set('trust proxy', 'loopback')` trust loopback addresses
+ - `app.set('trust proxy', '10.0.0.1')` trust single IP
+ - `app.set('trust proxy', '10.0.0.1/16')` trust subnet
+ - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list
+ - `app.set('trust proxy', false)` turn off
+ - `app.set('trust proxy', true)` trust everything
+ * update connect to 2.16.2
+ - deprecate `res.headerSent` -- use `res.headersSent`
+ - deprecate `res.on("header")` -- use on-headers module instead
+ - fix edge-case in `res.appendHeader` that would append in wrong order
+ - json: use body-parser
+ - urlencoded: use body-parser
+ - dep: bytes@1.0.0
+ - dep: cookie-parser@1.1.0
+ - dep: csurf@1.2.0
+ - dep: express-session@1.1.0
+ - dep: method-override@1.0.1
+
+3.6.0 / 2014-05-09
+==================
+
+ * deprecate `app.del()` -- use `app.delete()` instead
+ * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead
+ - the edge-case `res.json(status, num)` requires `res.status(status).json(num)`
+ * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead
+ - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)`
+ * support PURGE method
+ - add `app.purge`
+ - add `router.purge`
+ - include PURGE in `app.all`
+ * update connect to 2.15.0
+ * Add `res.appendHeader`
+ * Call error stack even when response has been sent
+ * Patch `res.headerSent` to return Boolean
+ * Patch `res.headersSent` for node.js 0.8
+ * Prevent default 404 handler after response sent
+ * dep: compression@1.0.2
+ * dep: connect-timeout@1.1.0
+ * dep: debug@^0.8.0
+ * dep: errorhandler@1.0.1
+ * dep: express-session@1.0.4
+ * dep: morgan@1.0.1
+ * dep: serve-favicon@2.0.0
+ * dep: serve-index@1.0.2
+ * update debug to 0.8.0
+ * add `enable()` method
+ * change from stderr to stdout
+ * update methods to 1.0.0
+ - add PURGE
+ * update mkdirp to 0.5.0
+
+3.5.3 / 2014-05-08
+==================
+
+ * fix `req.host` for IPv6 literals
+ * fix `res.jsonp` error if callback param is object
+
+3.5.2 / 2014-04-24
+==================
+
+ * update connect to 2.14.5
+ * update cookie to 0.1.2
+ * update mkdirp to 0.4.0
+ * update send to 0.3.0
+
+3.5.1 / 2014-03-25
+==================
+
+ * pin less-middleware in generated app
+
+3.5.0 / 2014-03-06
+==================
+
+ * bump deps
+
+3.4.8 / 2014-01-13
+==================
+
+ * prevent incorrect automatic OPTIONS responses #1868 @dpatti
+ * update binary and examples for jade 1.0 #1876 @yossi, #1877 @reqshark, #1892 @matheusazzi
+ * throw 400 in case of malformed paths @rlidwka
+
+3.4.7 / 2013-12-10
+==================
+
+ * update connect
+
+3.4.6 / 2013-12-01
+==================
+
+ * update connect (raw-body)
+
+3.4.5 / 2013-11-27
+==================
+
+ * update connect
+ * res.location: remove leading ./ #1802 @kapouer
+ * res.redirect: fix `res.redirect('toString') #1829 @michaelficarra
+ * res.send: always send ETag when content-length > 0
+ * router: add Router.all() method
+
+3.4.4 / 2013-10-29
+==================
+
+ * update connect
+ * update supertest
+ * update methods
+ * express(1): replace bodyParser() with urlencoded() and json() #1795 @chirag04
+
+3.4.3 / 2013-10-23
+==================
+
+ * update connect
+
+3.4.2 / 2013-10-18
+==================
+
+ * update connect
+ * downgrade commander
+
+3.4.1 / 2013-10-15
+==================
+
+ * update connect
+ * update commander
+ * jsonp: check if callback is a function
+ * router: wrap encodeURIComponent in a try/catch #1735 (@lxe)
+ * res.format: now includes charset @1747 (@sorribas)
+ * res.links: allow multiple calls @1746 (@sorribas)
+
+3.4.0 / 2013-09-07
+==================
+
+ * add res.vary(). Closes #1682
+ * update connect
+
+3.3.8 / 2013-09-02
+==================
+
+ * update connect
+
+3.3.7 / 2013-08-28
+==================
+
+ * update connect
+
+3.3.6 / 2013-08-27
+==================
+
+ * Revert "remove charset from json responses. Closes #1631" (causes issues in some clients)
+ * add: req.accepts take an argument list
+
+3.3.4 / 2013-07-08
+==================
+
+ * update send and connect
+
+3.3.3 / 2013-07-04
+==================
+
+ * update connect
+
+3.3.2 / 2013-07-03
+==================
+
+ * update connect
+ * update send
+ * remove .version export
+
+3.3.1 / 2013-06-27
+==================
+
+ * update connect
+
+3.3.0 / 2013-06-26
+==================
+
+ * update connect
+ * add support for multiple X-Forwarded-Proto values. Closes #1646
+ * change: remove charset from json responses. Closes #1631
+ * change: return actual booleans from req.accept* functions
+ * fix jsonp callback array throw
+
+3.2.6 / 2013-06-02
+==================
+
+ * update connect
+
+3.2.5 / 2013-05-21
+==================
+
+ * update connect
+ * update node-cookie
+ * add: throw a meaningful error when there is no default engine
+ * change generation of ETags with res.send() to GET requests only. Closes #1619
+
+3.2.4 / 2013-05-09
+==================
+
+ * fix `req.subdomains` when no Host is present
+ * fix `req.host` when no Host is present, return undefined
+
+3.2.3 / 2013-05-07
+==================
+
+ * update connect / qs
+
+3.2.2 / 2013-05-03
+==================
+
+ * update qs
+
+3.2.1 / 2013-04-29
+==================
+
+ * add app.VERB() paths array deprecation warning
+ * update connect
+ * update qs and remove all ~ semver crap
+ * fix: accept number as value of Signed Cookie
+
+3.2.0 / 2013-04-15
+==================
+
+ * add "view" constructor setting to override view behaviour
+ * add req.acceptsEncoding(name)
+ * add req.acceptedEncodings
+ * revert cookie signature change causing session race conditions
+ * fix sorting of Accept values of the same quality
+
+3.1.2 / 2013-04-12
+==================
+
+ * add support for custom Accept parameters
+ * update cookie-signature
+
+3.1.1 / 2013-04-01
+==================
+
+ * add X-Forwarded-Host support to `req.host`
+ * fix relative redirects
+ * update mkdirp
+ * update buffer-crc32
+ * remove legacy app.configure() method from app template.
+
+3.1.0 / 2013-01-25
+==================
+
+ * add support for leading "." in "view engine" setting
+ * add array support to `res.set()`
+ * add node 0.8.x to travis.yml
+ * add "subdomain offset" setting for tweaking `req.subdomains`
+ * add `res.location(url)` implementing `res.redirect()`-like setting of Location
+ * use app.get() for x-powered-by setting for inheritance
+ * fix colons in passwords for `req.auth`
+
+3.0.6 / 2013-01-04
+==================
+
+ * add http verb methods to Router
+ * update connect
+ * fix mangling of the `res.cookie()` options object
+ * fix jsonp whitespace escape. Closes #1132
+
+3.0.5 / 2012-12-19
+==================
+
+ * add throwing when a non-function is passed to a route
+ * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses
+ * revert "add 'etag' option"
+
+3.0.4 / 2012-12-05
+==================
+
+ * add 'etag' option to disable `res.send()` Etags
+ * add escaping of urls in text/plain in `res.redirect()`
+ for old browsers interpreting as html
+ * change crc32 module for a more liberal license
+ * update connect
+
+3.0.3 / 2012-11-13
+==================
+
+ * update connect
+ * update cookie module
+ * fix cookie max-age
+
+3.0.2 / 2012-11-08
+==================
+
+ * add OPTIONS to cors example. Closes #1398
+ * fix route chaining regression. Closes #1397
+
+3.0.1 / 2012-11-01
+==================
+
+ * update connect
+
+3.0.0 / 2012-10-23
+==================
+
+ * add `make clean`
+ * add "Basic" check to req.auth
+ * add `req.auth` test coverage
+ * add cb && cb(payload) to `res.jsonp()`. Closes #1374
+ * add backwards compat for `res.redirect()` status. Closes #1336
+ * add support for `res.json()` to retain previously defined Content-Types. Closes #1349
+ * update connect
+ * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382
+ * remove non-primitive string support for `res.send()`
+ * fix view-locals example. Closes #1370
+ * fix route-separation example
+
+3.0.0rc5 / 2012-09-18
+==================
+
+ * update connect
+ * add redis search example
+ * add static-files example
+ * add "x-powered-by" setting (`app.disable('x-powered-by')`)
+ * add "application/octet-stream" redirect Accept test case. Closes #1317
+
+3.0.0rc4 / 2012-08-30
+==================
+
+ * add `res.jsonp()`. Closes #1307
+ * add "verbose errors" option to error-pages example
+ * add another route example to express(1) so people are not so confused
+ * add redis online user activity tracking example
+ * update connect dep
+ * fix etag quoting. Closes #1310
+ * fix error-pages 404 status
+ * fix jsonp callback char restrictions
+ * remove old OPTIONS default response
+
+3.0.0rc3 / 2012-08-13
+==================
+
+ * update connect dep
+ * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds]
+ * fix `res.render()` clobbering of "locals"
+
+3.0.0rc2 / 2012-08-03
+==================
+
+ * add CORS example
+ * update connect dep
+ * deprecate `.createServer()` & remove old stale examples
+ * fix: escape `res.redirect()` link
+ * fix vhost example
+
+3.0.0rc1 / 2012-07-24
+==================
+
+ * add more examples to view-locals
+ * add scheme-relative redirects (`res.redirect("//foo.com")`) support
+ * update cookie dep
+ * update connect dep
+ * update send dep
+ * fix `express(1)` -h flag, use -H for hogan. Closes #1245
+ * fix `res.sendfile()` socket error handling regression
+
+3.0.0beta7 / 2012-07-16
+==================
+
+ * update connect dep for `send()` root normalization regression
+
+3.0.0beta6 / 2012-07-13
+==================
+
+ * add `err.view` property for view errors. Closes #1226
+ * add "jsonp callback name" setting
+ * add support for "/foo/:bar*" non-greedy matches
+ * change `res.sendfile()` to use `send()` module
+ * change `res.send` to use "response-send" module
+ * remove `app.locals.use` and `res.locals.use`, use regular middleware
+
+3.0.0beta5 / 2012-07-03
+==================
+
+ * add "make check" support
+ * add route-map example
+ * add `res.json(obj, status)` support back for BC
+ * add "methods" dep, remove internal methods module
+ * update connect dep
+ * update auth example to utilize cores pbkdf2
+ * updated tests to use "supertest"
+
+3.0.0beta4 / 2012-06-25
+==================
+
+ * Added `req.auth`
+ * Added `req.range(size)`
+ * Added `res.links(obj)`
+ * Added `res.send(body, status)` support back for backwards compat
+ * Added `.default()` support to `res.format()`
+ * Added 2xx / 304 check to `req.fresh`
+ * Revert "Added + support to the router"
+ * Fixed `res.send()` freshness check, respect res.statusCode
+
+3.0.0beta3 / 2012-06-15
+==================
+
+ * Added hogan `--hjs` to express(1) [nullfirm]
+ * Added another example to content-negotiation
+ * Added `fresh` dep
+ * Changed: `res.send()` always checks freshness
+ * Fixed: expose connects mime module. Closes #1165
+
+3.0.0beta2 / 2012-06-06
+==================
+
+ * Added `+` support to the router
+ * Added `req.host`
+ * Changed `req.param()` to check route first
+ * Update connect dep
+
+3.0.0beta1 / 2012-06-01
+==================
+
+ * Added `res.format()` callback to override default 406 behaviour
+ * Fixed `res.redirect()` 406. Closes #1154
+
+3.0.0alpha5 / 2012-05-30
+==================
+
+ * Added `req.ip`
+ * Added `{ signed: true }` option to `res.cookie()`
+ * Removed `res.signedCookie()`
+ * Changed: dont reverse `req.ips`
+ * Fixed "trust proxy" setting check for `req.ips`
+
+3.0.0alpha4 / 2012-05-09
+==================
+
+ * Added: allow `[]` in jsonp callback. Closes #1128
+ * Added `PORT` env var support in generated template. Closes #1118 [benatkin]
+ * Updated: connect 2.2.2
+
+3.0.0alpha3 / 2012-05-04
+==================
+
+ * Added public `app.routes`. Closes #887
+ * Added _view-locals_ example
+ * Added _mvc_ example
+ * Added `res.locals.use()`. Closes #1120
+ * Added conditional-GET support to `res.send()`
+ * Added: coerce `res.set()` values to strings
+ * Changed: moved `static()` in generated apps below router
+ * Changed: `res.send()` only set ETag when not previously set
+ * Changed connect 2.2.1 dep
+ * Changed: `make test` now runs unit / acceptance tests
+ * Fixed req/res proto inheritance
+
+3.0.0alpha2 / 2012-04-26
+==================
+
+ * Added `make benchmark` back
+ * Added `res.send()` support for `String` objects
+ * Added client-side data exposing example
+ * Added `res.header()` and `req.header()` aliases for BC
+ * Added `express.createServer()` for BC
+ * Perf: memoize parsed urls
+ * Perf: connect 2.2.0 dep
+ * Changed: make `expressInit()` middleware self-aware
+ * Fixed: use app.get() for all core settings
+ * Fixed redis session example
+ * Fixed session example. Closes #1105
+ * Fixed generated express dep. Closes #1078
+
+3.0.0alpha1 / 2012-04-15
+==================
+
+ * Added `app.locals.use(callback)`
+ * Added `app.locals` object
+ * Added `app.locals(obj)`
+ * Added `res.locals` object
+ * Added `res.locals(obj)`
+ * Added `res.format()` for content-negotiation
+ * Added `app.engine()`
+ * Added `res.cookie()` JSON cookie support
+ * Added "trust proxy" setting
+ * Added `req.subdomains`
+ * Added `req.protocol`
+ * Added `req.secure`
+ * Added `req.path`
+ * Added `req.ips`
+ * Added `req.fresh`
+ * Added `req.stale`
+ * Added comma-delimited / array support for `req.accepts()`
+ * Added debug instrumentation
+ * Added `res.set(obj)`
+ * Added `res.set(field, value)`
+ * Added `res.get(field)`
+ * Added `app.get(setting)`. Closes #842
+ * Added `req.acceptsLanguage()`
+ * Added `req.acceptsCharset()`
+ * Added `req.accepted`
+ * Added `req.acceptedLanguages`
+ * Added `req.acceptedCharsets`
+ * Added "json replacer" setting
+ * Added "json spaces" setting
+ * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92
+ * Added `--less` support to express(1)
+ * Added `express.response` prototype
+ * Added `express.request` prototype
+ * Added `express.application` prototype
+ * Added `app.path()`
+ * Added `app.render()`
+ * Added `res.type()` to replace `res.contentType()`
+ * Changed: `res.redirect()` to add relative support
+ * Changed: enable "jsonp callback" by default
+ * Changed: renamed "case sensitive routes" to "case sensitive routing"
+ * Rewrite of all tests with mocha
+ * Removed "root" setting
+ * Removed `res.redirect('home')` support
+ * Removed `req.notify()`
+ * Removed `app.register()`
+ * Removed `app.redirect()`
+ * Removed `app.is()`
+ * Removed `app.helpers()`
+ * Removed `app.dynamicHelpers()`
+ * Fixed `res.sendfile()` with non-GET. Closes #723
+ * Fixed express(1) public dir for windows. Closes #866
+
+2.5.9/ 2012-04-02
+==================
+
+ * Added support for PURGE request method [pbuyle]
+ * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki]
+
+2.5.8 / 2012-02-08
+==================
+
+ * Update mkdirp dep. Closes #991
+
+2.5.7 / 2012-02-06
+==================
+
+ * Fixed `app.all` duplicate DELETE requests [mscdex]
+
+2.5.6 / 2012-01-13
+==================
+
+ * Updated hamljs dev dep. Closes #953
+
+2.5.5 / 2012-01-08
+==================
+
+ * Fixed: set `filename` on cached templates [matthewleon]
+
+2.5.4 / 2012-01-02
+==================
+
+ * Fixed `express(1)` eol on 0.4.x. Closes #947
+
+2.5.3 / 2011-12-30
+==================
+
+ * Fixed `req.is()` when a charset is present
+
+2.5.2 / 2011-12-10
+==================
+
+ * Fixed: express(1) LF -> CRLF for windows
+
+2.5.1 / 2011-11-17
+==================
+
+ * Changed: updated connect to 1.8.x
+ * Removed sass.js support from express(1)
+
+2.5.0 / 2011-10-24
+==================
+
+ * Added ./routes dir for generated app by default
+ * Added npm install reminder to express(1) app gen
+ * Added 0.5.x support
+ * Removed `make test-cov` since it wont work with node 0.5.x
+ * Fixed express(1) public dir for windows. Closes #866
+
+2.4.7 / 2011-10-05
+==================
+
+ * Added mkdirp to express(1). Closes #795
+ * Added simple _json-config_ example
+ * Added shorthand for the parsed request's pathname via `req.path`
+ * Changed connect dep to 1.7.x to fix npm issue...
+ * Fixed `res.redirect()` __HEAD__ support. [reported by xerox]
+ * Fixed `req.flash()`, only escape args
+ * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie]
+
+2.4.6 / 2011-08-22
+==================
+
+ * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode]
+
+2.4.5 / 2011-08-19
+==================
+
+ * Added support for routes to handle errors. Closes #809
+ * Added `app.routes.all()`. Closes #803
+ * Added "basepath" setting to work in conjunction with reverse proxies etc.
+ * Refactored `Route` to use a single array of callbacks
+ * Added support for multiple callbacks for `app.param()`. Closes #801
+Closes #805
+ * Changed: removed .call(self) for route callbacks
+ * Dependency: `qs >= 0.3.1`
+ * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808
+
+2.4.4 / 2011-08-05
+==================
+
+ * Fixed `res.header()` intention of a set, even when `undefined`
+ * Fixed `*`, value no longer required
+ * Fixed `res.send(204)` support. Closes #771
+
+2.4.3 / 2011-07-14
+==================
+
+ * Added docs for `status` option special-case. Closes #739
+ * Fixed `options.filename`, exposing the view path to template engines
+
+2.4.2. / 2011-07-06
+==================
+
+ * Revert "removed jsonp stripping" for XSS
+
+2.4.1 / 2011-07-06
+==================
+
+ * Added `res.json()` JSONP support. Closes #737
+ * Added _extending-templates_ example. Closes #730
+ * Added "strict routing" setting for trailing slashes
+ * Added support for multiple envs in `app.configure()` calls. Closes #735
+ * Changed: `res.send()` using `res.json()`
+ * Changed: when cookie `path === null` don't default it
+ * Changed; default cookie path to "home" setting. Closes #731
+ * Removed _pids/logs_ creation from express(1)
+
+2.4.0 / 2011-06-28
+==================
+
+ * Added chainable `res.status(code)`
+ * Added `res.json()`, an explicit version of `res.send(obj)`
+ * Added simple web-service example
+
+2.3.12 / 2011-06-22
+==================
+
+ * \#express is now on freenode! come join!
+ * Added `req.get(field, param)`
+ * Added links to Japanese documentation, thanks @hideyukisaito!
+ * Added; the `express(1)` generated app outputs the env
+ * Added `content-negotiation` example
+ * Dependency: connect >= 1.5.1 < 2.0.0
+ * Fixed view layout bug. Closes #720
+ * Fixed; ignore body on 304. Closes #701
+
+2.3.11 / 2011-06-04
+==================
+
+ * Added `npm test`
+ * Removed generation of dummy test file from `express(1)`
+ * Fixed; `express(1)` adds express as a dep
+ * Fixed; prune on `prepublish`
+
+2.3.10 / 2011-05-27
+==================
+
+ * Added `req.route`, exposing the current route
+ * Added _package.json_ generation support to `express(1)`
+ * Fixed call to `app.param()` function for optional params. Closes #682
+
+2.3.9 / 2011-05-25
+==================
+
+ * Fixed bug-ish with `../' in `res.partial()` calls
+
+2.3.8 / 2011-05-24
+==================
+
+ * Fixed `app.options()`
+
+2.3.7 / 2011-05-23
+==================
+
+ * Added route `Collection`, ex: `app.get('/user/:id').remove();`
+ * Added support for `app.param(fn)` to define param logic
+ * Removed `app.param()` support for callback with return value
+ * Removed module.parent check from express(1) generated app. Closes #670
+ * Refactored router. Closes #639
+
+2.3.6 / 2011-05-20
+==================
+
+ * Changed; using devDependencies instead of git submodules
+ * Fixed redis session example
+ * Fixed markdown example
+ * Fixed view caching, should not be enabled in development
+
+2.3.5 / 2011-05-20
+==================
+
+ * Added export `.view` as alias for `.View`
+
+2.3.4 / 2011-05-08
+==================
+
+ * Added `./examples/say`
+ * Fixed `res.sendfile()` bug preventing the transfer of files with spaces
+
+2.3.3 / 2011-05-03
+==================
+
+ * Added "case sensitive routes" option.
+ * Changed; split methods supported per rfc [slaskis]
+ * Fixed route-specific middleware when using the same callback function several times
+
+2.3.2 / 2011-04-27
+==================
+
+ * Fixed view hints
+
+2.3.1 / 2011-04-26
+==================
+
+ * Added `app.match()` as `app.match.all()`
+ * Added `app.lookup()` as `app.lookup.all()`
+ * Added `app.remove()` for `app.remove.all()`
+ * Added `app.remove.VERB()`
+ * Fixed template caching collision issue. Closes #644
+ * Moved router over from connect and started refactor
+
+2.3.0 / 2011-04-25
+==================
+
+ * Added options support to `res.clearCookie()`
+ * Added `res.helpers()` as alias of `res.locals()`
+ * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0`
+ * Changed; auto set Content-Type in res.attachement [Aaron Heckmann]
+ * Renamed "cache views" to "view cache". Closes #628
+ * Fixed caching of views when using several apps. Closes #637
+ * Fixed gotcha invoking `app.param()` callbacks once per route middleware.
+Closes #638
+ * Fixed partial lookup precedence. Closes #631
+Shaw]
+
+2.2.2 / 2011-04-12
+==================
+
+ * Added second callback support for `res.download()` connection errors
+ * Fixed `filename` option passing to template engine
+
+2.2.1 / 2011-04-04
+==================
+
+ * Added `layout(path)` helper to change the layout within a view. Closes #610
+ * Fixed `partial()` collection object support.
+ Previously only anything with `.length` would work.
+ When `.length` is present one must still be aware of holes,
+ however now `{ collection: {foo: 'bar'}}` is valid, exposes
+ `keyInCollection` and `keysInCollection`.
+
+ * Performance improved with better view caching
+ * Removed `request` and `response` locals
+ * Changed; errorHandler page title is now `Express` instead of `Connect`
+
+2.2.0 / 2011-03-30
+==================
+
+ * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606
+ * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606
+ * Added `app.VERB(path)` as alias of `app.lookup.VERB()`.
+ * Dependency `connect >= 1.2.0`
+
+2.1.1 / 2011-03-29
+==================
+
+ * Added; expose `err.view` object when failing to locate a view
+ * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann]
+ * Fixed; `res.send(undefined)` responds with 204 [aheckmann]
+
+2.1.0 / 2011-03-24
+==================
+
+ * Added `/_?` partial lookup support. Closes #447
+ * Added `request`, `response`, and `app` local variables
+ * Added `settings` local variable, containing the app's settings
+ * Added `req.flash()` exception if `req.session` is not available
+ * Added `res.send(bool)` support (json response)
+ * Fixed stylus example for latest version
+ * Fixed; wrap try/catch around `res.render()`
+
+2.0.0 / 2011-03-17
+==================
+
+ * Fixed up index view path alternative.
+ * Changed; `res.locals()` without object returns the locals
+
+2.0.0rc3 / 2011-03-17
+==================
+
+ * Added `res.locals(obj)` to compliment `res.local(key, val)`
+ * Added `res.partial()` callback support
+ * Fixed recursive error reporting issue in `res.render()`
+
+2.0.0rc2 / 2011-03-17
+==================
+
+ * Changed; `partial()` "locals" are now optional
+ * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01]
+ * Fixed .filename view engine option [reported by drudge]
+ * Fixed blog example
+ * Fixed `{req,res}.app` reference when mounting [Ben Weaver]
+
+2.0.0rc / 2011-03-14
+==================
+
+ * Fixed; expose `HTTPSServer` constructor
+ * Fixed express(1) default test charset. Closes #579 [reported by secoif]
+ * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP]
+
+2.0.0beta3 / 2011-03-09
+==================
+
+ * Added support for `res.contentType()` literal
+ The original `res.contentType('.json')`,
+ `res.contentType('application/json')`, and `res.contentType('json')`
+ will work now.
+ * Added `res.render()` status option support back
+ * Added charset option for `res.render()`
+ * Added `.charset` support (via connect 1.0.4)
+ * Added view resolution hints when in development and a lookup fails
+ * Added layout lookup support relative to the page view.
+ For example while rendering `./views/user/index.jade` if you create
+ `./views/user/layout.jade` it will be used in favour of the root layout.
+ * Fixed `res.redirect()`. RFC states absolute url [reported by unlink]
+ * Fixed; default `res.send()` string charset to utf8
+ * Removed `Partial` constructor (not currently used)
+
+2.0.0beta2 / 2011-03-07
+==================
+
+ * Added res.render() `.locals` support back to aid in migration process
+ * Fixed flash example
+
+2.0.0beta / 2011-03-03
+==================
+
+ * Added HTTPS support
+ * Added `res.cookie()` maxAge support
+ * Added `req.header()` _Referrer_ / _Referer_ special-case, either works
+ * Added mount support for `res.redirect()`, now respects the mount-point
+ * Added `union()` util, taking place of `merge(clone())` combo
+ * Added stylus support to express(1) generated app
+ * Added secret to session middleware used in examples and generated app
+ * Added `res.local(name, val)` for progressive view locals
+ * Added default param support to `req.param(name, default)`
+ * Added `app.disabled()` and `app.enabled()`
+ * Added `app.register()` support for omitting leading ".", either works
+ * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539
+ * Added `app.param()` to map route params to async/sync logic
+ * Added; aliased `app.helpers()` as `app.locals()`. Closes #481
+ * Added extname with no leading "." support to `res.contentType()`
+ * Added `cache views` setting, defaulting to enabled in "production" env
+ * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_.
+ * Added `req.accepts()` support for extensions
+ * Changed; `res.download()` and `res.sendfile()` now utilize Connect's
+ static file server `connect.static.send()`.
+ * Changed; replaced `connect.utils.mime()` with npm _mime_ module
+ * Changed; allow `req.query` to be pre-defined (via middleware or other parent
+ * Changed view partial resolution, now relative to parent view
+ * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`.
+ * Fixed `req.param()` bug returning Array.prototype methods. Closes #552
+ * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()`
+ * Fixed; using _qs_ module instead of _querystring_
+ * Fixed; strip unsafe chars from jsonp callbacks
+ * Removed "stream threshold" setting
+
+1.0.8 / 2011-03-01
+==================
+
+ * Allow `req.query` to be pre-defined (via middleware or other parent app)
+ * "connect": ">= 0.5.0 < 1.0.0". Closes #547
+ * Removed the long deprecated __EXPRESS_ENV__ support
+
+1.0.7 / 2011-02-07
+==================
+
+ * Fixed `render()` setting inheritance.
+ Mounted apps would not inherit "view engine"
+
+1.0.6 / 2011-02-07
+==================
+
+ * Fixed `view engine` setting bug when period is in dirname
+
+1.0.5 / 2011-02-05
+==================
+
+ * Added secret to generated app `session()` call
+
+1.0.4 / 2011-02-05
+==================
+
+ * Added `qs` dependency to _package.json_
+ * Fixed namespaced `require()`s for latest connect support
+
+1.0.3 / 2011-01-13
+==================
+
+ * Remove unsafe characters from JSONP callback names [Ryan Grove]
+
+1.0.2 / 2011-01-10
+==================
+
+ * Removed nested require, using `connect.router`
+
+1.0.1 / 2010-12-29
+==================
+
+ * Fixed for middleware stacked via `createServer()`
+ previously the `foo` middleware passed to `createServer(foo)`
+ would not have access to Express methods such as `res.send()`
+ or props like `req.query` etc.
+
+1.0.0 / 2010-11-16
+==================
+
+ * Added; deduce partial object names from the last segment.
+ For example by default `partial('forum/post', postObject)` will
+ give you the _post_ object, providing a meaningful default.
+ * Added http status code string representation to `res.redirect()` body
+ * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__.
+ * Added `req.is()` to aid in content negotiation
+ * Added partial local inheritance [suggested by masylum]. Closes #102
+ providing access to parent template locals.
+ * Added _-s, --session[s]_ flag to express(1) to add session related middleware
+ * Added _--template_ flag to express(1) to specify the
+ template engine to use.
+ * Added _--css_ flag to express(1) to specify the
+ stylesheet engine to use (or just plain css by default).
+ * Added `app.all()` support [thanks aheckmann]
+ * Added partial direct object support.
+ You may now `partial('user', user)` providing the "user" local,
+ vs previously `partial('user', { object: user })`.
+ * Added _route-separation_ example since many people question ways
+ to do this with CommonJS modules. Also view the _blog_ example for
+ an alternative.
+ * Performance; caching view path derived partial object names
+ * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454
+ * Fixed jsonp support; _text/javascript_ as per mailinglist discussion
+
+1.0.0rc4 / 2010-10-14
+==================
+
+ * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0
+ * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware))
+ * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass]
+ * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass]
+ * Added `partial()` support for array-like collections. Closes #434
+ * Added support for swappable querystring parsers
+ * Added session usage docs. Closes #443
+ * Added dynamic helper caching. Closes #439 [suggested by maritz]
+ * Added authentication example
+ * Added basic Range support to `res.sendfile()` (and `res.download()` etc)
+ * Changed; `express(1)` generated app using 2 spaces instead of 4
+ * Default env to "development" again [aheckmann]
+ * Removed _context_ option is no more, use "scope"
+ * Fixed; exposing _./support_ libs to examples so they can run without installs
+ * Fixed mvc example
+
+1.0.0rc3 / 2010-09-20
+==================
+
+ * Added confirmation for `express(1)` app generation. Closes #391
+ * Added extending of flash formatters via `app.flashFormatters`
+ * Added flash formatter support. Closes #411
+ * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold"
+ * Added _stream threshold_ setting for `res.sendfile()`
+ * Added `res.send()` __HEAD__ support
+ * Added `res.clearCookie()`
+ * Added `res.cookie()`
+ * Added `res.render()` headers option
+ * Added `res.redirect()` response bodies
+ * Added `res.render()` status option support. Closes #425 [thanks aheckmann]
+ * Fixed `res.sendfile()` responding with 403 on malicious path
+ * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_
+ * Fixed; mounted apps settings now inherit from parent app [aheckmann]
+ * Fixed; stripping Content-Length / Content-Type when 204
+ * Fixed `res.send()` 204. Closes #419
+ * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402
+ * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo]
+
+
+1.0.0rc2 / 2010-08-17
+==================
+
+ * Added `app.register()` for template engine mapping. Closes #390
+ * Added `res.render()` callback support as second argument (no options)
+ * Added callback support to `res.download()`
+ * Added callback support for `res.sendfile()`
+ * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()`
+ * Added "partials" setting to docs
+ * Added default expresso tests to `express(1)` generated app. Closes #384
+ * Fixed `res.sendfile()` error handling, defer via `next()`
+ * Fixed `res.render()` callback when a layout is used [thanks guillermo]
+ * Fixed; `make install` creating ~/.node_libraries when not present
+ * Fixed issue preventing error handlers from being defined anywhere. Closes #387
+
+1.0.0rc / 2010-07-28
+==================
+
+ * Added mounted hook. Closes #369
+ * Added connect dependency to _package.json_
+
+ * Removed "reload views" setting and support code
+ development env never caches, production always caches.
+
+ * Removed _param_ in route callbacks, signature is now
+ simply (req, res, next), previously (req, res, params, next).
+ Use _req.params_ for path captures, _req.query_ for GET params.
+
+ * Fixed "home" setting
+ * Fixed middleware/router precedence issue. Closes #366
+ * Fixed; _configure()_ callbacks called immediately. Closes #368
+
+1.0.0beta2 / 2010-07-23
+==================
+
+ * Added more examples
+ * Added; exporting `Server` constructor
+ * Added `Server#helpers()` for view locals
+ * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349
+ * Added support for absolute view paths
+ * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363
+ * Added Guillermo Rauch to the contributor list
+ * Added support for "as" for non-collection partials. Closes #341
+ * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf]
+ * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo]
+ * Fixed instanceof `Array` checks, now `Array.isArray()`
+ * Fixed express(1) expansion of public dirs. Closes #348
+ * Fixed middleware precedence. Closes #345
+ * Fixed view watcher, now async [thanks aheckmann]
+
+1.0.0beta / 2010-07-15
+==================
+
+ * Re-write
+ - much faster
+ - much lighter
+ - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs
+
+0.14.0 / 2010-06-15
+==================
+
+ * Utilize relative requires
+ * Added Static bufferSize option [aheckmann]
+ * Fixed caching of view and partial subdirectories [aheckmann]
+ * Fixed mime.type() comments now that ".ext" is not supported
+ * Updated haml submodule
+ * Updated class submodule
+ * Removed bin/express
+
+0.13.0 / 2010-06-01
+==================
+
+ * Added node v0.1.97 compatibility
+ * Added support for deleting cookies via Request#cookie('key', null)
+ * Updated haml submodule
+ * Fixed not-found page, now using using charset utf-8
+ * Fixed show-exceptions page, now using using charset utf-8
+ * Fixed view support due to fs.readFile Buffers
+ * Changed; mime.type() no longer accepts ".type" due to node extname() changes
+
+0.12.0 / 2010-05-22
+==================
+
+ * Added node v0.1.96 compatibility
+ * Added view `helpers` export which act as additional local variables
+ * Updated haml submodule
+ * Changed ETag; removed inode, modified time only
+ * Fixed LF to CRLF for setting multiple cookies
+ * Fixed cookie complation; values are now urlencoded
+ * Fixed cookies parsing; accepts quoted values and url escaped cookies
+
+0.11.0 / 2010-05-06
+==================
+
+ * Added support for layouts using different engines
+ - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' })
+ - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml'
+ - this.render('page.html.haml', { layout: false }) // no layout
+ * Updated ext submodule
+ * Updated haml submodule
+ * Fixed EJS partial support by passing along the context. Issue #307
+
+0.10.1 / 2010-05-03
+==================
+
+ * Fixed binary uploads.
+
+0.10.0 / 2010-04-30
+==================
+
+ * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s
+ encoding is set to 'utf8' or 'utf-8'.
+ * Added "encoding" option to Request#render(). Closes #299
+ * Added "dump exceptions" setting, which is enabled by default.
+ * Added simple ejs template engine support
+ * Added error response support for text/plain, application/json. Closes #297
+ * Added callback function param to Request#error()
+ * Added Request#sendHead()
+ * Added Request#stream()
+ * Added support for Request#respond(304, null) for empty response bodies
+ * Added ETag support to Request#sendfile()
+ * Added options to Request#sendfile(), passed to fs.createReadStream()
+ * Added filename arg to Request#download()
+ * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request
+ * Performance enhanced by preventing several calls to toLowerCase() in Router#match()
+ * Changed; Request#sendfile() now streams
+ * Changed; Renamed Request#halt() to Request#respond(). Closes #289
+ * Changed; Using sys.inspect() instead of JSON.encode() for error output
+ * Changed; run() returns the http.Server instance. Closes #298
+ * Changed; Defaulting Server#host to null (INADDR_ANY)
+ * Changed; Logger "common" format scale of 0.4f
+ * Removed Logger "request" format
+ * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found
+ * Fixed several issues with http client
+ * Fixed Logger Content-Length output
+ * Fixed bug preventing Opera from retaining the generated session id. Closes #292
+
+0.9.0 / 2010-04-14
+==================
+
+ * Added DSL level error() route support
+ * Added DSL level notFound() route support
+ * Added Request#error()
+ * Added Request#notFound()
+ * Added Request#render() callback function. Closes #258
+ * Added "max upload size" setting
+ * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254
+ * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js
+ * Added callback function support to Request#halt() as 3rd/4th arg
+ * Added preprocessing of route param wildcards using param(). Closes #251
+ * Added view partial support (with collections etc)
+ * Fixed bug preventing falsey params (such as ?page=0). Closes #286
+ * Fixed setting of multiple cookies. Closes #199
+ * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml)
+ * Changed; session cookie is now httpOnly
+ * Changed; Request is no longer global
+ * Changed; Event is no longer global
+ * Changed; "sys" module is no longer global
+ * Changed; moved Request#download to Static plugin where it belongs
+ * Changed; Request instance created before body parsing. Closes #262
+ * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253
+ * Changed; Pre-caching view partials in memory when "cache view partials" is enabled
+ * Updated support to node --version 0.1.90
+ * Updated dependencies
+ * Removed set("session cookie") in favour of use(Session, { cookie: { ... }})
+ * Removed utils.mixin(); use Object#mergeDeep()
+
+0.8.0 / 2010-03-19
+==================
+
+ * Added coffeescript example app. Closes #242
+ * Changed; cache api now async friendly. Closes #240
+ * Removed deprecated 'express/static' support. Use 'express/plugins/static'
+
+0.7.6 / 2010-03-19
+==================
+
+ * Added Request#isXHR. Closes #229
+ * Added `make install` (for the executable)
+ * Added `express` executable for setting up simple app templates
+ * Added "GET /public/*" to Static plugin, defaulting to /public
+ * Added Static plugin
+ * Fixed; Request#render() only calls cache.get() once
+ * Fixed; Namespacing View caches with "view:"
+ * Fixed; Namespacing Static caches with "static:"
+ * Fixed; Both example apps now use the Static plugin
+ * Fixed set("views"). Closes #239
+ * Fixed missing space for combined log format
+ * Deprecated Request#sendfile() and 'express/static'
+ * Removed Server#running
+
+0.7.5 / 2010-03-16
+==================
+
+ * Added Request#flash() support without args, now returns all flashes
+ * Updated ext submodule
+
+0.7.4 / 2010-03-16
+==================
+
+ * Fixed session reaper
+ * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft)
+
+0.7.3 / 2010-03-16
+==================
+
+ * Added package.json
+ * Fixed requiring of haml / sass due to kiwi removal
+
+0.7.2 / 2010-03-16
+==================
+
+ * Fixed GIT submodules (HAH!)
+
+0.7.1 / 2010-03-16
+==================
+
+ * Changed; Express now using submodules again until a PM is adopted
+ * Changed; chat example using millisecond conversions from ext
+
+0.7.0 / 2010-03-15
+==================
+
+ * Added Request#pass() support (finds the next matching route, or the given path)
+ * Added Logger plugin (default "common" format replaces CommonLogger)
+ * Removed Profiler plugin
+ * Removed CommonLogger plugin
+
+0.6.0 / 2010-03-11
+==================
+
+ * Added seed.yml for kiwi package management support
+ * Added HTTP client query string support when method is GET. Closes #205
+
+ * Added support for arbitrary view engines.
+ For example "foo.engine.html" will now require('engine'),
+ the exports from this module are cached after the first require().
+
+ * Added async plugin support
+
+ * Removed usage of RESTful route funcs as http client
+ get() etc, use http.get() and friends
+
+ * Removed custom exceptions
+
+0.5.0 / 2010-03-10
+==================
+
+ * Added ext dependency (library of js extensions)
+ * Removed extname() / basename() utils. Use path module
+ * Removed toArray() util. Use arguments.values
+ * Removed escapeRegexp() util. Use RegExp.escape()
+ * Removed process.mixin() dependency. Use utils.mixin()
+ * Removed Collection
+ * Removed ElementCollection
+ * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;)
+
+0.4.0 / 2010-02-11
+==================
+
+ * Added flash() example to sample upload app
+ * Added high level restful http client module (express/http)
+ * Changed; RESTful route functions double as HTTP clients. Closes #69
+ * Changed; throwing error when routes are added at runtime
+ * Changed; defaulting render() context to the current Request. Closes #197
+ * Updated haml submodule
+
+0.3.0 / 2010-02-11
+==================
+
+ * Updated haml / sass submodules. Closes #200
+ * Added flash message support. Closes #64
+ * Added accepts() now allows multiple args. fixes #117
+ * Added support for plugins to halt. Closes #189
+ * Added alternate layout support. Closes #119
+ * Removed Route#run(). Closes #188
+ * Fixed broken specs due to use(Cookie) missing
+
+0.2.1 / 2010-02-05
+==================
+
+ * Added "plot" format option for Profiler (for gnuplot processing)
+ * Added request number to Profiler plugin
+ * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8
+ * Fixed issue with routes not firing when not files are present. Closes #184
+ * Fixed process.Promise -> events.Promise
+
+0.2.0 / 2010-02-03
+==================
+
+ * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180
+ * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174
+ * Added expiration support to cache api with reaper. Closes #133
+ * Added cache Store.Memory#reap()
+ * Added Cache; cache api now uses first class Cache instances
+ * Added abstract session Store. Closes #172
+ * Changed; cache Memory.Store#get() utilizing Collection
+ * Renamed MemoryStore -> Store.Memory
+ * Fixed use() of the same plugin several time will always use latest options. Closes #176
+
+0.1.0 / 2010-02-03
+==================
+
+ * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context
+ * Updated node support to 0.1.27 Closes #169
+ * Updated dirname(__filename) -> __dirname
+ * Updated libxmljs support to v0.2.0
+ * Added session support with memory store / reaping
+ * Added quick uid() helper
+ * Added multi-part upload support
+ * Added Sass.js support / submodule
+ * Added production env caching view contents and static files
+ * Added static file caching. Closes #136
+ * Added cache plugin with memory stores
+ * Added support to StaticFile so that it works with non-textual files.
+ * Removed dirname() helper
+ * Removed several globals (now their modules must be required)
+
+0.0.2 / 2010-01-10
+==================
+
+ * Added view benchmarks; currently haml vs ejs
+ * Added Request#attachment() specs. Closes #116
+ * Added use of node's parseQuery() util. Closes #123
+ * Added `make init` for submodules
+ * Updated Haml
+ * Updated sample chat app to show messages on load
+ * Updated libxmljs parseString -> parseHtmlString
+ * Fixed `make init` to work with older versions of git
+ * Fixed specs can now run independent specs for those who cant build deps. Closes #127
+ * Fixed issues introduced by the node url module changes. Closes 126.
+ * Fixed two assertions failing due to Collection#keys() returning strings
+ * Fixed faulty Collection#toArray() spec due to keys() returning strings
+ * Fixed `make test` now builds libxmljs.node before testing
+
+0.0.1 / 2010-01-03
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/LICENSE b/server/node_modules/express/LICENSE
new file mode 100755
index 0000000..aa927e4
--- /dev/null
+++ b/server/node_modules/express/LICENSE
@@ -0,0 +1,24 @@
+(The MIT License)
+
+Copyright (c) 2009-2014 TJ Holowaychuk
+Copyright (c) 2013-2014 Roman Shtylman
+Copyright (c) 2014-2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/Readme.md b/server/node_modules/express/Readme.md
new file mode 100755
index 0000000..e9bfaeb
--- /dev/null
+++ b/server/node_modules/express/Readme.md
@@ -0,0 +1,142 @@
+[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/)
+
+ Fast, unopinionated, minimalist web framework for [node](http://nodejs.org).
+
+ [![NPM Version][npm-image]][npm-url]
+ [![NPM Downloads][downloads-image]][downloads-url]
+ [![Linux Build][travis-image]][travis-url]
+ [![Windows Build][appveyor-image]][appveyor-url]
+ [![Test Coverage][coveralls-image]][coveralls-url]
+
+```js
+var express = require('express')
+var app = express()
+
+app.get('/', function (req, res) {
+ res.send('Hello World')
+})
+
+app.listen(3000)
+```
+
+## Installation
+
+```bash
+$ npm install express
+```
+
+## Features
+
+ * Robust routing
+ * Focus on high performance
+ * Super-high test coverage
+ * HTTP helpers (redirection, caching, etc)
+ * View system supporting 14+ template engines
+ * Content negotiation
+ * Executable for generating applications quickly
+
+## Docs & Community
+
+ * [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/strongloop/expressjs.com)]
+ * [#express](https://webchat.freenode.net/?channels=express) on freenode IRC
+ * [Github Organization](https://github.com/expressjs) for Official Middleware & Modules
+ * Visit the [Wiki](https://github.com/expressjs/express/wiki)
+ * [Google Group](https://groups.google.com/group/express-js) for discussion
+ * [Gitter](https://gitter.im/expressjs/express) for support and discussion
+ * [Русскоязычная документация](http://jsman.ru/express/)
+
+**PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/expressjs/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/expressjs/express/wiki/New-features-in-4.x).
+
+###Security Issues
+
+If you discover a security vulnerability in Express, please see [Security Policies and Procedures](Security.md).
+
+## Quick Start
+
+ The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below:
+
+ Install the executable. The executable's major version will match Express's:
+
+```bash
+$ npm install -g express-generator@4
+```
+
+ Create the app:
+
+```bash
+$ express /tmp/foo && cd /tmp/foo
+```
+
+ Install dependencies:
+
+```bash
+$ npm install
+```
+
+ Start the server:
+
+```bash
+$ npm start
+```
+
+## Philosophy
+
+ The Express philosophy is to provide small, robust tooling for HTTP servers, making
+ it a great solution for single page applications, web sites, hybrids, or public
+ HTTP APIs.
+
+ Express does not force you to use any specific ORM or template engine. With support for over
+ 14 template engines via [Consolidate.js](https://github.com/tj/consolidate.js),
+ you can quickly craft your perfect framework.
+
+## Examples
+
+ To view the examples, clone the Express repo and install the dependencies:
+
+```bash
+$ git clone git://github.com/expressjs/express.git --depth 1
+$ cd express
+$ npm install
+```
+
+ Then run whichever example you want:
+
+```bash
+$ node examples/content-negotiation
+```
+
+## Tests
+
+ To run the test suite, first install the dependencies, then run `npm test`:
+
+```bash
+$ npm install
+$ npm test
+```
+
+## People
+
+The original author of Express is [TJ Holowaychuk](https://github.com/tj) [![TJ's Gratipay][gratipay-image-visionmedia]][gratipay-url-visionmedia]
+
+The current lead maintainer is [Douglas Christopher Wilson](https://github.com/dougwilson) [![Doug's Gratipay][gratipay-image-dougwilson]][gratipay-url-dougwilson]
+
+[List of all contributors](https://github.com/expressjs/express/graphs/contributors)
+
+## License
+
+ [MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/express.svg
+[npm-url]: https://npmjs.org/package/express
+[downloads-image]: https://img.shields.io/npm/dm/express.svg
+[downloads-url]: https://npmjs.org/package/express
+[travis-image]: https://img.shields.io/travis/expressjs/express/master.svg?label=linux
+[travis-url]: https://travis-ci.org/expressjs/express
+[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/express/master.svg?label=windows
+[appveyor-url]: https://ci.appveyor.com/project/dougwilson/express
+[coveralls-image]: https://img.shields.io/coveralls/expressjs/express/master.svg
+[coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master
+[gratipay-image-visionmedia]: https://img.shields.io/gratipay/visionmedia.svg
+[gratipay-url-visionmedia]: https://gratipay.com/visionmedia/
+[gratipay-image-dougwilson]: https://img.shields.io/gratipay/dougwilson.svg
+[gratipay-url-dougwilson]: https://gratipay.com/dougwilson/
diff --git a/server/node_modules/express/index.js b/server/node_modules/express/index.js
new file mode 100755
index 0000000..d219b0c
--- /dev/null
+++ b/server/node_modules/express/index.js
@@ -0,0 +1,11 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+module.exports = require('./lib/express');
diff --git a/server/node_modules/express/lib/application.js b/server/node_modules/express/lib/application.js
new file mode 100755
index 0000000..0ee4def
--- /dev/null
+++ b/server/node_modules/express/lib/application.js
@@ -0,0 +1,643 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var finalhandler = require('finalhandler');
+var Router = require('./router');
+var methods = require('methods');
+var middleware = require('./middleware/init');
+var query = require('./middleware/query');
+var debug = require('debug')('express:application');
+var View = require('./view');
+var http = require('http');
+var compileETag = require('./utils').compileETag;
+var compileQueryParser = require('./utils').compileQueryParser;
+var compileTrust = require('./utils').compileTrust;
+var deprecate = require('depd')('express');
+var flatten = require('array-flatten');
+var merge = require('utils-merge');
+var resolve = require('path').resolve;
+var slice = Array.prototype.slice;
+
+/**
+ * Application prototype.
+ */
+
+var app = exports = module.exports = {};
+
+/**
+ * Variable for trust proxy inheritance back-compat
+ * @private
+ */
+
+var trustProxyDefaultSymbol = '@@symbol:trust_proxy_default';
+
+/**
+ * Initialize the server.
+ *
+ * - setup default configuration
+ * - setup default middleware
+ * - setup route reflection methods
+ *
+ * @private
+ */
+
+app.init = function init() {
+ this.cache = {};
+ this.engines = {};
+ this.settings = {};
+
+ this.defaultConfiguration();
+};
+
+/**
+ * Initialize application configuration.
+ * @private
+ */
+
+app.defaultConfiguration = function defaultConfiguration() {
+ var env = process.env.NODE_ENV || 'development';
+
+ // default settings
+ this.enable('x-powered-by');
+ this.set('etag', 'weak');
+ this.set('env', env);
+ this.set('query parser', 'extended');
+ this.set('subdomain offset', 2);
+ this.set('trust proxy', false);
+
+ // trust proxy inherit back-compat
+ Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
+ configurable: true,
+ value: true
+ });
+
+ debug('booting in %s mode', env);
+
+ this.on('mount', function onmount(parent) {
+ // inherit trust proxy
+ if (this.settings[trustProxyDefaultSymbol] === true
+ && typeof parent.settings['trust proxy fn'] === 'function') {
+ delete this.settings['trust proxy'];
+ delete this.settings['trust proxy fn'];
+ }
+
+ // inherit protos
+ this.request.__proto__ = parent.request;
+ this.response.__proto__ = parent.response;
+ this.engines.__proto__ = parent.engines;
+ this.settings.__proto__ = parent.settings;
+ });
+
+ // setup locals
+ this.locals = Object.create(null);
+
+ // top-most app is mounted at /
+ this.mountpath = '/';
+
+ // default locals
+ this.locals.settings = this.settings;
+
+ // default configuration
+ this.set('view', View);
+ this.set('views', resolve('views'));
+ this.set('jsonp callback name', 'callback');
+
+ if (env === 'production') {
+ this.enable('view cache');
+ }
+
+ Object.defineProperty(this, 'router', {
+ get: function() {
+ throw new Error('\'app.router\' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app.');
+ }
+ });
+};
+
+/**
+ * lazily adds the base router if it has not yet been added.
+ *
+ * We cannot add the base router in the defaultConfiguration because
+ * it reads app settings which might be set after that has run.
+ *
+ * @private
+ */
+app.lazyrouter = function lazyrouter() {
+ if (!this._router) {
+ this._router = new Router({
+ caseSensitive: this.enabled('case sensitive routing'),
+ strict: this.enabled('strict routing')
+ });
+
+ this._router.use(query(this.get('query parser fn')));
+ this._router.use(middleware.init(this));
+ }
+};
+
+/**
+ * Dispatch a req, res pair into the application. Starts pipeline processing.
+ *
+ * If no callback is provided, then default error handlers will respond
+ * in the event of an error bubbling through the stack.
+ *
+ * @private
+ */
+
+app.handle = function handle(req, res, callback) {
+ var router = this._router;
+
+ // final handler
+ var done = callback || finalhandler(req, res, {
+ env: this.get('env'),
+ onerror: logerror.bind(this)
+ });
+
+ // no routes
+ if (!router) {
+ debug('no routes defined on app');
+ done();
+ return;
+ }
+
+ router.handle(req, res, done);
+};
+
+/**
+ * Proxy `Router#use()` to add middleware to the app router.
+ * See Router#use() documentation for details.
+ *
+ * If the _fn_ parameter is an express app, then it will be
+ * mounted at the _route_ specified.
+ *
+ * @public
+ */
+
+app.use = function use(fn) {
+ var offset = 0;
+ var path = '/';
+
+ // default path to '/'
+ // disambiguate app.use([fn])
+ if (typeof fn !== 'function') {
+ var arg = fn;
+
+ while (Array.isArray(arg) && arg.length !== 0) {
+ arg = arg[0];
+ }
+
+ // first arg is the path
+ if (typeof arg !== 'function') {
+ offset = 1;
+ path = fn;
+ }
+ }
+
+ var fns = flatten(slice.call(arguments, offset));
+
+ if (fns.length === 0) {
+ throw new TypeError('app.use() requires middleware functions');
+ }
+
+ // setup router
+ this.lazyrouter();
+ var router = this._router;
+
+ fns.forEach(function (fn) {
+ // non-express app
+ if (!fn || !fn.handle || !fn.set) {
+ return router.use(path, fn);
+ }
+
+ debug('.use app under %s', path);
+ fn.mountpath = path;
+ fn.parent = this;
+
+ // restore .app property on req and res
+ router.use(path, function mounted_app(req, res, next) {
+ var orig = req.app;
+ fn.handle(req, res, function (err) {
+ req.__proto__ = orig.request;
+ res.__proto__ = orig.response;
+ next(err);
+ });
+ });
+
+ // mounted an app
+ fn.emit('mount', this);
+ }, this);
+
+ return this;
+};
+
+/**
+ * Proxy to the app `Router#route()`
+ * Returns a new `Route` instance for the _path_.
+ *
+ * Routes are isolated middleware stacks for specific paths.
+ * See the Route api docs for details.
+ *
+ * @public
+ */
+
+app.route = function route(path) {
+ this.lazyrouter();
+ return this._router.route(path);
+};
+
+/**
+ * Register the given template engine callback `fn`
+ * as `ext`.
+ *
+ * By default will `require()` the engine based on the
+ * file extension. For example if you try to render
+ * a "foo.jade" file Express will invoke the following internally:
+ *
+ * app.engine('jade', require('jade').__express);
+ *
+ * For engines that do not provide `.__express` out of the box,
+ * or if you wish to "map" a different extension to the template engine
+ * you may use this method. For example mapping the EJS template engine to
+ * ".html" files:
+ *
+ * app.engine('html', require('ejs').renderFile);
+ *
+ * In this case EJS provides a `.renderFile()` method with
+ * the same signature that Express expects: `(path, options, callback)`,
+ * though note that it aliases this method as `ejs.__express` internally
+ * so if you're using ".ejs" extensions you dont need to do anything.
+ *
+ * Some template engines do not follow this convention, the
+ * [Consolidate.js](https://github.com/tj/consolidate.js)
+ * library was created to map all of node's popular template
+ * engines to follow this convention, thus allowing them to
+ * work seamlessly within Express.
+ *
+ * @param {String} ext
+ * @param {Function} fn
+ * @return {app} for chaining
+ * @public
+ */
+
+app.engine = function engine(ext, fn) {
+ if (typeof fn !== 'function') {
+ throw new Error('callback function required');
+ }
+
+ // get file extension
+ var extension = ext[0] !== '.'
+ ? '.' + ext
+ : ext;
+
+ // store engine
+ this.engines[extension] = fn;
+
+ return this;
+};
+
+/**
+ * Proxy to `Router#param()` with one added api feature. The _name_ parameter
+ * can be an array of names.
+ *
+ * See the Router#param() docs for more details.
+ *
+ * @param {String|Array} name
+ * @param {Function} fn
+ * @return {app} for chaining
+ * @public
+ */
+
+app.param = function param(name, fn) {
+ this.lazyrouter();
+
+ if (Array.isArray(name)) {
+ for (var i = 0; i < name.length; i++) {
+ this.param(name[i], fn);
+ }
+
+ return this;
+ }
+
+ this._router.param(name, fn);
+
+ return this;
+};
+
+/**
+ * Assign `setting` to `val`, or return `setting`'s value.
+ *
+ * app.set('foo', 'bar');
+ * app.get('foo');
+ * // => "bar"
+ *
+ * Mounted servers inherit their parent server's settings.
+ *
+ * @param {String} setting
+ * @param {*} [val]
+ * @return {Server} for chaining
+ * @public
+ */
+
+app.set = function set(setting, val) {
+ if (arguments.length === 1) {
+ // app.get(setting)
+ return this.settings[setting];
+ }
+
+ debug('set "%s" to %o', setting, val);
+
+ // set value
+ this.settings[setting] = val;
+
+ // trigger matched settings
+ switch (setting) {
+ case 'etag':
+ this.set('etag fn', compileETag(val));
+ break;
+ case 'query parser':
+ this.set('query parser fn', compileQueryParser(val));
+ break;
+ case 'trust proxy':
+ this.set('trust proxy fn', compileTrust(val));
+
+ // trust proxy inherit back-compat
+ Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
+ configurable: true,
+ value: false
+ });
+
+ break;
+ }
+
+ return this;
+};
+
+/**
+ * Return the app's absolute pathname
+ * based on the parent(s) that have
+ * mounted it.
+ *
+ * For example if the application was
+ * mounted as "/admin", which itself
+ * was mounted as "/blog" then the
+ * return value would be "/blog/admin".
+ *
+ * @return {String}
+ * @private
+ */
+
+app.path = function path() {
+ return this.parent
+ ? this.parent.path() + this.mountpath
+ : '';
+};
+
+/**
+ * Check if `setting` is enabled (truthy).
+ *
+ * app.enabled('foo')
+ * // => false
+ *
+ * app.enable('foo')
+ * app.enabled('foo')
+ * // => true
+ *
+ * @param {String} setting
+ * @return {Boolean}
+ * @public
+ */
+
+app.enabled = function enabled(setting) {
+ return Boolean(this.set(setting));
+};
+
+/**
+ * Check if `setting` is disabled.
+ *
+ * app.disabled('foo')
+ * // => true
+ *
+ * app.enable('foo')
+ * app.disabled('foo')
+ * // => false
+ *
+ * @param {String} setting
+ * @return {Boolean}
+ * @public
+ */
+
+app.disabled = function disabled(setting) {
+ return !this.set(setting);
+};
+
+/**
+ * Enable `setting`.
+ *
+ * @param {String} setting
+ * @return {app} for chaining
+ * @public
+ */
+
+app.enable = function enable(setting) {
+ return this.set(setting, true);
+};
+
+/**
+ * Disable `setting`.
+ *
+ * @param {String} setting
+ * @return {app} for chaining
+ * @public
+ */
+
+app.disable = function disable(setting) {
+ return this.set(setting, false);
+};
+
+/**
+ * Delegate `.VERB(...)` calls to `router.VERB(...)`.
+ */
+
+methods.forEach(function(method){
+ app[method] = function(path){
+ if (method === 'get' && arguments.length === 1) {
+ // app.get(setting)
+ return this.set(path);
+ }
+
+ this.lazyrouter();
+
+ var route = this._router.route(path);
+ route[method].apply(route, slice.call(arguments, 1));
+ return this;
+ };
+});
+
+/**
+ * Special-cased "all" method, applying the given route `path`,
+ * middleware, and callback to _every_ HTTP method.
+ *
+ * @param {String} path
+ * @param {Function} ...
+ * @return {app} for chaining
+ * @public
+ */
+
+app.all = function all(path) {
+ this.lazyrouter();
+
+ var route = this._router.route(path);
+ var args = slice.call(arguments, 1);
+
+ for (var i = 0; i < methods.length; i++) {
+ route[methods[i]].apply(route, args);
+ }
+
+ return this;
+};
+
+// del -> delete alias
+
+app.del = deprecate.function(app.delete, 'app.del: Use app.delete instead');
+
+/**
+ * Render the given view `name` name with `options`
+ * and a callback accepting an error and the
+ * rendered template string.
+ *
+ * Example:
+ *
+ * app.render('email', { name: 'Tobi' }, function(err, html){
+ * // ...
+ * })
+ *
+ * @param {String} name
+ * @param {Object|Function} options or fn
+ * @param {Function} callback
+ * @public
+ */
+
+app.render = function render(name, options, callback) {
+ var cache = this.cache;
+ var done = callback;
+ var engines = this.engines;
+ var opts = options;
+ var renderOptions = {};
+ var view;
+
+ // support callback function as second arg
+ if (typeof options === 'function') {
+ done = options;
+ opts = {};
+ }
+
+ // merge app.locals
+ merge(renderOptions, this.locals);
+
+ // merge options._locals
+ if (opts._locals) {
+ merge(renderOptions, opts._locals);
+ }
+
+ // merge options
+ merge(renderOptions, opts);
+
+ // set .cache unless explicitly provided
+ if (renderOptions.cache == null) {
+ renderOptions.cache = this.enabled('view cache');
+ }
+
+ // primed cache
+ if (renderOptions.cache) {
+ view = cache[name];
+ }
+
+ // view
+ if (!view) {
+ var View = this.get('view');
+
+ view = new View(name, {
+ defaultEngine: this.get('view engine'),
+ root: this.get('views'),
+ engines: engines
+ });
+
+ if (!view.path) {
+ var dirs = Array.isArray(view.root) && view.root.length > 1
+ ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"'
+ : 'directory "' + view.root + '"'
+ var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs);
+ err.view = view;
+ return done(err);
+ }
+
+ // prime the cache
+ if (renderOptions.cache) {
+ cache[name] = view;
+ }
+ }
+
+ // render
+ tryRender(view, renderOptions, done);
+};
+
+/**
+ * Listen for connections.
+ *
+ * A node `http.Server` is returned, with this
+ * application (which is a `Function`) as its
+ * callback. If you wish to create both an HTTP
+ * and HTTPS server you may do so with the "http"
+ * and "https" modules as shown here:
+ *
+ * var http = require('http')
+ * , https = require('https')
+ * , express = require('express')
+ * , app = express();
+ *
+ * http.createServer(app).listen(80);
+ * https.createServer({ ... }, app).listen(443);
+ *
+ * @return {http.Server}
+ * @public
+ */
+
+app.listen = function listen() {
+ var server = http.createServer(this);
+ return server.listen.apply(server, arguments);
+};
+
+/**
+ * Log error using console.error.
+ *
+ * @param {Error} err
+ * @private
+ */
+
+function logerror(err) {
+ /* istanbul ignore next */
+ if (this.get('env') !== 'test') console.error(err.stack || err.toString());
+}
+
+/**
+ * Try rendering a view.
+ * @private
+ */
+
+function tryRender(view, options, callback) {
+ try {
+ view.render(options, callback);
+ } catch (err) {
+ callback(err);
+ }
+}
diff --git a/server/node_modules/express/lib/express.js b/server/node_modules/express/lib/express.js
new file mode 100755
index 0000000..540c8be
--- /dev/null
+++ b/server/node_modules/express/lib/express.js
@@ -0,0 +1,103 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ */
+
+var EventEmitter = require('events').EventEmitter;
+var mixin = require('merge-descriptors');
+var proto = require('./application');
+var Route = require('./router/route');
+var Router = require('./router');
+var req = require('./request');
+var res = require('./response');
+
+/**
+ * Expose `createApplication()`.
+ */
+
+exports = module.exports = createApplication;
+
+/**
+ * Create an express application.
+ *
+ * @return {Function}
+ * @api public
+ */
+
+function createApplication() {
+ var app = function(req, res, next) {
+ app.handle(req, res, next);
+ };
+
+ mixin(app, EventEmitter.prototype, false);
+ mixin(app, proto, false);
+
+ app.request = { __proto__: req, app: app };
+ app.response = { __proto__: res, app: app };
+ app.init();
+ return app;
+}
+
+/**
+ * Expose the prototypes.
+ */
+
+exports.application = proto;
+exports.request = req;
+exports.response = res;
+
+/**
+ * Expose constructors.
+ */
+
+exports.Route = Route;
+exports.Router = Router;
+
+/**
+ * Expose middleware
+ */
+
+exports.query = require('./middleware/query');
+exports.static = require('serve-static');
+
+/**
+ * Replace removed middleware with an appropriate error message.
+ */
+
+[
+ 'json',
+ 'urlencoded',
+ 'bodyParser',
+ 'compress',
+ 'cookieSession',
+ 'session',
+ 'logger',
+ 'cookieParser',
+ 'favicon',
+ 'responseTime',
+ 'errorHandler',
+ 'timeout',
+ 'methodOverride',
+ 'vhost',
+ 'csrf',
+ 'directory',
+ 'limit',
+ 'multipart',
+ 'staticCache',
+].forEach(function (name) {
+ Object.defineProperty(exports, name, {
+ get: function () {
+ throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.');
+ },
+ configurable: true
+ });
+});
diff --git a/server/node_modules/express/lib/middleware/init.js b/server/node_modules/express/lib/middleware/init.js
new file mode 100755
index 0000000..f3119ed
--- /dev/null
+++ b/server/node_modules/express/lib/middleware/init.js
@@ -0,0 +1,36 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Initialization middleware, exposing the
+ * request and response to each other, as well
+ * as defaulting the X-Powered-By header field.
+ *
+ * @param {Function} app
+ * @return {Function}
+ * @api private
+ */
+
+exports.init = function(app){
+ return function expressInit(req, res, next){
+ if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express');
+ req.res = res;
+ res.req = req;
+ req.next = next;
+
+ req.__proto__ = app.request;
+ res.__proto__ = app.response;
+
+ res.locals = res.locals || Object.create(null);
+
+ next();
+ };
+};
+
diff --git a/server/node_modules/express/lib/middleware/query.js b/server/node_modules/express/lib/middleware/query.js
new file mode 100755
index 0000000..5f76f84
--- /dev/null
+++ b/server/node_modules/express/lib/middleware/query.js
@@ -0,0 +1,46 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ */
+
+var parseUrl = require('parseurl');
+var qs = require('qs');
+
+/**
+ * @param {Object} options
+ * @return {Function}
+ * @api public
+ */
+
+module.exports = function query(options) {
+ var opts = Object.create(options || null);
+ var queryparse = qs.parse;
+
+ if (typeof options === 'function') {
+ queryparse = options;
+ opts = undefined;
+ }
+
+ if (opts !== undefined && opts.allowPrototypes === undefined) {
+ // back-compat for qs module
+ opts.allowPrototypes = true;
+ }
+
+ return function query(req, res, next){
+ if (!req.query) {
+ var val = parseUrl(req).query;
+ req.query = queryparse(val, opts);
+ }
+
+ next();
+ };
+};
diff --git a/server/node_modules/express/lib/request.js b/server/node_modules/express/lib/request.js
new file mode 100755
index 0000000..557d050
--- /dev/null
+++ b/server/node_modules/express/lib/request.js
@@ -0,0 +1,502 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var accepts = require('accepts');
+var deprecate = require('depd')('express');
+var isIP = require('net').isIP;
+var typeis = require('type-is');
+var http = require('http');
+var fresh = require('fresh');
+var parseRange = require('range-parser');
+var parse = require('parseurl');
+var proxyaddr = require('proxy-addr');
+
+/**
+ * Request prototype.
+ */
+
+var req = exports = module.exports = {
+ __proto__: http.IncomingMessage.prototype
+};
+
+/**
+ * Return request header.
+ *
+ * The `Referrer` header field is special-cased,
+ * both `Referrer` and `Referer` are interchangeable.
+ *
+ * Examples:
+ *
+ * req.get('Content-Type');
+ * // => "text/plain"
+ *
+ * req.get('content-type');
+ * // => "text/plain"
+ *
+ * req.get('Something');
+ * // => undefined
+ *
+ * Aliased as `req.header()`.
+ *
+ * @param {String} name
+ * @return {String}
+ * @public
+ */
+
+req.get =
+req.header = function header(name) {
+ if (!name) {
+ throw new TypeError('name argument is required to req.get');
+ }
+
+ if (typeof name !== 'string') {
+ throw new TypeError('name must be a string to req.get');
+ }
+
+ var lc = name.toLowerCase();
+
+ switch (lc) {
+ case 'referer':
+ case 'referrer':
+ return this.headers.referrer
+ || this.headers.referer;
+ default:
+ return this.headers[lc];
+ }
+};
+
+/**
+ * To do: update docs.
+ *
+ * Check if the given `type(s)` is acceptable, returning
+ * the best match when true, otherwise `undefined`, in which
+ * case you should respond with 406 "Not Acceptable".
+ *
+ * The `type` value may be a single MIME type string
+ * such as "application/json", an extension name
+ * such as "json", a comma-delimited list such as "json, html, text/plain",
+ * an argument list such as `"json", "html", "text/plain"`,
+ * or an array `["json", "html", "text/plain"]`. When a list
+ * or array is given, the _best_ match, if any is returned.
+ *
+ * Examples:
+ *
+ * // Accept: text/html
+ * req.accepts('html');
+ * // => "html"
+ *
+ * // Accept: text/*, application/json
+ * req.accepts('html');
+ * // => "html"
+ * req.accepts('text/html');
+ * // => "text/html"
+ * req.accepts('json, text');
+ * // => "json"
+ * req.accepts('application/json');
+ * // => "application/json"
+ *
+ * // Accept: text/*, application/json
+ * req.accepts('image/png');
+ * req.accepts('png');
+ * // => undefined
+ *
+ * // Accept: text/*;q=.5, application/json
+ * req.accepts(['html', 'json']);
+ * req.accepts('html', 'json');
+ * req.accepts('html, json');
+ * // => "json"
+ *
+ * @param {String|Array} type(s)
+ * @return {String|Array|Boolean}
+ * @public
+ */
+
+req.accepts = function(){
+ var accept = accepts(this);
+ return accept.types.apply(accept, arguments);
+};
+
+/**
+ * Check if the given `encoding`s are accepted.
+ *
+ * @param {String} ...encoding
+ * @return {String|Array}
+ * @public
+ */
+
+req.acceptsEncodings = function(){
+ var accept = accepts(this);
+ return accept.encodings.apply(accept, arguments);
+};
+
+req.acceptsEncoding = deprecate.function(req.acceptsEncodings,
+ 'req.acceptsEncoding: Use acceptsEncodings instead');
+
+/**
+ * Check if the given `charset`s are acceptable,
+ * otherwise you should respond with 406 "Not Acceptable".
+ *
+ * @param {String} ...charset
+ * @return {String|Array}
+ * @public
+ */
+
+req.acceptsCharsets = function(){
+ var accept = accepts(this);
+ return accept.charsets.apply(accept, arguments);
+};
+
+req.acceptsCharset = deprecate.function(req.acceptsCharsets,
+ 'req.acceptsCharset: Use acceptsCharsets instead');
+
+/**
+ * Check if the given `lang`s are acceptable,
+ * otherwise you should respond with 406 "Not Acceptable".
+ *
+ * @param {String} ...lang
+ * @return {String|Array}
+ * @public
+ */
+
+req.acceptsLanguages = function(){
+ var accept = accepts(this);
+ return accept.languages.apply(accept, arguments);
+};
+
+req.acceptsLanguage = deprecate.function(req.acceptsLanguages,
+ 'req.acceptsLanguage: Use acceptsLanguages instead');
+
+/**
+ * Parse Range header field, capping to the given `size`.
+ *
+ * Unspecified ranges such as "0-" require knowledge of your resource length. In
+ * the case of a byte range this is of course the total number of bytes. If the
+ * Range header field is not given `undefined` is returned, `-1` when unsatisfiable,
+ * and `-2` when syntactically invalid.
+ *
+ * When ranges are returned, the array has a "type" property which is the type of
+ * range that is required (most commonly, "bytes"). Each array element is an object
+ * with a "start" and "end" property for the portion of the range.
+ *
+ * The "combine" option can be set to `true` and overlapping & adjacent ranges
+ * will be combined into a single range.
+ *
+ * NOTE: remember that ranges are inclusive, so for example "Range: users=0-3"
+ * should respond with 4 users when available, not 3.
+ *
+ * @param {number} size
+ * @param {object} [options]
+ * @param {boolean} [options.combine=false]
+ * @return {number|array}
+ * @public
+ */
+
+req.range = function range(size, options) {
+ var range = this.get('Range');
+ if (!range) return;
+ return parseRange(size, range, options);
+};
+
+/**
+ * Return the value of param `name` when present or `defaultValue`.
+ *
+ * - Checks route placeholders, ex: _/user/:id_
+ * - Checks body params, ex: id=12, {"id":12}
+ * - Checks query string params, ex: ?id=12
+ *
+ * To utilize request bodies, `req.body`
+ * should be an object. This can be done by using
+ * the `bodyParser()` middleware.
+ *
+ * @param {String} name
+ * @param {Mixed} [defaultValue]
+ * @return {String}
+ * @public
+ */
+
+req.param = function param(name, defaultValue) {
+ var params = this.params || {};
+ var body = this.body || {};
+ var query = this.query || {};
+
+ var args = arguments.length === 1
+ ? 'name'
+ : 'name, default';
+ deprecate('req.param(' + args + '): Use req.params, req.body, or req.query instead');
+
+ if (null != params[name] && params.hasOwnProperty(name)) return params[name];
+ if (null != body[name]) return body[name];
+ if (null != query[name]) return query[name];
+
+ return defaultValue;
+};
+
+/**
+ * Check if the incoming request contains the "Content-Type"
+ * header field, and it contains the give mime `type`.
+ *
+ * Examples:
+ *
+ * // With Content-Type: text/html; charset=utf-8
+ * req.is('html');
+ * req.is('text/html');
+ * req.is('text/*');
+ * // => true
+ *
+ * // When Content-Type is application/json
+ * req.is('json');
+ * req.is('application/json');
+ * req.is('application/*');
+ * // => true
+ *
+ * req.is('html');
+ * // => false
+ *
+ * @param {String|Array} types...
+ * @return {String|false|null}
+ * @public
+ */
+
+req.is = function is(types) {
+ var arr = types;
+
+ // support flattened arguments
+ if (!Array.isArray(types)) {
+ arr = new Array(arguments.length);
+ for (var i = 0; i < arr.length; i++) {
+ arr[i] = arguments[i];
+ }
+ }
+
+ return typeis(this, arr);
+};
+
+/**
+ * Return the protocol string "http" or "https"
+ * when requested with TLS. When the "trust proxy"
+ * setting trusts the socket address, the
+ * "X-Forwarded-Proto" header field will be trusted
+ * and used if present.
+ *
+ * If you're running behind a reverse proxy that
+ * supplies https for you this may be enabled.
+ *
+ * @return {String}
+ * @public
+ */
+
+defineGetter(req, 'protocol', function protocol(){
+ var proto = this.connection.encrypted
+ ? 'https'
+ : 'http';
+ var trust = this.app.get('trust proxy fn');
+
+ if (!trust(this.connection.remoteAddress, 0)) {
+ return proto;
+ }
+
+ // Note: X-Forwarded-Proto is normally only ever a
+ // single value, but this is to be safe.
+ proto = this.get('X-Forwarded-Proto') || proto;
+ return proto.split(/\s*,\s*/)[0];
+});
+
+/**
+ * Short-hand for:
+ *
+ * req.protocol === 'https'
+ *
+ * @return {Boolean}
+ * @public
+ */
+
+defineGetter(req, 'secure', function secure(){
+ return this.protocol === 'https';
+});
+
+/**
+ * Return the remote address from the trusted proxy.
+ *
+ * The is the remote address on the socket unless
+ * "trust proxy" is set.
+ *
+ * @return {String}
+ * @public
+ */
+
+defineGetter(req, 'ip', function ip(){
+ var trust = this.app.get('trust proxy fn');
+ return proxyaddr(this, trust);
+});
+
+/**
+ * When "trust proxy" is set, trusted proxy addresses + client.
+ *
+ * For example if the value were "client, proxy1, proxy2"
+ * you would receive the array `["client", "proxy1", "proxy2"]`
+ * where "proxy2" is the furthest down-stream and "proxy1" and
+ * "proxy2" were trusted.
+ *
+ * @return {Array}
+ * @public
+ */
+
+defineGetter(req, 'ips', function ips() {
+ var trust = this.app.get('trust proxy fn');
+ var addrs = proxyaddr.all(this, trust);
+ return addrs.slice(1).reverse();
+});
+
+/**
+ * Return subdomains as an array.
+ *
+ * Subdomains are the dot-separated parts of the host before the main domain of
+ * the app. By default, the domain of the app is assumed to be the last two
+ * parts of the host. This can be changed by setting "subdomain offset".
+ *
+ * For example, if the domain is "tobi.ferrets.example.com":
+ * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`.
+ * If "subdomain offset" is 3, req.subdomains is `["tobi"]`.
+ *
+ * @return {Array}
+ * @public
+ */
+
+defineGetter(req, 'subdomains', function subdomains() {
+ var hostname = this.hostname;
+
+ if (!hostname) return [];
+
+ var offset = this.app.get('subdomain offset');
+ var subdomains = !isIP(hostname)
+ ? hostname.split('.').reverse()
+ : [hostname];
+
+ return subdomains.slice(offset);
+});
+
+/**
+ * Short-hand for `url.parse(req.url).pathname`.
+ *
+ * @return {String}
+ * @public
+ */
+
+defineGetter(req, 'path', function path() {
+ return parse(this).pathname;
+});
+
+/**
+ * Parse the "Host" header field to a hostname.
+ *
+ * When the "trust proxy" setting trusts the socket
+ * address, the "X-Forwarded-Host" header field will
+ * be trusted.
+ *
+ * @return {String}
+ * @public
+ */
+
+defineGetter(req, 'hostname', function hostname(){
+ var trust = this.app.get('trust proxy fn');
+ var host = this.get('X-Forwarded-Host');
+
+ if (!host || !trust(this.connection.remoteAddress, 0)) {
+ host = this.get('Host');
+ }
+
+ if (!host) return;
+
+ // IPv6 literal support
+ var offset = host[0] === '['
+ ? host.indexOf(']') + 1
+ : 0;
+ var index = host.indexOf(':', offset);
+
+ return index !== -1
+ ? host.substring(0, index)
+ : host;
+});
+
+// TODO: change req.host to return host in next major
+
+defineGetter(req, 'host', deprecate.function(function host(){
+ return this.hostname;
+}, 'req.host: Use req.hostname instead'));
+
+/**
+ * Check if the request is fresh, aka
+ * Last-Modified and/or the ETag
+ * still match.
+ *
+ * @return {Boolean}
+ * @public
+ */
+
+defineGetter(req, 'fresh', function(){
+ var method = this.method;
+ var s = this.res.statusCode;
+
+ // GET or HEAD for weak freshness validation only
+ if ('GET' !== method && 'HEAD' !== method) return false;
+
+ // 2xx or 304 as per rfc2616 14.26
+ if ((s >= 200 && s < 300) || 304 === s) {
+ return fresh(this.headers, (this.res._headers || {}));
+ }
+
+ return false;
+});
+
+/**
+ * Check if the request is stale, aka
+ * "Last-Modified" and / or the "ETag" for the
+ * resource has changed.
+ *
+ * @return {Boolean}
+ * @public
+ */
+
+defineGetter(req, 'stale', function stale(){
+ return !this.fresh;
+});
+
+/**
+ * Check if the request was an _XMLHttpRequest_.
+ *
+ * @return {Boolean}
+ * @public
+ */
+
+defineGetter(req, 'xhr', function xhr(){
+ var val = this.get('X-Requested-With') || '';
+ return val.toLowerCase() === 'xmlhttprequest';
+});
+
+/**
+ * Helper function for creating a getter on an object.
+ *
+ * @param {Object} obj
+ * @param {String} name
+ * @param {Function} getter
+ * @private
+ */
+function defineGetter(obj, name, getter) {
+ Object.defineProperty(obj, name, {
+ configurable: true,
+ enumerable: true,
+ get: getter
+ });
+};
diff --git a/server/node_modules/express/lib/response.js b/server/node_modules/express/lib/response.js
new file mode 100755
index 0000000..6128f45
--- /dev/null
+++ b/server/node_modules/express/lib/response.js
@@ -0,0 +1,1065 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var contentDisposition = require('content-disposition');
+var deprecate = require('depd')('express');
+var encodeUrl = require('encodeurl');
+var escapeHtml = require('escape-html');
+var http = require('http');
+var isAbsolute = require('./utils').isAbsolute;
+var onFinished = require('on-finished');
+var path = require('path');
+var merge = require('utils-merge');
+var sign = require('cookie-signature').sign;
+var normalizeType = require('./utils').normalizeType;
+var normalizeTypes = require('./utils').normalizeTypes;
+var setCharset = require('./utils').setCharset;
+var statusCodes = http.STATUS_CODES;
+var cookie = require('cookie');
+var send = require('send');
+var extname = path.extname;
+var mime = send.mime;
+var resolve = path.resolve;
+var vary = require('vary');
+
+/**
+ * Response prototype.
+ */
+
+var res = module.exports = {
+ __proto__: http.ServerResponse.prototype
+};
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var charsetRegExp = /;\s*charset\s*=/;
+
+/**
+ * Set status `code`.
+ *
+ * @param {Number} code
+ * @return {ServerResponse}
+ * @public
+ */
+
+res.status = function status(code) {
+ this.statusCode = code;
+ return this;
+};
+
+/**
+ * Set Link header field with the given `links`.
+ *
+ * Examples:
+ *
+ * res.links({
+ * next: 'http://api.example.com/users?page=2',
+ * last: 'http://api.example.com/users?page=5'
+ * });
+ *
+ * @param {Object} links
+ * @return {ServerResponse}
+ * @public
+ */
+
+res.links = function(links){
+ var link = this.get('Link') || '';
+ if (link) link += ', ';
+ return this.set('Link', link + Object.keys(links).map(function(rel){
+ return '<' + links[rel] + '>; rel="' + rel + '"';
+ }).join(', '));
+};
+
+/**
+ * Send a response.
+ *
+ * Examples:
+ *
+ * res.send(new Buffer('wahoo'));
+ * res.send({ some: 'json' });
+ * res.send('some html
');
+ *
+ * @param {string|number|boolean|object|Buffer} body
+ * @public
+ */
+
+res.send = function send(body) {
+ var chunk = body;
+ var encoding;
+ var len;
+ var req = this.req;
+ var type;
+
+ // settings
+ var app = this.app;
+
+ // allow status / body
+ if (arguments.length === 2) {
+ // res.send(body, status) backwards compat
+ if (typeof arguments[0] !== 'number' && typeof arguments[1] === 'number') {
+ deprecate('res.send(body, status): Use res.status(status).send(body) instead');
+ this.statusCode = arguments[1];
+ } else {
+ deprecate('res.send(status, body): Use res.status(status).send(body) instead');
+ this.statusCode = arguments[0];
+ chunk = arguments[1];
+ }
+ }
+
+ // disambiguate res.send(status) and res.send(status, num)
+ if (typeof chunk === 'number' && arguments.length === 1) {
+ // res.send(status) will set status message as text string
+ if (!this.get('Content-Type')) {
+ this.type('txt');
+ }
+
+ deprecate('res.send(status): Use res.sendStatus(status) instead');
+ this.statusCode = chunk;
+ chunk = statusCodes[chunk];
+ }
+
+ switch (typeof chunk) {
+ // string defaulting to html
+ case 'string':
+ if (!this.get('Content-Type')) {
+ this.type('html');
+ }
+ break;
+ case 'boolean':
+ case 'number':
+ case 'object':
+ if (chunk === null) {
+ chunk = '';
+ } else if (Buffer.isBuffer(chunk)) {
+ if (!this.get('Content-Type')) {
+ this.type('bin');
+ }
+ } else {
+ return this.json(chunk);
+ }
+ break;
+ }
+
+ // write strings in utf-8
+ if (typeof chunk === 'string') {
+ encoding = 'utf8';
+ type = this.get('Content-Type');
+
+ // reflect this in content-type
+ if (typeof type === 'string') {
+ this.set('Content-Type', setCharset(type, 'utf-8'));
+ }
+ }
+
+ // populate Content-Length
+ if (chunk !== undefined) {
+ if (!Buffer.isBuffer(chunk)) {
+ // convert chunk to Buffer; saves later double conversions
+ chunk = new Buffer(chunk, encoding);
+ encoding = undefined;
+ }
+
+ len = chunk.length;
+ this.set('Content-Length', len);
+ }
+
+ // populate ETag
+ var etag;
+ var generateETag = len !== undefined && app.get('etag fn');
+ if (typeof generateETag === 'function' && !this.get('ETag')) {
+ if ((etag = generateETag(chunk, encoding))) {
+ this.set('ETag', etag);
+ }
+ }
+
+ // freshness
+ if (req.fresh) this.statusCode = 304;
+
+ // strip irrelevant headers
+ if (204 === this.statusCode || 304 === this.statusCode) {
+ this.removeHeader('Content-Type');
+ this.removeHeader('Content-Length');
+ this.removeHeader('Transfer-Encoding');
+ chunk = '';
+ }
+
+ if (req.method === 'HEAD') {
+ // skip body for HEAD
+ this.end();
+ } else {
+ // respond
+ this.end(chunk, encoding);
+ }
+
+ return this;
+};
+
+/**
+ * Send JSON response.
+ *
+ * Examples:
+ *
+ * res.json(null);
+ * res.json({ user: 'tj' });
+ *
+ * @param {string|number|boolean|object} obj
+ * @public
+ */
+
+res.json = function json(obj) {
+ var val = obj;
+
+ // allow status / body
+ if (arguments.length === 2) {
+ // res.json(body, status) backwards compat
+ if (typeof arguments[1] === 'number') {
+ deprecate('res.json(obj, status): Use res.status(status).json(obj) instead');
+ this.statusCode = arguments[1];
+ } else {
+ deprecate('res.json(status, obj): Use res.status(status).json(obj) instead');
+ this.statusCode = arguments[0];
+ val = arguments[1];
+ }
+ }
+
+ // settings
+ var app = this.app;
+ var replacer = app.get('json replacer');
+ var spaces = app.get('json spaces');
+ var body = stringify(val, replacer, spaces);
+
+ // content-type
+ if (!this.get('Content-Type')) {
+ this.set('Content-Type', 'application/json');
+ }
+
+ return this.send(body);
+};
+
+/**
+ * Send JSON response with JSONP callback support.
+ *
+ * Examples:
+ *
+ * res.jsonp(null);
+ * res.jsonp({ user: 'tj' });
+ *
+ * @param {string|number|boolean|object} obj
+ * @public
+ */
+
+res.jsonp = function jsonp(obj) {
+ var val = obj;
+
+ // allow status / body
+ if (arguments.length === 2) {
+ // res.json(body, status) backwards compat
+ if (typeof arguments[1] === 'number') {
+ deprecate('res.jsonp(obj, status): Use res.status(status).json(obj) instead');
+ this.statusCode = arguments[1];
+ } else {
+ deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead');
+ this.statusCode = arguments[0];
+ val = arguments[1];
+ }
+ }
+
+ // settings
+ var app = this.app;
+ var replacer = app.get('json replacer');
+ var spaces = app.get('json spaces');
+ var body = stringify(val, replacer, spaces);
+ var callback = this.req.query[app.get('jsonp callback name')];
+
+ // content-type
+ if (!this.get('Content-Type')) {
+ this.set('X-Content-Type-Options', 'nosniff');
+ this.set('Content-Type', 'application/json');
+ }
+
+ // fixup callback
+ if (Array.isArray(callback)) {
+ callback = callback[0];
+ }
+
+ // jsonp
+ if (typeof callback === 'string' && callback.length !== 0) {
+ this.charset = 'utf-8';
+ this.set('X-Content-Type-Options', 'nosniff');
+ this.set('Content-Type', 'text/javascript');
+
+ // restrict callback charset
+ callback = callback.replace(/[^\[\]\w$.]/g, '');
+
+ // replace chars not allowed in JavaScript that are in JSON
+ body = body
+ .replace(/\u2028/g, '\\u2028')
+ .replace(/\u2029/g, '\\u2029');
+
+ // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse"
+ // the typeof check is just to reduce client error noise
+ body = '/**/ typeof ' + callback + ' === \'function\' && ' + callback + '(' + body + ');';
+ }
+
+ return this.send(body);
+};
+
+/**
+ * Send given HTTP status code.
+ *
+ * Sets the response status to `statusCode` and the body of the
+ * response to the standard description from node's http.STATUS_CODES
+ * or the statusCode number if no description.
+ *
+ * Examples:
+ *
+ * res.sendStatus(200);
+ *
+ * @param {number} statusCode
+ * @public
+ */
+
+res.sendStatus = function sendStatus(statusCode) {
+ var body = statusCodes[statusCode] || String(statusCode);
+
+ this.statusCode = statusCode;
+ this.type('txt');
+
+ return this.send(body);
+};
+
+/**
+ * Transfer the file at the given `path`.
+ *
+ * Automatically sets the _Content-Type_ response header field.
+ * The callback `callback(err)` is invoked when the transfer is complete
+ * or when an error occurs. Be sure to check `res.sentHeader`
+ * if you wish to attempt responding, as the header and some data
+ * may have already been transferred.
+ *
+ * Options:
+ *
+ * - `maxAge` defaulting to 0 (can be string converted by `ms`)
+ * - `root` root directory for relative filenames
+ * - `headers` object of headers to serve with file
+ * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them
+ *
+ * Other options are passed along to `send`.
+ *
+ * Examples:
+ *
+ * The following example illustrates how `res.sendFile()` may
+ * be used as an alternative for the `static()` middleware for
+ * dynamic situations. The code backing `res.sendFile()` is actually
+ * the same code, so HTTP cache support etc is identical.
+ *
+ * app.get('/user/:uid/photos/:file', function(req, res){
+ * var uid = req.params.uid
+ * , file = req.params.file;
+ *
+ * req.user.mayViewFilesFrom(uid, function(yes){
+ * if (yes) {
+ * res.sendFile('/uploads/' + uid + '/' + file);
+ * } else {
+ * res.send(403, 'Sorry! you cant see that.');
+ * }
+ * });
+ * });
+ *
+ * @public
+ */
+
+res.sendFile = function sendFile(path, options, callback) {
+ var done = callback;
+ var req = this.req;
+ var res = this;
+ var next = req.next;
+ var opts = options || {};
+
+ if (!path) {
+ throw new TypeError('path argument is required to res.sendFile');
+ }
+
+ // support function as second arg
+ if (typeof options === 'function') {
+ done = options;
+ opts = {};
+ }
+
+ if (!opts.root && !isAbsolute(path)) {
+ throw new TypeError('path must be absolute or specify root to res.sendFile');
+ }
+
+ // create file stream
+ var pathname = encodeURI(path);
+ var file = send(req, pathname, opts);
+
+ // transfer
+ sendfile(res, file, opts, function (err) {
+ if (done) return done(err);
+ if (err && err.code === 'EISDIR') return next();
+
+ // next() all but write errors
+ if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') {
+ next(err);
+ }
+ });
+};
+
+/**
+ * Transfer the file at the given `path`.
+ *
+ * Automatically sets the _Content-Type_ response header field.
+ * The callback `callback(err)` is invoked when the transfer is complete
+ * or when an error occurs. Be sure to check `res.sentHeader`
+ * if you wish to attempt responding, as the header and some data
+ * may have already been transferred.
+ *
+ * Options:
+ *
+ * - `maxAge` defaulting to 0 (can be string converted by `ms`)
+ * - `root` root directory for relative filenames
+ * - `headers` object of headers to serve with file
+ * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them
+ *
+ * Other options are passed along to `send`.
+ *
+ * Examples:
+ *
+ * The following example illustrates how `res.sendfile()` may
+ * be used as an alternative for the `static()` middleware for
+ * dynamic situations. The code backing `res.sendfile()` is actually
+ * the same code, so HTTP cache support etc is identical.
+ *
+ * app.get('/user/:uid/photos/:file', function(req, res){
+ * var uid = req.params.uid
+ * , file = req.params.file;
+ *
+ * req.user.mayViewFilesFrom(uid, function(yes){
+ * if (yes) {
+ * res.sendfile('/uploads/' + uid + '/' + file);
+ * } else {
+ * res.send(403, 'Sorry! you cant see that.');
+ * }
+ * });
+ * });
+ *
+ * @public
+ */
+
+res.sendfile = function (path, options, callback) {
+ var done = callback;
+ var req = this.req;
+ var res = this;
+ var next = req.next;
+ var opts = options || {};
+
+ // support function as second arg
+ if (typeof options === 'function') {
+ done = options;
+ opts = {};
+ }
+
+ // create file stream
+ var file = send(req, path, opts);
+
+ // transfer
+ sendfile(res, file, opts, function (err) {
+ if (done) return done(err);
+ if (err && err.code === 'EISDIR') return next();
+
+ // next() all but write errors
+ if (err && err.code !== 'ECONNABORT' && err.syscall !== 'write') {
+ next(err);
+ }
+ });
+};
+
+res.sendfile = deprecate.function(res.sendfile,
+ 'res.sendfile: Use res.sendFile instead');
+
+/**
+ * Transfer the file at the given `path` as an attachment.
+ *
+ * Optionally providing an alternate attachment `filename`,
+ * and optional callback `callback(err)`. The callback is invoked
+ * when the data transfer is complete, or when an error has
+ * ocurred. Be sure to check `res.headersSent` if you plan to respond.
+ *
+ * This method uses `res.sendfile()`.
+ *
+ * @public
+ */
+
+res.download = function download(path, filename, callback) {
+ var done = callback;
+ var name = filename;
+
+ // support function as second arg
+ if (typeof filename === 'function') {
+ done = filename;
+ name = null;
+ }
+
+ // set Content-Disposition when file is sent
+ var headers = {
+ 'Content-Disposition': contentDisposition(name || path)
+ };
+
+ // Resolve the full path for sendFile
+ var fullPath = resolve(path);
+
+ return this.sendFile(fullPath, { headers: headers }, done);
+};
+
+/**
+ * Set _Content-Type_ response header with `type` through `mime.lookup()`
+ * when it does not contain "/", or set the Content-Type to `type` otherwise.
+ *
+ * Examples:
+ *
+ * res.type('.html');
+ * res.type('html');
+ * res.type('json');
+ * res.type('application/json');
+ * res.type('png');
+ *
+ * @param {String} type
+ * @return {ServerResponse} for chaining
+ * @public
+ */
+
+res.contentType =
+res.type = function contentType(type) {
+ var ct = type.indexOf('/') === -1
+ ? mime.lookup(type)
+ : type;
+
+ return this.set('Content-Type', ct);
+};
+
+/**
+ * Respond to the Acceptable formats using an `obj`
+ * of mime-type callbacks.
+ *
+ * This method uses `req.accepted`, an array of
+ * acceptable types ordered by their quality values.
+ * When "Accept" is not present the _first_ callback
+ * is invoked, otherwise the first match is used. When
+ * no match is performed the server responds with
+ * 406 "Not Acceptable".
+ *
+ * Content-Type is set for you, however if you choose
+ * you may alter this within the callback using `res.type()`
+ * or `res.set('Content-Type', ...)`.
+ *
+ * res.format({
+ * 'text/plain': function(){
+ * res.send('hey');
+ * },
+ *
+ * 'text/html': function(){
+ * res.send('hey
');
+ * },
+ *
+ * 'appliation/json': function(){
+ * res.send({ message: 'hey' });
+ * }
+ * });
+ *
+ * In addition to canonicalized MIME types you may
+ * also use extnames mapped to these types:
+ *
+ * res.format({
+ * text: function(){
+ * res.send('hey');
+ * },
+ *
+ * html: function(){
+ * res.send('hey
');
+ * },
+ *
+ * json: function(){
+ * res.send({ message: 'hey' });
+ * }
+ * });
+ *
+ * By default Express passes an `Error`
+ * with a `.status` of 406 to `next(err)`
+ * if a match is not made. If you provide
+ * a `.default` callback it will be invoked
+ * instead.
+ *
+ * @param {Object} obj
+ * @return {ServerResponse} for chaining
+ * @public
+ */
+
+res.format = function(obj){
+ var req = this.req;
+ var next = req.next;
+
+ var fn = obj.default;
+ if (fn) delete obj.default;
+ var keys = Object.keys(obj);
+
+ var key = keys.length > 0
+ ? req.accepts(keys)
+ : false;
+
+ this.vary("Accept");
+
+ if (key) {
+ this.set('Content-Type', normalizeType(key).value);
+ obj[key](req, this, next);
+ } else if (fn) {
+ fn();
+ } else {
+ var err = new Error('Not Acceptable');
+ err.status = err.statusCode = 406;
+ err.types = normalizeTypes(keys).map(function(o){ return o.value });
+ next(err);
+ }
+
+ return this;
+};
+
+/**
+ * Set _Content-Disposition_ header to _attachment_ with optional `filename`.
+ *
+ * @param {String} filename
+ * @return {ServerResponse}
+ * @public
+ */
+
+res.attachment = function attachment(filename) {
+ if (filename) {
+ this.type(extname(filename));
+ }
+
+ this.set('Content-Disposition', contentDisposition(filename));
+
+ return this;
+};
+
+/**
+ * Append additional header `field` with value `val`.
+ *
+ * Example:
+ *
+ * res.append('Link', [' ', ' ']);
+ * res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');
+ * res.append('Warning', '199 Miscellaneous warning');
+ *
+ * @param {String} field
+ * @param {String|Array} val
+ * @return {ServerResponse} for chaining
+ * @public
+ */
+
+res.append = function append(field, val) {
+ var prev = this.get(field);
+ var value = val;
+
+ if (prev) {
+ // concat the new and prev vals
+ value = Array.isArray(prev) ? prev.concat(val)
+ : Array.isArray(val) ? [prev].concat(val)
+ : [prev, val];
+ }
+
+ return this.set(field, value);
+};
+
+/**
+ * Set header `field` to `val`, or pass
+ * an object of header fields.
+ *
+ * Examples:
+ *
+ * res.set('Foo', ['bar', 'baz']);
+ * res.set('Accept', 'application/json');
+ * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
+ *
+ * Aliased as `res.header()`.
+ *
+ * @param {String|Object} field
+ * @param {String|Array} val
+ * @return {ServerResponse} for chaining
+ * @public
+ */
+
+res.set =
+res.header = function header(field, val) {
+ if (arguments.length === 2) {
+ var value = Array.isArray(val)
+ ? val.map(String)
+ : String(val);
+
+ // add charset to content-type
+ if (field.toLowerCase() === 'content-type' && !charsetRegExp.test(value)) {
+ var charset = mime.charsets.lookup(value.split(';')[0]);
+ if (charset) value += '; charset=' + charset.toLowerCase();
+ }
+
+ this.setHeader(field, value);
+ } else {
+ for (var key in field) {
+ this.set(key, field[key]);
+ }
+ }
+ return this;
+};
+
+/**
+ * Get value for header `field`.
+ *
+ * @param {String} field
+ * @return {String}
+ * @public
+ */
+
+res.get = function(field){
+ return this.getHeader(field);
+};
+
+/**
+ * Clear cookie `name`.
+ *
+ * @param {String} name
+ * @param {Object} [options]
+ * @return {ServerResponse} for chaining
+ * @public
+ */
+
+res.clearCookie = function clearCookie(name, options) {
+ var opts = merge({ expires: new Date(1), path: '/' }, options);
+
+ return this.cookie(name, '', opts);
+};
+
+/**
+ * Set cookie `name` to `value`, with the given `options`.
+ *
+ * Options:
+ *
+ * - `maxAge` max-age in milliseconds, converted to `expires`
+ * - `signed` sign the cookie
+ * - `path` defaults to "/"
+ *
+ * Examples:
+ *
+ * // "Remember Me" for 15 minutes
+ * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });
+ *
+ * // save as above
+ * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })
+ *
+ * @param {String} name
+ * @param {String|Object} value
+ * @param {Options} options
+ * @return {ServerResponse} for chaining
+ * @public
+ */
+
+res.cookie = function (name, value, options) {
+ var opts = merge({}, options);
+ var secret = this.req.secret;
+ var signed = opts.signed;
+
+ if (signed && !secret) {
+ throw new Error('cookieParser("secret") required for signed cookies');
+ }
+
+ var val = typeof value === 'object'
+ ? 'j:' + JSON.stringify(value)
+ : String(value);
+
+ if (signed) {
+ val = 's:' + sign(val, secret);
+ }
+
+ if ('maxAge' in opts) {
+ opts.expires = new Date(Date.now() + opts.maxAge);
+ opts.maxAge /= 1000;
+ }
+
+ if (opts.path == null) {
+ opts.path = '/';
+ }
+
+ this.append('Set-Cookie', cookie.serialize(name, String(val), opts));
+
+ return this;
+};
+
+/**
+ * Set the location header to `url`.
+ *
+ * The given `url` can also be "back", which redirects
+ * to the _Referrer_ or _Referer_ headers or "/".
+ *
+ * Examples:
+ *
+ * res.location('/foo/bar').;
+ * res.location('http://example.com');
+ * res.location('../login');
+ *
+ * @param {String} url
+ * @return {ServerResponse} for chaining
+ * @public
+ */
+
+res.location = function location(url) {
+ var loc = url;
+
+ // "back" is an alias for the referrer
+ if (url === 'back') {
+ loc = this.req.get('Referrer') || '/';
+ }
+
+ // set location
+ return this.set('Location', encodeUrl(loc));
+};
+
+/**
+ * Redirect to the given `url` with optional response `status`
+ * defaulting to 302.
+ *
+ * The resulting `url` is determined by `res.location()`, so
+ * it will play nicely with mounted apps, relative paths,
+ * `"back"` etc.
+ *
+ * Examples:
+ *
+ * res.redirect('/foo/bar');
+ * res.redirect('http://example.com');
+ * res.redirect(301, 'http://example.com');
+ * res.redirect('../login'); // /blog/post/1 -> /blog/login
+ *
+ * @public
+ */
+
+res.redirect = function redirect(url) {
+ var address = url;
+ var body;
+ var status = 302;
+
+ // allow status / url
+ if (arguments.length === 2) {
+ if (typeof arguments[0] === 'number') {
+ status = arguments[0];
+ address = arguments[1];
+ } else {
+ deprecate('res.redirect(url, status): Use res.redirect(status, url) instead');
+ status = arguments[1];
+ }
+ }
+
+ // Set location header
+ address = this.location(address).get('Location');
+
+ // Support text/{plain,html} by default
+ this.format({
+ text: function(){
+ body = statusCodes[status] + '. Redirecting to ' + address;
+ },
+
+ html: function(){
+ var u = escapeHtml(address);
+ body = '' + statusCodes[status] + '. Redirecting to ' + u + '
';
+ },
+
+ default: function(){
+ body = '';
+ }
+ });
+
+ // Respond
+ this.statusCode = status;
+ this.set('Content-Length', Buffer.byteLength(body));
+
+ if (this.req.method === 'HEAD') {
+ this.end();
+ } else {
+ this.end(body);
+ }
+};
+
+/**
+ * Add `field` to Vary. If already present in the Vary set, then
+ * this call is simply ignored.
+ *
+ * @param {Array|String} field
+ * @return {ServerResponse} for chaining
+ * @public
+ */
+
+res.vary = function(field){
+ // checks for back-compat
+ if (!field || (Array.isArray(field) && !field.length)) {
+ deprecate('res.vary(): Provide a field name');
+ return this;
+ }
+
+ vary(this, field);
+
+ return this;
+};
+
+/**
+ * Render `view` with the given `options` and optional callback `fn`.
+ * When a callback function is given a response will _not_ be made
+ * automatically, otherwise a response of _200_ and _text/html_ is given.
+ *
+ * Options:
+ *
+ * - `cache` boolean hinting to the engine it should cache
+ * - `filename` filename of the view being rendered
+ *
+ * @public
+ */
+
+res.render = function render(view, options, callback) {
+ var app = this.req.app;
+ var done = callback;
+ var opts = options || {};
+ var req = this.req;
+ var self = this;
+
+ // support callback function as second arg
+ if (typeof options === 'function') {
+ done = options;
+ opts = {};
+ }
+
+ // merge res.locals
+ opts._locals = self.locals;
+
+ // default callback to respond
+ done = done || function (err, str) {
+ if (err) return req.next(err);
+ self.send(str);
+ };
+
+ // render
+ app.render(view, opts, done);
+};
+
+// pipe the send file stream
+function sendfile(res, file, options, callback) {
+ var done = false;
+ var streaming;
+
+ // request aborted
+ function onaborted() {
+ if (done) return;
+ done = true;
+
+ var err = new Error('Request aborted');
+ err.code = 'ECONNABORTED';
+ callback(err);
+ }
+
+ // directory
+ function ondirectory() {
+ if (done) return;
+ done = true;
+
+ var err = new Error('EISDIR, read');
+ err.code = 'EISDIR';
+ callback(err);
+ }
+
+ // errors
+ function onerror(err) {
+ if (done) return;
+ done = true;
+ callback(err);
+ }
+
+ // ended
+ function onend() {
+ if (done) return;
+ done = true;
+ callback();
+ }
+
+ // file
+ function onfile() {
+ streaming = false;
+ }
+
+ // finished
+ function onfinish(err) {
+ if (err && err.code === 'ECONNRESET') return onaborted();
+ if (err) return onerror(err);
+ if (done) return;
+
+ setImmediate(function () {
+ if (streaming !== false && !done) {
+ onaborted();
+ return;
+ }
+
+ if (done) return;
+ done = true;
+ callback();
+ });
+ }
+
+ // streaming
+ function onstream() {
+ streaming = true;
+ }
+
+ file.on('directory', ondirectory);
+ file.on('end', onend);
+ file.on('error', onerror);
+ file.on('file', onfile);
+ file.on('stream', onstream);
+ onFinished(res, onfinish);
+
+ if (options.headers) {
+ // set headers on successful transfer
+ file.on('headers', function headers(res) {
+ var obj = options.headers;
+ var keys = Object.keys(obj);
+
+ for (var i = 0; i < keys.length; i++) {
+ var k = keys[i];
+ res.setHeader(k, obj[k]);
+ }
+ });
+ }
+
+ // pipe
+ file.pipe(res);
+}
+
+/**
+ * Stringify JSON, like JSON.stringify, but v8 optimized.
+ * @private
+ */
+
+function stringify(value, replacer, spaces) {
+ // v8 checks arguments.length for optimizing simple call
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4730
+ return replacer || spaces
+ ? JSON.stringify(value, replacer, spaces)
+ : JSON.stringify(value);
+}
diff --git a/server/node_modules/express/lib/router/index.js b/server/node_modules/express/lib/router/index.js
new file mode 100755
index 0000000..dac2514
--- /dev/null
+++ b/server/node_modules/express/lib/router/index.js
@@ -0,0 +1,645 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var Route = require('./route');
+var Layer = require('./layer');
+var methods = require('methods');
+var mixin = require('utils-merge');
+var debug = require('debug')('express:router');
+var deprecate = require('depd')('express');
+var flatten = require('array-flatten');
+var parseUrl = require('parseurl');
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var objectRegExp = /^\[object (\S+)\]$/;
+var slice = Array.prototype.slice;
+var toString = Object.prototype.toString;
+
+/**
+ * Initialize a new `Router` with the given `options`.
+ *
+ * @param {Object} options
+ * @return {Router} which is an callable function
+ * @public
+ */
+
+var proto = module.exports = function(options) {
+ var opts = options || {};
+
+ function router(req, res, next) {
+ router.handle(req, res, next);
+ }
+
+ // mixin Router class functions
+ router.__proto__ = proto;
+
+ router.params = {};
+ router._params = [];
+ router.caseSensitive = opts.caseSensitive;
+ router.mergeParams = opts.mergeParams;
+ router.strict = opts.strict;
+ router.stack = [];
+
+ return router;
+};
+
+/**
+ * Map the given param placeholder `name`(s) to the given callback.
+ *
+ * Parameter mapping is used to provide pre-conditions to routes
+ * which use normalized placeholders. For example a _:user_id_ parameter
+ * could automatically load a user's information from the database without
+ * any additional code,
+ *
+ * The callback uses the same signature as middleware, the only difference
+ * being that the value of the placeholder is passed, in this case the _id_
+ * of the user. Once the `next()` function is invoked, just like middleware
+ * it will continue on to execute the route, or subsequent parameter functions.
+ *
+ * Just like in middleware, you must either respond to the request or call next
+ * to avoid stalling the request.
+ *
+ * app.param('user_id', function(req, res, next, id){
+ * User.find(id, function(err, user){
+ * if (err) {
+ * return next(err);
+ * } else if (!user) {
+ * return next(new Error('failed to load user'));
+ * }
+ * req.user = user;
+ * next();
+ * });
+ * });
+ *
+ * @param {String} name
+ * @param {Function} fn
+ * @return {app} for chaining
+ * @public
+ */
+
+proto.param = function param(name, fn) {
+ // param logic
+ if (typeof name === 'function') {
+ deprecate('router.param(fn): Refactor to use path params');
+ this._params.push(name);
+ return;
+ }
+
+ // apply param functions
+ var params = this._params;
+ var len = params.length;
+ var ret;
+
+ if (name[0] === ':') {
+ deprecate('router.param(' + JSON.stringify(name) + ', fn): Use router.param(' + JSON.stringify(name.substr(1)) + ', fn) instead');
+ name = name.substr(1);
+ }
+
+ for (var i = 0; i < len; ++i) {
+ if (ret = params[i](name, fn)) {
+ fn = ret;
+ }
+ }
+
+ // ensure we end up with a
+ // middleware function
+ if ('function' !== typeof fn) {
+ throw new Error('invalid param() call for ' + name + ', got ' + fn);
+ }
+
+ (this.params[name] = this.params[name] || []).push(fn);
+ return this;
+};
+
+/**
+ * Dispatch a req, res into the router.
+ * @private
+ */
+
+proto.handle = function handle(req, res, out) {
+ var self = this;
+
+ debug('dispatching %s %s', req.method, req.url);
+
+ var search = 1 + req.url.indexOf('?');
+ var pathlength = search ? search - 1 : req.url.length;
+ var fqdn = req.url[0] !== '/' && 1 + req.url.substr(0, pathlength).indexOf('://');
+ var protohost = fqdn ? req.url.substr(0, req.url.indexOf('/', 2 + fqdn)) : '';
+ var idx = 0;
+ var removed = '';
+ var slashAdded = false;
+ var paramcalled = {};
+
+ // store options for OPTIONS request
+ // only used if OPTIONS request
+ var options = [];
+
+ // middleware and routes
+ var stack = self.stack;
+
+ // manage inter-router variables
+ var parentParams = req.params;
+ var parentUrl = req.baseUrl || '';
+ var done = restore(out, req, 'baseUrl', 'next', 'params');
+
+ // setup next layer
+ req.next = next;
+
+ // for options requests, respond with a default if nothing else responds
+ if (req.method === 'OPTIONS') {
+ done = wrap(done, function(old, err) {
+ if (err || options.length === 0) return old(err);
+ sendOptionsResponse(res, options, old);
+ });
+ }
+
+ // setup basic req values
+ req.baseUrl = parentUrl;
+ req.originalUrl = req.originalUrl || req.url;
+
+ next();
+
+ function next(err) {
+ var layerError = err === 'route'
+ ? null
+ : err;
+
+ // remove added slash
+ if (slashAdded) {
+ req.url = req.url.substr(1);
+ slashAdded = false;
+ }
+
+ // restore altered req.url
+ if (removed.length !== 0) {
+ req.baseUrl = parentUrl;
+ req.url = protohost + removed + req.url.substr(protohost.length);
+ removed = '';
+ }
+
+ // no more matching layers
+ if (idx >= stack.length) {
+ setImmediate(done, layerError);
+ return;
+ }
+
+ // get pathname of request
+ var path = getPathname(req);
+
+ if (path == null) {
+ return done(layerError);
+ }
+
+ // find next matching layer
+ var layer;
+ var match;
+ var route;
+
+ while (match !== true && idx < stack.length) {
+ layer = stack[idx++];
+ match = matchLayer(layer, path);
+ route = layer.route;
+
+ if (typeof match !== 'boolean') {
+ // hold on to layerError
+ layerError = layerError || match;
+ }
+
+ if (match !== true) {
+ continue;
+ }
+
+ if (!route) {
+ // process non-route handlers normally
+ continue;
+ }
+
+ if (layerError) {
+ // routes do not match with a pending error
+ match = false;
+ continue;
+ }
+
+ var method = req.method;
+ var has_method = route._handles_method(method);
+
+ // build up automatic options response
+ if (!has_method && method === 'OPTIONS') {
+ appendMethods(options, route._options());
+ }
+
+ // don't even bother matching route
+ if (!has_method && method !== 'HEAD') {
+ match = false;
+ continue;
+ }
+ }
+
+ // no match
+ if (match !== true) {
+ return done(layerError);
+ }
+
+ // store route for dispatch on change
+ if (route) {
+ req.route = route;
+ }
+
+ // Capture one-time layer values
+ req.params = self.mergeParams
+ ? mergeParams(layer.params, parentParams)
+ : layer.params;
+ var layerPath = layer.path;
+
+ // this should be done for the layer
+ self.process_params(layer, paramcalled, req, res, function (err) {
+ if (err) {
+ return next(layerError || err);
+ }
+
+ if (route) {
+ return layer.handle_request(req, res, next);
+ }
+
+ trim_prefix(layer, layerError, layerPath, path);
+ });
+ }
+
+ function trim_prefix(layer, layerError, layerPath, path) {
+ var c = path[layerPath.length];
+ if (c && '/' !== c && '.' !== c) return next(layerError);
+
+ // Trim off the part of the url that matches the route
+ // middleware (.use stuff) needs to have the path stripped
+ if (layerPath.length !== 0) {
+ debug('trim prefix (%s) from url %s', layerPath, req.url);
+ removed = layerPath;
+ req.url = protohost + req.url.substr(protohost.length + removed.length);
+
+ // Ensure leading slash
+ if (!fqdn && req.url[0] !== '/') {
+ req.url = '/' + req.url;
+ slashAdded = true;
+ }
+
+ // Setup base URL (no trailing slash)
+ req.baseUrl = parentUrl + (removed[removed.length - 1] === '/'
+ ? removed.substring(0, removed.length - 1)
+ : removed);
+ }
+
+ debug('%s %s : %s', layer.name, layerPath, req.originalUrl);
+
+ if (layerError) {
+ layer.handle_error(layerError, req, res, next);
+ } else {
+ layer.handle_request(req, res, next);
+ }
+ }
+};
+
+/**
+ * Process any parameters for the layer.
+ * @private
+ */
+
+proto.process_params = function process_params(layer, called, req, res, done) {
+ var params = this.params;
+
+ // captured parameters from the layer, keys and values
+ var keys = layer.keys;
+
+ // fast track
+ if (!keys || keys.length === 0) {
+ return done();
+ }
+
+ var i = 0;
+ var name;
+ var paramIndex = 0;
+ var key;
+ var paramVal;
+ var paramCallbacks;
+ var paramCalled;
+
+ // process params in order
+ // param callbacks can be async
+ function param(err) {
+ if (err) {
+ return done(err);
+ }
+
+ if (i >= keys.length ) {
+ return done();
+ }
+
+ paramIndex = 0;
+ key = keys[i++];
+
+ if (!key) {
+ return done();
+ }
+
+ name = key.name;
+ paramVal = req.params[name];
+ paramCallbacks = params[name];
+ paramCalled = called[name];
+
+ if (paramVal === undefined || !paramCallbacks) {
+ return param();
+ }
+
+ // param previously called with same value or error occurred
+ if (paramCalled && (paramCalled.match === paramVal
+ || (paramCalled.error && paramCalled.error !== 'route'))) {
+ // restore value
+ req.params[name] = paramCalled.value;
+
+ // next param
+ return param(paramCalled.error);
+ }
+
+ called[name] = paramCalled = {
+ error: null,
+ match: paramVal,
+ value: paramVal
+ };
+
+ paramCallback();
+ }
+
+ // single param callbacks
+ function paramCallback(err) {
+ var fn = paramCallbacks[paramIndex++];
+
+ // store updated value
+ paramCalled.value = req.params[key.name];
+
+ if (err) {
+ // store error
+ paramCalled.error = err;
+ param(err);
+ return;
+ }
+
+ if (!fn) return param();
+
+ try {
+ fn(req, res, paramCallback, paramVal, key.name);
+ } catch (e) {
+ paramCallback(e);
+ }
+ }
+
+ param();
+};
+
+/**
+ * Use the given middleware function, with optional path, defaulting to "/".
+ *
+ * Use (like `.all`) will run for any http METHOD, but it will not add
+ * handlers for those methods so OPTIONS requests will not consider `.use`
+ * functions even if they could respond.
+ *
+ * The other difference is that _route_ path is stripped and not visible
+ * to the handler function. The main effect of this feature is that mounted
+ * handlers can operate without any code changes regardless of the "prefix"
+ * pathname.
+ *
+ * @public
+ */
+
+proto.use = function use(fn) {
+ var offset = 0;
+ var path = '/';
+
+ // default path to '/'
+ // disambiguate router.use([fn])
+ if (typeof fn !== 'function') {
+ var arg = fn;
+
+ while (Array.isArray(arg) && arg.length !== 0) {
+ arg = arg[0];
+ }
+
+ // first arg is the path
+ if (typeof arg !== 'function') {
+ offset = 1;
+ path = fn;
+ }
+ }
+
+ var callbacks = flatten(slice.call(arguments, offset));
+
+ if (callbacks.length === 0) {
+ throw new TypeError('Router.use() requires middleware functions');
+ }
+
+ for (var i = 0; i < callbacks.length; i++) {
+ var fn = callbacks[i];
+
+ if (typeof fn !== 'function') {
+ throw new TypeError('Router.use() requires middleware function but got a ' + gettype(fn));
+ }
+
+ // add the middleware
+ debug('use %s %s', path, fn.name || '');
+
+ var layer = new Layer(path, {
+ sensitive: this.caseSensitive,
+ strict: false,
+ end: false
+ }, fn);
+
+ layer.route = undefined;
+
+ this.stack.push(layer);
+ }
+
+ return this;
+};
+
+/**
+ * Create a new Route for the given path.
+ *
+ * Each route contains a separate middleware stack and VERB handlers.
+ *
+ * See the Route api documentation for details on adding handlers
+ * and middleware to routes.
+ *
+ * @param {String} path
+ * @return {Route}
+ * @public
+ */
+
+proto.route = function route(path) {
+ var route = new Route(path);
+
+ var layer = new Layer(path, {
+ sensitive: this.caseSensitive,
+ strict: this.strict,
+ end: true
+ }, route.dispatch.bind(route));
+
+ layer.route = route;
+
+ this.stack.push(layer);
+ return route;
+};
+
+// create Router#VERB functions
+methods.concat('all').forEach(function(method){
+ proto[method] = function(path){
+ var route = this.route(path)
+ route[method].apply(route, slice.call(arguments, 1));
+ return this;
+ };
+});
+
+// append methods to a list of methods
+function appendMethods(list, addition) {
+ for (var i = 0; i < addition.length; i++) {
+ var method = addition[i];
+ if (list.indexOf(method) === -1) {
+ list.push(method);
+ }
+ }
+}
+
+// get pathname of request
+function getPathname(req) {
+ try {
+ return parseUrl(req).pathname;
+ } catch (err) {
+ return undefined;
+ }
+}
+
+// get type for error message
+function gettype(obj) {
+ var type = typeof obj;
+
+ if (type !== 'object') {
+ return type;
+ }
+
+ // inspect [[Class]] for objects
+ return toString.call(obj)
+ .replace(objectRegExp, '$1');
+}
+
+/**
+ * Match path to a layer.
+ *
+ * @param {Layer} layer
+ * @param {string} path
+ * @private
+ */
+
+function matchLayer(layer, path) {
+ try {
+ return layer.match(path);
+ } catch (err) {
+ return err;
+ }
+}
+
+// merge params with parent params
+function mergeParams(params, parent) {
+ if (typeof parent !== 'object' || !parent) {
+ return params;
+ }
+
+ // make copy of parent for base
+ var obj = mixin({}, parent);
+
+ // simple non-numeric merging
+ if (!(0 in params) || !(0 in parent)) {
+ return mixin(obj, params);
+ }
+
+ var i = 0;
+ var o = 0;
+
+ // determine numeric gaps
+ while (i in params) {
+ i++;
+ }
+
+ while (o in parent) {
+ o++;
+ }
+
+ // offset numeric indices in params before merge
+ for (i--; i >= 0; i--) {
+ params[i + o] = params[i];
+
+ // create holes for the merge when necessary
+ if (i < o) {
+ delete params[i];
+ }
+ }
+
+ return mixin(obj, params);
+}
+
+// restore obj props after function
+function restore(fn, obj) {
+ var props = new Array(arguments.length - 2);
+ var vals = new Array(arguments.length - 2);
+
+ for (var i = 0; i < props.length; i++) {
+ props[i] = arguments[i + 2];
+ vals[i] = obj[props[i]];
+ }
+
+ return function(err){
+ // restore vals
+ for (var i = 0; i < props.length; i++) {
+ obj[props[i]] = vals[i];
+ }
+
+ return fn.apply(this, arguments);
+ };
+}
+
+// send an OPTIONS response
+function sendOptionsResponse(res, options, next) {
+ try {
+ var body = options.join(',');
+ res.set('Allow', body);
+ res.send(body);
+ } catch (err) {
+ next(err);
+ }
+}
+
+// wrap a function
+function wrap(old, fn) {
+ return function proxy() {
+ var args = new Array(arguments.length + 1);
+
+ args[0] = old;
+ for (var i = 0, len = arguments.length; i < len; i++) {
+ args[i + 1] = arguments[i];
+ }
+
+ fn.apply(this, args);
+ };
+}
diff --git a/server/node_modules/express/lib/router/layer.js b/server/node_modules/express/lib/router/layer.js
new file mode 100755
index 0000000..fe9210c
--- /dev/null
+++ b/server/node_modules/express/lib/router/layer.js
@@ -0,0 +1,176 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var pathRegexp = require('path-to-regexp');
+var debug = require('debug')('express:router:layer');
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = Layer;
+
+function Layer(path, options, fn) {
+ if (!(this instanceof Layer)) {
+ return new Layer(path, options, fn);
+ }
+
+ debug('new %s', path);
+ var opts = options || {};
+
+ this.handle = fn;
+ this.name = fn.name || '';
+ this.params = undefined;
+ this.path = undefined;
+ this.regexp = pathRegexp(path, this.keys = [], opts);
+
+ if (path === '/' && opts.end === false) {
+ this.regexp.fast_slash = true;
+ }
+}
+
+/**
+ * Handle the error for the layer.
+ *
+ * @param {Error} error
+ * @param {Request} req
+ * @param {Response} res
+ * @param {function} next
+ * @api private
+ */
+
+Layer.prototype.handle_error = function handle_error(error, req, res, next) {
+ var fn = this.handle;
+
+ if (fn.length !== 4) {
+ // not a standard error handler
+ return next(error);
+ }
+
+ try {
+ fn(error, req, res, next);
+ } catch (err) {
+ next(err);
+ }
+};
+
+/**
+ * Handle the request for the layer.
+ *
+ * @param {Request} req
+ * @param {Response} res
+ * @param {function} next
+ * @api private
+ */
+
+Layer.prototype.handle_request = function handle(req, res, next) {
+ var fn = this.handle;
+
+ if (fn.length > 3) {
+ // not a standard request handler
+ return next();
+ }
+
+ try {
+ fn(req, res, next);
+ } catch (err) {
+ next(err);
+ }
+};
+
+/**
+ * Check if this route matches `path`, if so
+ * populate `.params`.
+ *
+ * @param {String} path
+ * @return {Boolean}
+ * @api private
+ */
+
+Layer.prototype.match = function match(path) {
+ if (path == null) {
+ // no path, nothing matches
+ this.params = undefined;
+ this.path = undefined;
+ return false;
+ }
+
+ if (this.regexp.fast_slash) {
+ // fast path non-ending match for / (everything matches)
+ this.params = {};
+ this.path = '';
+ return true;
+ }
+
+ var m = this.regexp.exec(path);
+
+ if (!m) {
+ this.params = undefined;
+ this.path = undefined;
+ return false;
+ }
+
+ // store values
+ this.params = {};
+ this.path = m[0];
+
+ var keys = this.keys;
+ var params = this.params;
+
+ for (var i = 1; i < m.length; i++) {
+ var key = keys[i - 1];
+ var prop = key.name;
+ var val = decode_param(m[i]);
+
+ if (val !== undefined || !(hasOwnProperty.call(params, prop))) {
+ params[prop] = val;
+ }
+ }
+
+ return true;
+};
+
+/**
+ * Decode param value.
+ *
+ * @param {string} val
+ * @return {string}
+ * @private
+ */
+
+function decode_param(val) {
+ if (typeof val !== 'string' || val.length === 0) {
+ return val;
+ }
+
+ try {
+ return decodeURIComponent(val);
+ } catch (err) {
+ if (err instanceof URIError) {
+ err.message = 'Failed to decode param \'' + val + '\'';
+ err.status = err.statusCode = 400;
+ }
+
+ throw err;
+ }
+}
diff --git a/server/node_modules/express/lib/router/route.js b/server/node_modules/express/lib/router/route.js
new file mode 100755
index 0000000..2788d7b
--- /dev/null
+++ b/server/node_modules/express/lib/router/route.js
@@ -0,0 +1,210 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var debug = require('debug')('express:router:route');
+var flatten = require('array-flatten');
+var Layer = require('./layer');
+var methods = require('methods');
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var slice = Array.prototype.slice;
+var toString = Object.prototype.toString;
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = Route;
+
+/**
+ * Initialize `Route` with the given `path`,
+ *
+ * @param {String} path
+ * @public
+ */
+
+function Route(path) {
+ this.path = path;
+ this.stack = [];
+
+ debug('new %s', path);
+
+ // route handlers for various http methods
+ this.methods = {};
+}
+
+/**
+ * Determine if the route handles a given method.
+ * @private
+ */
+
+Route.prototype._handles_method = function _handles_method(method) {
+ if (this.methods._all) {
+ return true;
+ }
+
+ var name = method.toLowerCase();
+
+ if (name === 'head' && !this.methods['head']) {
+ name = 'get';
+ }
+
+ return Boolean(this.methods[name]);
+};
+
+/**
+ * @return {Array} supported HTTP methods
+ * @private
+ */
+
+Route.prototype._options = function _options() {
+ var methods = Object.keys(this.methods);
+
+ // append automatic head
+ if (this.methods.get && !this.methods.head) {
+ methods.push('head');
+ }
+
+ for (var i = 0; i < methods.length; i++) {
+ // make upper case
+ methods[i] = methods[i].toUpperCase();
+ }
+
+ return methods;
+};
+
+/**
+ * dispatch req, res into this route
+ * @private
+ */
+
+Route.prototype.dispatch = function dispatch(req, res, done) {
+ var idx = 0;
+ var stack = this.stack;
+ if (stack.length === 0) {
+ return done();
+ }
+
+ var method = req.method.toLowerCase();
+ if (method === 'head' && !this.methods['head']) {
+ method = 'get';
+ }
+
+ req.route = this;
+
+ next();
+
+ function next(err) {
+ if (err && err === 'route') {
+ return done();
+ }
+
+ var layer = stack[idx++];
+ if (!layer) {
+ return done(err);
+ }
+
+ if (layer.method && layer.method !== method) {
+ return next(err);
+ }
+
+ if (err) {
+ layer.handle_error(err, req, res, next);
+ } else {
+ layer.handle_request(req, res, next);
+ }
+ }
+};
+
+/**
+ * Add a handler for all HTTP verbs to this route.
+ *
+ * Behaves just like middleware and can respond or call `next`
+ * to continue processing.
+ *
+ * You can use multiple `.all` call to add multiple handlers.
+ *
+ * function check_something(req, res, next){
+ * next();
+ * };
+ *
+ * function validate_user(req, res, next){
+ * next();
+ * };
+ *
+ * route
+ * .all(validate_user)
+ * .all(check_something)
+ * .get(function(req, res, next){
+ * res.send('hello world');
+ * });
+ *
+ * @param {function} handler
+ * @return {Route} for chaining
+ * @api public
+ */
+
+Route.prototype.all = function all() {
+ var handles = flatten(slice.call(arguments));
+
+ for (var i = 0; i < handles.length; i++) {
+ var handle = handles[i];
+
+ if (typeof handle !== 'function') {
+ var type = toString.call(handle);
+ var msg = 'Route.all() requires callback functions but got a ' + type;
+ throw new TypeError(msg);
+ }
+
+ var layer = Layer('/', {}, handle);
+ layer.method = undefined;
+
+ this.methods._all = true;
+ this.stack.push(layer);
+ }
+
+ return this;
+};
+
+methods.forEach(function(method){
+ Route.prototype[method] = function(){
+ var handles = flatten(slice.call(arguments));
+
+ for (var i = 0; i < handles.length; i++) {
+ var handle = handles[i];
+
+ if (typeof handle !== 'function') {
+ var type = toString.call(handle);
+ var msg = 'Route.' + method + '() requires callback functions but got a ' + type;
+ throw new Error(msg);
+ }
+
+ debug('%s %s', method, this.path);
+
+ var layer = Layer('/', {}, handle);
+ layer.method = method;
+
+ this.methods[method] = true;
+ this.stack.push(layer);
+ }
+
+ return this;
+ };
+});
diff --git a/server/node_modules/express/lib/utils.js b/server/node_modules/express/lib/utils.js
new file mode 100755
index 0000000..f418c58
--- /dev/null
+++ b/server/node_modules/express/lib/utils.js
@@ -0,0 +1,299 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @api private
+ */
+
+var contentDisposition = require('content-disposition');
+var contentType = require('content-type');
+var deprecate = require('depd')('express');
+var flatten = require('array-flatten');
+var mime = require('send').mime;
+var basename = require('path').basename;
+var etag = require('etag');
+var proxyaddr = require('proxy-addr');
+var qs = require('qs');
+var querystring = require('querystring');
+
+/**
+ * Return strong ETag for `body`.
+ *
+ * @param {String|Buffer} body
+ * @param {String} [encoding]
+ * @return {String}
+ * @api private
+ */
+
+exports.etag = function (body, encoding) {
+ var buf = !Buffer.isBuffer(body)
+ ? new Buffer(body, encoding)
+ : body;
+
+ return etag(buf, {weak: false});
+};
+
+/**
+ * Return weak ETag for `body`.
+ *
+ * @param {String|Buffer} body
+ * @param {String} [encoding]
+ * @return {String}
+ * @api private
+ */
+
+exports.wetag = function wetag(body, encoding){
+ var buf = !Buffer.isBuffer(body)
+ ? new Buffer(body, encoding)
+ : body;
+
+ return etag(buf, {weak: true});
+};
+
+/**
+ * Check if `path` looks absolute.
+ *
+ * @param {String} path
+ * @return {Boolean}
+ * @api private
+ */
+
+exports.isAbsolute = function(path){
+ if ('/' === path[0]) return true;
+ if (':' === path[1] && ('\\' === path[2] || '/' === path[2])) return true; // Windows device path
+ if ('\\\\' === path.substring(0, 2)) return true; // Microsoft Azure absolute path
+};
+
+/**
+ * Flatten the given `arr`.
+ *
+ * @param {Array} arr
+ * @return {Array}
+ * @api private
+ */
+
+exports.flatten = deprecate.function(flatten,
+ 'utils.flatten: use array-flatten npm module instead');
+
+/**
+ * Normalize the given `type`, for example "html" becomes "text/html".
+ *
+ * @param {String} type
+ * @return {Object}
+ * @api private
+ */
+
+exports.normalizeType = function(type){
+ return ~type.indexOf('/')
+ ? acceptParams(type)
+ : { value: mime.lookup(type), params: {} };
+};
+
+/**
+ * Normalize `types`, for example "html" becomes "text/html".
+ *
+ * @param {Array} types
+ * @return {Array}
+ * @api private
+ */
+
+exports.normalizeTypes = function(types){
+ var ret = [];
+
+ for (var i = 0; i < types.length; ++i) {
+ ret.push(exports.normalizeType(types[i]));
+ }
+
+ return ret;
+};
+
+/**
+ * Generate Content-Disposition header appropriate for the filename.
+ * non-ascii filenames are urlencoded and a filename* parameter is added
+ *
+ * @param {String} filename
+ * @return {String}
+ * @api private
+ */
+
+exports.contentDisposition = deprecate.function(contentDisposition,
+ 'utils.contentDisposition: use content-disposition npm module instead');
+
+/**
+ * Parse accept params `str` returning an
+ * object with `.value`, `.quality` and `.params`.
+ * also includes `.originalIndex` for stable sorting
+ *
+ * @param {String} str
+ * @return {Object}
+ * @api private
+ */
+
+function acceptParams(str, index) {
+ var parts = str.split(/ *; */);
+ var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index };
+
+ for (var i = 1; i < parts.length; ++i) {
+ var pms = parts[i].split(/ *= */);
+ if ('q' === pms[0]) {
+ ret.quality = parseFloat(pms[1]);
+ } else {
+ ret.params[pms[0]] = pms[1];
+ }
+ }
+
+ return ret;
+}
+
+/**
+ * Compile "etag" value to function.
+ *
+ * @param {Boolean|String|Function} val
+ * @return {Function}
+ * @api private
+ */
+
+exports.compileETag = function(val) {
+ var fn;
+
+ if (typeof val === 'function') {
+ return val;
+ }
+
+ switch (val) {
+ case true:
+ fn = exports.wetag;
+ break;
+ case false:
+ break;
+ case 'strong':
+ fn = exports.etag;
+ break;
+ case 'weak':
+ fn = exports.wetag;
+ break;
+ default:
+ throw new TypeError('unknown value for etag function: ' + val);
+ }
+
+ return fn;
+}
+
+/**
+ * Compile "query parser" value to function.
+ *
+ * @param {String|Function} val
+ * @return {Function}
+ * @api private
+ */
+
+exports.compileQueryParser = function compileQueryParser(val) {
+ var fn;
+
+ if (typeof val === 'function') {
+ return val;
+ }
+
+ switch (val) {
+ case true:
+ fn = querystring.parse;
+ break;
+ case false:
+ fn = newObject;
+ break;
+ case 'extended':
+ fn = parseExtendedQueryString;
+ break;
+ case 'simple':
+ fn = querystring.parse;
+ break;
+ default:
+ throw new TypeError('unknown value for query parser function: ' + val);
+ }
+
+ return fn;
+}
+
+/**
+ * Compile "proxy trust" value to function.
+ *
+ * @param {Boolean|String|Number|Array|Function} val
+ * @return {Function}
+ * @api private
+ */
+
+exports.compileTrust = function(val) {
+ if (typeof val === 'function') return val;
+
+ if (val === true) {
+ // Support plain true/false
+ return function(){ return true };
+ }
+
+ if (typeof val === 'number') {
+ // Support trusting hop count
+ return function(a, i){ return i < val };
+ }
+
+ if (typeof val === 'string') {
+ // Support comma-separated values
+ val = val.split(/ *, */);
+ }
+
+ return proxyaddr.compile(val || []);
+}
+
+/**
+ * Set the charset in a given Content-Type string.
+ *
+ * @param {String} type
+ * @param {String} charset
+ * @return {String}
+ * @api private
+ */
+
+exports.setCharset = function setCharset(type, charset) {
+ if (!type || !charset) {
+ return type;
+ }
+
+ // parse type
+ var parsed = contentType.parse(type);
+
+ // set charset
+ parsed.parameters.charset = charset;
+
+ // format type
+ return contentType.format(parsed);
+};
+
+/**
+ * Parse an extended query string with qs.
+ *
+ * @return {Object}
+ * @private
+ */
+
+function parseExtendedQueryString(str) {
+ return qs.parse(str, {
+ allowPrototypes: true
+ });
+}
+
+/**
+ * Return new empty object.
+ *
+ * @return {Object}
+ * @api private
+ */
+
+function newObject() {
+ return {};
+}
diff --git a/server/node_modules/express/lib/view.js b/server/node_modules/express/lib/view.js
new file mode 100755
index 0000000..52415d4
--- /dev/null
+++ b/server/node_modules/express/lib/view.js
@@ -0,0 +1,173 @@
+/*!
+ * express
+ * Copyright(c) 2009-2013 TJ Holowaychuk
+ * Copyright(c) 2013 Roman Shtylman
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var debug = require('debug')('express:view');
+var path = require('path');
+var fs = require('fs');
+var utils = require('./utils');
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var dirname = path.dirname;
+var basename = path.basename;
+var extname = path.extname;
+var join = path.join;
+var resolve = path.resolve;
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = View;
+
+/**
+ * Initialize a new `View` with the given `name`.
+ *
+ * Options:
+ *
+ * - `defaultEngine` the default template engine name
+ * - `engines` template engine require() cache
+ * - `root` root path for view lookup
+ *
+ * @param {string} name
+ * @param {object} options
+ * @public
+ */
+
+function View(name, options) {
+ var opts = options || {};
+
+ this.defaultEngine = opts.defaultEngine;
+ this.ext = extname(name);
+ this.name = name;
+ this.root = opts.root;
+
+ if (!this.ext && !this.defaultEngine) {
+ throw new Error('No default engine was specified and no extension was provided.');
+ }
+
+ var fileName = name;
+
+ if (!this.ext) {
+ // get extension from default engine name
+ this.ext = this.defaultEngine[0] !== '.'
+ ? '.' + this.defaultEngine
+ : this.defaultEngine;
+
+ fileName += this.ext;
+ }
+
+ if (!opts.engines[this.ext]) {
+ // load engine
+ opts.engines[this.ext] = require(this.ext.substr(1)).__express;
+ }
+
+ // store loaded engine
+ this.engine = opts.engines[this.ext];
+
+ // lookup path
+ this.path = this.lookup(fileName);
+}
+
+/**
+ * Lookup view by the given `name`
+ *
+ * @param {string} name
+ * @private
+ */
+
+View.prototype.lookup = function lookup(name) {
+ var path;
+ var roots = [].concat(this.root);
+
+ debug('lookup "%s"', name);
+
+ for (var i = 0; i < roots.length && !path; i++) {
+ var root = roots[i];
+
+ // resolve the path
+ var loc = resolve(root, name);
+ var dir = dirname(loc);
+ var file = basename(loc);
+
+ // resolve the file
+ path = this.resolve(dir, file);
+ }
+
+ return path;
+};
+
+/**
+ * Render with the given options.
+ *
+ * @param {object} options
+ * @param {function} callback
+ * @private
+ */
+
+View.prototype.render = function render(options, callback) {
+ debug('render "%s"', this.path);
+ this.engine(this.path, options, callback);
+};
+
+/**
+ * Resolve the file within the given directory.
+ *
+ * @param {string} dir
+ * @param {string} file
+ * @private
+ */
+
+View.prototype.resolve = function resolve(dir, file) {
+ var ext = this.ext;
+
+ // .
+ var path = join(dir, file);
+ var stat = tryStat(path);
+
+ if (stat && stat.isFile()) {
+ return path;
+ }
+
+ // /index.
+ path = join(dir, basename(file, ext), 'index' + ext);
+ stat = tryStat(path);
+
+ if (stat && stat.isFile()) {
+ return path;
+ }
+};
+
+/**
+ * Return a stat, maybe.
+ *
+ * @param {string} path
+ * @return {fs.Stats}
+ * @private
+ */
+
+function tryStat(path) {
+ debug('stat "%s"', path);
+
+ try {
+ return fs.statSync(path);
+ } catch (e) {
+ return undefined;
+ }
+}
diff --git a/server/node_modules/express/node_modules/accepts/HISTORY.md b/server/node_modules/express/node_modules/accepts/HISTORY.md
new file mode 100755
index 0000000..0477ed7
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/HISTORY.md
@@ -0,0 +1,212 @@
+1.3.3 / 2016-05-02
+==================
+
+ * deps: mime-types@~2.1.11
+ - deps: mime-db@~1.23.0
+ * deps: negotiator@0.6.1
+ - perf: improve `Accept` parsing speed
+ - perf: improve `Accept-Charset` parsing speed
+ - perf: improve `Accept-Encoding` parsing speed
+ - perf: improve `Accept-Language` parsing speed
+
+1.3.2 / 2016-03-08
+==================
+
+ * deps: mime-types@~2.1.10
+ - Fix extension of `application/dash+xml`
+ - Update primary extension for `audio/mp4`
+ - deps: mime-db@~1.22.0
+
+1.3.1 / 2016-01-19
+==================
+
+ * deps: mime-types@~2.1.9
+ - deps: mime-db@~1.21.0
+
+1.3.0 / 2015-09-29
+==================
+
+ * deps: mime-types@~2.1.7
+ - deps: mime-db@~1.19.0
+ * deps: negotiator@0.6.0
+ - Fix including type extensions in parameters in `Accept` parsing
+ - Fix parsing `Accept` parameters with quoted equals
+ - Fix parsing `Accept` parameters with quoted semicolons
+ - Lazy-load modules from main entry point
+ - perf: delay type concatenation until needed
+ - perf: enable strict mode
+ - perf: hoist regular expressions
+ - perf: remove closures getting spec properties
+ - perf: remove a closure from media type parsing
+ - perf: remove property delete from media type parsing
+
+1.2.13 / 2015-09-06
+===================
+
+ * deps: mime-types@~2.1.6
+ - deps: mime-db@~1.18.0
+
+1.2.12 / 2015-07-30
+===================
+
+ * deps: mime-types@~2.1.4
+ - deps: mime-db@~1.16.0
+
+1.2.11 / 2015-07-16
+===================
+
+ * deps: mime-types@~2.1.3
+ - deps: mime-db@~1.15.0
+
+1.2.10 / 2015-07-01
+===================
+
+ * deps: mime-types@~2.1.2
+ - deps: mime-db@~1.14.0
+
+1.2.9 / 2015-06-08
+==================
+
+ * deps: mime-types@~2.1.1
+ - perf: fix deopt during mapping
+
+1.2.8 / 2015-06-07
+==================
+
+ * deps: mime-types@~2.1.0
+ - deps: mime-db@~1.13.0
+ * perf: avoid argument reassignment & argument slice
+ * perf: avoid negotiator recursive construction
+ * perf: enable strict mode
+ * perf: remove unnecessary bitwise operator
+
+1.2.7 / 2015-05-10
+==================
+
+ * deps: negotiator@0.5.3
+ - Fix media type parameter matching to be case-insensitive
+
+1.2.6 / 2015-05-07
+==================
+
+ * deps: mime-types@~2.0.11
+ - deps: mime-db@~1.9.1
+ * deps: negotiator@0.5.2
+ - Fix comparing media types with quoted values
+ - Fix splitting media types with quoted commas
+
+1.2.5 / 2015-03-13
+==================
+
+ * deps: mime-types@~2.0.10
+ - deps: mime-db@~1.8.0
+
+1.2.4 / 2015-02-14
+==================
+
+ * Support Node.js 0.6
+ * deps: mime-types@~2.0.9
+ - deps: mime-db@~1.7.0
+ * deps: negotiator@0.5.1
+ - Fix preference sorting to be stable for long acceptable lists
+
+1.2.3 / 2015-01-31
+==================
+
+ * deps: mime-types@~2.0.8
+ - deps: mime-db@~1.6.0
+
+1.2.2 / 2014-12-30
+==================
+
+ * deps: mime-types@~2.0.7
+ - deps: mime-db@~1.5.0
+
+1.2.1 / 2014-12-30
+==================
+
+ * deps: mime-types@~2.0.5
+ - deps: mime-db@~1.3.1
+
+1.2.0 / 2014-12-19
+==================
+
+ * deps: negotiator@0.5.0
+ - Fix list return order when large accepted list
+ - Fix missing identity encoding when q=0 exists
+ - Remove dynamic building of Negotiator class
+
+1.1.4 / 2014-12-10
+==================
+
+ * deps: mime-types@~2.0.4
+ - deps: mime-db@~1.3.0
+
+1.1.3 / 2014-11-09
+==================
+
+ * deps: mime-types@~2.0.3
+ - deps: mime-db@~1.2.0
+
+1.1.2 / 2014-10-14
+==================
+
+ * deps: negotiator@0.4.9
+ - Fix error when media type has invalid parameter
+
+1.1.1 / 2014-09-28
+==================
+
+ * deps: mime-types@~2.0.2
+ - deps: mime-db@~1.1.0
+ * deps: negotiator@0.4.8
+ - Fix all negotiations to be case-insensitive
+ - Stable sort preferences of same quality according to client order
+
+1.1.0 / 2014-09-02
+==================
+
+ * update `mime-types`
+
+1.0.7 / 2014-07-04
+==================
+
+ * Fix wrong type returned from `type` when match after unknown extension
+
+1.0.6 / 2014-06-24
+==================
+
+ * deps: negotiator@0.4.7
+
+1.0.5 / 2014-06-20
+==================
+
+ * fix crash when unknown extension given
+
+1.0.4 / 2014-06-19
+==================
+
+ * use `mime-types`
+
+1.0.3 / 2014-06-11
+==================
+
+ * deps: negotiator@0.4.6
+ - Order by specificity when quality is the same
+
+1.0.2 / 2014-05-29
+==================
+
+ * Fix interpretation when header not in request
+ * deps: pin negotiator@0.4.5
+
+1.0.1 / 2014-01-18
+==================
+
+ * Identity encoding isn't always acceptable
+ * deps: negotiator@~0.4.0
+
+1.0.0 / 2013-12-27
+==================
+
+ * Genesis
diff --git a/server/node_modules/express/node_modules/accepts/LICENSE b/server/node_modules/express/node_modules/accepts/LICENSE
new file mode 100755
index 0000000..0616607
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2014 Jonathan Ong
+Copyright (c) 2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/accepts/README.md b/server/node_modules/express/node_modules/accepts/README.md
new file mode 100755
index 0000000..ae36676
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/README.md
@@ -0,0 +1,135 @@
+# accepts
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
+
+In addition to negotiator, it allows:
+
+- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`.
+- Allows type shorthands such as `json`.
+- Returns `false` when no types match
+- Treats non-existent headers as `*`
+
+## Installation
+
+```sh
+npm install accepts
+```
+
+## API
+
+```js
+var accepts = require('accepts')
+```
+
+### accepts(req)
+
+Create a new `Accepts` object for the given `req`.
+
+#### .charset(charsets)
+
+Return the first accepted charset. If nothing in `charsets` is accepted,
+then `false` is returned.
+
+#### .charsets()
+
+Return the charsets that the request accepts, in the order of the client's
+preference (most preferred first).
+
+#### .encoding(encodings)
+
+Return the first accepted encoding. If nothing in `encodings` is accepted,
+then `false` is returned.
+
+#### .encodings()
+
+Return the encodings that the request accepts, in the order of the client's
+preference (most preferred first).
+
+#### .language(languages)
+
+Return the first accepted language. If nothing in `languages` is accepted,
+then `false` is returned.
+
+#### .languages()
+
+Return the languages that the request accepts, in the order of the client's
+preference (most preferred first).
+
+#### .type(types)
+
+Return the first accepted type (and it is returned as the same text as what
+appears in the `types` array). If nothing in `types` is accepted, then `false`
+is returned.
+
+The `types` array can contain full MIME types or file extensions. Any value
+that is not a full MIME types is passed to `require('mime-types').lookup`.
+
+#### .types()
+
+Return the types that the request accepts, in the order of the client's
+preference (most preferred first).
+
+## Examples
+
+### Simple type negotiation
+
+This simple example shows how to use `accepts` to return a different typed
+respond body based on what the client wants to accept. The server lists it's
+preferences in order and will get back the best match between the client and
+server.
+
+```js
+var accepts = require('accepts')
+var http = require('http')
+
+function app(req, res) {
+ var accept = accepts(req)
+
+ // the order of this list is significant; should be server preferred order
+ switch(accept.type(['json', 'html'])) {
+ case 'json':
+ res.setHeader('Content-Type', 'application/json')
+ res.write('{"hello":"world!"}')
+ break
+ case 'html':
+ res.setHeader('Content-Type', 'text/html')
+ res.write('hello, world! ')
+ break
+ default:
+ // the fallback is text/plain, so no need to specify it above
+ res.setHeader('Content-Type', 'text/plain')
+ res.write('hello, world!')
+ break
+ }
+
+ res.end()
+}
+
+http.createServer(app).listen(3000)
+```
+
+You can test this out with the cURL program:
+```sh
+curl -I -H'Accept: text/html' http://localhost:3000/
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/accepts.svg
+[npm-url]: https://npmjs.org/package/accepts
+[node-version-image]: https://img.shields.io/node/v/accepts.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg
+[travis-url]: https://travis-ci.org/jshttp/accepts
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/accepts
+[downloads-image]: https://img.shields.io/npm/dm/accepts.svg
+[downloads-url]: https://npmjs.org/package/accepts
diff --git a/server/node_modules/express/node_modules/accepts/index.js b/server/node_modules/express/node_modules/accepts/index.js
new file mode 100755
index 0000000..e80192a
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/index.js
@@ -0,0 +1,231 @@
+/*!
+ * accepts
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var Negotiator = require('negotiator')
+var mime = require('mime-types')
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = Accepts
+
+/**
+ * Create a new Accepts object for the given req.
+ *
+ * @param {object} req
+ * @public
+ */
+
+function Accepts(req) {
+ if (!(this instanceof Accepts))
+ return new Accepts(req)
+
+ this.headers = req.headers
+ this.negotiator = new Negotiator(req)
+}
+
+/**
+ * Check if the given `type(s)` is acceptable, returning
+ * the best match when true, otherwise `undefined`, in which
+ * case you should respond with 406 "Not Acceptable".
+ *
+ * The `type` value may be a single mime type string
+ * such as "application/json", the extension name
+ * such as "json" or an array `["json", "html", "text/plain"]`. When a list
+ * or array is given the _best_ match, if any is returned.
+ *
+ * Examples:
+ *
+ * // Accept: text/html
+ * this.types('html');
+ * // => "html"
+ *
+ * // Accept: text/*, application/json
+ * this.types('html');
+ * // => "html"
+ * this.types('text/html');
+ * // => "text/html"
+ * this.types('json', 'text');
+ * // => "json"
+ * this.types('application/json');
+ * // => "application/json"
+ *
+ * // Accept: text/*, application/json
+ * this.types('image/png');
+ * this.types('png');
+ * // => undefined
+ *
+ * // Accept: text/*;q=.5, application/json
+ * this.types(['html', 'json']);
+ * this.types('html', 'json');
+ * // => "json"
+ *
+ * @param {String|Array} types...
+ * @return {String|Array|Boolean}
+ * @public
+ */
+
+Accepts.prototype.type =
+Accepts.prototype.types = function (types_) {
+ var types = types_
+
+ // support flattened arguments
+ if (types && !Array.isArray(types)) {
+ types = new Array(arguments.length)
+ for (var i = 0; i < types.length; i++) {
+ types[i] = arguments[i]
+ }
+ }
+
+ // no types, return all requested types
+ if (!types || types.length === 0) {
+ return this.negotiator.mediaTypes()
+ }
+
+ if (!this.headers.accept) return types[0];
+ var mimes = types.map(extToMime);
+ var accepts = this.negotiator.mediaTypes(mimes.filter(validMime));
+ var first = accepts[0];
+ if (!first) return false;
+ return types[mimes.indexOf(first)];
+}
+
+/**
+ * Return accepted encodings or best fit based on `encodings`.
+ *
+ * Given `Accept-Encoding: gzip, deflate`
+ * an array sorted by quality is returned:
+ *
+ * ['gzip', 'deflate']
+ *
+ * @param {String|Array} encodings...
+ * @return {String|Array}
+ * @public
+ */
+
+Accepts.prototype.encoding =
+Accepts.prototype.encodings = function (encodings_) {
+ var encodings = encodings_
+
+ // support flattened arguments
+ if (encodings && !Array.isArray(encodings)) {
+ encodings = new Array(arguments.length)
+ for (var i = 0; i < encodings.length; i++) {
+ encodings[i] = arguments[i]
+ }
+ }
+
+ // no encodings, return all requested encodings
+ if (!encodings || encodings.length === 0) {
+ return this.negotiator.encodings()
+ }
+
+ return this.negotiator.encodings(encodings)[0] || false
+}
+
+/**
+ * Return accepted charsets or best fit based on `charsets`.
+ *
+ * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
+ * an array sorted by quality is returned:
+ *
+ * ['utf-8', 'utf-7', 'iso-8859-1']
+ *
+ * @param {String|Array} charsets...
+ * @return {String|Array}
+ * @public
+ */
+
+Accepts.prototype.charset =
+Accepts.prototype.charsets = function (charsets_) {
+ var charsets = charsets_
+
+ // support flattened arguments
+ if (charsets && !Array.isArray(charsets)) {
+ charsets = new Array(arguments.length)
+ for (var i = 0; i < charsets.length; i++) {
+ charsets[i] = arguments[i]
+ }
+ }
+
+ // no charsets, return all requested charsets
+ if (!charsets || charsets.length === 0) {
+ return this.negotiator.charsets()
+ }
+
+ return this.negotiator.charsets(charsets)[0] || false
+}
+
+/**
+ * Return accepted languages or best fit based on `langs`.
+ *
+ * Given `Accept-Language: en;q=0.8, es, pt`
+ * an array sorted by quality is returned:
+ *
+ * ['es', 'pt', 'en']
+ *
+ * @param {String|Array} langs...
+ * @return {Array|String}
+ * @public
+ */
+
+Accepts.prototype.lang =
+Accepts.prototype.langs =
+Accepts.prototype.language =
+Accepts.prototype.languages = function (languages_) {
+ var languages = languages_
+
+ // support flattened arguments
+ if (languages && !Array.isArray(languages)) {
+ languages = new Array(arguments.length)
+ for (var i = 0; i < languages.length; i++) {
+ languages[i] = arguments[i]
+ }
+ }
+
+ // no languages, return all requested languages
+ if (!languages || languages.length === 0) {
+ return this.negotiator.languages()
+ }
+
+ return this.negotiator.languages(languages)[0] || false
+}
+
+/**
+ * Convert extnames to mime.
+ *
+ * @param {String} type
+ * @return {String}
+ * @private
+ */
+
+function extToMime(type) {
+ return type.indexOf('/') === -1
+ ? mime.lookup(type)
+ : type
+}
+
+/**
+ * Check if mime is valid.
+ *
+ * @param {String} type
+ * @return {String}
+ * @private
+ */
+
+function validMime(type) {
+ return typeof type === 'string';
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md
new file mode 100755
index 0000000..63bd4ea
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md
@@ -0,0 +1,197 @@
+2.1.11 / 2016-05-01
+===================
+
+ * deps: mime-db@~1.23.0
+ - Add new mime types
+
+2.1.10 / 2016-02-15
+===================
+
+ * deps: mime-db@~1.22.0
+ - Add new mime types
+ - Fix extension of `application/dash+xml`
+ - Update primary extension for `audio/mp4`
+
+2.1.9 / 2016-01-06
+==================
+
+ * deps: mime-db@~1.21.0
+ - Add new mime types
+
+2.1.8 / 2015-11-30
+==================
+
+ * deps: mime-db@~1.20.0
+ - Add new mime types
+
+2.1.7 / 2015-09-20
+==================
+
+ * deps: mime-db@~1.19.0
+ - Add new mime types
+
+2.1.6 / 2015-09-03
+==================
+
+ * deps: mime-db@~1.18.0
+ - Add new mime types
+
+2.1.5 / 2015-08-20
+==================
+
+ * deps: mime-db@~1.17.0
+ - Add new mime types
+
+2.1.4 / 2015-07-30
+==================
+
+ * deps: mime-db@~1.16.0
+ - Add new mime types
+
+2.1.3 / 2015-07-13
+==================
+
+ * deps: mime-db@~1.15.0
+ - Add new mime types
+
+2.1.2 / 2015-06-25
+==================
+
+ * deps: mime-db@~1.14.0
+ - Add new mime types
+
+2.1.1 / 2015-06-08
+==================
+
+ * perf: fix deopt during mapping
+
+2.1.0 / 2015-06-07
+==================
+
+ * Fix incorrectly treating extension-less file name as extension
+ - i.e. `'path/to/json'` will no longer return `application/json`
+ * Fix `.charset(type)` to accept parameters
+ * Fix `.charset(type)` to match case-insensitive
+ * Improve generation of extension to MIME mapping
+ * Refactor internals for readability and no argument reassignment
+ * Prefer `application/*` MIME types from the same source
+ * Prefer any type over `application/octet-stream`
+ * deps: mime-db@~1.13.0
+ - Add nginx as a source
+ - Add new mime types
+
+2.0.14 / 2015-06-06
+===================
+
+ * deps: mime-db@~1.12.0
+ - Add new mime types
+
+2.0.13 / 2015-05-31
+===================
+
+ * deps: mime-db@~1.11.0
+ - Add new mime types
+
+2.0.12 / 2015-05-19
+===================
+
+ * deps: mime-db@~1.10.0
+ - Add new mime types
+
+2.0.11 / 2015-05-05
+===================
+
+ * deps: mime-db@~1.9.1
+ - Add new mime types
+
+2.0.10 / 2015-03-13
+===================
+
+ * deps: mime-db@~1.8.0
+ - Add new mime types
+
+2.0.9 / 2015-02-09
+==================
+
+ * deps: mime-db@~1.7.0
+ - Add new mime types
+ - Community extensions ownership transferred from `node-mime`
+
+2.0.8 / 2015-01-29
+==================
+
+ * deps: mime-db@~1.6.0
+ - Add new mime types
+
+2.0.7 / 2014-12-30
+==================
+
+ * deps: mime-db@~1.5.0
+ - Add new mime types
+ - Fix various invalid MIME type entries
+
+2.0.6 / 2014-12-30
+==================
+
+ * deps: mime-db@~1.4.0
+ - Add new mime types
+ - Fix various invalid MIME type entries
+ - Remove example template MIME types
+
+2.0.5 / 2014-12-29
+==================
+
+ * deps: mime-db@~1.3.1
+ - Fix missing extensions
+
+2.0.4 / 2014-12-10
+==================
+
+ * deps: mime-db@~1.3.0
+ - Add new mime types
+
+2.0.3 / 2014-11-09
+==================
+
+ * deps: mime-db@~1.2.0
+ - Add new mime types
+
+2.0.2 / 2014-09-28
+==================
+
+ * deps: mime-db@~1.1.0
+ - Add new mime types
+ - Add additional compressible
+ - Update charsets
+
+2.0.1 / 2014-09-07
+==================
+
+ * Support Node.js 0.6
+
+2.0.0 / 2014-09-02
+==================
+
+ * Use `mime-db`
+ * Remove `.define()`
+
+1.0.2 / 2014-08-04
+==================
+
+ * Set charset=utf-8 for `text/javascript`
+
+1.0.1 / 2014-06-24
+==================
+
+ * Add `text/jsx` type
+
+1.0.0 / 2014-05-12
+==================
+
+ * Return `false` for unknown types
+ * Set charset=utf-8 for `application/json`
+
+0.1.0 / 2014-05-02
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE
new file mode 100755
index 0000000..0616607
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2014 Jonathan Ong
+Copyright (c) 2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md
new file mode 100755
index 0000000..e77d615
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md
@@ -0,0 +1,103 @@
+# mime-types
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+The ultimate javascript content-type utility.
+
+Similar to [node-mime](https://github.com/broofa/node-mime), except:
+
+- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`,
+ so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.
+- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.
+- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db)
+- No `.define()` functionality
+
+Otherwise, the API is compatible.
+
+## Install
+
+```sh
+$ npm install mime-types
+```
+
+## Adding Types
+
+All mime types are based on [mime-db](https://github.com/jshttp/mime-db),
+so open a PR there if you'd like to add mime types.
+
+## API
+
+```js
+var mime = require('mime-types')
+```
+
+All functions return `false` if input is invalid or not found.
+
+### mime.lookup(path)
+
+Lookup the content-type associated with a file.
+
+```js
+mime.lookup('json') // 'application/json'
+mime.lookup('.md') // 'text/x-markdown'
+mime.lookup('file.html') // 'text/html'
+mime.lookup('folder/file.js') // 'application/javascript'
+mime.lookup('folder/.htaccess') // false
+
+mime.lookup('cats') // false
+```
+
+### mime.contentType(type)
+
+Create a full content-type header given a content-type or extension.
+
+```js
+mime.contentType('markdown') // 'text/x-markdown; charset=utf-8'
+mime.contentType('file.json') // 'application/json; charset=utf-8'
+
+// from a full path
+mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'
+```
+
+### mime.extension(type)
+
+Get the default extension for a content-type.
+
+```js
+mime.extension('application/octet-stream') // 'bin'
+```
+
+### mime.charset(type)
+
+Lookup the implied default charset of a content-type.
+
+```js
+mime.charset('text/x-markdown') // 'UTF-8'
+```
+
+### var type = mime.types[extension]
+
+A map of content-types by extension.
+
+### [extensions...] = mime.extensions[type]
+
+A map of extensions by content-type.
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/mime-types.svg
+[npm-url]: https://npmjs.org/package/mime-types
+[node-version-image]: https://img.shields.io/node/v/mime-types.svg
+[node-version-url]: https://nodejs.org/en/download/
+[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg
+[travis-url]: https://travis-ci.org/jshttp/mime-types
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/mime-types
+[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg
+[downloads-url]: https://npmjs.org/package/mime-types
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js
new file mode 100755
index 0000000..f7008b2
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js
@@ -0,0 +1,188 @@
+/*!
+ * mime-types
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var db = require('mime-db')
+var extname = require('path').extname
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/
+var textTypeRegExp = /^text\//i
+
+/**
+ * Module exports.
+ * @public
+ */
+
+exports.charset = charset
+exports.charsets = { lookup: charset }
+exports.contentType = contentType
+exports.extension = extension
+exports.extensions = Object.create(null)
+exports.lookup = lookup
+exports.types = Object.create(null)
+
+// Populate the extensions/types maps
+populateMaps(exports.extensions, exports.types)
+
+/**
+ * Get the default charset for a MIME type.
+ *
+ * @param {string} type
+ * @return {boolean|string}
+ */
+
+function charset(type) {
+ if (!type || typeof type !== 'string') {
+ return false
+ }
+
+ // TODO: use media-typer
+ var match = extractTypeRegExp.exec(type)
+ var mime = match && db[match[1].toLowerCase()]
+
+ if (mime && mime.charset) {
+ return mime.charset
+ }
+
+ // default text/* to utf-8
+ if (match && textTypeRegExp.test(match[1])) {
+ return 'UTF-8'
+ }
+
+ return false
+}
+
+/**
+ * Create a full Content-Type header given a MIME type or extension.
+ *
+ * @param {string} str
+ * @return {boolean|string}
+ */
+
+function contentType(str) {
+ // TODO: should this even be in this module?
+ if (!str || typeof str !== 'string') {
+ return false
+ }
+
+ var mime = str.indexOf('/') === -1
+ ? exports.lookup(str)
+ : str
+
+ if (!mime) {
+ return false
+ }
+
+ // TODO: use content-type or other module
+ if (mime.indexOf('charset') === -1) {
+ var charset = exports.charset(mime)
+ if (charset) mime += '; charset=' + charset.toLowerCase()
+ }
+
+ return mime
+}
+
+/**
+ * Get the default extension for a MIME type.
+ *
+ * @param {string} type
+ * @return {boolean|string}
+ */
+
+function extension(type) {
+ if (!type || typeof type !== 'string') {
+ return false
+ }
+
+ // TODO: use media-typer
+ var match = extractTypeRegExp.exec(type)
+
+ // get extensions
+ var exts = match && exports.extensions[match[1].toLowerCase()]
+
+ if (!exts || !exts.length) {
+ return false
+ }
+
+ return exts[0]
+}
+
+/**
+ * Lookup the MIME type for a file path/extension.
+ *
+ * @param {string} path
+ * @return {boolean|string}
+ */
+
+function lookup(path) {
+ if (!path || typeof path !== 'string') {
+ return false
+ }
+
+ // get the extension ("ext" or ".ext" or full path)
+ var extension = extname('x.' + path)
+ .toLowerCase()
+ .substr(1)
+
+ if (!extension) {
+ return false
+ }
+
+ return exports.types[extension] || false
+}
+
+/**
+ * Populate the extensions and types maps.
+ * @private
+ */
+
+function populateMaps(extensions, types) {
+ // source preference (least -> most)
+ var preference = ['nginx', 'apache', undefined, 'iana']
+
+ Object.keys(db).forEach(function forEachMimeType(type) {
+ var mime = db[type]
+ var exts = mime.extensions
+
+ if (!exts || !exts.length) {
+ return
+ }
+
+ // mime -> extensions
+ extensions[type] = exts
+
+ // extension -> mime
+ for (var i = 0; i < exts.length; i++) {
+ var extension = exts[i]
+
+ if (types[extension]) {
+ var from = preference.indexOf(db[types[extension]].source)
+ var to = preference.indexOf(mime.source)
+
+ if (types[extension] !== 'application/octet-stream'
+ && from > to || (from === to && types[extension].substr(0, 12) === 'application/')) {
+ // skip the remapping
+ continue
+ }
+ }
+
+ // set the extension -> mime
+ types[extension] = type
+ }
+ })
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/HISTORY.md
new file mode 100755
index 0000000..d6705ac
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/HISTORY.md
@@ -0,0 +1,341 @@
+1.23.0 / 2016-05-01
+===================
+
+ * Add `application/efi`
+ * Add `application/vnd.3gpp.sms+xml`
+ * Add `application/vnd.3lightssoftware.imagescal`
+ * Add `application/vnd.coreos.ignition+json`
+ * Add `application/vnd.desmume.movie`
+ * Add `application/vnd.onepager`
+ * Add `application/vnd.vel+json`
+ * Add `text/prs.prop.logic`
+ * Add `video/encaprtp`
+ * Add `video/h265`
+ * Add `video/iso.segment`
+ * Add `video/raptorfec`
+ * Add `video/rtploopback`
+ * Add `video/vnd.radgamettools.bink`
+ * Add `video/vnd.radgamettools.smacker`
+ * Add `video/vp8`
+ * Add extension `.3gpp` to `audio/3gpp`
+
+1.22.0 / 2016-02-15
+===================
+
+ * Add `application/ppsp-tracker+json`
+ * Add `application/problem+json`
+ * Add `application/problem+xml`
+ * Add `application/vnd.hdt`
+ * Add `application/vnd.ms-printschematicket+xml`
+ * Add `model/vnd.rosette.annotated-data-model`
+ * Add `text/slim`
+ * Add extension `.rng` to `application/xml`
+ * Fix extension of `application/dash+xml` to be `.mpd`
+ * Update primary extension to `.m4a` for `audio/mp4`
+
+1.21.0 / 2016-01-06
+===================
+
+ * Add `application/emergencycalldata.comment+xml`
+ * Add `application/emergencycalldata.deviceinfo+xml`
+ * Add `application/emergencycalldata.providerinfo+xml`
+ * Add `application/emergencycalldata.serviceinfo+xml`
+ * Add `application/emergencycalldata.subscriberinfo+xml`
+ * Add `application/vnd.filmit.zfc`
+ * Add `application/vnd.google-apps.document`
+ * Add `application/vnd.google-apps.presentation`
+ * Add `application/vnd.google-apps.spreadsheet`
+ * Add `application/vnd.mapbox-vector-tile`
+ * Add `application/vnd.ms-printdevicecapabilities+xml`
+ * Add `application/vnd.ms-windows.devicepairing`
+ * Add `application/vnd.ms-windows.nwprinting.oob`
+ * Add `application/vnd.tml`
+ * Add `audio/evs`
+
+1.20.0 / 2015-11-10
+===================
+
+ * Add `application/cdni`
+ * Add `application/csvm+json`
+ * Add `application/rfc+xml`
+ * Add `application/vnd.3gpp.access-transfer-events+xml`
+ * Add `application/vnd.3gpp.srvcc-ext+xml`
+ * Add `application/vnd.ms-windows.wsd.oob`
+ * Add `application/vnd.oxli.countgraph`
+ * Add `application/vnd.pagerduty+json`
+ * Add `text/x-suse-ymp`
+
+1.19.0 / 2015-09-17
+===================
+
+ * Add `application/vnd.3gpp-prose-pc3ch+xml`
+ * Add `application/vnd.3gpp.srvcc-info+xml`
+ * Add `application/vnd.apple.pkpass`
+ * Add `application/vnd.drive+json`
+
+1.18.0 / 2015-09-03
+===================
+
+ * Add `application/pkcs12`
+ * Add `application/vnd.3gpp-prose+xml`
+ * Add `application/vnd.3gpp.mid-call+xml`
+ * Add `application/vnd.3gpp.state-and-event-info+xml`
+ * Add `application/vnd.anki`
+ * Add `application/vnd.firemonkeys.cloudcell`
+ * Add `application/vnd.openblox.game+xml`
+ * Add `application/vnd.openblox.game-binary`
+
+1.17.0 / 2015-08-13
+===================
+
+ * Add `application/x-msdos-program`
+ * Add `audio/g711-0`
+ * Add `image/vnd.mozilla.apng`
+ * Add extension `.exe` to `application/x-msdos-program`
+
+1.16.0 / 2015-07-29
+===================
+
+ * Add `application/vnd.uri-map`
+
+1.15.0 / 2015-07-13
+===================
+
+ * Add `application/x-httpd-php`
+
+1.14.0 / 2015-06-25
+===================
+
+ * Add `application/scim+json`
+ * Add `application/vnd.3gpp.ussd+xml`
+ * Add `application/vnd.biopax.rdf+xml`
+ * Add `text/x-processing`
+
+1.13.0 / 2015-06-07
+===================
+
+ * Add nginx as a source
+ * Add `application/x-cocoa`
+ * Add `application/x-java-archive-diff`
+ * Add `application/x-makeself`
+ * Add `application/x-perl`
+ * Add `application/x-pilot`
+ * Add `application/x-redhat-package-manager`
+ * Add `application/x-sea`
+ * Add `audio/x-m4a`
+ * Add `audio/x-realaudio`
+ * Add `image/x-jng`
+ * Add `text/mathml`
+
+1.12.0 / 2015-06-05
+===================
+
+ * Add `application/bdoc`
+ * Add `application/vnd.hyperdrive+json`
+ * Add `application/x-bdoc`
+ * Add extension `.rtf` to `text/rtf`
+
+1.11.0 / 2015-05-31
+===================
+
+ * Add `audio/wav`
+ * Add `audio/wave`
+ * Add extension `.litcoffee` to `text/coffeescript`
+ * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data`
+ * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install`
+
+1.10.0 / 2015-05-19
+===================
+
+ * Add `application/vnd.balsamiq.bmpr`
+ * Add `application/vnd.microsoft.portable-executable`
+ * Add `application/x-ns-proxy-autoconfig`
+
+1.9.1 / 2015-04-19
+==================
+
+ * Remove `.json` extension from `application/manifest+json`
+ - This is causing bugs downstream
+
+1.9.0 / 2015-04-19
+==================
+
+ * Add `application/manifest+json`
+ * Add `application/vnd.micro+json`
+ * Add `image/vnd.zbrush.pcx`
+ * Add `image/x-ms-bmp`
+
+1.8.0 / 2015-03-13
+==================
+
+ * Add `application/vnd.citationstyles.style+xml`
+ * Add `application/vnd.fastcopy-disk-image`
+ * Add `application/vnd.gov.sk.xmldatacontainer+xml`
+ * Add extension `.jsonld` to `application/ld+json`
+
+1.7.0 / 2015-02-08
+==================
+
+ * Add `application/vnd.gerber`
+ * Add `application/vnd.msa-disk-image`
+
+1.6.1 / 2015-02-05
+==================
+
+ * Community extensions ownership transferred from `node-mime`
+
+1.6.0 / 2015-01-29
+==================
+
+ * Add `application/jose`
+ * Add `application/jose+json`
+ * Add `application/json-seq`
+ * Add `application/jwk+json`
+ * Add `application/jwk-set+json`
+ * Add `application/jwt`
+ * Add `application/rdap+json`
+ * Add `application/vnd.gov.sk.e-form+xml`
+ * Add `application/vnd.ims.imsccv1p3`
+
+1.5.0 / 2014-12-30
+==================
+
+ * Add `application/vnd.oracle.resource+json`
+ * Fix various invalid MIME type entries
+ - `application/mbox+xml`
+ - `application/oscp-response`
+ - `application/vwg-multiplexed`
+ - `audio/g721`
+
+1.4.0 / 2014-12-21
+==================
+
+ * Add `application/vnd.ims.imsccv1p2`
+ * Fix various invalid MIME type entries
+ - `application/vnd-acucobol`
+ - `application/vnd-curl`
+ - `application/vnd-dart`
+ - `application/vnd-dxr`
+ - `application/vnd-fdf`
+ - `application/vnd-mif`
+ - `application/vnd-sema`
+ - `application/vnd-wap-wmlc`
+ - `application/vnd.adobe.flash-movie`
+ - `application/vnd.dece-zip`
+ - `application/vnd.dvb_service`
+ - `application/vnd.micrografx-igx`
+ - `application/vnd.sealed-doc`
+ - `application/vnd.sealed-eml`
+ - `application/vnd.sealed-mht`
+ - `application/vnd.sealed-ppt`
+ - `application/vnd.sealed-tiff`
+ - `application/vnd.sealed-xls`
+ - `application/vnd.sealedmedia.softseal-html`
+ - `application/vnd.sealedmedia.softseal-pdf`
+ - `application/vnd.wap-slc`
+ - `application/vnd.wap-wbxml`
+ - `audio/vnd.sealedmedia.softseal-mpeg`
+ - `image/vnd-djvu`
+ - `image/vnd-svf`
+ - `image/vnd-wap-wbmp`
+ - `image/vnd.sealed-png`
+ - `image/vnd.sealedmedia.softseal-gif`
+ - `image/vnd.sealedmedia.softseal-jpg`
+ - `model/vnd-dwf`
+ - `model/vnd.parasolid.transmit-binary`
+ - `model/vnd.parasolid.transmit-text`
+ - `text/vnd-a`
+ - `text/vnd-curl`
+ - `text/vnd.wap-wml`
+ * Remove example template MIME types
+ - `application/example`
+ - `audio/example`
+ - `image/example`
+ - `message/example`
+ - `model/example`
+ - `multipart/example`
+ - `text/example`
+ - `video/example`
+
+1.3.1 / 2014-12-16
+==================
+
+ * Fix missing extensions
+ - `application/json5`
+ - `text/hjson`
+
+1.3.0 / 2014-12-07
+==================
+
+ * Add `application/a2l`
+ * Add `application/aml`
+ * Add `application/atfx`
+ * Add `application/atxml`
+ * Add `application/cdfx+xml`
+ * Add `application/dii`
+ * Add `application/json5`
+ * Add `application/lxf`
+ * Add `application/mf4`
+ * Add `application/vnd.apache.thrift.compact`
+ * Add `application/vnd.apache.thrift.json`
+ * Add `application/vnd.coffeescript`
+ * Add `application/vnd.enphase.envoy`
+ * Add `application/vnd.ims.imsccv1p1`
+ * Add `text/csv-schema`
+ * Add `text/hjson`
+ * Add `text/markdown`
+ * Add `text/yaml`
+
+1.2.0 / 2014-11-09
+==================
+
+ * Add `application/cea`
+ * Add `application/dit`
+ * Add `application/vnd.gov.sk.e-form+zip`
+ * Add `application/vnd.tmd.mediaflex.api+xml`
+ * Type `application/epub+zip` is now IANA-registered
+
+1.1.2 / 2014-10-23
+==================
+
+ * Rebuild database for `application/x-www-form-urlencoded` change
+
+1.1.1 / 2014-10-20
+==================
+
+ * Mark `application/x-www-form-urlencoded` as compressible.
+
+1.1.0 / 2014-09-28
+==================
+
+ * Add `application/font-woff2`
+
+1.0.3 / 2014-09-25
+==================
+
+ * Fix engine requirement in package
+
+1.0.2 / 2014-09-25
+==================
+
+ * Add `application/coap-group+json`
+ * Add `application/dcd`
+ * Add `application/vnd.apache.thrift.binary`
+ * Add `image/vnd.tencent.tap`
+ * Mark all JSON-derived types as compressible
+ * Update `text/vtt` data
+
+1.0.1 / 2014-08-30
+==================
+
+ * Fix extension ordering
+
+1.0.0 / 2014-08-30
+==================
+
+ * Add `application/atf`
+ * Add `application/merge-patch+json`
+ * Add `multipart/x-mixed-replace`
+ * Add `source: 'apache'` metadata
+ * Add `source: 'iana'` metadata
+ * Remove badly-assumed charset data
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE
new file mode 100755
index 0000000..a7ae8ee
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE
@@ -0,0 +1,22 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md
new file mode 100755
index 0000000..7662440
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md
@@ -0,0 +1,82 @@
+# mime-db
+
+[![NPM Version][npm-version-image]][npm-url]
+[![NPM Downloads][npm-downloads-image]][npm-url]
+[![Node.js Version][node-image]][node-url]
+[![Build Status][travis-image]][travis-url]
+[![Coverage Status][coveralls-image]][coveralls-url]
+
+This is a database of all mime types.
+It consists of a single, public JSON file and does not include any logic,
+allowing it to remain as un-opinionated as possible with an API.
+It aggregates data from the following sources:
+
+- http://www.iana.org/assignments/media-types/media-types.xhtml
+- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types
+
+## Installation
+
+```bash
+npm install mime-db
+```
+
+### Database Download
+
+If you're crazy enough to use this in the browser, you can just grab the
+JSON file using [RawGit](https://rawgit.com/). It is recommended to replace
+`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the
+JSON format may change in the future.
+
+```
+https://cdn.rawgit.com/jshttp/mime-db/master/db.json
+```
+
+## Usage
+
+```js
+var db = require('mime-db');
+
+// grab data on .js files
+var data = db['application/javascript'];
+```
+
+## Data Structure
+
+The JSON file is a map lookup for lowercased mime types.
+Each mime type has the following properties:
+
+- `.source` - where the mime type is defined.
+ If not set, it's probably a custom media type.
+ - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)
+ - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)
+ - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)
+- `.extensions[]` - known extensions associated with this mime type.
+- `.compressible` - whether a file of this type can be gzipped.
+- `.charset` - the default charset associated with this type, if any.
+
+If unknown, every property could be `undefined`.
+
+## Contributing
+
+To edit the database, only make PRs against `src/custom.json` or
+`src/custom-suffix.json`.
+
+To update the build, run `npm run build`.
+
+## Adding Custom Media Types
+
+The best way to get new media types included in this library is to register
+them with the IANA. The community registration procedure is outlined in
+[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types
+registered with the IANA are automatically pulled into this library.
+
+[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg
+[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg
+[npm-url]: https://npmjs.org/package/mime-db
+[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg
+[travis-url]: https://travis-ci.org/jshttp/mime-db
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master
+[node-image]: https://img.shields.io/node/v/mime-db.svg
+[node-url]: http://nodejs.org/download/
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json
new file mode 100755
index 0000000..0a5a8a7
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json
@@ -0,0 +1,6627 @@
+{
+ "application/1d-interleaved-parityfec": {
+ "source": "iana"
+ },
+ "application/3gpdash-qoe-report+xml": {
+ "source": "iana"
+ },
+ "application/3gpp-ims+xml": {
+ "source": "iana"
+ },
+ "application/a2l": {
+ "source": "iana"
+ },
+ "application/activemessage": {
+ "source": "iana"
+ },
+ "application/alto-costmap+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-costmapfilter+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-directory+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-endpointcost+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-endpointcostparams+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-endpointprop+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-endpointpropparams+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-error+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-networkmap+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-networkmapfilter+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/aml": {
+ "source": "iana"
+ },
+ "application/andrew-inset": {
+ "source": "iana",
+ "extensions": ["ez"]
+ },
+ "application/applefile": {
+ "source": "iana"
+ },
+ "application/applixware": {
+ "source": "apache",
+ "extensions": ["aw"]
+ },
+ "application/atf": {
+ "source": "iana"
+ },
+ "application/atfx": {
+ "source": "iana"
+ },
+ "application/atom+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["atom"]
+ },
+ "application/atomcat+xml": {
+ "source": "iana",
+ "extensions": ["atomcat"]
+ },
+ "application/atomdeleted+xml": {
+ "source": "iana"
+ },
+ "application/atomicmail": {
+ "source": "iana"
+ },
+ "application/atomsvc+xml": {
+ "source": "iana",
+ "extensions": ["atomsvc"]
+ },
+ "application/atxml": {
+ "source": "iana"
+ },
+ "application/auth-policy+xml": {
+ "source": "iana"
+ },
+ "application/bacnet-xdd+zip": {
+ "source": "iana"
+ },
+ "application/batch-smtp": {
+ "source": "iana"
+ },
+ "application/bdoc": {
+ "compressible": false,
+ "extensions": ["bdoc"]
+ },
+ "application/beep+xml": {
+ "source": "iana"
+ },
+ "application/calendar+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/calendar+xml": {
+ "source": "iana"
+ },
+ "application/call-completion": {
+ "source": "iana"
+ },
+ "application/cals-1840": {
+ "source": "iana"
+ },
+ "application/cbor": {
+ "source": "iana"
+ },
+ "application/ccmp+xml": {
+ "source": "iana"
+ },
+ "application/ccxml+xml": {
+ "source": "iana",
+ "extensions": ["ccxml"]
+ },
+ "application/cdfx+xml": {
+ "source": "iana"
+ },
+ "application/cdmi-capability": {
+ "source": "iana",
+ "extensions": ["cdmia"]
+ },
+ "application/cdmi-container": {
+ "source": "iana",
+ "extensions": ["cdmic"]
+ },
+ "application/cdmi-domain": {
+ "source": "iana",
+ "extensions": ["cdmid"]
+ },
+ "application/cdmi-object": {
+ "source": "iana",
+ "extensions": ["cdmio"]
+ },
+ "application/cdmi-queue": {
+ "source": "iana",
+ "extensions": ["cdmiq"]
+ },
+ "application/cdni": {
+ "source": "iana"
+ },
+ "application/cea": {
+ "source": "iana"
+ },
+ "application/cea-2018+xml": {
+ "source": "iana"
+ },
+ "application/cellml+xml": {
+ "source": "iana"
+ },
+ "application/cfw": {
+ "source": "iana"
+ },
+ "application/cms": {
+ "source": "iana"
+ },
+ "application/cnrp+xml": {
+ "source": "iana"
+ },
+ "application/coap-group+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/commonground": {
+ "source": "iana"
+ },
+ "application/conference-info+xml": {
+ "source": "iana"
+ },
+ "application/cpl+xml": {
+ "source": "iana"
+ },
+ "application/csrattrs": {
+ "source": "iana"
+ },
+ "application/csta+xml": {
+ "source": "iana"
+ },
+ "application/cstadata+xml": {
+ "source": "iana"
+ },
+ "application/csvm+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/cu-seeme": {
+ "source": "apache",
+ "extensions": ["cu"]
+ },
+ "application/cybercash": {
+ "source": "iana"
+ },
+ "application/dart": {
+ "compressible": true
+ },
+ "application/dash+xml": {
+ "source": "iana",
+ "extensions": ["mpd"]
+ },
+ "application/dashdelta": {
+ "source": "iana"
+ },
+ "application/davmount+xml": {
+ "source": "iana",
+ "extensions": ["davmount"]
+ },
+ "application/dca-rft": {
+ "source": "iana"
+ },
+ "application/dcd": {
+ "source": "iana"
+ },
+ "application/dec-dx": {
+ "source": "iana"
+ },
+ "application/dialog-info+xml": {
+ "source": "iana"
+ },
+ "application/dicom": {
+ "source": "iana"
+ },
+ "application/dii": {
+ "source": "iana"
+ },
+ "application/dit": {
+ "source": "iana"
+ },
+ "application/dns": {
+ "source": "iana"
+ },
+ "application/docbook+xml": {
+ "source": "apache",
+ "extensions": ["dbk"]
+ },
+ "application/dskpp+xml": {
+ "source": "iana"
+ },
+ "application/dssc+der": {
+ "source": "iana",
+ "extensions": ["dssc"]
+ },
+ "application/dssc+xml": {
+ "source": "iana",
+ "extensions": ["xdssc"]
+ },
+ "application/dvcs": {
+ "source": "iana"
+ },
+ "application/ecmascript": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["ecma"]
+ },
+ "application/edi-consent": {
+ "source": "iana"
+ },
+ "application/edi-x12": {
+ "source": "iana",
+ "compressible": false
+ },
+ "application/edifact": {
+ "source": "iana",
+ "compressible": false
+ },
+ "application/efi": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.comment+xml": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.deviceinfo+xml": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.providerinfo+xml": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.serviceinfo+xml": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.subscriberinfo+xml": {
+ "source": "iana"
+ },
+ "application/emma+xml": {
+ "source": "iana",
+ "extensions": ["emma"]
+ },
+ "application/emotionml+xml": {
+ "source": "iana"
+ },
+ "application/encaprtp": {
+ "source": "iana"
+ },
+ "application/epp+xml": {
+ "source": "iana"
+ },
+ "application/epub+zip": {
+ "source": "iana",
+ "extensions": ["epub"]
+ },
+ "application/eshop": {
+ "source": "iana"
+ },
+ "application/exi": {
+ "source": "iana",
+ "extensions": ["exi"]
+ },
+ "application/fastinfoset": {
+ "source": "iana"
+ },
+ "application/fastsoap": {
+ "source": "iana"
+ },
+ "application/fdt+xml": {
+ "source": "iana"
+ },
+ "application/fits": {
+ "source": "iana"
+ },
+ "application/font-sfnt": {
+ "source": "iana"
+ },
+ "application/font-tdpfr": {
+ "source": "iana",
+ "extensions": ["pfr"]
+ },
+ "application/font-woff": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["woff"]
+ },
+ "application/font-woff2": {
+ "compressible": false,
+ "extensions": ["woff2"]
+ },
+ "application/framework-attributes+xml": {
+ "source": "iana"
+ },
+ "application/gml+xml": {
+ "source": "apache",
+ "extensions": ["gml"]
+ },
+ "application/gpx+xml": {
+ "source": "apache",
+ "extensions": ["gpx"]
+ },
+ "application/gxf": {
+ "source": "apache",
+ "extensions": ["gxf"]
+ },
+ "application/gzip": {
+ "source": "iana",
+ "compressible": false
+ },
+ "application/h224": {
+ "source": "iana"
+ },
+ "application/held+xml": {
+ "source": "iana"
+ },
+ "application/http": {
+ "source": "iana"
+ },
+ "application/hyperstudio": {
+ "source": "iana",
+ "extensions": ["stk"]
+ },
+ "application/ibe-key-request+xml": {
+ "source": "iana"
+ },
+ "application/ibe-pkg-reply+xml": {
+ "source": "iana"
+ },
+ "application/ibe-pp-data": {
+ "source": "iana"
+ },
+ "application/iges": {
+ "source": "iana"
+ },
+ "application/im-iscomposing+xml": {
+ "source": "iana"
+ },
+ "application/index": {
+ "source": "iana"
+ },
+ "application/index.cmd": {
+ "source": "iana"
+ },
+ "application/index.obj": {
+ "source": "iana"
+ },
+ "application/index.response": {
+ "source": "iana"
+ },
+ "application/index.vnd": {
+ "source": "iana"
+ },
+ "application/inkml+xml": {
+ "source": "iana",
+ "extensions": ["ink","inkml"]
+ },
+ "application/iotp": {
+ "source": "iana"
+ },
+ "application/ipfix": {
+ "source": "iana",
+ "extensions": ["ipfix"]
+ },
+ "application/ipp": {
+ "source": "iana"
+ },
+ "application/isup": {
+ "source": "iana"
+ },
+ "application/its+xml": {
+ "source": "iana"
+ },
+ "application/java-archive": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["jar","war","ear"]
+ },
+ "application/java-serialized-object": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["ser"]
+ },
+ "application/java-vm": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["class"]
+ },
+ "application/javascript": {
+ "source": "iana",
+ "charset": "UTF-8",
+ "compressible": true,
+ "extensions": ["js"]
+ },
+ "application/jose": {
+ "source": "iana"
+ },
+ "application/jose+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/jrd+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/json": {
+ "source": "iana",
+ "charset": "UTF-8",
+ "compressible": true,
+ "extensions": ["json","map"]
+ },
+ "application/json-patch+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/json-seq": {
+ "source": "iana"
+ },
+ "application/json5": {
+ "extensions": ["json5"]
+ },
+ "application/jsonml+json": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["jsonml"]
+ },
+ "application/jwk+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/jwk-set+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/jwt": {
+ "source": "iana"
+ },
+ "application/kpml-request+xml": {
+ "source": "iana"
+ },
+ "application/kpml-response+xml": {
+ "source": "iana"
+ },
+ "application/ld+json": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["jsonld"]
+ },
+ "application/link-format": {
+ "source": "iana"
+ },
+ "application/load-control+xml": {
+ "source": "iana"
+ },
+ "application/lost+xml": {
+ "source": "iana",
+ "extensions": ["lostxml"]
+ },
+ "application/lostsync+xml": {
+ "source": "iana"
+ },
+ "application/lxf": {
+ "source": "iana"
+ },
+ "application/mac-binhex40": {
+ "source": "iana",
+ "extensions": ["hqx"]
+ },
+ "application/mac-compactpro": {
+ "source": "apache",
+ "extensions": ["cpt"]
+ },
+ "application/macwriteii": {
+ "source": "iana"
+ },
+ "application/mads+xml": {
+ "source": "iana",
+ "extensions": ["mads"]
+ },
+ "application/manifest+json": {
+ "charset": "UTF-8",
+ "compressible": true,
+ "extensions": ["webmanifest"]
+ },
+ "application/marc": {
+ "source": "iana",
+ "extensions": ["mrc"]
+ },
+ "application/marcxml+xml": {
+ "source": "iana",
+ "extensions": ["mrcx"]
+ },
+ "application/mathematica": {
+ "source": "iana",
+ "extensions": ["ma","nb","mb"]
+ },
+ "application/mathml+xml": {
+ "source": "iana",
+ "extensions": ["mathml"]
+ },
+ "application/mathml-content+xml": {
+ "source": "iana"
+ },
+ "application/mathml-presentation+xml": {
+ "source": "iana"
+ },
+ "application/mbms-associated-procedure-description+xml": {
+ "source": "iana"
+ },
+ "application/mbms-deregister+xml": {
+ "source": "iana"
+ },
+ "application/mbms-envelope+xml": {
+ "source": "iana"
+ },
+ "application/mbms-msk+xml": {
+ "source": "iana"
+ },
+ "application/mbms-msk-response+xml": {
+ "source": "iana"
+ },
+ "application/mbms-protection-description+xml": {
+ "source": "iana"
+ },
+ "application/mbms-reception-report+xml": {
+ "source": "iana"
+ },
+ "application/mbms-register+xml": {
+ "source": "iana"
+ },
+ "application/mbms-register-response+xml": {
+ "source": "iana"
+ },
+ "application/mbms-schedule+xml": {
+ "source": "iana"
+ },
+ "application/mbms-user-service-description+xml": {
+ "source": "iana"
+ },
+ "application/mbox": {
+ "source": "iana",
+ "extensions": ["mbox"]
+ },
+ "application/media-policy-dataset+xml": {
+ "source": "iana"
+ },
+ "application/media_control+xml": {
+ "source": "iana"
+ },
+ "application/mediaservercontrol+xml": {
+ "source": "iana",
+ "extensions": ["mscml"]
+ },
+ "application/merge-patch+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/metalink+xml": {
+ "source": "apache",
+ "extensions": ["metalink"]
+ },
+ "application/metalink4+xml": {
+ "source": "iana",
+ "extensions": ["meta4"]
+ },
+ "application/mets+xml": {
+ "source": "iana",
+ "extensions": ["mets"]
+ },
+ "application/mf4": {
+ "source": "iana"
+ },
+ "application/mikey": {
+ "source": "iana"
+ },
+ "application/mods+xml": {
+ "source": "iana",
+ "extensions": ["mods"]
+ },
+ "application/moss-keys": {
+ "source": "iana"
+ },
+ "application/moss-signature": {
+ "source": "iana"
+ },
+ "application/mosskey-data": {
+ "source": "iana"
+ },
+ "application/mosskey-request": {
+ "source": "iana"
+ },
+ "application/mp21": {
+ "source": "iana",
+ "extensions": ["m21","mp21"]
+ },
+ "application/mp4": {
+ "source": "iana",
+ "extensions": ["mp4s","m4p"]
+ },
+ "application/mpeg4-generic": {
+ "source": "iana"
+ },
+ "application/mpeg4-iod": {
+ "source": "iana"
+ },
+ "application/mpeg4-iod-xmt": {
+ "source": "iana"
+ },
+ "application/mrb-consumer+xml": {
+ "source": "iana"
+ },
+ "application/mrb-publish+xml": {
+ "source": "iana"
+ },
+ "application/msc-ivr+xml": {
+ "source": "iana"
+ },
+ "application/msc-mixer+xml": {
+ "source": "iana"
+ },
+ "application/msword": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["doc","dot"]
+ },
+ "application/mxf": {
+ "source": "iana",
+ "extensions": ["mxf"]
+ },
+ "application/nasdata": {
+ "source": "iana"
+ },
+ "application/news-checkgroups": {
+ "source": "iana"
+ },
+ "application/news-groupinfo": {
+ "source": "iana"
+ },
+ "application/news-transmission": {
+ "source": "iana"
+ },
+ "application/nlsml+xml": {
+ "source": "iana"
+ },
+ "application/nss": {
+ "source": "iana"
+ },
+ "application/ocsp-request": {
+ "source": "iana"
+ },
+ "application/ocsp-response": {
+ "source": "iana"
+ },
+ "application/octet-stream": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]
+ },
+ "application/oda": {
+ "source": "iana",
+ "extensions": ["oda"]
+ },
+ "application/odx": {
+ "source": "iana"
+ },
+ "application/oebps-package+xml": {
+ "source": "iana",
+ "extensions": ["opf"]
+ },
+ "application/ogg": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["ogx"]
+ },
+ "application/omdoc+xml": {
+ "source": "apache",
+ "extensions": ["omdoc"]
+ },
+ "application/onenote": {
+ "source": "apache",
+ "extensions": ["onetoc","onetoc2","onetmp","onepkg"]
+ },
+ "application/oxps": {
+ "source": "iana",
+ "extensions": ["oxps"]
+ },
+ "application/p2p-overlay+xml": {
+ "source": "iana"
+ },
+ "application/parityfec": {
+ "source": "iana"
+ },
+ "application/patch-ops-error+xml": {
+ "source": "iana",
+ "extensions": ["xer"]
+ },
+ "application/pdf": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["pdf"]
+ },
+ "application/pdx": {
+ "source": "iana"
+ },
+ "application/pgp-encrypted": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["pgp"]
+ },
+ "application/pgp-keys": {
+ "source": "iana"
+ },
+ "application/pgp-signature": {
+ "source": "iana",
+ "extensions": ["asc","sig"]
+ },
+ "application/pics-rules": {
+ "source": "apache",
+ "extensions": ["prf"]
+ },
+ "application/pidf+xml": {
+ "source": "iana"
+ },
+ "application/pidf-diff+xml": {
+ "source": "iana"
+ },
+ "application/pkcs10": {
+ "source": "iana",
+ "extensions": ["p10"]
+ },
+ "application/pkcs12": {
+ "source": "iana"
+ },
+ "application/pkcs7-mime": {
+ "source": "iana",
+ "extensions": ["p7m","p7c"]
+ },
+ "application/pkcs7-signature": {
+ "source": "iana",
+ "extensions": ["p7s"]
+ },
+ "application/pkcs8": {
+ "source": "iana",
+ "extensions": ["p8"]
+ },
+ "application/pkix-attr-cert": {
+ "source": "iana",
+ "extensions": ["ac"]
+ },
+ "application/pkix-cert": {
+ "source": "iana",
+ "extensions": ["cer"]
+ },
+ "application/pkix-crl": {
+ "source": "iana",
+ "extensions": ["crl"]
+ },
+ "application/pkix-pkipath": {
+ "source": "iana",
+ "extensions": ["pkipath"]
+ },
+ "application/pkixcmp": {
+ "source": "iana",
+ "extensions": ["pki"]
+ },
+ "application/pls+xml": {
+ "source": "iana",
+ "extensions": ["pls"]
+ },
+ "application/poc-settings+xml": {
+ "source": "iana"
+ },
+ "application/postscript": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["ai","eps","ps"]
+ },
+ "application/ppsp-tracker+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/problem+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/problem+xml": {
+ "source": "iana"
+ },
+ "application/provenance+xml": {
+ "source": "iana"
+ },
+ "application/prs.alvestrand.titrax-sheet": {
+ "source": "iana"
+ },
+ "application/prs.cww": {
+ "source": "iana",
+ "extensions": ["cww"]
+ },
+ "application/prs.hpub+zip": {
+ "source": "iana"
+ },
+ "application/prs.nprend": {
+ "source": "iana"
+ },
+ "application/prs.plucker": {
+ "source": "iana"
+ },
+ "application/prs.rdf-xml-crypt": {
+ "source": "iana"
+ },
+ "application/prs.xsf+xml": {
+ "source": "iana"
+ },
+ "application/pskc+xml": {
+ "source": "iana",
+ "extensions": ["pskcxml"]
+ },
+ "application/qsig": {
+ "source": "iana"
+ },
+ "application/raptorfec": {
+ "source": "iana"
+ },
+ "application/rdap+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/rdf+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["rdf"]
+ },
+ "application/reginfo+xml": {
+ "source": "iana",
+ "extensions": ["rif"]
+ },
+ "application/relax-ng-compact-syntax": {
+ "source": "iana",
+ "extensions": ["rnc"]
+ },
+ "application/remote-printing": {
+ "source": "iana"
+ },
+ "application/reputon+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/resource-lists+xml": {
+ "source": "iana",
+ "extensions": ["rl"]
+ },
+ "application/resource-lists-diff+xml": {
+ "source": "iana",
+ "extensions": ["rld"]
+ },
+ "application/rfc+xml": {
+ "source": "iana"
+ },
+ "application/riscos": {
+ "source": "iana"
+ },
+ "application/rlmi+xml": {
+ "source": "iana"
+ },
+ "application/rls-services+xml": {
+ "source": "iana",
+ "extensions": ["rs"]
+ },
+ "application/rpki-ghostbusters": {
+ "source": "iana",
+ "extensions": ["gbr"]
+ },
+ "application/rpki-manifest": {
+ "source": "iana",
+ "extensions": ["mft"]
+ },
+ "application/rpki-roa": {
+ "source": "iana",
+ "extensions": ["roa"]
+ },
+ "application/rpki-updown": {
+ "source": "iana"
+ },
+ "application/rsd+xml": {
+ "source": "apache",
+ "extensions": ["rsd"]
+ },
+ "application/rss+xml": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["rss"]
+ },
+ "application/rtf": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["rtf"]
+ },
+ "application/rtploopback": {
+ "source": "iana"
+ },
+ "application/rtx": {
+ "source": "iana"
+ },
+ "application/samlassertion+xml": {
+ "source": "iana"
+ },
+ "application/samlmetadata+xml": {
+ "source": "iana"
+ },
+ "application/sbml+xml": {
+ "source": "iana",
+ "extensions": ["sbml"]
+ },
+ "application/scaip+xml": {
+ "source": "iana"
+ },
+ "application/scim+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/scvp-cv-request": {
+ "source": "iana",
+ "extensions": ["scq"]
+ },
+ "application/scvp-cv-response": {
+ "source": "iana",
+ "extensions": ["scs"]
+ },
+ "application/scvp-vp-request": {
+ "source": "iana",
+ "extensions": ["spq"]
+ },
+ "application/scvp-vp-response": {
+ "source": "iana",
+ "extensions": ["spp"]
+ },
+ "application/sdp": {
+ "source": "iana",
+ "extensions": ["sdp"]
+ },
+ "application/sep+xml": {
+ "source": "iana"
+ },
+ "application/sep-exi": {
+ "source": "iana"
+ },
+ "application/session-info": {
+ "source": "iana"
+ },
+ "application/set-payment": {
+ "source": "iana"
+ },
+ "application/set-payment-initiation": {
+ "source": "iana",
+ "extensions": ["setpay"]
+ },
+ "application/set-registration": {
+ "source": "iana"
+ },
+ "application/set-registration-initiation": {
+ "source": "iana",
+ "extensions": ["setreg"]
+ },
+ "application/sgml": {
+ "source": "iana"
+ },
+ "application/sgml-open-catalog": {
+ "source": "iana"
+ },
+ "application/shf+xml": {
+ "source": "iana",
+ "extensions": ["shf"]
+ },
+ "application/sieve": {
+ "source": "iana"
+ },
+ "application/simple-filter+xml": {
+ "source": "iana"
+ },
+ "application/simple-message-summary": {
+ "source": "iana"
+ },
+ "application/simplesymbolcontainer": {
+ "source": "iana"
+ },
+ "application/slate": {
+ "source": "iana"
+ },
+ "application/smil": {
+ "source": "iana"
+ },
+ "application/smil+xml": {
+ "source": "iana",
+ "extensions": ["smi","smil"]
+ },
+ "application/smpte336m": {
+ "source": "iana"
+ },
+ "application/soap+fastinfoset": {
+ "source": "iana"
+ },
+ "application/soap+xml": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/sparql-query": {
+ "source": "iana",
+ "extensions": ["rq"]
+ },
+ "application/sparql-results+xml": {
+ "source": "iana",
+ "extensions": ["srx"]
+ },
+ "application/spirits-event+xml": {
+ "source": "iana"
+ },
+ "application/sql": {
+ "source": "iana"
+ },
+ "application/srgs": {
+ "source": "iana",
+ "extensions": ["gram"]
+ },
+ "application/srgs+xml": {
+ "source": "iana",
+ "extensions": ["grxml"]
+ },
+ "application/sru+xml": {
+ "source": "iana",
+ "extensions": ["sru"]
+ },
+ "application/ssdl+xml": {
+ "source": "apache",
+ "extensions": ["ssdl"]
+ },
+ "application/ssml+xml": {
+ "source": "iana",
+ "extensions": ["ssml"]
+ },
+ "application/tamp-apex-update": {
+ "source": "iana"
+ },
+ "application/tamp-apex-update-confirm": {
+ "source": "iana"
+ },
+ "application/tamp-community-update": {
+ "source": "iana"
+ },
+ "application/tamp-community-update-confirm": {
+ "source": "iana"
+ },
+ "application/tamp-error": {
+ "source": "iana"
+ },
+ "application/tamp-sequence-adjust": {
+ "source": "iana"
+ },
+ "application/tamp-sequence-adjust-confirm": {
+ "source": "iana"
+ },
+ "application/tamp-status-query": {
+ "source": "iana"
+ },
+ "application/tamp-status-response": {
+ "source": "iana"
+ },
+ "application/tamp-update": {
+ "source": "iana"
+ },
+ "application/tamp-update-confirm": {
+ "source": "iana"
+ },
+ "application/tar": {
+ "compressible": true
+ },
+ "application/tei+xml": {
+ "source": "iana",
+ "extensions": ["tei","teicorpus"]
+ },
+ "application/thraud+xml": {
+ "source": "iana",
+ "extensions": ["tfi"]
+ },
+ "application/timestamp-query": {
+ "source": "iana"
+ },
+ "application/timestamp-reply": {
+ "source": "iana"
+ },
+ "application/timestamped-data": {
+ "source": "iana",
+ "extensions": ["tsd"]
+ },
+ "application/ttml+xml": {
+ "source": "iana"
+ },
+ "application/tve-trigger": {
+ "source": "iana"
+ },
+ "application/ulpfec": {
+ "source": "iana"
+ },
+ "application/urc-grpsheet+xml": {
+ "source": "iana"
+ },
+ "application/urc-ressheet+xml": {
+ "source": "iana"
+ },
+ "application/urc-targetdesc+xml": {
+ "source": "iana"
+ },
+ "application/urc-uisocketdesc+xml": {
+ "source": "iana"
+ },
+ "application/vcard+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vcard+xml": {
+ "source": "iana"
+ },
+ "application/vemmi": {
+ "source": "iana"
+ },
+ "application/vividence.scriptfile": {
+ "source": "apache"
+ },
+ "application/vnd.3gpp-prose+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp-prose-pc3ch+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.access-transfer-events+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.bsf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.mid-call+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.pic-bw-large": {
+ "source": "iana",
+ "extensions": ["plb"]
+ },
+ "application/vnd.3gpp.pic-bw-small": {
+ "source": "iana",
+ "extensions": ["psb"]
+ },
+ "application/vnd.3gpp.pic-bw-var": {
+ "source": "iana",
+ "extensions": ["pvb"]
+ },
+ "application/vnd.3gpp.sms": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.sms+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.srvcc-ext+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.srvcc-info+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.state-and-event-info+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.ussd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp2.bcmcsinfo+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp2.sms": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp2.tcap": {
+ "source": "iana",
+ "extensions": ["tcap"]
+ },
+ "application/vnd.3lightssoftware.imagescal": {
+ "source": "iana"
+ },
+ "application/vnd.3m.post-it-notes": {
+ "source": "iana",
+ "extensions": ["pwn"]
+ },
+ "application/vnd.accpac.simply.aso": {
+ "source": "iana",
+ "extensions": ["aso"]
+ },
+ "application/vnd.accpac.simply.imp": {
+ "source": "iana",
+ "extensions": ["imp"]
+ },
+ "application/vnd.acucobol": {
+ "source": "iana",
+ "extensions": ["acu"]
+ },
+ "application/vnd.acucorp": {
+ "source": "iana",
+ "extensions": ["atc","acutc"]
+ },
+ "application/vnd.adobe.air-application-installer-package+zip": {
+ "source": "apache",
+ "extensions": ["air"]
+ },
+ "application/vnd.adobe.flash.movie": {
+ "source": "iana"
+ },
+ "application/vnd.adobe.formscentral.fcdt": {
+ "source": "iana",
+ "extensions": ["fcdt"]
+ },
+ "application/vnd.adobe.fxp": {
+ "source": "iana",
+ "extensions": ["fxp","fxpl"]
+ },
+ "application/vnd.adobe.partial-upload": {
+ "source": "iana"
+ },
+ "application/vnd.adobe.xdp+xml": {
+ "source": "iana",
+ "extensions": ["xdp"]
+ },
+ "application/vnd.adobe.xfdf": {
+ "source": "iana",
+ "extensions": ["xfdf"]
+ },
+ "application/vnd.aether.imp": {
+ "source": "iana"
+ },
+ "application/vnd.ah-barcode": {
+ "source": "iana"
+ },
+ "application/vnd.ahead.space": {
+ "source": "iana",
+ "extensions": ["ahead"]
+ },
+ "application/vnd.airzip.filesecure.azf": {
+ "source": "iana",
+ "extensions": ["azf"]
+ },
+ "application/vnd.airzip.filesecure.azs": {
+ "source": "iana",
+ "extensions": ["azs"]
+ },
+ "application/vnd.amazon.ebook": {
+ "source": "apache",
+ "extensions": ["azw"]
+ },
+ "application/vnd.americandynamics.acc": {
+ "source": "iana",
+ "extensions": ["acc"]
+ },
+ "application/vnd.amiga.ami": {
+ "source": "iana",
+ "extensions": ["ami"]
+ },
+ "application/vnd.amundsen.maze+xml": {
+ "source": "iana"
+ },
+ "application/vnd.android.package-archive": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["apk"]
+ },
+ "application/vnd.anki": {
+ "source": "iana"
+ },
+ "application/vnd.anser-web-certificate-issue-initiation": {
+ "source": "iana",
+ "extensions": ["cii"]
+ },
+ "application/vnd.anser-web-funds-transfer-initiation": {
+ "source": "apache",
+ "extensions": ["fti"]
+ },
+ "application/vnd.antix.game-component": {
+ "source": "iana",
+ "extensions": ["atx"]
+ },
+ "application/vnd.apache.thrift.binary": {
+ "source": "iana"
+ },
+ "application/vnd.apache.thrift.compact": {
+ "source": "iana"
+ },
+ "application/vnd.apache.thrift.json": {
+ "source": "iana"
+ },
+ "application/vnd.api+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.apple.installer+xml": {
+ "source": "iana",
+ "extensions": ["mpkg"]
+ },
+ "application/vnd.apple.mpegurl": {
+ "source": "iana",
+ "extensions": ["m3u8"]
+ },
+ "application/vnd.apple.pkpass": {
+ "compressible": false,
+ "extensions": ["pkpass"]
+ },
+ "application/vnd.arastra.swi": {
+ "source": "iana"
+ },
+ "application/vnd.aristanetworks.swi": {
+ "source": "iana",
+ "extensions": ["swi"]
+ },
+ "application/vnd.artsquare": {
+ "source": "iana"
+ },
+ "application/vnd.astraea-software.iota": {
+ "source": "iana",
+ "extensions": ["iota"]
+ },
+ "application/vnd.audiograph": {
+ "source": "iana",
+ "extensions": ["aep"]
+ },
+ "application/vnd.autopackage": {
+ "source": "iana"
+ },
+ "application/vnd.avistar+xml": {
+ "source": "iana"
+ },
+ "application/vnd.balsamiq.bmml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.balsamiq.bmpr": {
+ "source": "iana"
+ },
+ "application/vnd.bekitzur-stech+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.biopax.rdf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.blueice.multipass": {
+ "source": "iana",
+ "extensions": ["mpm"]
+ },
+ "application/vnd.bluetooth.ep.oob": {
+ "source": "iana"
+ },
+ "application/vnd.bluetooth.le.oob": {
+ "source": "iana"
+ },
+ "application/vnd.bmi": {
+ "source": "iana",
+ "extensions": ["bmi"]
+ },
+ "application/vnd.businessobjects": {
+ "source": "iana",
+ "extensions": ["rep"]
+ },
+ "application/vnd.cab-jscript": {
+ "source": "iana"
+ },
+ "application/vnd.canon-cpdl": {
+ "source": "iana"
+ },
+ "application/vnd.canon-lips": {
+ "source": "iana"
+ },
+ "application/vnd.cendio.thinlinc.clientconf": {
+ "source": "iana"
+ },
+ "application/vnd.century-systems.tcp_stream": {
+ "source": "iana"
+ },
+ "application/vnd.chemdraw+xml": {
+ "source": "iana",
+ "extensions": ["cdxml"]
+ },
+ "application/vnd.chipnuts.karaoke-mmd": {
+ "source": "iana",
+ "extensions": ["mmd"]
+ },
+ "application/vnd.cinderella": {
+ "source": "iana",
+ "extensions": ["cdy"]
+ },
+ "application/vnd.cirpack.isdn-ext": {
+ "source": "iana"
+ },
+ "application/vnd.citationstyles.style+xml": {
+ "source": "iana"
+ },
+ "application/vnd.claymore": {
+ "source": "iana",
+ "extensions": ["cla"]
+ },
+ "application/vnd.cloanto.rp9": {
+ "source": "iana",
+ "extensions": ["rp9"]
+ },
+ "application/vnd.clonk.c4group": {
+ "source": "iana",
+ "extensions": ["c4g","c4d","c4f","c4p","c4u"]
+ },
+ "application/vnd.cluetrust.cartomobile-config": {
+ "source": "iana",
+ "extensions": ["c11amc"]
+ },
+ "application/vnd.cluetrust.cartomobile-config-pkg": {
+ "source": "iana",
+ "extensions": ["c11amz"]
+ },
+ "application/vnd.coffeescript": {
+ "source": "iana"
+ },
+ "application/vnd.collection+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.collection.doc+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.collection.next+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.commerce-battelle": {
+ "source": "iana"
+ },
+ "application/vnd.commonspace": {
+ "source": "iana",
+ "extensions": ["csp"]
+ },
+ "application/vnd.contact.cmsg": {
+ "source": "iana",
+ "extensions": ["cdbcmsg"]
+ },
+ "application/vnd.coreos.ignition+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.cosmocaller": {
+ "source": "iana",
+ "extensions": ["cmc"]
+ },
+ "application/vnd.crick.clicker": {
+ "source": "iana",
+ "extensions": ["clkx"]
+ },
+ "application/vnd.crick.clicker.keyboard": {
+ "source": "iana",
+ "extensions": ["clkk"]
+ },
+ "application/vnd.crick.clicker.palette": {
+ "source": "iana",
+ "extensions": ["clkp"]
+ },
+ "application/vnd.crick.clicker.template": {
+ "source": "iana",
+ "extensions": ["clkt"]
+ },
+ "application/vnd.crick.clicker.wordbank": {
+ "source": "iana",
+ "extensions": ["clkw"]
+ },
+ "application/vnd.criticaltools.wbs+xml": {
+ "source": "iana",
+ "extensions": ["wbs"]
+ },
+ "application/vnd.ctc-posml": {
+ "source": "iana",
+ "extensions": ["pml"]
+ },
+ "application/vnd.ctct.ws+xml": {
+ "source": "iana"
+ },
+ "application/vnd.cups-pdf": {
+ "source": "iana"
+ },
+ "application/vnd.cups-postscript": {
+ "source": "iana"
+ },
+ "application/vnd.cups-ppd": {
+ "source": "iana",
+ "extensions": ["ppd"]
+ },
+ "application/vnd.cups-raster": {
+ "source": "iana"
+ },
+ "application/vnd.cups-raw": {
+ "source": "iana"
+ },
+ "application/vnd.curl": {
+ "source": "iana"
+ },
+ "application/vnd.curl.car": {
+ "source": "apache",
+ "extensions": ["car"]
+ },
+ "application/vnd.curl.pcurl": {
+ "source": "apache",
+ "extensions": ["pcurl"]
+ },
+ "application/vnd.cyan.dean.root+xml": {
+ "source": "iana"
+ },
+ "application/vnd.cybank": {
+ "source": "iana"
+ },
+ "application/vnd.dart": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["dart"]
+ },
+ "application/vnd.data-vision.rdz": {
+ "source": "iana",
+ "extensions": ["rdz"]
+ },
+ "application/vnd.debian.binary-package": {
+ "source": "iana"
+ },
+ "application/vnd.dece.data": {
+ "source": "iana",
+ "extensions": ["uvf","uvvf","uvd","uvvd"]
+ },
+ "application/vnd.dece.ttml+xml": {
+ "source": "iana",
+ "extensions": ["uvt","uvvt"]
+ },
+ "application/vnd.dece.unspecified": {
+ "source": "iana",
+ "extensions": ["uvx","uvvx"]
+ },
+ "application/vnd.dece.zip": {
+ "source": "iana",
+ "extensions": ["uvz","uvvz"]
+ },
+ "application/vnd.denovo.fcselayout-link": {
+ "source": "iana",
+ "extensions": ["fe_launch"]
+ },
+ "application/vnd.desmume-movie": {
+ "source": "iana"
+ },
+ "application/vnd.desmume.movie": {
+ "source": "apache"
+ },
+ "application/vnd.dir-bi.plate-dl-nosuffix": {
+ "source": "iana"
+ },
+ "application/vnd.dm.delegation+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dna": {
+ "source": "iana",
+ "extensions": ["dna"]
+ },
+ "application/vnd.document+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.dolby.mlp": {
+ "source": "apache",
+ "extensions": ["mlp"]
+ },
+ "application/vnd.dolby.mobile.1": {
+ "source": "iana"
+ },
+ "application/vnd.dolby.mobile.2": {
+ "source": "iana"
+ },
+ "application/vnd.doremir.scorecloud-binary-document": {
+ "source": "iana"
+ },
+ "application/vnd.dpgraph": {
+ "source": "iana",
+ "extensions": ["dpg"]
+ },
+ "application/vnd.dreamfactory": {
+ "source": "iana",
+ "extensions": ["dfac"]
+ },
+ "application/vnd.drive+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ds-keypoint": {
+ "source": "apache",
+ "extensions": ["kpxx"]
+ },
+ "application/vnd.dtg.local": {
+ "source": "iana"
+ },
+ "application/vnd.dtg.local.flash": {
+ "source": "iana"
+ },
+ "application/vnd.dtg.local.html": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ait": {
+ "source": "iana",
+ "extensions": ["ait"]
+ },
+ "application/vnd.dvb.dvbj": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.esgcontainer": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcdftnotifaccess": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcesgaccess": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcesgaccess2": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcesgpdd": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcroaming": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.iptv.alfec-base": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.iptv.alfec-enhancement": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-aggregate-root+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-container+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-generic+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-ia-msglist+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-ia-registration-request+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-ia-registration-response+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-init+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.pfr": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.service": {
+ "source": "iana",
+ "extensions": ["svc"]
+ },
+ "application/vnd.dxr": {
+ "source": "iana"
+ },
+ "application/vnd.dynageo": {
+ "source": "iana",
+ "extensions": ["geo"]
+ },
+ "application/vnd.dzr": {
+ "source": "iana"
+ },
+ "application/vnd.easykaraoke.cdgdownload": {
+ "source": "iana"
+ },
+ "application/vnd.ecdis-update": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.chart": {
+ "source": "iana",
+ "extensions": ["mag"]
+ },
+ "application/vnd.ecowin.filerequest": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.fileupdate": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.series": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.seriesrequest": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.seriesupdate": {
+ "source": "iana"
+ },
+ "application/vnd.emclient.accessrequest+xml": {
+ "source": "iana"
+ },
+ "application/vnd.enliven": {
+ "source": "iana",
+ "extensions": ["nml"]
+ },
+ "application/vnd.enphase.envoy": {
+ "source": "iana"
+ },
+ "application/vnd.eprints.data+xml": {
+ "source": "iana"
+ },
+ "application/vnd.epson.esf": {
+ "source": "iana",
+ "extensions": ["esf"]
+ },
+ "application/vnd.epson.msf": {
+ "source": "iana",
+ "extensions": ["msf"]
+ },
+ "application/vnd.epson.quickanime": {
+ "source": "iana",
+ "extensions": ["qam"]
+ },
+ "application/vnd.epson.salt": {
+ "source": "iana",
+ "extensions": ["slt"]
+ },
+ "application/vnd.epson.ssf": {
+ "source": "iana",
+ "extensions": ["ssf"]
+ },
+ "application/vnd.ericsson.quickcall": {
+ "source": "iana"
+ },
+ "application/vnd.eszigno3+xml": {
+ "source": "iana",
+ "extensions": ["es3","et3"]
+ },
+ "application/vnd.etsi.aoc+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.asic-e+zip": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.asic-s+zip": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.cug+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvcommand+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvdiscovery+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvprofile+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvsad-bc+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvsad-cod+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvsad-npvr+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvservice+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvsync+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvueprofile+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.mcid+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.mheg5": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.overload-control-policy-dataset+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.pstn+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.sci+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.simservs+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.timestamp-token": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.tsl+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.tsl.der": {
+ "source": "iana"
+ },
+ "application/vnd.eudora.data": {
+ "source": "iana"
+ },
+ "application/vnd.ezpix-album": {
+ "source": "iana",
+ "extensions": ["ez2"]
+ },
+ "application/vnd.ezpix-package": {
+ "source": "iana",
+ "extensions": ["ez3"]
+ },
+ "application/vnd.f-secure.mobile": {
+ "source": "iana"
+ },
+ "application/vnd.fastcopy-disk-image": {
+ "source": "iana"
+ },
+ "application/vnd.fdf": {
+ "source": "iana",
+ "extensions": ["fdf"]
+ },
+ "application/vnd.fdsn.mseed": {
+ "source": "iana",
+ "extensions": ["mseed"]
+ },
+ "application/vnd.fdsn.seed": {
+ "source": "iana",
+ "extensions": ["seed","dataless"]
+ },
+ "application/vnd.ffsns": {
+ "source": "iana"
+ },
+ "application/vnd.filmit.zfc": {
+ "source": "iana"
+ },
+ "application/vnd.fints": {
+ "source": "iana"
+ },
+ "application/vnd.firemonkeys.cloudcell": {
+ "source": "iana"
+ },
+ "application/vnd.flographit": {
+ "source": "iana",
+ "extensions": ["gph"]
+ },
+ "application/vnd.fluxtime.clip": {
+ "source": "iana",
+ "extensions": ["ftc"]
+ },
+ "application/vnd.font-fontforge-sfd": {
+ "source": "iana"
+ },
+ "application/vnd.framemaker": {
+ "source": "iana",
+ "extensions": ["fm","frame","maker","book"]
+ },
+ "application/vnd.frogans.fnc": {
+ "source": "iana",
+ "extensions": ["fnc"]
+ },
+ "application/vnd.frogans.ltf": {
+ "source": "iana",
+ "extensions": ["ltf"]
+ },
+ "application/vnd.fsc.weblaunch": {
+ "source": "iana",
+ "extensions": ["fsc"]
+ },
+ "application/vnd.fujitsu.oasys": {
+ "source": "iana",
+ "extensions": ["oas"]
+ },
+ "application/vnd.fujitsu.oasys2": {
+ "source": "iana",
+ "extensions": ["oa2"]
+ },
+ "application/vnd.fujitsu.oasys3": {
+ "source": "iana",
+ "extensions": ["oa3"]
+ },
+ "application/vnd.fujitsu.oasysgp": {
+ "source": "iana",
+ "extensions": ["fg5"]
+ },
+ "application/vnd.fujitsu.oasysprs": {
+ "source": "iana",
+ "extensions": ["bh2"]
+ },
+ "application/vnd.fujixerox.art-ex": {
+ "source": "iana"
+ },
+ "application/vnd.fujixerox.art4": {
+ "source": "iana"
+ },
+ "application/vnd.fujixerox.ddd": {
+ "source": "iana",
+ "extensions": ["ddd"]
+ },
+ "application/vnd.fujixerox.docuworks": {
+ "source": "iana",
+ "extensions": ["xdw"]
+ },
+ "application/vnd.fujixerox.docuworks.binder": {
+ "source": "iana",
+ "extensions": ["xbd"]
+ },
+ "application/vnd.fujixerox.docuworks.container": {
+ "source": "iana"
+ },
+ "application/vnd.fujixerox.hbpl": {
+ "source": "iana"
+ },
+ "application/vnd.fut-misnet": {
+ "source": "iana"
+ },
+ "application/vnd.fuzzysheet": {
+ "source": "iana",
+ "extensions": ["fzs"]
+ },
+ "application/vnd.genomatix.tuxedo": {
+ "source": "iana",
+ "extensions": ["txd"]
+ },
+ "application/vnd.geo+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.geocube+xml": {
+ "source": "iana"
+ },
+ "application/vnd.geogebra.file": {
+ "source": "iana",
+ "extensions": ["ggb"]
+ },
+ "application/vnd.geogebra.tool": {
+ "source": "iana",
+ "extensions": ["ggt"]
+ },
+ "application/vnd.geometry-explorer": {
+ "source": "iana",
+ "extensions": ["gex","gre"]
+ },
+ "application/vnd.geonext": {
+ "source": "iana",
+ "extensions": ["gxt"]
+ },
+ "application/vnd.geoplan": {
+ "source": "iana",
+ "extensions": ["g2w"]
+ },
+ "application/vnd.geospace": {
+ "source": "iana",
+ "extensions": ["g3w"]
+ },
+ "application/vnd.gerber": {
+ "source": "iana"
+ },
+ "application/vnd.globalplatform.card-content-mgt": {
+ "source": "iana"
+ },
+ "application/vnd.globalplatform.card-content-mgt-response": {
+ "source": "iana"
+ },
+ "application/vnd.gmx": {
+ "source": "iana",
+ "extensions": ["gmx"]
+ },
+ "application/vnd.google-apps.document": {
+ "compressible": false,
+ "extensions": ["gdoc"]
+ },
+ "application/vnd.google-apps.presentation": {
+ "compressible": false,
+ "extensions": ["gslides"]
+ },
+ "application/vnd.google-apps.spreadsheet": {
+ "compressible": false,
+ "extensions": ["gsheet"]
+ },
+ "application/vnd.google-earth.kml+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["kml"]
+ },
+ "application/vnd.google-earth.kmz": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["kmz"]
+ },
+ "application/vnd.gov.sk.e-form+xml": {
+ "source": "iana"
+ },
+ "application/vnd.gov.sk.e-form+zip": {
+ "source": "iana"
+ },
+ "application/vnd.gov.sk.xmldatacontainer+xml": {
+ "source": "iana"
+ },
+ "application/vnd.grafeq": {
+ "source": "iana",
+ "extensions": ["gqf","gqs"]
+ },
+ "application/vnd.gridmp": {
+ "source": "iana"
+ },
+ "application/vnd.groove-account": {
+ "source": "iana",
+ "extensions": ["gac"]
+ },
+ "application/vnd.groove-help": {
+ "source": "iana",
+ "extensions": ["ghf"]
+ },
+ "application/vnd.groove-identity-message": {
+ "source": "iana",
+ "extensions": ["gim"]
+ },
+ "application/vnd.groove-injector": {
+ "source": "iana",
+ "extensions": ["grv"]
+ },
+ "application/vnd.groove-tool-message": {
+ "source": "iana",
+ "extensions": ["gtm"]
+ },
+ "application/vnd.groove-tool-template": {
+ "source": "iana",
+ "extensions": ["tpl"]
+ },
+ "application/vnd.groove-vcard": {
+ "source": "iana",
+ "extensions": ["vcg"]
+ },
+ "application/vnd.hal+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.hal+xml": {
+ "source": "iana",
+ "extensions": ["hal"]
+ },
+ "application/vnd.handheld-entertainment+xml": {
+ "source": "iana",
+ "extensions": ["zmm"]
+ },
+ "application/vnd.hbci": {
+ "source": "iana",
+ "extensions": ["hbci"]
+ },
+ "application/vnd.hcl-bireports": {
+ "source": "iana"
+ },
+ "application/vnd.hdt": {
+ "source": "iana"
+ },
+ "application/vnd.heroku+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.hhe.lesson-player": {
+ "source": "iana",
+ "extensions": ["les"]
+ },
+ "application/vnd.hp-hpgl": {
+ "source": "iana",
+ "extensions": ["hpgl"]
+ },
+ "application/vnd.hp-hpid": {
+ "source": "iana",
+ "extensions": ["hpid"]
+ },
+ "application/vnd.hp-hps": {
+ "source": "iana",
+ "extensions": ["hps"]
+ },
+ "application/vnd.hp-jlyt": {
+ "source": "iana",
+ "extensions": ["jlt"]
+ },
+ "application/vnd.hp-pcl": {
+ "source": "iana",
+ "extensions": ["pcl"]
+ },
+ "application/vnd.hp-pclxl": {
+ "source": "iana",
+ "extensions": ["pclxl"]
+ },
+ "application/vnd.httphone": {
+ "source": "iana"
+ },
+ "application/vnd.hydrostatix.sof-data": {
+ "source": "iana",
+ "extensions": ["sfd-hdstx"]
+ },
+ "application/vnd.hyperdrive+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.hzn-3d-crossword": {
+ "source": "iana"
+ },
+ "application/vnd.ibm.afplinedata": {
+ "source": "iana"
+ },
+ "application/vnd.ibm.electronic-media": {
+ "source": "iana"
+ },
+ "application/vnd.ibm.minipay": {
+ "source": "iana",
+ "extensions": ["mpy"]
+ },
+ "application/vnd.ibm.modcap": {
+ "source": "iana",
+ "extensions": ["afp","listafp","list3820"]
+ },
+ "application/vnd.ibm.rights-management": {
+ "source": "iana",
+ "extensions": ["irm"]
+ },
+ "application/vnd.ibm.secure-container": {
+ "source": "iana",
+ "extensions": ["sc"]
+ },
+ "application/vnd.iccprofile": {
+ "source": "iana",
+ "extensions": ["icc","icm"]
+ },
+ "application/vnd.ieee.1905": {
+ "source": "iana"
+ },
+ "application/vnd.igloader": {
+ "source": "iana",
+ "extensions": ["igl"]
+ },
+ "application/vnd.immervision-ivp": {
+ "source": "iana",
+ "extensions": ["ivp"]
+ },
+ "application/vnd.immervision-ivu": {
+ "source": "iana",
+ "extensions": ["ivu"]
+ },
+ "application/vnd.ims.imsccv1p1": {
+ "source": "iana"
+ },
+ "application/vnd.ims.imsccv1p2": {
+ "source": "iana"
+ },
+ "application/vnd.ims.imsccv1p3": {
+ "source": "iana"
+ },
+ "application/vnd.ims.lis.v2.result+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolconsumerprofile+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolproxy+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolproxy.id+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolsettings+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolsettings.simple+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.informedcontrol.rms+xml": {
+ "source": "iana"
+ },
+ "application/vnd.informix-visionary": {
+ "source": "iana"
+ },
+ "application/vnd.infotech.project": {
+ "source": "iana"
+ },
+ "application/vnd.infotech.project+xml": {
+ "source": "iana"
+ },
+ "application/vnd.innopath.wamp.notification": {
+ "source": "iana"
+ },
+ "application/vnd.insors.igm": {
+ "source": "iana",
+ "extensions": ["igm"]
+ },
+ "application/vnd.intercon.formnet": {
+ "source": "iana",
+ "extensions": ["xpw","xpx"]
+ },
+ "application/vnd.intergeo": {
+ "source": "iana",
+ "extensions": ["i2g"]
+ },
+ "application/vnd.intertrust.digibox": {
+ "source": "iana"
+ },
+ "application/vnd.intertrust.nncp": {
+ "source": "iana"
+ },
+ "application/vnd.intu.qbo": {
+ "source": "iana",
+ "extensions": ["qbo"]
+ },
+ "application/vnd.intu.qfx": {
+ "source": "iana",
+ "extensions": ["qfx"]
+ },
+ "application/vnd.iptc.g2.catalogitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.conceptitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.knowledgeitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.newsitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.newsmessage+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.packageitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.planningitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ipunplugged.rcprofile": {
+ "source": "iana",
+ "extensions": ["rcprofile"]
+ },
+ "application/vnd.irepository.package+xml": {
+ "source": "iana",
+ "extensions": ["irp"]
+ },
+ "application/vnd.is-xpr": {
+ "source": "iana",
+ "extensions": ["xpr"]
+ },
+ "application/vnd.isac.fcs": {
+ "source": "iana",
+ "extensions": ["fcs"]
+ },
+ "application/vnd.jam": {
+ "source": "iana",
+ "extensions": ["jam"]
+ },
+ "application/vnd.japannet-directory-service": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-jpnstore-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-payment-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-registration": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-registration-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-setstore-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-verification": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-verification-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.jcp.javame.midlet-rms": {
+ "source": "iana",
+ "extensions": ["rms"]
+ },
+ "application/vnd.jisp": {
+ "source": "iana",
+ "extensions": ["jisp"]
+ },
+ "application/vnd.joost.joda-archive": {
+ "source": "iana",
+ "extensions": ["joda"]
+ },
+ "application/vnd.jsk.isdn-ngn": {
+ "source": "iana"
+ },
+ "application/vnd.kahootz": {
+ "source": "iana",
+ "extensions": ["ktz","ktr"]
+ },
+ "application/vnd.kde.karbon": {
+ "source": "iana",
+ "extensions": ["karbon"]
+ },
+ "application/vnd.kde.kchart": {
+ "source": "iana",
+ "extensions": ["chrt"]
+ },
+ "application/vnd.kde.kformula": {
+ "source": "iana",
+ "extensions": ["kfo"]
+ },
+ "application/vnd.kde.kivio": {
+ "source": "iana",
+ "extensions": ["flw"]
+ },
+ "application/vnd.kde.kontour": {
+ "source": "iana",
+ "extensions": ["kon"]
+ },
+ "application/vnd.kde.kpresenter": {
+ "source": "iana",
+ "extensions": ["kpr","kpt"]
+ },
+ "application/vnd.kde.kspread": {
+ "source": "iana",
+ "extensions": ["ksp"]
+ },
+ "application/vnd.kde.kword": {
+ "source": "iana",
+ "extensions": ["kwd","kwt"]
+ },
+ "application/vnd.kenameaapp": {
+ "source": "iana",
+ "extensions": ["htke"]
+ },
+ "application/vnd.kidspiration": {
+ "source": "iana",
+ "extensions": ["kia"]
+ },
+ "application/vnd.kinar": {
+ "source": "iana",
+ "extensions": ["kne","knp"]
+ },
+ "application/vnd.koan": {
+ "source": "iana",
+ "extensions": ["skp","skd","skt","skm"]
+ },
+ "application/vnd.kodak-descriptor": {
+ "source": "iana",
+ "extensions": ["sse"]
+ },
+ "application/vnd.las.las+xml": {
+ "source": "iana",
+ "extensions": ["lasxml"]
+ },
+ "application/vnd.liberty-request+xml": {
+ "source": "iana"
+ },
+ "application/vnd.llamagraphics.life-balance.desktop": {
+ "source": "iana",
+ "extensions": ["lbd"]
+ },
+ "application/vnd.llamagraphics.life-balance.exchange+xml": {
+ "source": "iana",
+ "extensions": ["lbe"]
+ },
+ "application/vnd.lotus-1-2-3": {
+ "source": "iana",
+ "extensions": ["123"]
+ },
+ "application/vnd.lotus-approach": {
+ "source": "iana",
+ "extensions": ["apr"]
+ },
+ "application/vnd.lotus-freelance": {
+ "source": "iana",
+ "extensions": ["pre"]
+ },
+ "application/vnd.lotus-notes": {
+ "source": "iana",
+ "extensions": ["nsf"]
+ },
+ "application/vnd.lotus-organizer": {
+ "source": "iana",
+ "extensions": ["org"]
+ },
+ "application/vnd.lotus-screencam": {
+ "source": "iana",
+ "extensions": ["scm"]
+ },
+ "application/vnd.lotus-wordpro": {
+ "source": "iana",
+ "extensions": ["lwp"]
+ },
+ "application/vnd.macports.portpkg": {
+ "source": "iana",
+ "extensions": ["portpkg"]
+ },
+ "application/vnd.mapbox-vector-tile": {
+ "source": "iana"
+ },
+ "application/vnd.marlin.drm.actiontoken+xml": {
+ "source": "iana"
+ },
+ "application/vnd.marlin.drm.conftoken+xml": {
+ "source": "iana"
+ },
+ "application/vnd.marlin.drm.license+xml": {
+ "source": "iana"
+ },
+ "application/vnd.marlin.drm.mdcf": {
+ "source": "iana"
+ },
+ "application/vnd.mason+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.maxmind.maxmind-db": {
+ "source": "iana"
+ },
+ "application/vnd.mcd": {
+ "source": "iana",
+ "extensions": ["mcd"]
+ },
+ "application/vnd.medcalcdata": {
+ "source": "iana",
+ "extensions": ["mc1"]
+ },
+ "application/vnd.mediastation.cdkey": {
+ "source": "iana",
+ "extensions": ["cdkey"]
+ },
+ "application/vnd.meridian-slingshot": {
+ "source": "iana"
+ },
+ "application/vnd.mfer": {
+ "source": "iana",
+ "extensions": ["mwf"]
+ },
+ "application/vnd.mfmp": {
+ "source": "iana",
+ "extensions": ["mfm"]
+ },
+ "application/vnd.micro+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.micrografx.flo": {
+ "source": "iana",
+ "extensions": ["flo"]
+ },
+ "application/vnd.micrografx.igx": {
+ "source": "iana",
+ "extensions": ["igx"]
+ },
+ "application/vnd.microsoft.portable-executable": {
+ "source": "iana"
+ },
+ "application/vnd.miele+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.mif": {
+ "source": "iana",
+ "extensions": ["mif"]
+ },
+ "application/vnd.minisoft-hp3000-save": {
+ "source": "iana"
+ },
+ "application/vnd.mitsubishi.misty-guard.trustweb": {
+ "source": "iana"
+ },
+ "application/vnd.mobius.daf": {
+ "source": "iana",
+ "extensions": ["daf"]
+ },
+ "application/vnd.mobius.dis": {
+ "source": "iana",
+ "extensions": ["dis"]
+ },
+ "application/vnd.mobius.mbk": {
+ "source": "iana",
+ "extensions": ["mbk"]
+ },
+ "application/vnd.mobius.mqy": {
+ "source": "iana",
+ "extensions": ["mqy"]
+ },
+ "application/vnd.mobius.msl": {
+ "source": "iana",
+ "extensions": ["msl"]
+ },
+ "application/vnd.mobius.plc": {
+ "source": "iana",
+ "extensions": ["plc"]
+ },
+ "application/vnd.mobius.txf": {
+ "source": "iana",
+ "extensions": ["txf"]
+ },
+ "application/vnd.mophun.application": {
+ "source": "iana",
+ "extensions": ["mpn"]
+ },
+ "application/vnd.mophun.certificate": {
+ "source": "iana",
+ "extensions": ["mpc"]
+ },
+ "application/vnd.motorola.flexsuite": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.adsi": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.fis": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.gotap": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.kmr": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.ttc": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.wem": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.iprm": {
+ "source": "iana"
+ },
+ "application/vnd.mozilla.xul+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xul"]
+ },
+ "application/vnd.ms-3mfdocument": {
+ "source": "iana"
+ },
+ "application/vnd.ms-artgalry": {
+ "source": "iana",
+ "extensions": ["cil"]
+ },
+ "application/vnd.ms-asf": {
+ "source": "iana"
+ },
+ "application/vnd.ms-cab-compressed": {
+ "source": "iana",
+ "extensions": ["cab"]
+ },
+ "application/vnd.ms-color.iccprofile": {
+ "source": "apache"
+ },
+ "application/vnd.ms-excel": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["xls","xlm","xla","xlc","xlt","xlw"]
+ },
+ "application/vnd.ms-excel.addin.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["xlam"]
+ },
+ "application/vnd.ms-excel.sheet.binary.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["xlsb"]
+ },
+ "application/vnd.ms-excel.sheet.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["xlsm"]
+ },
+ "application/vnd.ms-excel.template.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["xltm"]
+ },
+ "application/vnd.ms-fontobject": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["eot"]
+ },
+ "application/vnd.ms-htmlhelp": {
+ "source": "iana",
+ "extensions": ["chm"]
+ },
+ "application/vnd.ms-ims": {
+ "source": "iana",
+ "extensions": ["ims"]
+ },
+ "application/vnd.ms-lrm": {
+ "source": "iana",
+ "extensions": ["lrm"]
+ },
+ "application/vnd.ms-office.activex+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ms-officetheme": {
+ "source": "iana",
+ "extensions": ["thmx"]
+ },
+ "application/vnd.ms-opentype": {
+ "source": "apache",
+ "compressible": true
+ },
+ "application/vnd.ms-package.obfuscated-opentype": {
+ "source": "apache"
+ },
+ "application/vnd.ms-pki.seccat": {
+ "source": "apache",
+ "extensions": ["cat"]
+ },
+ "application/vnd.ms-pki.stl": {
+ "source": "apache",
+ "extensions": ["stl"]
+ },
+ "application/vnd.ms-playready.initiator+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ms-powerpoint": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["ppt","pps","pot"]
+ },
+ "application/vnd.ms-powerpoint.addin.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["ppam"]
+ },
+ "application/vnd.ms-powerpoint.presentation.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["pptm"]
+ },
+ "application/vnd.ms-powerpoint.slide.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["sldm"]
+ },
+ "application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["ppsm"]
+ },
+ "application/vnd.ms-powerpoint.template.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["potm"]
+ },
+ "application/vnd.ms-printdevicecapabilities+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ms-printing.printticket+xml": {
+ "source": "apache"
+ },
+ "application/vnd.ms-printschematicket+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ms-project": {
+ "source": "iana",
+ "extensions": ["mpp","mpt"]
+ },
+ "application/vnd.ms-tnef": {
+ "source": "iana"
+ },
+ "application/vnd.ms-windows.devicepairing": {
+ "source": "iana"
+ },
+ "application/vnd.ms-windows.nwprinting.oob": {
+ "source": "iana"
+ },
+ "application/vnd.ms-windows.printerpairing": {
+ "source": "iana"
+ },
+ "application/vnd.ms-windows.wsd.oob": {
+ "source": "iana"
+ },
+ "application/vnd.ms-wmdrm.lic-chlg-req": {
+ "source": "iana"
+ },
+ "application/vnd.ms-wmdrm.lic-resp": {
+ "source": "iana"
+ },
+ "application/vnd.ms-wmdrm.meter-chlg-req": {
+ "source": "iana"
+ },
+ "application/vnd.ms-wmdrm.meter-resp": {
+ "source": "iana"
+ },
+ "application/vnd.ms-word.document.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["docm"]
+ },
+ "application/vnd.ms-word.template.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["dotm"]
+ },
+ "application/vnd.ms-works": {
+ "source": "iana",
+ "extensions": ["wps","wks","wcm","wdb"]
+ },
+ "application/vnd.ms-wpl": {
+ "source": "iana",
+ "extensions": ["wpl"]
+ },
+ "application/vnd.ms-xpsdocument": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["xps"]
+ },
+ "application/vnd.msa-disk-image": {
+ "source": "iana"
+ },
+ "application/vnd.mseq": {
+ "source": "iana",
+ "extensions": ["mseq"]
+ },
+ "application/vnd.msign": {
+ "source": "iana"
+ },
+ "application/vnd.multiad.creator": {
+ "source": "iana"
+ },
+ "application/vnd.multiad.creator.cif": {
+ "source": "iana"
+ },
+ "application/vnd.music-niff": {
+ "source": "iana"
+ },
+ "application/vnd.musician": {
+ "source": "iana",
+ "extensions": ["mus"]
+ },
+ "application/vnd.muvee.style": {
+ "source": "iana",
+ "extensions": ["msty"]
+ },
+ "application/vnd.mynfc": {
+ "source": "iana",
+ "extensions": ["taglet"]
+ },
+ "application/vnd.ncd.control": {
+ "source": "iana"
+ },
+ "application/vnd.ncd.reference": {
+ "source": "iana"
+ },
+ "application/vnd.nervana": {
+ "source": "iana"
+ },
+ "application/vnd.netfpx": {
+ "source": "iana"
+ },
+ "application/vnd.neurolanguage.nlu": {
+ "source": "iana",
+ "extensions": ["nlu"]
+ },
+ "application/vnd.nintendo.nitro.rom": {
+ "source": "iana"
+ },
+ "application/vnd.nintendo.snes.rom": {
+ "source": "iana"
+ },
+ "application/vnd.nitf": {
+ "source": "iana",
+ "extensions": ["ntf","nitf"]
+ },
+ "application/vnd.noblenet-directory": {
+ "source": "iana",
+ "extensions": ["nnd"]
+ },
+ "application/vnd.noblenet-sealer": {
+ "source": "iana",
+ "extensions": ["nns"]
+ },
+ "application/vnd.noblenet-web": {
+ "source": "iana",
+ "extensions": ["nnw"]
+ },
+ "application/vnd.nokia.catalogs": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.conml+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.conml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.iptv.config+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.isds-radio-presets": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.landmark+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.landmark+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.landmarkcollection+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.n-gage.ac+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.n-gage.data": {
+ "source": "iana",
+ "extensions": ["ngdat"]
+ },
+ "application/vnd.nokia.n-gage.symbian.install": {
+ "source": "iana",
+ "extensions": ["n-gage"]
+ },
+ "application/vnd.nokia.ncd": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.pcd+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.pcd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.radio-preset": {
+ "source": "iana",
+ "extensions": ["rpst"]
+ },
+ "application/vnd.nokia.radio-presets": {
+ "source": "iana",
+ "extensions": ["rpss"]
+ },
+ "application/vnd.novadigm.edm": {
+ "source": "iana",
+ "extensions": ["edm"]
+ },
+ "application/vnd.novadigm.edx": {
+ "source": "iana",
+ "extensions": ["edx"]
+ },
+ "application/vnd.novadigm.ext": {
+ "source": "iana",
+ "extensions": ["ext"]
+ },
+ "application/vnd.ntt-local.content-share": {
+ "source": "iana"
+ },
+ "application/vnd.ntt-local.file-transfer": {
+ "source": "iana"
+ },
+ "application/vnd.ntt-local.ogw_remote-access": {
+ "source": "iana"
+ },
+ "application/vnd.ntt-local.sip-ta_remote": {
+ "source": "iana"
+ },
+ "application/vnd.ntt-local.sip-ta_tcp_stream": {
+ "source": "iana"
+ },
+ "application/vnd.oasis.opendocument.chart": {
+ "source": "iana",
+ "extensions": ["odc"]
+ },
+ "application/vnd.oasis.opendocument.chart-template": {
+ "source": "iana",
+ "extensions": ["otc"]
+ },
+ "application/vnd.oasis.opendocument.database": {
+ "source": "iana",
+ "extensions": ["odb"]
+ },
+ "application/vnd.oasis.opendocument.formula": {
+ "source": "iana",
+ "extensions": ["odf"]
+ },
+ "application/vnd.oasis.opendocument.formula-template": {
+ "source": "iana",
+ "extensions": ["odft"]
+ },
+ "application/vnd.oasis.opendocument.graphics": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["odg"]
+ },
+ "application/vnd.oasis.opendocument.graphics-template": {
+ "source": "iana",
+ "extensions": ["otg"]
+ },
+ "application/vnd.oasis.opendocument.image": {
+ "source": "iana",
+ "extensions": ["odi"]
+ },
+ "application/vnd.oasis.opendocument.image-template": {
+ "source": "iana",
+ "extensions": ["oti"]
+ },
+ "application/vnd.oasis.opendocument.presentation": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["odp"]
+ },
+ "application/vnd.oasis.opendocument.presentation-template": {
+ "source": "iana",
+ "extensions": ["otp"]
+ },
+ "application/vnd.oasis.opendocument.spreadsheet": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["ods"]
+ },
+ "application/vnd.oasis.opendocument.spreadsheet-template": {
+ "source": "iana",
+ "extensions": ["ots"]
+ },
+ "application/vnd.oasis.opendocument.text": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["odt"]
+ },
+ "application/vnd.oasis.opendocument.text-master": {
+ "source": "iana",
+ "extensions": ["odm"]
+ },
+ "application/vnd.oasis.opendocument.text-template": {
+ "source": "iana",
+ "extensions": ["ott"]
+ },
+ "application/vnd.oasis.opendocument.text-web": {
+ "source": "iana",
+ "extensions": ["oth"]
+ },
+ "application/vnd.obn": {
+ "source": "iana"
+ },
+ "application/vnd.oftn.l10n+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.oipf.contentaccessdownload+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.contentaccessstreaming+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.cspg-hexbinary": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.dae.svg+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.dae.xhtml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.mippvcontrolmessage+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.pae.gem": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.spdiscovery+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.spdlist+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.ueprofile+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.userprofile+xml": {
+ "source": "iana"
+ },
+ "application/vnd.olpc-sugar": {
+ "source": "iana",
+ "extensions": ["xo"]
+ },
+ "application/vnd.oma-scws-config": {
+ "source": "iana"
+ },
+ "application/vnd.oma-scws-http-request": {
+ "source": "iana"
+ },
+ "application/vnd.oma-scws-http-response": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.associated-procedure-parameter+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.drm-trigger+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.imd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.ltkm": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.notification+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.provisioningtrigger": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.sgboot": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.sgdd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.sgdu": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.simple-symbol-container": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.smartcard-trigger+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.sprov+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.stkm": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-address-book+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-feature-handler+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-pcc+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-subs-invite+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-user-prefs+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.dcd": {
+ "source": "iana"
+ },
+ "application/vnd.oma.dcdc": {
+ "source": "iana"
+ },
+ "application/vnd.oma.dd2+xml": {
+ "source": "iana",
+ "extensions": ["dd2"]
+ },
+ "application/vnd.oma.drm.risd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.group-usage-list+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.pal+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.detailed-progress-report+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.final-report+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.groups+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.invocation-descriptor+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.optimized-progress-report+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.push": {
+ "source": "iana"
+ },
+ "application/vnd.oma.scidm.messages+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.xcap-directory+xml": {
+ "source": "iana"
+ },
+ "application/vnd.omads-email+xml": {
+ "source": "iana"
+ },
+ "application/vnd.omads-file+xml": {
+ "source": "iana"
+ },
+ "application/vnd.omads-folder+xml": {
+ "source": "iana"
+ },
+ "application/vnd.omaloc-supl-init": {
+ "source": "iana"
+ },
+ "application/vnd.onepager": {
+ "source": "iana"
+ },
+ "application/vnd.openblox.game+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openblox.game-binary": {
+ "source": "iana"
+ },
+ "application/vnd.openeye.oeb": {
+ "source": "iana"
+ },
+ "application/vnd.openofficeorg.extension": {
+ "source": "apache",
+ "extensions": ["oxt"]
+ },
+ "application/vnd.openxmlformats-officedocument.custom-properties+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawing+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.extended-properties+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml-template": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["pptx"]
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slide": {
+ "source": "iana",
+ "extensions": ["sldx"]
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
+ "source": "iana",
+ "extensions": ["ppsx"]
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.template": {
+ "source": "apache",
+ "extensions": ["potx"]
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml-template": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["xlsx"]
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
+ "source": "apache",
+ "extensions": ["xltx"]
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.theme+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.themeoverride+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.vmldrawing": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml-template": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["docx"]
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
+ "source": "apache",
+ "extensions": ["dotx"]
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-package.core-properties+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-package.relationships+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oracle.resource+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.orange.indata": {
+ "source": "iana"
+ },
+ "application/vnd.osa.netdeploy": {
+ "source": "iana"
+ },
+ "application/vnd.osgeo.mapguide.package": {
+ "source": "iana",
+ "extensions": ["mgp"]
+ },
+ "application/vnd.osgi.bundle": {
+ "source": "iana"
+ },
+ "application/vnd.osgi.dp": {
+ "source": "iana",
+ "extensions": ["dp"]
+ },
+ "application/vnd.osgi.subsystem": {
+ "source": "iana",
+ "extensions": ["esa"]
+ },
+ "application/vnd.otps.ct-kip+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oxli.countgraph": {
+ "source": "iana"
+ },
+ "application/vnd.pagerduty+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.palm": {
+ "source": "iana",
+ "extensions": ["pdb","pqa","oprc"]
+ },
+ "application/vnd.panoply": {
+ "source": "iana"
+ },
+ "application/vnd.paos+xml": {
+ "source": "iana"
+ },
+ "application/vnd.paos.xml": {
+ "source": "apache"
+ },
+ "application/vnd.pawaafile": {
+ "source": "iana",
+ "extensions": ["paw"]
+ },
+ "application/vnd.pcos": {
+ "source": "iana"
+ },
+ "application/vnd.pg.format": {
+ "source": "iana",
+ "extensions": ["str"]
+ },
+ "application/vnd.pg.osasli": {
+ "source": "iana",
+ "extensions": ["ei6"]
+ },
+ "application/vnd.piaccess.application-licence": {
+ "source": "iana"
+ },
+ "application/vnd.picsel": {
+ "source": "iana",
+ "extensions": ["efif"]
+ },
+ "application/vnd.pmi.widget": {
+ "source": "iana",
+ "extensions": ["wg"]
+ },
+ "application/vnd.poc.group-advertisement+xml": {
+ "source": "iana"
+ },
+ "application/vnd.pocketlearn": {
+ "source": "iana",
+ "extensions": ["plf"]
+ },
+ "application/vnd.powerbuilder6": {
+ "source": "iana",
+ "extensions": ["pbd"]
+ },
+ "application/vnd.powerbuilder6-s": {
+ "source": "iana"
+ },
+ "application/vnd.powerbuilder7": {
+ "source": "iana"
+ },
+ "application/vnd.powerbuilder7-s": {
+ "source": "iana"
+ },
+ "application/vnd.powerbuilder75": {
+ "source": "iana"
+ },
+ "application/vnd.powerbuilder75-s": {
+ "source": "iana"
+ },
+ "application/vnd.preminet": {
+ "source": "iana"
+ },
+ "application/vnd.previewsystems.box": {
+ "source": "iana",
+ "extensions": ["box"]
+ },
+ "application/vnd.proteus.magazine": {
+ "source": "iana",
+ "extensions": ["mgz"]
+ },
+ "application/vnd.publishare-delta-tree": {
+ "source": "iana",
+ "extensions": ["qps"]
+ },
+ "application/vnd.pvi.ptid1": {
+ "source": "iana",
+ "extensions": ["ptid"]
+ },
+ "application/vnd.pwg-multiplexed": {
+ "source": "iana"
+ },
+ "application/vnd.pwg-xhtml-print+xml": {
+ "source": "iana"
+ },
+ "application/vnd.qualcomm.brew-app-res": {
+ "source": "iana"
+ },
+ "application/vnd.quark.quarkxpress": {
+ "source": "iana",
+ "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"]
+ },
+ "application/vnd.quobject-quoxdocument": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.moml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit-conf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit-conn+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit-dialog+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit-stream+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-conf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-base+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-fax-detect+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-group+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-speech+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-transform+xml": {
+ "source": "iana"
+ },
+ "application/vnd.rainstor.data": {
+ "source": "iana"
+ },
+ "application/vnd.rapid": {
+ "source": "iana"
+ },
+ "application/vnd.realvnc.bed": {
+ "source": "iana",
+ "extensions": ["bed"]
+ },
+ "application/vnd.recordare.musicxml": {
+ "source": "iana",
+ "extensions": ["mxl"]
+ },
+ "application/vnd.recordare.musicxml+xml": {
+ "source": "iana",
+ "extensions": ["musicxml"]
+ },
+ "application/vnd.renlearn.rlprint": {
+ "source": "iana"
+ },
+ "application/vnd.rig.cryptonote": {
+ "source": "iana",
+ "extensions": ["cryptonote"]
+ },
+ "application/vnd.rim.cod": {
+ "source": "apache",
+ "extensions": ["cod"]
+ },
+ "application/vnd.rn-realmedia": {
+ "source": "apache",
+ "extensions": ["rm"]
+ },
+ "application/vnd.rn-realmedia-vbr": {
+ "source": "apache",
+ "extensions": ["rmvb"]
+ },
+ "application/vnd.route66.link66+xml": {
+ "source": "iana",
+ "extensions": ["link66"]
+ },
+ "application/vnd.rs-274x": {
+ "source": "iana"
+ },
+ "application/vnd.ruckus.download": {
+ "source": "iana"
+ },
+ "application/vnd.s3sms": {
+ "source": "iana"
+ },
+ "application/vnd.sailingtracker.track": {
+ "source": "iana",
+ "extensions": ["st"]
+ },
+ "application/vnd.sbm.cid": {
+ "source": "iana"
+ },
+ "application/vnd.sbm.mid2": {
+ "source": "iana"
+ },
+ "application/vnd.scribus": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.3df": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.csf": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.doc": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.eml": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.mht": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.net": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.ppt": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.tiff": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.xls": {
+ "source": "iana"
+ },
+ "application/vnd.sealedmedia.softseal.html": {
+ "source": "iana"
+ },
+ "application/vnd.sealedmedia.softseal.pdf": {
+ "source": "iana"
+ },
+ "application/vnd.seemail": {
+ "source": "iana",
+ "extensions": ["see"]
+ },
+ "application/vnd.sema": {
+ "source": "iana",
+ "extensions": ["sema"]
+ },
+ "application/vnd.semd": {
+ "source": "iana",
+ "extensions": ["semd"]
+ },
+ "application/vnd.semf": {
+ "source": "iana",
+ "extensions": ["semf"]
+ },
+ "application/vnd.shana.informed.formdata": {
+ "source": "iana",
+ "extensions": ["ifm"]
+ },
+ "application/vnd.shana.informed.formtemplate": {
+ "source": "iana",
+ "extensions": ["itp"]
+ },
+ "application/vnd.shana.informed.interchange": {
+ "source": "iana",
+ "extensions": ["iif"]
+ },
+ "application/vnd.shana.informed.package": {
+ "source": "iana",
+ "extensions": ["ipk"]
+ },
+ "application/vnd.simtech-mindmapper": {
+ "source": "iana",
+ "extensions": ["twd","twds"]
+ },
+ "application/vnd.siren+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.smaf": {
+ "source": "iana",
+ "extensions": ["mmf"]
+ },
+ "application/vnd.smart.notebook": {
+ "source": "iana"
+ },
+ "application/vnd.smart.teacher": {
+ "source": "iana",
+ "extensions": ["teacher"]
+ },
+ "application/vnd.software602.filler.form+xml": {
+ "source": "iana"
+ },
+ "application/vnd.software602.filler.form-xml-zip": {
+ "source": "iana"
+ },
+ "application/vnd.solent.sdkm+xml": {
+ "source": "iana",
+ "extensions": ["sdkm","sdkd"]
+ },
+ "application/vnd.spotfire.dxp": {
+ "source": "iana",
+ "extensions": ["dxp"]
+ },
+ "application/vnd.spotfire.sfs": {
+ "source": "iana",
+ "extensions": ["sfs"]
+ },
+ "application/vnd.sss-cod": {
+ "source": "iana"
+ },
+ "application/vnd.sss-dtf": {
+ "source": "iana"
+ },
+ "application/vnd.sss-ntf": {
+ "source": "iana"
+ },
+ "application/vnd.stardivision.calc": {
+ "source": "apache",
+ "extensions": ["sdc"]
+ },
+ "application/vnd.stardivision.draw": {
+ "source": "apache",
+ "extensions": ["sda"]
+ },
+ "application/vnd.stardivision.impress": {
+ "source": "apache",
+ "extensions": ["sdd"]
+ },
+ "application/vnd.stardivision.math": {
+ "source": "apache",
+ "extensions": ["smf"]
+ },
+ "application/vnd.stardivision.writer": {
+ "source": "apache",
+ "extensions": ["sdw","vor"]
+ },
+ "application/vnd.stardivision.writer-global": {
+ "source": "apache",
+ "extensions": ["sgl"]
+ },
+ "application/vnd.stepmania.package": {
+ "source": "iana",
+ "extensions": ["smzip"]
+ },
+ "application/vnd.stepmania.stepchart": {
+ "source": "iana",
+ "extensions": ["sm"]
+ },
+ "application/vnd.street-stream": {
+ "source": "iana"
+ },
+ "application/vnd.sun.wadl+xml": {
+ "source": "iana"
+ },
+ "application/vnd.sun.xml.calc": {
+ "source": "apache",
+ "extensions": ["sxc"]
+ },
+ "application/vnd.sun.xml.calc.template": {
+ "source": "apache",
+ "extensions": ["stc"]
+ },
+ "application/vnd.sun.xml.draw": {
+ "source": "apache",
+ "extensions": ["sxd"]
+ },
+ "application/vnd.sun.xml.draw.template": {
+ "source": "apache",
+ "extensions": ["std"]
+ },
+ "application/vnd.sun.xml.impress": {
+ "source": "apache",
+ "extensions": ["sxi"]
+ },
+ "application/vnd.sun.xml.impress.template": {
+ "source": "apache",
+ "extensions": ["sti"]
+ },
+ "application/vnd.sun.xml.math": {
+ "source": "apache",
+ "extensions": ["sxm"]
+ },
+ "application/vnd.sun.xml.writer": {
+ "source": "apache",
+ "extensions": ["sxw"]
+ },
+ "application/vnd.sun.xml.writer.global": {
+ "source": "apache",
+ "extensions": ["sxg"]
+ },
+ "application/vnd.sun.xml.writer.template": {
+ "source": "apache",
+ "extensions": ["stw"]
+ },
+ "application/vnd.sus-calendar": {
+ "source": "iana",
+ "extensions": ["sus","susp"]
+ },
+ "application/vnd.svd": {
+ "source": "iana",
+ "extensions": ["svd"]
+ },
+ "application/vnd.swiftview-ics": {
+ "source": "iana"
+ },
+ "application/vnd.symbian.install": {
+ "source": "apache",
+ "extensions": ["sis","sisx"]
+ },
+ "application/vnd.syncml+xml": {
+ "source": "iana",
+ "extensions": ["xsm"]
+ },
+ "application/vnd.syncml.dm+wbxml": {
+ "source": "iana",
+ "extensions": ["bdm"]
+ },
+ "application/vnd.syncml.dm+xml": {
+ "source": "iana",
+ "extensions": ["xdm"]
+ },
+ "application/vnd.syncml.dm.notification": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.dmddf+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.dmddf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.dmtnds+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.dmtnds+xml": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.ds.notification": {
+ "source": "iana"
+ },
+ "application/vnd.tao.intent-module-archive": {
+ "source": "iana",
+ "extensions": ["tao"]
+ },
+ "application/vnd.tcpdump.pcap": {
+ "source": "iana",
+ "extensions": ["pcap","cap","dmp"]
+ },
+ "application/vnd.tmd.mediaflex.api+xml": {
+ "source": "iana"
+ },
+ "application/vnd.tml": {
+ "source": "iana"
+ },
+ "application/vnd.tmobile-livetv": {
+ "source": "iana",
+ "extensions": ["tmo"]
+ },
+ "application/vnd.trid.tpt": {
+ "source": "iana",
+ "extensions": ["tpt"]
+ },
+ "application/vnd.triscape.mxs": {
+ "source": "iana",
+ "extensions": ["mxs"]
+ },
+ "application/vnd.trueapp": {
+ "source": "iana",
+ "extensions": ["tra"]
+ },
+ "application/vnd.truedoc": {
+ "source": "iana"
+ },
+ "application/vnd.ubisoft.webplayer": {
+ "source": "iana"
+ },
+ "application/vnd.ufdl": {
+ "source": "iana",
+ "extensions": ["ufd","ufdl"]
+ },
+ "application/vnd.uiq.theme": {
+ "source": "iana",
+ "extensions": ["utz"]
+ },
+ "application/vnd.umajin": {
+ "source": "iana",
+ "extensions": ["umj"]
+ },
+ "application/vnd.unity": {
+ "source": "iana",
+ "extensions": ["unityweb"]
+ },
+ "application/vnd.uoml+xml": {
+ "source": "iana",
+ "extensions": ["uoml"]
+ },
+ "application/vnd.uplanet.alert": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.alert-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.bearer-choice": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.bearer-choice-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.cacheop": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.cacheop-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.channel": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.channel-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.list": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.list-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.listcmd": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.listcmd-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.signal": {
+ "source": "iana"
+ },
+ "application/vnd.uri-map": {
+ "source": "iana"
+ },
+ "application/vnd.valve.source.material": {
+ "source": "iana"
+ },
+ "application/vnd.vcx": {
+ "source": "iana",
+ "extensions": ["vcx"]
+ },
+ "application/vnd.vd-study": {
+ "source": "iana"
+ },
+ "application/vnd.vectorworks": {
+ "source": "iana"
+ },
+ "application/vnd.vel+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.verimatrix.vcas": {
+ "source": "iana"
+ },
+ "application/vnd.vidsoft.vidconference": {
+ "source": "iana"
+ },
+ "application/vnd.visio": {
+ "source": "iana",
+ "extensions": ["vsd","vst","vss","vsw"]
+ },
+ "application/vnd.visionary": {
+ "source": "iana",
+ "extensions": ["vis"]
+ },
+ "application/vnd.vividence.scriptfile": {
+ "source": "iana"
+ },
+ "application/vnd.vsf": {
+ "source": "iana",
+ "extensions": ["vsf"]
+ },
+ "application/vnd.wap.sic": {
+ "source": "iana"
+ },
+ "application/vnd.wap.slc": {
+ "source": "iana"
+ },
+ "application/vnd.wap.wbxml": {
+ "source": "iana",
+ "extensions": ["wbxml"]
+ },
+ "application/vnd.wap.wmlc": {
+ "source": "iana",
+ "extensions": ["wmlc"]
+ },
+ "application/vnd.wap.wmlscriptc": {
+ "source": "iana",
+ "extensions": ["wmlsc"]
+ },
+ "application/vnd.webturbo": {
+ "source": "iana",
+ "extensions": ["wtb"]
+ },
+ "application/vnd.wfa.p2p": {
+ "source": "iana"
+ },
+ "application/vnd.wfa.wsc": {
+ "source": "iana"
+ },
+ "application/vnd.windows.devicepairing": {
+ "source": "iana"
+ },
+ "application/vnd.wmc": {
+ "source": "iana"
+ },
+ "application/vnd.wmf.bootstrap": {
+ "source": "iana"
+ },
+ "application/vnd.wolfram.mathematica": {
+ "source": "iana"
+ },
+ "application/vnd.wolfram.mathematica.package": {
+ "source": "iana"
+ },
+ "application/vnd.wolfram.player": {
+ "source": "iana",
+ "extensions": ["nbp"]
+ },
+ "application/vnd.wordperfect": {
+ "source": "iana",
+ "extensions": ["wpd"]
+ },
+ "application/vnd.wqd": {
+ "source": "iana",
+ "extensions": ["wqd"]
+ },
+ "application/vnd.wrq-hp3000-labelled": {
+ "source": "iana"
+ },
+ "application/vnd.wt.stf": {
+ "source": "iana",
+ "extensions": ["stf"]
+ },
+ "application/vnd.wv.csp+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.wv.csp+xml": {
+ "source": "iana"
+ },
+ "application/vnd.wv.ssp+xml": {
+ "source": "iana"
+ },
+ "application/vnd.xacml+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.xara": {
+ "source": "iana",
+ "extensions": ["xar"]
+ },
+ "application/vnd.xfdl": {
+ "source": "iana",
+ "extensions": ["xfdl"]
+ },
+ "application/vnd.xfdl.webform": {
+ "source": "iana"
+ },
+ "application/vnd.xmi+xml": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.cpkg": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.dpkg": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.plan": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.ppkg": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.xlim": {
+ "source": "iana"
+ },
+ "application/vnd.yamaha.hv-dic": {
+ "source": "iana",
+ "extensions": ["hvd"]
+ },
+ "application/vnd.yamaha.hv-script": {
+ "source": "iana",
+ "extensions": ["hvs"]
+ },
+ "application/vnd.yamaha.hv-voice": {
+ "source": "iana",
+ "extensions": ["hvp"]
+ },
+ "application/vnd.yamaha.openscoreformat": {
+ "source": "iana",
+ "extensions": ["osf"]
+ },
+ "application/vnd.yamaha.openscoreformat.osfpvg+xml": {
+ "source": "iana",
+ "extensions": ["osfpvg"]
+ },
+ "application/vnd.yamaha.remote-setup": {
+ "source": "iana"
+ },
+ "application/vnd.yamaha.smaf-audio": {
+ "source": "iana",
+ "extensions": ["saf"]
+ },
+ "application/vnd.yamaha.smaf-phrase": {
+ "source": "iana",
+ "extensions": ["spf"]
+ },
+ "application/vnd.yamaha.through-ngn": {
+ "source": "iana"
+ },
+ "application/vnd.yamaha.tunnel-udpencap": {
+ "source": "iana"
+ },
+ "application/vnd.yaoweme": {
+ "source": "iana"
+ },
+ "application/vnd.yellowriver-custom-menu": {
+ "source": "iana",
+ "extensions": ["cmp"]
+ },
+ "application/vnd.zul": {
+ "source": "iana",
+ "extensions": ["zir","zirz"]
+ },
+ "application/vnd.zzazz.deck+xml": {
+ "source": "iana",
+ "extensions": ["zaz"]
+ },
+ "application/voicexml+xml": {
+ "source": "iana",
+ "extensions": ["vxml"]
+ },
+ "application/vq-rtcpxr": {
+ "source": "iana"
+ },
+ "application/watcherinfo+xml": {
+ "source": "iana"
+ },
+ "application/whoispp-query": {
+ "source": "iana"
+ },
+ "application/whoispp-response": {
+ "source": "iana"
+ },
+ "application/widget": {
+ "source": "iana",
+ "extensions": ["wgt"]
+ },
+ "application/winhlp": {
+ "source": "apache",
+ "extensions": ["hlp"]
+ },
+ "application/wita": {
+ "source": "iana"
+ },
+ "application/wordperfect5.1": {
+ "source": "iana"
+ },
+ "application/wsdl+xml": {
+ "source": "iana",
+ "extensions": ["wsdl"]
+ },
+ "application/wspolicy+xml": {
+ "source": "iana",
+ "extensions": ["wspolicy"]
+ },
+ "application/x-7z-compressed": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["7z"]
+ },
+ "application/x-abiword": {
+ "source": "apache",
+ "extensions": ["abw"]
+ },
+ "application/x-ace-compressed": {
+ "source": "apache",
+ "extensions": ["ace"]
+ },
+ "application/x-amf": {
+ "source": "apache"
+ },
+ "application/x-apple-diskimage": {
+ "source": "apache",
+ "extensions": ["dmg"]
+ },
+ "application/x-authorware-bin": {
+ "source": "apache",
+ "extensions": ["aab","x32","u32","vox"]
+ },
+ "application/x-authorware-map": {
+ "source": "apache",
+ "extensions": ["aam"]
+ },
+ "application/x-authorware-seg": {
+ "source": "apache",
+ "extensions": ["aas"]
+ },
+ "application/x-bcpio": {
+ "source": "apache",
+ "extensions": ["bcpio"]
+ },
+ "application/x-bdoc": {
+ "compressible": false,
+ "extensions": ["bdoc"]
+ },
+ "application/x-bittorrent": {
+ "source": "apache",
+ "extensions": ["torrent"]
+ },
+ "application/x-blorb": {
+ "source": "apache",
+ "extensions": ["blb","blorb"]
+ },
+ "application/x-bzip": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["bz"]
+ },
+ "application/x-bzip2": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["bz2","boz"]
+ },
+ "application/x-cbr": {
+ "source": "apache",
+ "extensions": ["cbr","cba","cbt","cbz","cb7"]
+ },
+ "application/x-cdlink": {
+ "source": "apache",
+ "extensions": ["vcd"]
+ },
+ "application/x-cfs-compressed": {
+ "source": "apache",
+ "extensions": ["cfs"]
+ },
+ "application/x-chat": {
+ "source": "apache",
+ "extensions": ["chat"]
+ },
+ "application/x-chess-pgn": {
+ "source": "apache",
+ "extensions": ["pgn"]
+ },
+ "application/x-chrome-extension": {
+ "extensions": ["crx"]
+ },
+ "application/x-cocoa": {
+ "source": "nginx",
+ "extensions": ["cco"]
+ },
+ "application/x-compress": {
+ "source": "apache"
+ },
+ "application/x-conference": {
+ "source": "apache",
+ "extensions": ["nsc"]
+ },
+ "application/x-cpio": {
+ "source": "apache",
+ "extensions": ["cpio"]
+ },
+ "application/x-csh": {
+ "source": "apache",
+ "extensions": ["csh"]
+ },
+ "application/x-deb": {
+ "compressible": false
+ },
+ "application/x-debian-package": {
+ "source": "apache",
+ "extensions": ["deb","udeb"]
+ },
+ "application/x-dgc-compressed": {
+ "source": "apache",
+ "extensions": ["dgc"]
+ },
+ "application/x-director": {
+ "source": "apache",
+ "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]
+ },
+ "application/x-doom": {
+ "source": "apache",
+ "extensions": ["wad"]
+ },
+ "application/x-dtbncx+xml": {
+ "source": "apache",
+ "extensions": ["ncx"]
+ },
+ "application/x-dtbook+xml": {
+ "source": "apache",
+ "extensions": ["dtb"]
+ },
+ "application/x-dtbresource+xml": {
+ "source": "apache",
+ "extensions": ["res"]
+ },
+ "application/x-dvi": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["dvi"]
+ },
+ "application/x-envoy": {
+ "source": "apache",
+ "extensions": ["evy"]
+ },
+ "application/x-eva": {
+ "source": "apache",
+ "extensions": ["eva"]
+ },
+ "application/x-font-bdf": {
+ "source": "apache",
+ "extensions": ["bdf"]
+ },
+ "application/x-font-dos": {
+ "source": "apache"
+ },
+ "application/x-font-framemaker": {
+ "source": "apache"
+ },
+ "application/x-font-ghostscript": {
+ "source": "apache",
+ "extensions": ["gsf"]
+ },
+ "application/x-font-libgrx": {
+ "source": "apache"
+ },
+ "application/x-font-linux-psf": {
+ "source": "apache",
+ "extensions": ["psf"]
+ },
+ "application/x-font-otf": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["otf"]
+ },
+ "application/x-font-pcf": {
+ "source": "apache",
+ "extensions": ["pcf"]
+ },
+ "application/x-font-snf": {
+ "source": "apache",
+ "extensions": ["snf"]
+ },
+ "application/x-font-speedo": {
+ "source": "apache"
+ },
+ "application/x-font-sunos-news": {
+ "source": "apache"
+ },
+ "application/x-font-ttf": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["ttf","ttc"]
+ },
+ "application/x-font-type1": {
+ "source": "apache",
+ "extensions": ["pfa","pfb","pfm","afm"]
+ },
+ "application/x-font-vfont": {
+ "source": "apache"
+ },
+ "application/x-freearc": {
+ "source": "apache",
+ "extensions": ["arc"]
+ },
+ "application/x-futuresplash": {
+ "source": "apache",
+ "extensions": ["spl"]
+ },
+ "application/x-gca-compressed": {
+ "source": "apache",
+ "extensions": ["gca"]
+ },
+ "application/x-glulx": {
+ "source": "apache",
+ "extensions": ["ulx"]
+ },
+ "application/x-gnumeric": {
+ "source": "apache",
+ "extensions": ["gnumeric"]
+ },
+ "application/x-gramps-xml": {
+ "source": "apache",
+ "extensions": ["gramps"]
+ },
+ "application/x-gtar": {
+ "source": "apache",
+ "extensions": ["gtar"]
+ },
+ "application/x-gzip": {
+ "source": "apache"
+ },
+ "application/x-hdf": {
+ "source": "apache",
+ "extensions": ["hdf"]
+ },
+ "application/x-httpd-php": {
+ "compressible": true,
+ "extensions": ["php"]
+ },
+ "application/x-install-instructions": {
+ "source": "apache",
+ "extensions": ["install"]
+ },
+ "application/x-iso9660-image": {
+ "source": "apache",
+ "extensions": ["iso"]
+ },
+ "application/x-java-archive-diff": {
+ "source": "nginx",
+ "extensions": ["jardiff"]
+ },
+ "application/x-java-jnlp-file": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["jnlp"]
+ },
+ "application/x-javascript": {
+ "compressible": true
+ },
+ "application/x-latex": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["latex"]
+ },
+ "application/x-lua-bytecode": {
+ "extensions": ["luac"]
+ },
+ "application/x-lzh-compressed": {
+ "source": "apache",
+ "extensions": ["lzh","lha"]
+ },
+ "application/x-makeself": {
+ "source": "nginx",
+ "extensions": ["run"]
+ },
+ "application/x-mie": {
+ "source": "apache",
+ "extensions": ["mie"]
+ },
+ "application/x-mobipocket-ebook": {
+ "source": "apache",
+ "extensions": ["prc","mobi"]
+ },
+ "application/x-mpegurl": {
+ "compressible": false
+ },
+ "application/x-ms-application": {
+ "source": "apache",
+ "extensions": ["application"]
+ },
+ "application/x-ms-shortcut": {
+ "source": "apache",
+ "extensions": ["lnk"]
+ },
+ "application/x-ms-wmd": {
+ "source": "apache",
+ "extensions": ["wmd"]
+ },
+ "application/x-ms-wmz": {
+ "source": "apache",
+ "extensions": ["wmz"]
+ },
+ "application/x-ms-xbap": {
+ "source": "apache",
+ "extensions": ["xbap"]
+ },
+ "application/x-msaccess": {
+ "source": "apache",
+ "extensions": ["mdb"]
+ },
+ "application/x-msbinder": {
+ "source": "apache",
+ "extensions": ["obd"]
+ },
+ "application/x-mscardfile": {
+ "source": "apache",
+ "extensions": ["crd"]
+ },
+ "application/x-msclip": {
+ "source": "apache",
+ "extensions": ["clp"]
+ },
+ "application/x-msdos-program": {
+ "extensions": ["exe"]
+ },
+ "application/x-msdownload": {
+ "source": "apache",
+ "extensions": ["exe","dll","com","bat","msi"]
+ },
+ "application/x-msmediaview": {
+ "source": "apache",
+ "extensions": ["mvb","m13","m14"]
+ },
+ "application/x-msmetafile": {
+ "source": "apache",
+ "extensions": ["wmf","wmz","emf","emz"]
+ },
+ "application/x-msmoney": {
+ "source": "apache",
+ "extensions": ["mny"]
+ },
+ "application/x-mspublisher": {
+ "source": "apache",
+ "extensions": ["pub"]
+ },
+ "application/x-msschedule": {
+ "source": "apache",
+ "extensions": ["scd"]
+ },
+ "application/x-msterminal": {
+ "source": "apache",
+ "extensions": ["trm"]
+ },
+ "application/x-mswrite": {
+ "source": "apache",
+ "extensions": ["wri"]
+ },
+ "application/x-netcdf": {
+ "source": "apache",
+ "extensions": ["nc","cdf"]
+ },
+ "application/x-ns-proxy-autoconfig": {
+ "compressible": true,
+ "extensions": ["pac"]
+ },
+ "application/x-nzb": {
+ "source": "apache",
+ "extensions": ["nzb"]
+ },
+ "application/x-perl": {
+ "source": "nginx",
+ "extensions": ["pl","pm"]
+ },
+ "application/x-pilot": {
+ "source": "nginx",
+ "extensions": ["prc","pdb"]
+ },
+ "application/x-pkcs12": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["p12","pfx"]
+ },
+ "application/x-pkcs7-certificates": {
+ "source": "apache",
+ "extensions": ["p7b","spc"]
+ },
+ "application/x-pkcs7-certreqresp": {
+ "source": "apache",
+ "extensions": ["p7r"]
+ },
+ "application/x-rar-compressed": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["rar"]
+ },
+ "application/x-redhat-package-manager": {
+ "source": "nginx",
+ "extensions": ["rpm"]
+ },
+ "application/x-research-info-systems": {
+ "source": "apache",
+ "extensions": ["ris"]
+ },
+ "application/x-sea": {
+ "source": "nginx",
+ "extensions": ["sea"]
+ },
+ "application/x-sh": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["sh"]
+ },
+ "application/x-shar": {
+ "source": "apache",
+ "extensions": ["shar"]
+ },
+ "application/x-shockwave-flash": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["swf"]
+ },
+ "application/x-silverlight-app": {
+ "source": "apache",
+ "extensions": ["xap"]
+ },
+ "application/x-sql": {
+ "source": "apache",
+ "extensions": ["sql"]
+ },
+ "application/x-stuffit": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["sit"]
+ },
+ "application/x-stuffitx": {
+ "source": "apache",
+ "extensions": ["sitx"]
+ },
+ "application/x-subrip": {
+ "source": "apache",
+ "extensions": ["srt"]
+ },
+ "application/x-sv4cpio": {
+ "source": "apache",
+ "extensions": ["sv4cpio"]
+ },
+ "application/x-sv4crc": {
+ "source": "apache",
+ "extensions": ["sv4crc"]
+ },
+ "application/x-t3vm-image": {
+ "source": "apache",
+ "extensions": ["t3"]
+ },
+ "application/x-tads": {
+ "source": "apache",
+ "extensions": ["gam"]
+ },
+ "application/x-tar": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["tar"]
+ },
+ "application/x-tcl": {
+ "source": "apache",
+ "extensions": ["tcl","tk"]
+ },
+ "application/x-tex": {
+ "source": "apache",
+ "extensions": ["tex"]
+ },
+ "application/x-tex-tfm": {
+ "source": "apache",
+ "extensions": ["tfm"]
+ },
+ "application/x-texinfo": {
+ "source": "apache",
+ "extensions": ["texinfo","texi"]
+ },
+ "application/x-tgif": {
+ "source": "apache",
+ "extensions": ["obj"]
+ },
+ "application/x-ustar": {
+ "source": "apache",
+ "extensions": ["ustar"]
+ },
+ "application/x-wais-source": {
+ "source": "apache",
+ "extensions": ["src"]
+ },
+ "application/x-web-app-manifest+json": {
+ "compressible": true,
+ "extensions": ["webapp"]
+ },
+ "application/x-www-form-urlencoded": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/x-x509-ca-cert": {
+ "source": "apache",
+ "extensions": ["der","crt","pem"]
+ },
+ "application/x-xfig": {
+ "source": "apache",
+ "extensions": ["fig"]
+ },
+ "application/x-xliff+xml": {
+ "source": "apache",
+ "extensions": ["xlf"]
+ },
+ "application/x-xpinstall": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["xpi"]
+ },
+ "application/x-xz": {
+ "source": "apache",
+ "extensions": ["xz"]
+ },
+ "application/x-zmachine": {
+ "source": "apache",
+ "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"]
+ },
+ "application/x400-bp": {
+ "source": "iana"
+ },
+ "application/xacml+xml": {
+ "source": "iana"
+ },
+ "application/xaml+xml": {
+ "source": "apache",
+ "extensions": ["xaml"]
+ },
+ "application/xcap-att+xml": {
+ "source": "iana"
+ },
+ "application/xcap-caps+xml": {
+ "source": "iana"
+ },
+ "application/xcap-diff+xml": {
+ "source": "iana",
+ "extensions": ["xdf"]
+ },
+ "application/xcap-el+xml": {
+ "source": "iana"
+ },
+ "application/xcap-error+xml": {
+ "source": "iana"
+ },
+ "application/xcap-ns+xml": {
+ "source": "iana"
+ },
+ "application/xcon-conference-info+xml": {
+ "source": "iana"
+ },
+ "application/xcon-conference-info-diff+xml": {
+ "source": "iana"
+ },
+ "application/xenc+xml": {
+ "source": "iana",
+ "extensions": ["xenc"]
+ },
+ "application/xhtml+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xhtml","xht"]
+ },
+ "application/xhtml-voice+xml": {
+ "source": "apache"
+ },
+ "application/xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xml","xsl","xsd","rng"]
+ },
+ "application/xml-dtd": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["dtd"]
+ },
+ "application/xml-external-parsed-entity": {
+ "source": "iana"
+ },
+ "application/xml-patch+xml": {
+ "source": "iana"
+ },
+ "application/xmpp+xml": {
+ "source": "iana"
+ },
+ "application/xop+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xop"]
+ },
+ "application/xproc+xml": {
+ "source": "apache",
+ "extensions": ["xpl"]
+ },
+ "application/xslt+xml": {
+ "source": "iana",
+ "extensions": ["xslt"]
+ },
+ "application/xspf+xml": {
+ "source": "apache",
+ "extensions": ["xspf"]
+ },
+ "application/xv+xml": {
+ "source": "iana",
+ "extensions": ["mxml","xhvml","xvml","xvm"]
+ },
+ "application/yang": {
+ "source": "iana",
+ "extensions": ["yang"]
+ },
+ "application/yin+xml": {
+ "source": "iana",
+ "extensions": ["yin"]
+ },
+ "application/zip": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["zip"]
+ },
+ "application/zlib": {
+ "source": "iana"
+ },
+ "audio/1d-interleaved-parityfec": {
+ "source": "iana"
+ },
+ "audio/32kadpcm": {
+ "source": "iana"
+ },
+ "audio/3gpp": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["3gpp"]
+ },
+ "audio/3gpp2": {
+ "source": "iana"
+ },
+ "audio/ac3": {
+ "source": "iana"
+ },
+ "audio/adpcm": {
+ "source": "apache",
+ "extensions": ["adp"]
+ },
+ "audio/amr": {
+ "source": "iana"
+ },
+ "audio/amr-wb": {
+ "source": "iana"
+ },
+ "audio/amr-wb+": {
+ "source": "iana"
+ },
+ "audio/aptx": {
+ "source": "iana"
+ },
+ "audio/asc": {
+ "source": "iana"
+ },
+ "audio/atrac-advanced-lossless": {
+ "source": "iana"
+ },
+ "audio/atrac-x": {
+ "source": "iana"
+ },
+ "audio/atrac3": {
+ "source": "iana"
+ },
+ "audio/basic": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["au","snd"]
+ },
+ "audio/bv16": {
+ "source": "iana"
+ },
+ "audio/bv32": {
+ "source": "iana"
+ },
+ "audio/clearmode": {
+ "source": "iana"
+ },
+ "audio/cn": {
+ "source": "iana"
+ },
+ "audio/dat12": {
+ "source": "iana"
+ },
+ "audio/dls": {
+ "source": "iana"
+ },
+ "audio/dsr-es201108": {
+ "source": "iana"
+ },
+ "audio/dsr-es202050": {
+ "source": "iana"
+ },
+ "audio/dsr-es202211": {
+ "source": "iana"
+ },
+ "audio/dsr-es202212": {
+ "source": "iana"
+ },
+ "audio/dv": {
+ "source": "iana"
+ },
+ "audio/dvi4": {
+ "source": "iana"
+ },
+ "audio/eac3": {
+ "source": "iana"
+ },
+ "audio/encaprtp": {
+ "source": "iana"
+ },
+ "audio/evrc": {
+ "source": "iana"
+ },
+ "audio/evrc-qcp": {
+ "source": "iana"
+ },
+ "audio/evrc0": {
+ "source": "iana"
+ },
+ "audio/evrc1": {
+ "source": "iana"
+ },
+ "audio/evrcb": {
+ "source": "iana"
+ },
+ "audio/evrcb0": {
+ "source": "iana"
+ },
+ "audio/evrcb1": {
+ "source": "iana"
+ },
+ "audio/evrcnw": {
+ "source": "iana"
+ },
+ "audio/evrcnw0": {
+ "source": "iana"
+ },
+ "audio/evrcnw1": {
+ "source": "iana"
+ },
+ "audio/evrcwb": {
+ "source": "iana"
+ },
+ "audio/evrcwb0": {
+ "source": "iana"
+ },
+ "audio/evrcwb1": {
+ "source": "iana"
+ },
+ "audio/evs": {
+ "source": "iana"
+ },
+ "audio/fwdred": {
+ "source": "iana"
+ },
+ "audio/g711-0": {
+ "source": "iana"
+ },
+ "audio/g719": {
+ "source": "iana"
+ },
+ "audio/g722": {
+ "source": "iana"
+ },
+ "audio/g7221": {
+ "source": "iana"
+ },
+ "audio/g723": {
+ "source": "iana"
+ },
+ "audio/g726-16": {
+ "source": "iana"
+ },
+ "audio/g726-24": {
+ "source": "iana"
+ },
+ "audio/g726-32": {
+ "source": "iana"
+ },
+ "audio/g726-40": {
+ "source": "iana"
+ },
+ "audio/g728": {
+ "source": "iana"
+ },
+ "audio/g729": {
+ "source": "iana"
+ },
+ "audio/g7291": {
+ "source": "iana"
+ },
+ "audio/g729d": {
+ "source": "iana"
+ },
+ "audio/g729e": {
+ "source": "iana"
+ },
+ "audio/gsm": {
+ "source": "iana"
+ },
+ "audio/gsm-efr": {
+ "source": "iana"
+ },
+ "audio/gsm-hr-08": {
+ "source": "iana"
+ },
+ "audio/ilbc": {
+ "source": "iana"
+ },
+ "audio/ip-mr_v2.5": {
+ "source": "iana"
+ },
+ "audio/isac": {
+ "source": "apache"
+ },
+ "audio/l16": {
+ "source": "iana"
+ },
+ "audio/l20": {
+ "source": "iana"
+ },
+ "audio/l24": {
+ "source": "iana",
+ "compressible": false
+ },
+ "audio/l8": {
+ "source": "iana"
+ },
+ "audio/lpc": {
+ "source": "iana"
+ },
+ "audio/midi": {
+ "source": "apache",
+ "extensions": ["mid","midi","kar","rmi"]
+ },
+ "audio/mobile-xmf": {
+ "source": "iana"
+ },
+ "audio/mp4": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["m4a","mp4a"]
+ },
+ "audio/mp4a-latm": {
+ "source": "iana"
+ },
+ "audio/mpa": {
+ "source": "iana"
+ },
+ "audio/mpa-robust": {
+ "source": "iana"
+ },
+ "audio/mpeg": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"]
+ },
+ "audio/mpeg4-generic": {
+ "source": "iana"
+ },
+ "audio/musepack": {
+ "source": "apache"
+ },
+ "audio/ogg": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["oga","ogg","spx"]
+ },
+ "audio/opus": {
+ "source": "iana"
+ },
+ "audio/parityfec": {
+ "source": "iana"
+ },
+ "audio/pcma": {
+ "source": "iana"
+ },
+ "audio/pcma-wb": {
+ "source": "iana"
+ },
+ "audio/pcmu": {
+ "source": "iana"
+ },
+ "audio/pcmu-wb": {
+ "source": "iana"
+ },
+ "audio/prs.sid": {
+ "source": "iana"
+ },
+ "audio/qcelp": {
+ "source": "iana"
+ },
+ "audio/raptorfec": {
+ "source": "iana"
+ },
+ "audio/red": {
+ "source": "iana"
+ },
+ "audio/rtp-enc-aescm128": {
+ "source": "iana"
+ },
+ "audio/rtp-midi": {
+ "source": "iana"
+ },
+ "audio/rtploopback": {
+ "source": "iana"
+ },
+ "audio/rtx": {
+ "source": "iana"
+ },
+ "audio/s3m": {
+ "source": "apache",
+ "extensions": ["s3m"]
+ },
+ "audio/silk": {
+ "source": "apache",
+ "extensions": ["sil"]
+ },
+ "audio/smv": {
+ "source": "iana"
+ },
+ "audio/smv-qcp": {
+ "source": "iana"
+ },
+ "audio/smv0": {
+ "source": "iana"
+ },
+ "audio/sp-midi": {
+ "source": "iana"
+ },
+ "audio/speex": {
+ "source": "iana"
+ },
+ "audio/t140c": {
+ "source": "iana"
+ },
+ "audio/t38": {
+ "source": "iana"
+ },
+ "audio/telephone-event": {
+ "source": "iana"
+ },
+ "audio/tone": {
+ "source": "iana"
+ },
+ "audio/uemclip": {
+ "source": "iana"
+ },
+ "audio/ulpfec": {
+ "source": "iana"
+ },
+ "audio/vdvi": {
+ "source": "iana"
+ },
+ "audio/vmr-wb": {
+ "source": "iana"
+ },
+ "audio/vnd.3gpp.iufp": {
+ "source": "iana"
+ },
+ "audio/vnd.4sb": {
+ "source": "iana"
+ },
+ "audio/vnd.audiokoz": {
+ "source": "iana"
+ },
+ "audio/vnd.celp": {
+ "source": "iana"
+ },
+ "audio/vnd.cisco.nse": {
+ "source": "iana"
+ },
+ "audio/vnd.cmles.radio-events": {
+ "source": "iana"
+ },
+ "audio/vnd.cns.anp1": {
+ "source": "iana"
+ },
+ "audio/vnd.cns.inf1": {
+ "source": "iana"
+ },
+ "audio/vnd.dece.audio": {
+ "source": "iana",
+ "extensions": ["uva","uvva"]
+ },
+ "audio/vnd.digital-winds": {
+ "source": "iana",
+ "extensions": ["eol"]
+ },
+ "audio/vnd.dlna.adts": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.heaac.1": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.heaac.2": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.mlp": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.mps": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.pl2": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.pl2x": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.pl2z": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.pulse.1": {
+ "source": "iana"
+ },
+ "audio/vnd.dra": {
+ "source": "iana",
+ "extensions": ["dra"]
+ },
+ "audio/vnd.dts": {
+ "source": "iana",
+ "extensions": ["dts"]
+ },
+ "audio/vnd.dts.hd": {
+ "source": "iana",
+ "extensions": ["dtshd"]
+ },
+ "audio/vnd.dvb.file": {
+ "source": "iana"
+ },
+ "audio/vnd.everad.plj": {
+ "source": "iana"
+ },
+ "audio/vnd.hns.audio": {
+ "source": "iana"
+ },
+ "audio/vnd.lucent.voice": {
+ "source": "iana",
+ "extensions": ["lvp"]
+ },
+ "audio/vnd.ms-playready.media.pya": {
+ "source": "iana",
+ "extensions": ["pya"]
+ },
+ "audio/vnd.nokia.mobile-xmf": {
+ "source": "iana"
+ },
+ "audio/vnd.nortel.vbk": {
+ "source": "iana"
+ },
+ "audio/vnd.nuera.ecelp4800": {
+ "source": "iana",
+ "extensions": ["ecelp4800"]
+ },
+ "audio/vnd.nuera.ecelp7470": {
+ "source": "iana",
+ "extensions": ["ecelp7470"]
+ },
+ "audio/vnd.nuera.ecelp9600": {
+ "source": "iana",
+ "extensions": ["ecelp9600"]
+ },
+ "audio/vnd.octel.sbc": {
+ "source": "iana"
+ },
+ "audio/vnd.qcelp": {
+ "source": "iana"
+ },
+ "audio/vnd.rhetorex.32kadpcm": {
+ "source": "iana"
+ },
+ "audio/vnd.rip": {
+ "source": "iana",
+ "extensions": ["rip"]
+ },
+ "audio/vnd.rn-realaudio": {
+ "compressible": false
+ },
+ "audio/vnd.sealedmedia.softseal.mpeg": {
+ "source": "iana"
+ },
+ "audio/vnd.vmx.cvsd": {
+ "source": "iana"
+ },
+ "audio/vnd.wave": {
+ "compressible": false
+ },
+ "audio/vorbis": {
+ "source": "iana",
+ "compressible": false
+ },
+ "audio/vorbis-config": {
+ "source": "iana"
+ },
+ "audio/wav": {
+ "compressible": false,
+ "extensions": ["wav"]
+ },
+ "audio/wave": {
+ "compressible": false,
+ "extensions": ["wav"]
+ },
+ "audio/webm": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["weba"]
+ },
+ "audio/x-aac": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["aac"]
+ },
+ "audio/x-aiff": {
+ "source": "apache",
+ "extensions": ["aif","aiff","aifc"]
+ },
+ "audio/x-caf": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["caf"]
+ },
+ "audio/x-flac": {
+ "source": "apache",
+ "extensions": ["flac"]
+ },
+ "audio/x-m4a": {
+ "source": "nginx",
+ "extensions": ["m4a"]
+ },
+ "audio/x-matroska": {
+ "source": "apache",
+ "extensions": ["mka"]
+ },
+ "audio/x-mpegurl": {
+ "source": "apache",
+ "extensions": ["m3u"]
+ },
+ "audio/x-ms-wax": {
+ "source": "apache",
+ "extensions": ["wax"]
+ },
+ "audio/x-ms-wma": {
+ "source": "apache",
+ "extensions": ["wma"]
+ },
+ "audio/x-pn-realaudio": {
+ "source": "apache",
+ "extensions": ["ram","ra"]
+ },
+ "audio/x-pn-realaudio-plugin": {
+ "source": "apache",
+ "extensions": ["rmp"]
+ },
+ "audio/x-realaudio": {
+ "source": "nginx",
+ "extensions": ["ra"]
+ },
+ "audio/x-tta": {
+ "source": "apache"
+ },
+ "audio/x-wav": {
+ "source": "apache",
+ "extensions": ["wav"]
+ },
+ "audio/xm": {
+ "source": "apache",
+ "extensions": ["xm"]
+ },
+ "chemical/x-cdx": {
+ "source": "apache",
+ "extensions": ["cdx"]
+ },
+ "chemical/x-cif": {
+ "source": "apache",
+ "extensions": ["cif"]
+ },
+ "chemical/x-cmdf": {
+ "source": "apache",
+ "extensions": ["cmdf"]
+ },
+ "chemical/x-cml": {
+ "source": "apache",
+ "extensions": ["cml"]
+ },
+ "chemical/x-csml": {
+ "source": "apache",
+ "extensions": ["csml"]
+ },
+ "chemical/x-pdb": {
+ "source": "apache"
+ },
+ "chemical/x-xyz": {
+ "source": "apache",
+ "extensions": ["xyz"]
+ },
+ "font/opentype": {
+ "compressible": true,
+ "extensions": ["otf"]
+ },
+ "image/bmp": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["bmp"]
+ },
+ "image/cgm": {
+ "source": "iana",
+ "extensions": ["cgm"]
+ },
+ "image/fits": {
+ "source": "iana"
+ },
+ "image/g3fax": {
+ "source": "iana",
+ "extensions": ["g3"]
+ },
+ "image/gif": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["gif"]
+ },
+ "image/ief": {
+ "source": "iana",
+ "extensions": ["ief"]
+ },
+ "image/jp2": {
+ "source": "iana"
+ },
+ "image/jpeg": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["jpeg","jpg","jpe"]
+ },
+ "image/jpm": {
+ "source": "iana"
+ },
+ "image/jpx": {
+ "source": "iana"
+ },
+ "image/ktx": {
+ "source": "iana",
+ "extensions": ["ktx"]
+ },
+ "image/naplps": {
+ "source": "iana"
+ },
+ "image/pjpeg": {
+ "compressible": false
+ },
+ "image/png": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["png"]
+ },
+ "image/prs.btif": {
+ "source": "iana",
+ "extensions": ["btif"]
+ },
+ "image/prs.pti": {
+ "source": "iana"
+ },
+ "image/pwg-raster": {
+ "source": "iana"
+ },
+ "image/sgi": {
+ "source": "apache",
+ "extensions": ["sgi"]
+ },
+ "image/svg+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["svg","svgz"]
+ },
+ "image/t38": {
+ "source": "iana"
+ },
+ "image/tiff": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["tiff","tif"]
+ },
+ "image/tiff-fx": {
+ "source": "iana"
+ },
+ "image/vnd.adobe.photoshop": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["psd"]
+ },
+ "image/vnd.airzip.accelerator.azv": {
+ "source": "iana"
+ },
+ "image/vnd.cns.inf2": {
+ "source": "iana"
+ },
+ "image/vnd.dece.graphic": {
+ "source": "iana",
+ "extensions": ["uvi","uvvi","uvg","uvvg"]
+ },
+ "image/vnd.djvu": {
+ "source": "iana",
+ "extensions": ["djvu","djv"]
+ },
+ "image/vnd.dvb.subtitle": {
+ "source": "iana",
+ "extensions": ["sub"]
+ },
+ "image/vnd.dwg": {
+ "source": "iana",
+ "extensions": ["dwg"]
+ },
+ "image/vnd.dxf": {
+ "source": "iana",
+ "extensions": ["dxf"]
+ },
+ "image/vnd.fastbidsheet": {
+ "source": "iana",
+ "extensions": ["fbs"]
+ },
+ "image/vnd.fpx": {
+ "source": "iana",
+ "extensions": ["fpx"]
+ },
+ "image/vnd.fst": {
+ "source": "iana",
+ "extensions": ["fst"]
+ },
+ "image/vnd.fujixerox.edmics-mmr": {
+ "source": "iana",
+ "extensions": ["mmr"]
+ },
+ "image/vnd.fujixerox.edmics-rlc": {
+ "source": "iana",
+ "extensions": ["rlc"]
+ },
+ "image/vnd.globalgraphics.pgb": {
+ "source": "iana"
+ },
+ "image/vnd.microsoft.icon": {
+ "source": "iana"
+ },
+ "image/vnd.mix": {
+ "source": "iana"
+ },
+ "image/vnd.mozilla.apng": {
+ "source": "iana"
+ },
+ "image/vnd.ms-modi": {
+ "source": "iana",
+ "extensions": ["mdi"]
+ },
+ "image/vnd.ms-photo": {
+ "source": "apache",
+ "extensions": ["wdp"]
+ },
+ "image/vnd.net-fpx": {
+ "source": "iana",
+ "extensions": ["npx"]
+ },
+ "image/vnd.radiance": {
+ "source": "iana"
+ },
+ "image/vnd.sealed.png": {
+ "source": "iana"
+ },
+ "image/vnd.sealedmedia.softseal.gif": {
+ "source": "iana"
+ },
+ "image/vnd.sealedmedia.softseal.jpg": {
+ "source": "iana"
+ },
+ "image/vnd.svf": {
+ "source": "iana"
+ },
+ "image/vnd.tencent.tap": {
+ "source": "iana"
+ },
+ "image/vnd.valve.source.texture": {
+ "source": "iana"
+ },
+ "image/vnd.wap.wbmp": {
+ "source": "iana",
+ "extensions": ["wbmp"]
+ },
+ "image/vnd.xiff": {
+ "source": "iana",
+ "extensions": ["xif"]
+ },
+ "image/vnd.zbrush.pcx": {
+ "source": "iana"
+ },
+ "image/webp": {
+ "source": "apache",
+ "extensions": ["webp"]
+ },
+ "image/x-3ds": {
+ "source": "apache",
+ "extensions": ["3ds"]
+ },
+ "image/x-cmu-raster": {
+ "source": "apache",
+ "extensions": ["ras"]
+ },
+ "image/x-cmx": {
+ "source": "apache",
+ "extensions": ["cmx"]
+ },
+ "image/x-freehand": {
+ "source": "apache",
+ "extensions": ["fh","fhc","fh4","fh5","fh7"]
+ },
+ "image/x-icon": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["ico"]
+ },
+ "image/x-jng": {
+ "source": "nginx",
+ "extensions": ["jng"]
+ },
+ "image/x-mrsid-image": {
+ "source": "apache",
+ "extensions": ["sid"]
+ },
+ "image/x-ms-bmp": {
+ "source": "nginx",
+ "compressible": true,
+ "extensions": ["bmp"]
+ },
+ "image/x-pcx": {
+ "source": "apache",
+ "extensions": ["pcx"]
+ },
+ "image/x-pict": {
+ "source": "apache",
+ "extensions": ["pic","pct"]
+ },
+ "image/x-portable-anymap": {
+ "source": "apache",
+ "extensions": ["pnm"]
+ },
+ "image/x-portable-bitmap": {
+ "source": "apache",
+ "extensions": ["pbm"]
+ },
+ "image/x-portable-graymap": {
+ "source": "apache",
+ "extensions": ["pgm"]
+ },
+ "image/x-portable-pixmap": {
+ "source": "apache",
+ "extensions": ["ppm"]
+ },
+ "image/x-rgb": {
+ "source": "apache",
+ "extensions": ["rgb"]
+ },
+ "image/x-tga": {
+ "source": "apache",
+ "extensions": ["tga"]
+ },
+ "image/x-xbitmap": {
+ "source": "apache",
+ "extensions": ["xbm"]
+ },
+ "image/x-xcf": {
+ "compressible": false
+ },
+ "image/x-xpixmap": {
+ "source": "apache",
+ "extensions": ["xpm"]
+ },
+ "image/x-xwindowdump": {
+ "source": "apache",
+ "extensions": ["xwd"]
+ },
+ "message/cpim": {
+ "source": "iana"
+ },
+ "message/delivery-status": {
+ "source": "iana"
+ },
+ "message/disposition-notification": {
+ "source": "iana"
+ },
+ "message/external-body": {
+ "source": "iana"
+ },
+ "message/feedback-report": {
+ "source": "iana"
+ },
+ "message/global": {
+ "source": "iana"
+ },
+ "message/global-delivery-status": {
+ "source": "iana"
+ },
+ "message/global-disposition-notification": {
+ "source": "iana"
+ },
+ "message/global-headers": {
+ "source": "iana"
+ },
+ "message/http": {
+ "source": "iana",
+ "compressible": false
+ },
+ "message/imdn+xml": {
+ "source": "iana",
+ "compressible": true
+ },
+ "message/news": {
+ "source": "iana"
+ },
+ "message/partial": {
+ "source": "iana",
+ "compressible": false
+ },
+ "message/rfc822": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["eml","mime"]
+ },
+ "message/s-http": {
+ "source": "iana"
+ },
+ "message/sip": {
+ "source": "iana"
+ },
+ "message/sipfrag": {
+ "source": "iana"
+ },
+ "message/tracking-status": {
+ "source": "iana"
+ },
+ "message/vnd.si.simp": {
+ "source": "iana"
+ },
+ "message/vnd.wfa.wsc": {
+ "source": "iana"
+ },
+ "model/iges": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["igs","iges"]
+ },
+ "model/mesh": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["msh","mesh","silo"]
+ },
+ "model/vnd.collada+xml": {
+ "source": "iana",
+ "extensions": ["dae"]
+ },
+ "model/vnd.dwf": {
+ "source": "iana",
+ "extensions": ["dwf"]
+ },
+ "model/vnd.flatland.3dml": {
+ "source": "iana"
+ },
+ "model/vnd.gdl": {
+ "source": "iana",
+ "extensions": ["gdl"]
+ },
+ "model/vnd.gs-gdl": {
+ "source": "apache"
+ },
+ "model/vnd.gs.gdl": {
+ "source": "iana"
+ },
+ "model/vnd.gtw": {
+ "source": "iana",
+ "extensions": ["gtw"]
+ },
+ "model/vnd.moml+xml": {
+ "source": "iana"
+ },
+ "model/vnd.mts": {
+ "source": "iana",
+ "extensions": ["mts"]
+ },
+ "model/vnd.opengex": {
+ "source": "iana"
+ },
+ "model/vnd.parasolid.transmit.binary": {
+ "source": "iana"
+ },
+ "model/vnd.parasolid.transmit.text": {
+ "source": "iana"
+ },
+ "model/vnd.rosette.annotated-data-model": {
+ "source": "iana"
+ },
+ "model/vnd.valve.source.compiled-map": {
+ "source": "iana"
+ },
+ "model/vnd.vtu": {
+ "source": "iana",
+ "extensions": ["vtu"]
+ },
+ "model/vrml": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["wrl","vrml"]
+ },
+ "model/x3d+binary": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["x3db","x3dbz"]
+ },
+ "model/x3d+fastinfoset": {
+ "source": "iana"
+ },
+ "model/x3d+vrml": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["x3dv","x3dvz"]
+ },
+ "model/x3d+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["x3d","x3dz"]
+ },
+ "model/x3d-vrml": {
+ "source": "iana"
+ },
+ "multipart/alternative": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/appledouble": {
+ "source": "iana"
+ },
+ "multipart/byteranges": {
+ "source": "iana"
+ },
+ "multipart/digest": {
+ "source": "iana"
+ },
+ "multipart/encrypted": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/form-data": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/header-set": {
+ "source": "iana"
+ },
+ "multipart/mixed": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/parallel": {
+ "source": "iana"
+ },
+ "multipart/related": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/report": {
+ "source": "iana"
+ },
+ "multipart/signed": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/voice-message": {
+ "source": "iana"
+ },
+ "multipart/x-mixed-replace": {
+ "source": "iana"
+ },
+ "text/1d-interleaved-parityfec": {
+ "source": "iana"
+ },
+ "text/cache-manifest": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["appcache","manifest"]
+ },
+ "text/calendar": {
+ "source": "iana",
+ "extensions": ["ics","ifb"]
+ },
+ "text/calender": {
+ "compressible": true
+ },
+ "text/cmd": {
+ "compressible": true
+ },
+ "text/coffeescript": {
+ "extensions": ["coffee","litcoffee"]
+ },
+ "text/css": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["css"]
+ },
+ "text/csv": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["csv"]
+ },
+ "text/csv-schema": {
+ "source": "iana"
+ },
+ "text/directory": {
+ "source": "iana"
+ },
+ "text/dns": {
+ "source": "iana"
+ },
+ "text/ecmascript": {
+ "source": "iana"
+ },
+ "text/encaprtp": {
+ "source": "iana"
+ },
+ "text/enriched": {
+ "source": "iana"
+ },
+ "text/fwdred": {
+ "source": "iana"
+ },
+ "text/grammar-ref-list": {
+ "source": "iana"
+ },
+ "text/hjson": {
+ "extensions": ["hjson"]
+ },
+ "text/html": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["html","htm","shtml"]
+ },
+ "text/jade": {
+ "extensions": ["jade"]
+ },
+ "text/javascript": {
+ "source": "iana",
+ "compressible": true
+ },
+ "text/jcr-cnd": {
+ "source": "iana"
+ },
+ "text/jsx": {
+ "compressible": true,
+ "extensions": ["jsx"]
+ },
+ "text/less": {
+ "extensions": ["less"]
+ },
+ "text/markdown": {
+ "source": "iana"
+ },
+ "text/mathml": {
+ "source": "nginx",
+ "extensions": ["mml"]
+ },
+ "text/mizar": {
+ "source": "iana"
+ },
+ "text/n3": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["n3"]
+ },
+ "text/parameters": {
+ "source": "iana"
+ },
+ "text/parityfec": {
+ "source": "iana"
+ },
+ "text/plain": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["txt","text","conf","def","list","log","in","ini"]
+ },
+ "text/provenance-notation": {
+ "source": "iana"
+ },
+ "text/prs.fallenstein.rst": {
+ "source": "iana"
+ },
+ "text/prs.lines.tag": {
+ "source": "iana",
+ "extensions": ["dsc"]
+ },
+ "text/prs.prop.logic": {
+ "source": "iana"
+ },
+ "text/raptorfec": {
+ "source": "iana"
+ },
+ "text/red": {
+ "source": "iana"
+ },
+ "text/rfc822-headers": {
+ "source": "iana"
+ },
+ "text/richtext": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["rtx"]
+ },
+ "text/rtf": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["rtf"]
+ },
+ "text/rtp-enc-aescm128": {
+ "source": "iana"
+ },
+ "text/rtploopback": {
+ "source": "iana"
+ },
+ "text/rtx": {
+ "source": "iana"
+ },
+ "text/sgml": {
+ "source": "iana",
+ "extensions": ["sgml","sgm"]
+ },
+ "text/slim": {
+ "extensions": ["slim","slm"]
+ },
+ "text/stylus": {
+ "extensions": ["stylus","styl"]
+ },
+ "text/t140": {
+ "source": "iana"
+ },
+ "text/tab-separated-values": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["tsv"]
+ },
+ "text/troff": {
+ "source": "iana",
+ "extensions": ["t","tr","roff","man","me","ms"]
+ },
+ "text/turtle": {
+ "source": "iana",
+ "extensions": ["ttl"]
+ },
+ "text/ulpfec": {
+ "source": "iana"
+ },
+ "text/uri-list": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["uri","uris","urls"]
+ },
+ "text/vcard": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["vcard"]
+ },
+ "text/vnd.a": {
+ "source": "iana"
+ },
+ "text/vnd.abc": {
+ "source": "iana"
+ },
+ "text/vnd.curl": {
+ "source": "iana",
+ "extensions": ["curl"]
+ },
+ "text/vnd.curl.dcurl": {
+ "source": "apache",
+ "extensions": ["dcurl"]
+ },
+ "text/vnd.curl.mcurl": {
+ "source": "apache",
+ "extensions": ["mcurl"]
+ },
+ "text/vnd.curl.scurl": {
+ "source": "apache",
+ "extensions": ["scurl"]
+ },
+ "text/vnd.debian.copyright": {
+ "source": "iana"
+ },
+ "text/vnd.dmclientscript": {
+ "source": "iana"
+ },
+ "text/vnd.dvb.subtitle": {
+ "source": "iana",
+ "extensions": ["sub"]
+ },
+ "text/vnd.esmertec.theme-descriptor": {
+ "source": "iana"
+ },
+ "text/vnd.fly": {
+ "source": "iana",
+ "extensions": ["fly"]
+ },
+ "text/vnd.fmi.flexstor": {
+ "source": "iana",
+ "extensions": ["flx"]
+ },
+ "text/vnd.graphviz": {
+ "source": "iana",
+ "extensions": ["gv"]
+ },
+ "text/vnd.in3d.3dml": {
+ "source": "iana",
+ "extensions": ["3dml"]
+ },
+ "text/vnd.in3d.spot": {
+ "source": "iana",
+ "extensions": ["spot"]
+ },
+ "text/vnd.iptc.newsml": {
+ "source": "iana"
+ },
+ "text/vnd.iptc.nitf": {
+ "source": "iana"
+ },
+ "text/vnd.latex-z": {
+ "source": "iana"
+ },
+ "text/vnd.motorola.reflex": {
+ "source": "iana"
+ },
+ "text/vnd.ms-mediapackage": {
+ "source": "iana"
+ },
+ "text/vnd.net2phone.commcenter.command": {
+ "source": "iana"
+ },
+ "text/vnd.radisys.msml-basic-layout": {
+ "source": "iana"
+ },
+ "text/vnd.si.uricatalogue": {
+ "source": "iana"
+ },
+ "text/vnd.sun.j2me.app-descriptor": {
+ "source": "iana",
+ "extensions": ["jad"]
+ },
+ "text/vnd.trolltech.linguist": {
+ "source": "iana"
+ },
+ "text/vnd.wap.si": {
+ "source": "iana"
+ },
+ "text/vnd.wap.sl": {
+ "source": "iana"
+ },
+ "text/vnd.wap.wml": {
+ "source": "iana",
+ "extensions": ["wml"]
+ },
+ "text/vnd.wap.wmlscript": {
+ "source": "iana",
+ "extensions": ["wmls"]
+ },
+ "text/vtt": {
+ "charset": "UTF-8",
+ "compressible": true,
+ "extensions": ["vtt"]
+ },
+ "text/x-asm": {
+ "source": "apache",
+ "extensions": ["s","asm"]
+ },
+ "text/x-c": {
+ "source": "apache",
+ "extensions": ["c","cc","cxx","cpp","h","hh","dic"]
+ },
+ "text/x-component": {
+ "source": "nginx",
+ "extensions": ["htc"]
+ },
+ "text/x-fortran": {
+ "source": "apache",
+ "extensions": ["f","for","f77","f90"]
+ },
+ "text/x-gwt-rpc": {
+ "compressible": true
+ },
+ "text/x-handlebars-template": {
+ "extensions": ["hbs"]
+ },
+ "text/x-java-source": {
+ "source": "apache",
+ "extensions": ["java"]
+ },
+ "text/x-jquery-tmpl": {
+ "compressible": true
+ },
+ "text/x-lua": {
+ "extensions": ["lua"]
+ },
+ "text/x-markdown": {
+ "compressible": true,
+ "extensions": ["markdown","md","mkd"]
+ },
+ "text/x-nfo": {
+ "source": "apache",
+ "extensions": ["nfo"]
+ },
+ "text/x-opml": {
+ "source": "apache",
+ "extensions": ["opml"]
+ },
+ "text/x-pascal": {
+ "source": "apache",
+ "extensions": ["p","pas"]
+ },
+ "text/x-processing": {
+ "compressible": true,
+ "extensions": ["pde"]
+ },
+ "text/x-sass": {
+ "extensions": ["sass"]
+ },
+ "text/x-scss": {
+ "extensions": ["scss"]
+ },
+ "text/x-setext": {
+ "source": "apache",
+ "extensions": ["etx"]
+ },
+ "text/x-sfv": {
+ "source": "apache",
+ "extensions": ["sfv"]
+ },
+ "text/x-suse-ymp": {
+ "compressible": true,
+ "extensions": ["ymp"]
+ },
+ "text/x-uuencode": {
+ "source": "apache",
+ "extensions": ["uu"]
+ },
+ "text/x-vcalendar": {
+ "source": "apache",
+ "extensions": ["vcs"]
+ },
+ "text/x-vcard": {
+ "source": "apache",
+ "extensions": ["vcf"]
+ },
+ "text/xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xml"]
+ },
+ "text/xml-external-parsed-entity": {
+ "source": "iana"
+ },
+ "text/yaml": {
+ "extensions": ["yaml","yml"]
+ },
+ "video/1d-interleaved-parityfec": {
+ "source": "apache"
+ },
+ "video/3gpp": {
+ "source": "apache",
+ "extensions": ["3gp","3gpp"]
+ },
+ "video/3gpp-tt": {
+ "source": "apache"
+ },
+ "video/3gpp2": {
+ "source": "apache",
+ "extensions": ["3g2"]
+ },
+ "video/bmpeg": {
+ "source": "apache"
+ },
+ "video/bt656": {
+ "source": "apache"
+ },
+ "video/celb": {
+ "source": "apache"
+ },
+ "video/dv": {
+ "source": "apache"
+ },
+ "video/encaprtp": {
+ "source": "apache"
+ },
+ "video/h261": {
+ "source": "apache",
+ "extensions": ["h261"]
+ },
+ "video/h263": {
+ "source": "apache",
+ "extensions": ["h263"]
+ },
+ "video/h263-1998": {
+ "source": "apache"
+ },
+ "video/h263-2000": {
+ "source": "apache"
+ },
+ "video/h264": {
+ "source": "apache",
+ "extensions": ["h264"]
+ },
+ "video/h264-rcdo": {
+ "source": "apache"
+ },
+ "video/h264-svc": {
+ "source": "apache"
+ },
+ "video/h265": {
+ "source": "apache"
+ },
+ "video/iso.segment": {
+ "source": "apache"
+ },
+ "video/jpeg": {
+ "source": "apache",
+ "extensions": ["jpgv"]
+ },
+ "video/jpeg2000": {
+ "source": "apache"
+ },
+ "video/jpm": {
+ "source": "apache",
+ "extensions": ["jpm","jpgm"]
+ },
+ "video/mj2": {
+ "source": "apache",
+ "extensions": ["mj2","mjp2"]
+ },
+ "video/mp1s": {
+ "source": "apache"
+ },
+ "video/mp2p": {
+ "source": "apache"
+ },
+ "video/mp2t": {
+ "source": "apache",
+ "extensions": ["ts"]
+ },
+ "video/mp4": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["mp4","mp4v","mpg4"]
+ },
+ "video/mp4v-es": {
+ "source": "apache"
+ },
+ "video/mpeg": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["mpeg","mpg","mpe","m1v","m2v"]
+ },
+ "video/mpeg4-generic": {
+ "source": "apache"
+ },
+ "video/mpv": {
+ "source": "apache"
+ },
+ "video/nv": {
+ "source": "apache"
+ },
+ "video/ogg": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["ogv"]
+ },
+ "video/parityfec": {
+ "source": "apache"
+ },
+ "video/pointer": {
+ "source": "apache"
+ },
+ "video/quicktime": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["qt","mov"]
+ },
+ "video/raptorfec": {
+ "source": "apache"
+ },
+ "video/raw": {
+ "source": "apache"
+ },
+ "video/rtp-enc-aescm128": {
+ "source": "apache"
+ },
+ "video/rtploopback": {
+ "source": "apache"
+ },
+ "video/rtx": {
+ "source": "apache"
+ },
+ "video/smpte292m": {
+ "source": "apache"
+ },
+ "video/ulpfec": {
+ "source": "apache"
+ },
+ "video/vc1": {
+ "source": "apache"
+ },
+ "video/vnd.cctv": {
+ "source": "apache"
+ },
+ "video/vnd.dece.hd": {
+ "source": "apache",
+ "extensions": ["uvh","uvvh"]
+ },
+ "video/vnd.dece.mobile": {
+ "source": "apache",
+ "extensions": ["uvm","uvvm"]
+ },
+ "video/vnd.dece.mp4": {
+ "source": "apache"
+ },
+ "video/vnd.dece.pd": {
+ "source": "apache",
+ "extensions": ["uvp","uvvp"]
+ },
+ "video/vnd.dece.sd": {
+ "source": "apache",
+ "extensions": ["uvs","uvvs"]
+ },
+ "video/vnd.dece.video": {
+ "source": "apache",
+ "extensions": ["uvv","uvvv"]
+ },
+ "video/vnd.directv.mpeg": {
+ "source": "apache"
+ },
+ "video/vnd.directv.mpeg-tts": {
+ "source": "apache"
+ },
+ "video/vnd.dlna.mpeg-tts": {
+ "source": "apache"
+ },
+ "video/vnd.dvb.file": {
+ "source": "apache",
+ "extensions": ["dvb"]
+ },
+ "video/vnd.fvt": {
+ "source": "apache",
+ "extensions": ["fvt"]
+ },
+ "video/vnd.hns.video": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.1dparityfec-1010": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.1dparityfec-2005": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.2dparityfec-1010": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.2dparityfec-2005": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.ttsavc": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.ttsmpeg2": {
+ "source": "apache"
+ },
+ "video/vnd.motorola.video": {
+ "source": "apache"
+ },
+ "video/vnd.motorola.videop": {
+ "source": "apache"
+ },
+ "video/vnd.mpegurl": {
+ "source": "apache",
+ "extensions": ["mxu","m4u"]
+ },
+ "video/vnd.ms-playready.media.pyv": {
+ "source": "apache",
+ "extensions": ["pyv"]
+ },
+ "video/vnd.nokia.interleaved-multimedia": {
+ "source": "apache"
+ },
+ "video/vnd.nokia.videovoip": {
+ "source": "apache"
+ },
+ "video/vnd.objectvideo": {
+ "source": "apache"
+ },
+ "video/vnd.radgamettools.bink": {
+ "source": "apache"
+ },
+ "video/vnd.radgamettools.smacker": {
+ "source": "apache"
+ },
+ "video/vnd.sealed.mpeg1": {
+ "source": "apache"
+ },
+ "video/vnd.sealed.mpeg4": {
+ "source": "apache"
+ },
+ "video/vnd.sealed.swf": {
+ "source": "apache"
+ },
+ "video/vnd.sealedmedia.softseal.mov": {
+ "source": "apache"
+ },
+ "video/vnd.uvvu.mp4": {
+ "source": "apache",
+ "extensions": ["uvu","uvvu"]
+ },
+ "video/vnd.vivo": {
+ "source": "apache",
+ "extensions": ["viv"]
+ },
+ "video/vp8": {
+ "source": "apache"
+ },
+ "video/webm": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["webm"]
+ },
+ "video/x-f4v": {
+ "source": "apache",
+ "extensions": ["f4v"]
+ },
+ "video/x-fli": {
+ "source": "apache",
+ "extensions": ["fli"]
+ },
+ "video/x-flv": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["flv"]
+ },
+ "video/x-m4v": {
+ "source": "apache",
+ "extensions": ["m4v"]
+ },
+ "video/x-matroska": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["mkv","mk3d","mks"]
+ },
+ "video/x-mng": {
+ "source": "apache",
+ "extensions": ["mng"]
+ },
+ "video/x-ms-asf": {
+ "source": "apache",
+ "extensions": ["asf","asx"]
+ },
+ "video/x-ms-vob": {
+ "source": "apache",
+ "extensions": ["vob"]
+ },
+ "video/x-ms-wm": {
+ "source": "apache",
+ "extensions": ["wm"]
+ },
+ "video/x-ms-wmv": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["wmv"]
+ },
+ "video/x-ms-wmx": {
+ "source": "apache",
+ "extensions": ["wmx"]
+ },
+ "video/x-ms-wvx": {
+ "source": "apache",
+ "extensions": ["wvx"]
+ },
+ "video/x-msvideo": {
+ "source": "apache",
+ "extensions": ["avi"]
+ },
+ "video/x-sgi-movie": {
+ "source": "apache",
+ "extensions": ["movie"]
+ },
+ "video/x-smv": {
+ "source": "apache",
+ "extensions": ["smv"]
+ },
+ "x-conference/x-cooltalk": {
+ "source": "apache",
+ "extensions": ["ice"]
+ },
+ "x-shader/x-fragment": {
+ "compressible": true
+ },
+ "x-shader/x-vertex": {
+ "compressible": true
+ }
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js
new file mode 100755
index 0000000..551031f
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js
@@ -0,0 +1,11 @@
+/*!
+ * mime-db
+ * Copyright(c) 2014 Jonathan Ong
+ * MIT Licensed
+ */
+
+/**
+ * Module exports.
+ */
+
+module.exports = require('./db.json')
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json
new file mode 100755
index 0000000..d77d856
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json
@@ -0,0 +1,98 @@
+{
+ "name": "mime-db",
+ "description": "Media Type Database",
+ "version": "1.23.0",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ {
+ "name": "Robert Kieffer",
+ "email": "robert@broofa.com",
+ "url": "http://github.com/broofa"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "mime",
+ "db",
+ "type",
+ "types",
+ "database",
+ "charset",
+ "charsets"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/mime-db.git"
+ },
+ "devDependencies": {
+ "bluebird": "3.3.5",
+ "co": "4.6.0",
+ "cogent": "1.0.1",
+ "csv-parse": "1.1.0",
+ "gnode": "0.1.2",
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5",
+ "raw-body": "2.1.6",
+ "stream-to-array": "2.3.0"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "README.md",
+ "db.json",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "build": "node scripts/build",
+ "fetch": "gnode scripts/fetch-apache && gnode scripts/fetch-iana && gnode scripts/fetch-nginx",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+ "update": "npm run fetch && npm run build"
+ },
+ "gitHead": "ba0d99fd05b3bfdc2ebcd78f858c25cb7db6af41",
+ "bugs": {
+ "url": "https://github.com/jshttp/mime-db/issues"
+ },
+ "homepage": "https://github.com/jshttp/mime-db#readme",
+ "_id": "mime-db@1.23.0",
+ "_shasum": "a31b4070adaea27d732ea333740a64d0ec9a6659",
+ "_from": "mime-db@>=1.23.0 <1.24.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "a31b4070adaea27d732ea333740a64d0ec9a6659",
+ "tarball": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/mime-db-1.23.0.tgz_1462163798086_0.43938886746764183"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json
new file mode 100755
index 0000000..d05c76a
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json
@@ -0,0 +1,88 @@
+{
+ "name": "mime-types",
+ "description": "The ultimate javascript content-type utility.",
+ "version": "2.1.11",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jeremiah Senkpiel",
+ "email": "fishrock123@rocketmail.com",
+ "url": "https://searchbeam.jit.su"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "mime",
+ "types"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/mime-types.git"
+ },
+ "dependencies": {
+ "mime-db": "~1.23.0"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec test/test.js",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js"
+ },
+ "gitHead": "298ffcf490a5d6e60edea7bf7a69036df04846b1",
+ "bugs": {
+ "url": "https://github.com/jshttp/mime-types/issues"
+ },
+ "homepage": "https://github.com/jshttp/mime-types#readme",
+ "_id": "mime-types@2.1.11",
+ "_shasum": "c259c471bda808a85d6cd193b430a5fae4473b3c",
+ "_from": "mime-types@>=2.1.11 <2.2.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "c259c471bda808a85d6cd193b430a5fae4473b3c",
+ "tarball": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "fishrock123",
+ "email": "fishrock123@rocketmail.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/mime-types-2.1.11.tgz_1462165365027_0.7217204745393246"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz"
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/HISTORY.md b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/HISTORY.md
new file mode 100755
index 0000000..10b6917
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/HISTORY.md
@@ -0,0 +1,98 @@
+0.6.1 / 2016-05-02
+==================
+
+ * perf: improve `Accept` parsing speed
+ * perf: improve `Accept-Charset` parsing speed
+ * perf: improve `Accept-Encoding` parsing speed
+ * perf: improve `Accept-Language` parsing speed
+
+0.6.0 / 2015-09-29
+==================
+
+ * Fix including type extensions in parameters in `Accept` parsing
+ * Fix parsing `Accept` parameters with quoted equals
+ * Fix parsing `Accept` parameters with quoted semicolons
+ * Lazy-load modules from main entry point
+ * perf: delay type concatenation until needed
+ * perf: enable strict mode
+ * perf: hoist regular expressions
+ * perf: remove closures getting spec properties
+ * perf: remove a closure from media type parsing
+ * perf: remove property delete from media type parsing
+
+0.5.3 / 2015-05-10
+==================
+
+ * Fix media type parameter matching to be case-insensitive
+
+0.5.2 / 2015-05-06
+==================
+
+ * Fix comparing media types with quoted values
+ * Fix splitting media types with quoted commas
+
+0.5.1 / 2015-02-14
+==================
+
+ * Fix preference sorting to be stable for long acceptable lists
+
+0.5.0 / 2014-12-18
+==================
+
+ * Fix list return order when large accepted list
+ * Fix missing identity encoding when q=0 exists
+ * Remove dynamic building of Negotiator class
+
+0.4.9 / 2014-10-14
+==================
+
+ * Fix error when media type has invalid parameter
+
+0.4.8 / 2014-09-28
+==================
+
+ * Fix all negotiations to be case-insensitive
+ * Stable sort preferences of same quality according to client order
+ * Support Node.js 0.6
+
+0.4.7 / 2014-06-24
+==================
+
+ * Handle invalid provided languages
+ * Handle invalid provided media types
+
+0.4.6 / 2014-06-11
+==================
+
+ * Order by specificity when quality is the same
+
+0.4.5 / 2014-05-29
+==================
+
+ * Fix regression in empty header handling
+
+0.4.4 / 2014-05-29
+==================
+
+ * Fix behaviors when headers are not present
+
+0.4.3 / 2014-04-16
+==================
+
+ * Handle slashes on media params correctly
+
+0.4.2 / 2014-02-28
+==================
+
+ * Fix media type sorting
+ * Handle media types params strictly
+
+0.4.1 / 2014-01-16
+==================
+
+ * Use most specific matches
+
+0.4.0 / 2014-01-09
+==================
+
+ * Remove preferred prefix from methods
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE
new file mode 100755
index 0000000..ea6b9e2
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE
@@ -0,0 +1,24 @@
+(The MIT License)
+
+Copyright (c) 2012-2014 Federico Romero
+Copyright (c) 2012-2014 Isaac Z. Schlueter
+Copyright (c) 2014-2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md
new file mode 100755
index 0000000..04a67ff
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md
@@ -0,0 +1,203 @@
+# negotiator
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+An HTTP content negotiator for Node.js
+
+## Installation
+
+```sh
+$ npm install negotiator
+```
+
+## API
+
+```js
+var Negotiator = require('negotiator')
+```
+
+### Accept Negotiation
+
+```js
+availableMediaTypes = ['text/html', 'text/plain', 'application/json']
+
+// The negotiator constructor receives a request object
+negotiator = new Negotiator(request)
+
+// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8'
+
+negotiator.mediaTypes()
+// -> ['text/html', 'image/jpeg', 'application/*']
+
+negotiator.mediaTypes(availableMediaTypes)
+// -> ['text/html', 'application/json']
+
+negotiator.mediaType(availableMediaTypes)
+// -> 'text/html'
+```
+
+You can check a working example at `examples/accept.js`.
+
+#### Methods
+
+##### mediaType()
+
+Returns the most preferred media type from the client.
+
+##### mediaType(availableMediaType)
+
+Returns the most preferred media type from a list of available media types.
+
+##### mediaTypes()
+
+Returns an array of preferred media types ordered by the client preference.
+
+##### mediaTypes(availableMediaTypes)
+
+Returns an array of preferred media types ordered by priority from a list of
+available media types.
+
+### Accept-Language Negotiation
+
+```js
+negotiator = new Negotiator(request)
+
+availableLanguages = ['en', 'es', 'fr']
+
+// Let's say Accept-Language header is 'en;q=0.8, es, pt'
+
+negotiator.languages()
+// -> ['es', 'pt', 'en']
+
+negotiator.languages(availableLanguages)
+// -> ['es', 'en']
+
+language = negotiator.language(availableLanguages)
+// -> 'es'
+```
+
+You can check a working example at `examples/language.js`.
+
+#### Methods
+
+##### language()
+
+Returns the most preferred language from the client.
+
+##### language(availableLanguages)
+
+Returns the most preferred language from a list of available languages.
+
+##### languages()
+
+Returns an array of preferred languages ordered by the client preference.
+
+##### languages(availableLanguages)
+
+Returns an array of preferred languages ordered by priority from a list of
+available languages.
+
+### Accept-Charset Negotiation
+
+```js
+availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5']
+
+negotiator = new Negotiator(request)
+
+// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2'
+
+negotiator.charsets()
+// -> ['utf-8', 'iso-8859-1', 'utf-7']
+
+negotiator.charsets(availableCharsets)
+// -> ['utf-8', 'iso-8859-1']
+
+negotiator.charset(availableCharsets)
+// -> 'utf-8'
+```
+
+You can check a working example at `examples/charset.js`.
+
+#### Methods
+
+##### charset()
+
+Returns the most preferred charset from the client.
+
+##### charset(availableCharsets)
+
+Returns the most preferred charset from a list of available charsets.
+
+##### charsets()
+
+Returns an array of preferred charsets ordered by the client preference.
+
+##### charsets(availableCharsets)
+
+Returns an array of preferred charsets ordered by priority from a list of
+available charsets.
+
+### Accept-Encoding Negotiation
+
+```js
+availableEncodings = ['identity', 'gzip']
+
+negotiator = new Negotiator(request)
+
+// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5'
+
+negotiator.encodings()
+// -> ['gzip', 'identity', 'compress']
+
+negotiator.encodings(availableEncodings)
+// -> ['gzip', 'identity']
+
+negotiator.encoding(availableEncodings)
+// -> 'gzip'
+```
+
+You can check a working example at `examples/encoding.js`.
+
+#### Methods
+
+##### encoding()
+
+Returns the most preferred encoding from the client.
+
+##### encoding(availableEncodings)
+
+Returns the most preferred encoding from a list of available encodings.
+
+##### encodings()
+
+Returns an array of preferred encodings ordered by the client preference.
+
+##### encodings(availableEncodings)
+
+Returns an array of preferred encodings ordered by priority from a list of
+available encodings.
+
+## See Also
+
+The [accepts](https://npmjs.org/package/accepts#readme) module builds on
+this module and provides an alternative interface, mime type validation,
+and more.
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/negotiator.svg
+[npm-url]: https://npmjs.org/package/negotiator
+[node-version-image]: https://img.shields.io/node/v/negotiator.svg
+[node-version-url]: https://nodejs.org/en/download/
+[travis-image]: https://img.shields.io/travis/jshttp/negotiator/master.svg
+[travis-url]: https://travis-ci.org/jshttp/negotiator
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg
+[downloads-url]: https://npmjs.org/package/negotiator
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/index.js b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/index.js
new file mode 100755
index 0000000..8d4f6a2
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/index.js
@@ -0,0 +1,124 @@
+/*!
+ * negotiator
+ * Copyright(c) 2012 Federico Romero
+ * Copyright(c) 2012-2014 Isaac Z. Schlueter
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Cached loaded submodules.
+ * @private
+ */
+
+var modules = Object.create(null);
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = Negotiator;
+module.exports.Negotiator = Negotiator;
+
+/**
+ * Create a Negotiator instance from a request.
+ * @param {object} request
+ * @public
+ */
+
+function Negotiator(request) {
+ if (!(this instanceof Negotiator)) {
+ return new Negotiator(request);
+ }
+
+ this.request = request;
+}
+
+Negotiator.prototype.charset = function charset(available) {
+ var set = this.charsets(available);
+ return set && set[0];
+};
+
+Negotiator.prototype.charsets = function charsets(available) {
+ var preferredCharsets = loadModule('charset').preferredCharsets;
+ return preferredCharsets(this.request.headers['accept-charset'], available);
+};
+
+Negotiator.prototype.encoding = function encoding(available) {
+ var set = this.encodings(available);
+ return set && set[0];
+};
+
+Negotiator.prototype.encodings = function encodings(available) {
+ var preferredEncodings = loadModule('encoding').preferredEncodings;
+ return preferredEncodings(this.request.headers['accept-encoding'], available);
+};
+
+Negotiator.prototype.language = function language(available) {
+ var set = this.languages(available);
+ return set && set[0];
+};
+
+Negotiator.prototype.languages = function languages(available) {
+ var preferredLanguages = loadModule('language').preferredLanguages;
+ return preferredLanguages(this.request.headers['accept-language'], available);
+};
+
+Negotiator.prototype.mediaType = function mediaType(available) {
+ var set = this.mediaTypes(available);
+ return set && set[0];
+};
+
+Negotiator.prototype.mediaTypes = function mediaTypes(available) {
+ var preferredMediaTypes = loadModule('mediaType').preferredMediaTypes;
+ return preferredMediaTypes(this.request.headers.accept, available);
+};
+
+// Backwards compatibility
+Negotiator.prototype.preferredCharset = Negotiator.prototype.charset;
+Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;
+Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;
+Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;
+Negotiator.prototype.preferredLanguage = Negotiator.prototype.language;
+Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages;
+Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;
+Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;
+
+/**
+ * Load the given module.
+ * @private
+ */
+
+function loadModule(moduleName) {
+ var module = modules[moduleName];
+
+ if (module !== undefined) {
+ return module;
+ }
+
+ // This uses a switch for static require analysis
+ switch (moduleName) {
+ case 'charset':
+ module = require('./lib/charset');
+ break;
+ case 'encoding':
+ module = require('./lib/encoding');
+ break;
+ case 'language':
+ module = require('./lib/language');
+ break;
+ case 'mediaType':
+ module = require('./lib/mediaType');
+ break;
+ default:
+ throw new Error('Cannot find module \'' + moduleName + '\'');
+ }
+
+ // Store to prevent invoking require()
+ modules[moduleName] = module;
+
+ return module;
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js
new file mode 100755
index 0000000..ac4217b
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js
@@ -0,0 +1,169 @@
+/**
+ * negotiator
+ * Copyright(c) 2012 Isaac Z. Schlueter
+ * Copyright(c) 2014 Federico Romero
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = preferredCharsets;
+module.exports.preferredCharsets = preferredCharsets;
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
+
+/**
+ * Parse the Accept-Charset header.
+ * @private
+ */
+
+function parseAcceptCharset(accept) {
+ var accepts = accept.split(',');
+
+ for (var i = 0, j = 0; i < accepts.length; i++) {
+ var charset = parseCharset(accepts[i].trim(), i);
+
+ if (charset) {
+ accepts[j++] = charset;
+ }
+ }
+
+ // trim accepts
+ accepts.length = j;
+
+ return accepts;
+}
+
+/**
+ * Parse a charset from the Accept-Charset header.
+ * @private
+ */
+
+function parseCharset(str, i) {
+ var match = simpleCharsetRegExp.exec(str);
+ if (!match) return null;
+
+ var charset = match[1];
+ var q = 1;
+ if (match[2]) {
+ var params = match[2].split(';')
+ for (var i = 0; i < params.length; i ++) {
+ var p = params[i].trim().split('=');
+ if (p[0] === 'q') {
+ q = parseFloat(p[1]);
+ break;
+ }
+ }
+ }
+
+ return {
+ charset: charset,
+ q: q,
+ i: i
+ };
+}
+
+/**
+ * Get the priority of a charset.
+ * @private
+ */
+
+function getCharsetPriority(charset, accepted, index) {
+ var priority = {o: -1, q: 0, s: 0};
+
+ for (var i = 0; i < accepted.length; i++) {
+ var spec = specify(charset, accepted[i], index);
+
+ if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
+ priority = spec;
+ }
+ }
+
+ return priority;
+}
+
+/**
+ * Get the specificity of the charset.
+ * @private
+ */
+
+function specify(charset, spec, index) {
+ var s = 0;
+ if(spec.charset.toLowerCase() === charset.toLowerCase()){
+ s |= 1;
+ } else if (spec.charset !== '*' ) {
+ return null
+ }
+
+ return {
+ i: index,
+ o: spec.i,
+ q: spec.q,
+ s: s
+ }
+}
+
+/**
+ * Get the preferred charsets from an Accept-Charset header.
+ * @public
+ */
+
+function preferredCharsets(accept, provided) {
+ // RFC 2616 sec 14.2: no header = *
+ var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');
+
+ if (!provided) {
+ // sorted list of all charsets
+ return accepts
+ .filter(isQuality)
+ .sort(compareSpecs)
+ .map(getFullCharset);
+ }
+
+ var priorities = provided.map(function getPriority(type, index) {
+ return getCharsetPriority(type, accepts, index);
+ });
+
+ // sorted list of accepted charsets
+ return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {
+ return provided[priorities.indexOf(priority)];
+ });
+}
+
+/**
+ * Compare two specs.
+ * @private
+ */
+
+function compareSpecs(a, b) {
+ return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
+}
+
+/**
+ * Get full charset string.
+ * @private
+ */
+
+function getFullCharset(spec) {
+ return spec.charset;
+}
+
+/**
+ * Check if a spec has any quality.
+ * @private
+ */
+
+function isQuality(spec) {
+ return spec.q > 0;
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js
new file mode 100755
index 0000000..70ac3de
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js
@@ -0,0 +1,184 @@
+/**
+ * negotiator
+ * Copyright(c) 2012 Isaac Z. Schlueter
+ * Copyright(c) 2014 Federico Romero
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = preferredEncodings;
+module.exports.preferredEncodings = preferredEncodings;
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
+
+/**
+ * Parse the Accept-Encoding header.
+ * @private
+ */
+
+function parseAcceptEncoding(accept) {
+ var accepts = accept.split(',');
+ var hasIdentity = false;
+ var minQuality = 1;
+
+ for (var i = 0, j = 0; i < accepts.length; i++) {
+ var encoding = parseEncoding(accepts[i].trim(), i);
+
+ if (encoding) {
+ accepts[j++] = encoding;
+ hasIdentity = hasIdentity || specify('identity', encoding);
+ minQuality = Math.min(minQuality, encoding.q || 1);
+ }
+ }
+
+ if (!hasIdentity) {
+ /*
+ * If identity doesn't explicitly appear in the accept-encoding header,
+ * it's added to the list of acceptable encoding with the lowest q
+ */
+ accepts[j++] = {
+ encoding: 'identity',
+ q: minQuality,
+ i: i
+ };
+ }
+
+ // trim accepts
+ accepts.length = j;
+
+ return accepts;
+}
+
+/**
+ * Parse an encoding from the Accept-Encoding header.
+ * @private
+ */
+
+function parseEncoding(str, i) {
+ var match = simpleEncodingRegExp.exec(str);
+ if (!match) return null;
+
+ var encoding = match[1];
+ var q = 1;
+ if (match[2]) {
+ var params = match[2].split(';');
+ for (var i = 0; i < params.length; i ++) {
+ var p = params[i].trim().split('=');
+ if (p[0] === 'q') {
+ q = parseFloat(p[1]);
+ break;
+ }
+ }
+ }
+
+ return {
+ encoding: encoding,
+ q: q,
+ i: i
+ };
+}
+
+/**
+ * Get the priority of an encoding.
+ * @private
+ */
+
+function getEncodingPriority(encoding, accepted, index) {
+ var priority = {o: -1, q: 0, s: 0};
+
+ for (var i = 0; i < accepted.length; i++) {
+ var spec = specify(encoding, accepted[i], index);
+
+ if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
+ priority = spec;
+ }
+ }
+
+ return priority;
+}
+
+/**
+ * Get the specificity of the encoding.
+ * @private
+ */
+
+function specify(encoding, spec, index) {
+ var s = 0;
+ if(spec.encoding.toLowerCase() === encoding.toLowerCase()){
+ s |= 1;
+ } else if (spec.encoding !== '*' ) {
+ return null
+ }
+
+ return {
+ i: index,
+ o: spec.i,
+ q: spec.q,
+ s: s
+ }
+};
+
+/**
+ * Get the preferred encodings from an Accept-Encoding header.
+ * @public
+ */
+
+function preferredEncodings(accept, provided) {
+ var accepts = parseAcceptEncoding(accept || '');
+
+ if (!provided) {
+ // sorted list of all encodings
+ return accepts
+ .filter(isQuality)
+ .sort(compareSpecs)
+ .map(getFullEncoding);
+ }
+
+ var priorities = provided.map(function getPriority(type, index) {
+ return getEncodingPriority(type, accepts, index);
+ });
+
+ // sorted list of accepted encodings
+ return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {
+ return provided[priorities.indexOf(priority)];
+ });
+}
+
+/**
+ * Compare two specs.
+ * @private
+ */
+
+function compareSpecs(a, b) {
+ return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
+}
+
+/**
+ * Get full encoding string.
+ * @private
+ */
+
+function getFullEncoding(spec) {
+ return spec.encoding;
+}
+
+/**
+ * Check if a spec has any quality.
+ * @private
+ */
+
+function isQuality(spec) {
+ return spec.q > 0;
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js
new file mode 100755
index 0000000..1bd2d0e
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js
@@ -0,0 +1,179 @@
+/**
+ * negotiator
+ * Copyright(c) 2012 Isaac Z. Schlueter
+ * Copyright(c) 2014 Federico Romero
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = preferredLanguages;
+module.exports.preferredLanguages = preferredLanguages;
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;
+
+/**
+ * Parse the Accept-Language header.
+ * @private
+ */
+
+function parseAcceptLanguage(accept) {
+ var accepts = accept.split(',');
+
+ for (var i = 0, j = 0; i < accepts.length; i++) {
+ var langauge = parseLanguage(accepts[i].trim(), i);
+
+ if (langauge) {
+ accepts[j++] = langauge;
+ }
+ }
+
+ // trim accepts
+ accepts.length = j;
+
+ return accepts;
+}
+
+/**
+ * Parse a language from the Accept-Language header.
+ * @private
+ */
+
+function parseLanguage(str, i) {
+ var match = simpleLanguageRegExp.exec(str);
+ if (!match) return null;
+
+ var prefix = match[1],
+ suffix = match[2],
+ full = prefix;
+
+ if (suffix) full += "-" + suffix;
+
+ var q = 1;
+ if (match[3]) {
+ var params = match[3].split(';')
+ for (var i = 0; i < params.length; i ++) {
+ var p = params[i].split('=');
+ if (p[0] === 'q') q = parseFloat(p[1]);
+ }
+ }
+
+ return {
+ prefix: prefix,
+ suffix: suffix,
+ q: q,
+ i: i,
+ full: full
+ };
+}
+
+/**
+ * Get the priority of a language.
+ * @private
+ */
+
+function getLanguagePriority(language, accepted, index) {
+ var priority = {o: -1, q: 0, s: 0};
+
+ for (var i = 0; i < accepted.length; i++) {
+ var spec = specify(language, accepted[i], index);
+
+ if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
+ priority = spec;
+ }
+ }
+
+ return priority;
+}
+
+/**
+ * Get the specificity of the language.
+ * @private
+ */
+
+function specify(language, spec, index) {
+ var p = parseLanguage(language)
+ if (!p) return null;
+ var s = 0;
+ if(spec.full.toLowerCase() === p.full.toLowerCase()){
+ s |= 4;
+ } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {
+ s |= 2;
+ } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {
+ s |= 1;
+ } else if (spec.full !== '*' ) {
+ return null
+ }
+
+ return {
+ i: index,
+ o: spec.i,
+ q: spec.q,
+ s: s
+ }
+};
+
+/**
+ * Get the preferred languages from an Accept-Language header.
+ * @public
+ */
+
+function preferredLanguages(accept, provided) {
+ // RFC 2616 sec 14.4: no header = *
+ var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');
+
+ if (!provided) {
+ // sorted list of all languages
+ return accepts
+ .filter(isQuality)
+ .sort(compareSpecs)
+ .map(getFullLanguage);
+ }
+
+ var priorities = provided.map(function getPriority(type, index) {
+ return getLanguagePriority(type, accepts, index);
+ });
+
+ // sorted list of accepted languages
+ return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {
+ return provided[priorities.indexOf(priority)];
+ });
+}
+
+/**
+ * Compare two specs.
+ * @private
+ */
+
+function compareSpecs(a, b) {
+ return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
+}
+
+/**
+ * Get full language string.
+ * @private
+ */
+
+function getFullLanguage(spec) {
+ return spec.full;
+}
+
+/**
+ * Check if a spec has any quality.
+ * @private
+ */
+
+function isQuality(spec) {
+ return spec.q > 0;
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js
new file mode 100755
index 0000000..67309dd
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js
@@ -0,0 +1,294 @@
+/**
+ * negotiator
+ * Copyright(c) 2012 Isaac Z. Schlueter
+ * Copyright(c) 2014 Federico Romero
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = preferredMediaTypes;
+module.exports.preferredMediaTypes = preferredMediaTypes;
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
+
+/**
+ * Parse the Accept header.
+ * @private
+ */
+
+function parseAccept(accept) {
+ var accepts = splitMediaTypes(accept);
+
+ for (var i = 0, j = 0; i < accepts.length; i++) {
+ var mediaType = parseMediaType(accepts[i].trim(), i);
+
+ if (mediaType) {
+ accepts[j++] = mediaType;
+ }
+ }
+
+ // trim accepts
+ accepts.length = j;
+
+ return accepts;
+}
+
+/**
+ * Parse a media type from the Accept header.
+ * @private
+ */
+
+function parseMediaType(str, i) {
+ var match = simpleMediaTypeRegExp.exec(str);
+ if (!match) return null;
+
+ var params = Object.create(null);
+ var q = 1;
+ var subtype = match[2];
+ var type = match[1];
+
+ if (match[3]) {
+ var kvps = splitParameters(match[3]).map(splitKeyValuePair);
+
+ for (var j = 0; j < kvps.length; j++) {
+ var pair = kvps[j];
+ var key = pair[0].toLowerCase();
+ var val = pair[1];
+
+ // get the value, unwrapping quotes
+ var value = val && val[0] === '"' && val[val.length - 1] === '"'
+ ? val.substr(1, val.length - 2)
+ : val;
+
+ if (key === 'q') {
+ q = parseFloat(value);
+ break;
+ }
+
+ // store parameter
+ params[key] = value;
+ }
+ }
+
+ return {
+ type: type,
+ subtype: subtype,
+ params: params,
+ q: q,
+ i: i
+ };
+}
+
+/**
+ * Get the priority of a media type.
+ * @private
+ */
+
+function getMediaTypePriority(type, accepted, index) {
+ var priority = {o: -1, q: 0, s: 0};
+
+ for (var i = 0; i < accepted.length; i++) {
+ var spec = specify(type, accepted[i], index);
+
+ if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
+ priority = spec;
+ }
+ }
+
+ return priority;
+}
+
+/**
+ * Get the specificity of the media type.
+ * @private
+ */
+
+function specify(type, spec, index) {
+ var p = parseMediaType(type);
+ var s = 0;
+
+ if (!p) {
+ return null;
+ }
+
+ if(spec.type.toLowerCase() == p.type.toLowerCase()) {
+ s |= 4
+ } else if(spec.type != '*') {
+ return null;
+ }
+
+ if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {
+ s |= 2
+ } else if(spec.subtype != '*') {
+ return null;
+ }
+
+ var keys = Object.keys(spec.params);
+ if (keys.length > 0) {
+ if (keys.every(function (k) {
+ return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();
+ })) {
+ s |= 1
+ } else {
+ return null
+ }
+ }
+
+ return {
+ i: index,
+ o: spec.i,
+ q: spec.q,
+ s: s,
+ }
+}
+
+/**
+ * Get the preferred media types from an Accept header.
+ * @public
+ */
+
+function preferredMediaTypes(accept, provided) {
+ // RFC 2616 sec 14.2: no header = */*
+ var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');
+
+ if (!provided) {
+ // sorted list of all types
+ return accepts
+ .filter(isQuality)
+ .sort(compareSpecs)
+ .map(getFullType);
+ }
+
+ var priorities = provided.map(function getPriority(type, index) {
+ return getMediaTypePriority(type, accepts, index);
+ });
+
+ // sorted list of accepted types
+ return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {
+ return provided[priorities.indexOf(priority)];
+ });
+}
+
+/**
+ * Compare two specs.
+ * @private
+ */
+
+function compareSpecs(a, b) {
+ return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
+}
+
+/**
+ * Get full type string.
+ * @private
+ */
+
+function getFullType(spec) {
+ return spec.type + '/' + spec.subtype;
+}
+
+/**
+ * Check if a spec has any quality.
+ * @private
+ */
+
+function isQuality(spec) {
+ return spec.q > 0;
+}
+
+/**
+ * Count the number of quotes in a string.
+ * @private
+ */
+
+function quoteCount(string) {
+ var count = 0;
+ var index = 0;
+
+ while ((index = string.indexOf('"', index)) !== -1) {
+ count++;
+ index++;
+ }
+
+ return count;
+}
+
+/**
+ * Split a key value pair.
+ * @private
+ */
+
+function splitKeyValuePair(str) {
+ var index = str.indexOf('=');
+ var key;
+ var val;
+
+ if (index === -1) {
+ key = str;
+ } else {
+ key = str.substr(0, index);
+ val = str.substr(index + 1);
+ }
+
+ return [key, val];
+}
+
+/**
+ * Split an Accept header into media types.
+ * @private
+ */
+
+function splitMediaTypes(accept) {
+ var accepts = accept.split(',');
+
+ for (var i = 1, j = 0; i < accepts.length; i++) {
+ if (quoteCount(accepts[j]) % 2 == 0) {
+ accepts[++j] = accepts[i];
+ } else {
+ accepts[j] += ',' + accepts[i];
+ }
+ }
+
+ // trim accepts
+ accepts.length = j + 1;
+
+ return accepts;
+}
+
+/**
+ * Split a string of parameters.
+ * @private
+ */
+
+function splitParameters(str) {
+ var parameters = str.split(';');
+
+ for (var i = 1, j = 0; i < parameters.length; i++) {
+ if (quoteCount(parameters[j]) % 2 == 0) {
+ parameters[++j] = parameters[i];
+ } else {
+ parameters[j] += ';' + parameters[i];
+ }
+ }
+
+ // trim parameters
+ parameters.length = j + 1;
+
+ for (var i = 0; i < parameters.length; i++) {
+ parameters[i] = parameters[i].trim();
+ }
+
+ return parameters;
+}
diff --git a/server/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json
new file mode 100755
index 0000000..8b73084
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json
@@ -0,0 +1,90 @@
+{
+ "name": "negotiator",
+ "description": "HTTP content negotiation",
+ "version": "0.6.1",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Federico Romero",
+ "email": "federico.romero@outboxlabs.com"
+ },
+ {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "http",
+ "content negotiation",
+ "accept",
+ "accept-language",
+ "accept-encoding",
+ "accept-charset"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/negotiator.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.3",
+ "mocha": "~1.21.5"
+ },
+ "files": [
+ "lib/",
+ "HISTORY.md",
+ "LICENSE",
+ "index.js",
+ "README.md"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --check-leaks --bail test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "751c381c32707f238143cd65d78520e16f4ef9e5",
+ "bugs": {
+ "url": "https://github.com/jshttp/negotiator/issues"
+ },
+ "homepage": "https://github.com/jshttp/negotiator#readme",
+ "_id": "negotiator@0.6.1",
+ "_shasum": "2b327184e8992101177b28563fb5e7102acd0ca9",
+ "_from": "negotiator@0.6.1",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "2b327184e8992101177b28563fb5e7102acd0ca9",
+ "tarball": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "federomero",
+ "email": "federomero@gmail.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/negotiator-0.6.1.tgz_1462250848695_0.027451182017102838"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz"
+}
diff --git a/server/node_modules/express/node_modules/accepts/package.json b/server/node_modules/express/node_modules/accepts/package.json
new file mode 100755
index 0000000..6dd6e2f
--- /dev/null
+++ b/server/node_modules/express/node_modules/accepts/package.json
@@ -0,0 +1,78 @@
+{
+ "name": "accepts",
+ "description": "Higher-level content negotiation",
+ "version": "1.3.3",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/accepts.git"
+ },
+ "dependencies": {
+ "mime-types": "~2.1.11",
+ "negotiator": "0.6.1"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.3",
+ "mocha": "~1.21.5"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --check-leaks --bail test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "keywords": [
+ "content",
+ "negotiation",
+ "accept",
+ "accepts"
+ ],
+ "gitHead": "3e925b1e65ed7da2798849683d49814680dfa426",
+ "bugs": {
+ "url": "https://github.com/jshttp/accepts/issues"
+ },
+ "homepage": "https://github.com/jshttp/accepts#readme",
+ "_id": "accepts@1.3.3",
+ "_shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca",
+ "_from": "accepts@>=1.3.3 <1.4.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca",
+ "tarball": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/accepts-1.3.3.tgz_1462251932032_0.7092335098423064"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz"
+}
diff --git a/server/node_modules/express/node_modules/array-flatten/LICENSE b/server/node_modules/express/node_modules/array-flatten/LICENSE
new file mode 100755
index 0000000..983fbe8
--- /dev/null
+++ b/server/node_modules/express/node_modules/array-flatten/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/array-flatten/README.md b/server/node_modules/express/node_modules/array-flatten/README.md
new file mode 100755
index 0000000..91fa5b6
--- /dev/null
+++ b/server/node_modules/express/node_modules/array-flatten/README.md
@@ -0,0 +1,43 @@
+# Array Flatten
+
+[![NPM version][npm-image]][npm-url]
+[![NPM downloads][downloads-image]][downloads-url]
+[![Build status][travis-image]][travis-url]
+[![Test coverage][coveralls-image]][coveralls-url]
+
+> Flatten an array of nested arrays into a single flat array. Accepts an optional depth.
+
+## Installation
+
+```
+npm install array-flatten --save
+```
+
+## Usage
+
+```javascript
+var flatten = require('array-flatten')
+
+flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
+//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
+
+flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
+//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
+
+(function () {
+ flatten(arguments) //=> [1, 2, 3]
+})(1, [2, 3])
+```
+
+## License
+
+MIT
+
+[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat
+[npm-url]: https://npmjs.org/package/array-flatten
+[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat
+[downloads-url]: https://npmjs.org/package/array-flatten
+[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat
+[travis-url]: https://travis-ci.org/blakeembrey/array-flatten
+[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master
diff --git a/server/node_modules/express/node_modules/array-flatten/array-flatten.js b/server/node_modules/express/node_modules/array-flatten/array-flatten.js
new file mode 100755
index 0000000..089117b
--- /dev/null
+++ b/server/node_modules/express/node_modules/array-flatten/array-flatten.js
@@ -0,0 +1,64 @@
+'use strict'
+
+/**
+ * Expose `arrayFlatten`.
+ */
+module.exports = arrayFlatten
+
+/**
+ * Recursive flatten function with depth.
+ *
+ * @param {Array} array
+ * @param {Array} result
+ * @param {Number} depth
+ * @return {Array}
+ */
+function flattenWithDepth (array, result, depth) {
+ for (var i = 0; i < array.length; i++) {
+ var value = array[i]
+
+ if (depth > 0 && Array.isArray(value)) {
+ flattenWithDepth(value, result, depth - 1)
+ } else {
+ result.push(value)
+ }
+ }
+
+ return result
+}
+
+/**
+ * Recursive flatten function. Omitting depth is slightly faster.
+ *
+ * @param {Array} array
+ * @param {Array} result
+ * @return {Array}
+ */
+function flattenForever (array, result) {
+ for (var i = 0; i < array.length; i++) {
+ var value = array[i]
+
+ if (Array.isArray(value)) {
+ flattenForever(value, result)
+ } else {
+ result.push(value)
+ }
+ }
+
+ return result
+}
+
+/**
+ * Flatten an array, with the ability to define a depth.
+ *
+ * @param {Array} array
+ * @param {Number} depth
+ * @return {Array}
+ */
+function arrayFlatten (array, depth) {
+ if (depth == null) {
+ return flattenForever(array, [])
+ }
+
+ return flattenWithDepth(array, [], depth)
+}
diff --git a/server/node_modules/express/node_modules/array-flatten/package.json b/server/node_modules/express/node_modules/array-flatten/package.json
new file mode 100755
index 0000000..b1636ee
--- /dev/null
+++ b/server/node_modules/express/node_modules/array-flatten/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "array-flatten",
+ "version": "1.1.1",
+ "description": "Flatten an array of nested arrays into a single flat array",
+ "main": "array-flatten.js",
+ "files": [
+ "array-flatten.js",
+ "LICENSE"
+ ],
+ "scripts": {
+ "test": "istanbul cover _mocha -- -R spec"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/blakeembrey/array-flatten.git"
+ },
+ "keywords": [
+ "array",
+ "flatten",
+ "arguments",
+ "depth"
+ ],
+ "author": {
+ "name": "Blake Embrey",
+ "email": "hello@blakeembrey.com",
+ "url": "http://blakeembrey.me"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/blakeembrey/array-flatten/issues"
+ },
+ "homepage": "https://github.com/blakeembrey/array-flatten",
+ "devDependencies": {
+ "istanbul": "^0.3.13",
+ "mocha": "^2.2.4",
+ "pre-commit": "^1.0.7",
+ "standard": "^3.7.3"
+ },
+ "gitHead": "1963a9189229d408e1e8f585a00c8be9edbd1803",
+ "_id": "array-flatten@1.1.1",
+ "_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
+ "_from": "array-flatten@1.1.1",
+ "_npmVersion": "2.11.3",
+ "_nodeVersion": "2.3.3",
+ "_npmUser": {
+ "name": "blakeembrey",
+ "email": "hello@blakeembrey.com"
+ },
+ "maintainers": [
+ {
+ "name": "blakeembrey",
+ "email": "hello@blakeembrey.com"
+ }
+ ],
+ "dist": {
+ "shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
+ "tarball": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/content-disposition/HISTORY.md b/server/node_modules/express/node_modules/content-disposition/HISTORY.md
new file mode 100755
index 0000000..76d494c
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-disposition/HISTORY.md
@@ -0,0 +1,45 @@
+0.5.1 / 2016-01-17
+==================
+
+ * perf: enable strict mode
+
+0.5.0 / 2014-10-11
+==================
+
+ * Add `parse` function
+
+0.4.0 / 2014-09-21
+==================
+
+ * Expand non-Unicode `filename` to the full ISO-8859-1 charset
+
+0.3.0 / 2014-09-20
+==================
+
+ * Add `fallback` option
+ * Add `type` option
+
+0.2.0 / 2014-09-19
+==================
+
+ * Reduce ambiguity of file names with hex escape in buggy browsers
+
+0.1.2 / 2014-09-19
+==================
+
+ * Fix periodic invalid Unicode filename header
+
+0.1.1 / 2014-09-19
+==================
+
+ * Fix invalid characters appearing in `filename*` parameter
+
+0.1.0 / 2014-09-18
+==================
+
+ * Make the `filename` argument optional
+
+0.0.0 / 2014-09-18
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/content-disposition/LICENSE b/server/node_modules/express/node_modules/content-disposition/LICENSE
new file mode 100755
index 0000000..b7dce6c
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-disposition/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/content-disposition/README.md b/server/node_modules/express/node_modules/content-disposition/README.md
new file mode 100755
index 0000000..5cebce4
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-disposition/README.md
@@ -0,0 +1,141 @@
+# content-disposition
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Create and parse HTTP `Content-Disposition` header
+
+## Installation
+
+```sh
+$ npm install content-disposition
+```
+
+## API
+
+```js
+var contentDisposition = require('content-disposition')
+```
+
+### contentDisposition(filename, options)
+
+Create an attachment `Content-Disposition` header value using the given file name,
+if supplied. The `filename` is optional and if no file name is desired, but you
+want to specify `options`, set `filename` to `undefined`.
+
+```js
+res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf'))
+```
+
+**note** HTTP headers are of the ISO-8859-1 character set. If you are writing this
+header through a means different from `setHeader` in Node.js, you'll want to specify
+the `'binary'` encoding in Node.js.
+
+#### Options
+
+`contentDisposition` accepts these properties in the options object.
+
+##### fallback
+
+If the `filename` option is outside ISO-8859-1, then the file name is actually
+stored in a supplemental field for clients that support Unicode file names and
+a ISO-8859-1 version of the file name is automatically generated.
+
+This specifies the ISO-8859-1 file name to override the automatic generation or
+disables the generation all together, defaults to `true`.
+
+ - A string will specify the ISO-8859-1 file name to use in place of automatic
+ generation.
+ - `false` will disable including a ISO-8859-1 file name and only include the
+ Unicode version (unless the file name is already ISO-8859-1).
+ - `true` will enable automatic generation if the file name is outside ISO-8859-1.
+
+If the `filename` option is ISO-8859-1 and this option is specified and has a
+different value, then the `filename` option is encoded in the extended field
+and this set as the fallback field, even though they are both ISO-8859-1.
+
+##### type
+
+Specifies the disposition type, defaults to `"attachment"`. This can also be
+`"inline"`, or any other value (all values except inline are treated like
+`attachment`, but can convey additional information if both parties agree to
+it). The type is normalized to lower-case.
+
+### contentDisposition.parse(string)
+
+```js
+var disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt');
+```
+
+Parse a `Content-Disposition` header string. This automatically handles extended
+("Unicode") parameters by decoding them and providing them under the standard
+parameter name. This will return an object with the following properties (examples
+are shown for the string `'attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt'`):
+
+ - `type`: The disposition type (always lower case). Example: `'attachment'`
+
+ - `parameters`: An object of the parameters in the disposition (name of parameter
+ always lower case and extended versions replace non-extended versions). Example:
+ `{filename: "€ rates.txt"}`
+
+## Examples
+
+### Send a file for download
+
+```js
+var contentDisposition = require('content-disposition')
+var destroy = require('destroy')
+var http = require('http')
+var onFinished = require('on-finished')
+
+var filePath = '/path/to/public/plans.pdf'
+
+http.createServer(function onRequest(req, res) {
+ // set headers
+ res.setHeader('Content-Type', 'application/pdf')
+ res.setHeader('Content-Disposition', contentDisposition(filePath))
+
+ // send file
+ var stream = fs.createReadStream(filePath)
+ stream.pipe(res)
+ onFinished(res, function (err) {
+ destroy(stream)
+ })
+})
+```
+
+## Testing
+
+```sh
+$ npm test
+```
+
+## References
+
+- [RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1][rfc-2616]
+- [RFC 5987: Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters][rfc-5987]
+- [RFC 6266: Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)][rfc-6266]
+- [Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987][tc-2231]
+
+[rfc-2616]: https://tools.ietf.org/html/rfc2616
+[rfc-5987]: https://tools.ietf.org/html/rfc5987
+[rfc-6266]: https://tools.ietf.org/html/rfc6266
+[tc-2231]: http://greenbytes.de/tech/tc2231/
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/content-disposition.svg?style=flat
+[npm-url]: https://npmjs.org/package/content-disposition
+[node-version-image]: https://img.shields.io/node/v/content-disposition.svg?style=flat
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/content-disposition.svg?style=flat
+[travis-url]: https://travis-ci.org/jshttp/content-disposition
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/content-disposition.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg?style=flat
+[downloads-url]: https://npmjs.org/package/content-disposition
diff --git a/server/node_modules/express/node_modules/content-disposition/index.js b/server/node_modules/express/node_modules/content-disposition/index.js
new file mode 100755
index 0000000..4a352dc
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-disposition/index.js
@@ -0,0 +1,445 @@
+/*!
+ * content-disposition
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ */
+
+module.exports = contentDisposition
+module.exports.parse = parse
+
+/**
+ * Module dependencies.
+ */
+
+var basename = require('path').basename
+
+/**
+ * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including "%")
+ */
+
+var encodeUriAttrCharRegExp = /[\x00-\x20"'\(\)*,\/:;<=>?@\[\\\]\{\}\x7f]/g
+
+/**
+ * RegExp to match percent encoding escape.
+ */
+
+var hexEscapeRegExp = /%[0-9A-Fa-f]{2}/
+var hexEscapeReplaceRegExp = /%([0-9A-Fa-f]{2})/g
+
+/**
+ * RegExp to match non-latin1 characters.
+ */
+
+var nonLatin1RegExp = /[^\x20-\x7e\xa0-\xff]/g
+
+/**
+ * RegExp to match quoted-pair in RFC 2616
+ *
+ * quoted-pair = "\" CHAR
+ * CHAR =
+ */
+
+var qescRegExp = /\\([\u0000-\u007f])/g;
+
+/**
+ * RegExp to match chars that must be quoted-pair in RFC 2616
+ */
+
+var quoteRegExp = /([\\"])/g
+
+/**
+ * RegExp for various RFC 2616 grammar
+ *
+ * parameter = token "=" ( token | quoted-string )
+ * token = 1*
+ * separators = "(" | ")" | "<" | ">" | "@"
+ * | "," | ";" | ":" | "\" | <">
+ * | "/" | "[" | "]" | "?" | "="
+ * | "{" | "}" | SP | HT
+ * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
+ * qdtext = >
+ * quoted-pair = "\" CHAR
+ * CHAR =
+ * TEXT =
+ * LWS = [CRLF] 1*( SP | HT )
+ * CRLF = CR LF
+ * CR =
+ * LF =
+ * SP =
+ * HT =
+ * CTL =
+ * OCTET =
+ */
+
+var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g
+var textRegExp = /^[\x20-\x7e\x80-\xff]+$/
+var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/
+
+/**
+ * RegExp for various RFC 5987 grammar
+ *
+ * ext-value = charset "'" [ language ] "'" value-chars
+ * charset = "UTF-8" / "ISO-8859-1" / mime-charset
+ * mime-charset = 1*mime-charsetc
+ * mime-charsetc = ALPHA / DIGIT
+ * / "!" / "#" / "$" / "%" / "&"
+ * / "+" / "-" / "^" / "_" / "`"
+ * / "{" / "}" / "~"
+ * language = ( 2*3ALPHA [ extlang ] )
+ * / 4ALPHA
+ * / 5*8ALPHA
+ * extlang = *3( "-" 3ALPHA )
+ * value-chars = *( pct-encoded / attr-char )
+ * pct-encoded = "%" HEXDIG HEXDIG
+ * attr-char = ALPHA / DIGIT
+ * / "!" / "#" / "$" / "&" / "+" / "-" / "."
+ * / "^" / "_" / "`" / "|" / "~"
+ */
+
+var extValueRegExp = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+\-\.^_`|~])+)$/
+
+/**
+ * RegExp for various RFC 6266 grammar
+ *
+ * disposition-type = "inline" | "attachment" | disp-ext-type
+ * disp-ext-type = token
+ * disposition-parm = filename-parm | disp-ext-parm
+ * filename-parm = "filename" "=" value
+ * | "filename*" "=" ext-value
+ * disp-ext-parm = token "=" value
+ * | ext-token "=" ext-value
+ * ext-token =
+ */
+
+var dispositionTypeRegExp = /^([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *(?:$|;)/
+
+/**
+ * Create an attachment Content-Disposition header.
+ *
+ * @param {string} [filename]
+ * @param {object} [options]
+ * @param {string} [options.type=attachment]
+ * @param {string|boolean} [options.fallback=true]
+ * @return {string}
+ * @api public
+ */
+
+function contentDisposition(filename, options) {
+ var opts = options || {}
+
+ // get type
+ var type = opts.type || 'attachment'
+
+ // get parameters
+ var params = createparams(filename, opts.fallback)
+
+ // format into string
+ return format(new ContentDisposition(type, params))
+}
+
+/**
+ * Create parameters object from filename and fallback.
+ *
+ * @param {string} [filename]
+ * @param {string|boolean} [fallback=true]
+ * @return {object}
+ * @api private
+ */
+
+function createparams(filename, fallback) {
+ if (filename === undefined) {
+ return
+ }
+
+ var params = {}
+
+ if (typeof filename !== 'string') {
+ throw new TypeError('filename must be a string')
+ }
+
+ // fallback defaults to true
+ if (fallback === undefined) {
+ fallback = true
+ }
+
+ if (typeof fallback !== 'string' && typeof fallback !== 'boolean') {
+ throw new TypeError('fallback must be a string or boolean')
+ }
+
+ if (typeof fallback === 'string' && nonLatin1RegExp.test(fallback)) {
+ throw new TypeError('fallback must be ISO-8859-1 string')
+ }
+
+ // restrict to file base name
+ var name = basename(filename)
+
+ // determine if name is suitable for quoted string
+ var isQuotedString = textRegExp.test(name)
+
+ // generate fallback name
+ var fallbackName = typeof fallback !== 'string'
+ ? fallback && getlatin1(name)
+ : basename(fallback)
+ var hasFallback = typeof fallbackName === 'string' && fallbackName !== name
+
+ // set extended filename parameter
+ if (hasFallback || !isQuotedString || hexEscapeRegExp.test(name)) {
+ params['filename*'] = name
+ }
+
+ // set filename parameter
+ if (isQuotedString || hasFallback) {
+ params.filename = hasFallback
+ ? fallbackName
+ : name
+ }
+
+ return params
+}
+
+/**
+ * Format object to Content-Disposition header.
+ *
+ * @param {object} obj
+ * @param {string} obj.type
+ * @param {object} [obj.parameters]
+ * @return {string}
+ * @api private
+ */
+
+function format(obj) {
+ var parameters = obj.parameters
+ var type = obj.type
+
+ if (!type || typeof type !== 'string' || !tokenRegExp.test(type)) {
+ throw new TypeError('invalid type')
+ }
+
+ // start with normalized type
+ var string = String(type).toLowerCase()
+
+ // append parameters
+ if (parameters && typeof parameters === 'object') {
+ var param
+ var params = Object.keys(parameters).sort()
+
+ for (var i = 0; i < params.length; i++) {
+ param = params[i]
+
+ var val = param.substr(-1) === '*'
+ ? ustring(parameters[param])
+ : qstring(parameters[param])
+
+ string += '; ' + param + '=' + val
+ }
+ }
+
+ return string
+}
+
+/**
+ * Decode a RFC 6987 field value (gracefully).
+ *
+ * @param {string} str
+ * @return {string}
+ * @api private
+ */
+
+function decodefield(str) {
+ var match = extValueRegExp.exec(str)
+
+ if (!match) {
+ throw new TypeError('invalid extended field value')
+ }
+
+ var charset = match[1].toLowerCase()
+ var encoded = match[2]
+ var value
+
+ // to binary string
+ var binary = encoded.replace(hexEscapeReplaceRegExp, pdecode)
+
+ switch (charset) {
+ case 'iso-8859-1':
+ value = getlatin1(binary)
+ break
+ case 'utf-8':
+ value = new Buffer(binary, 'binary').toString('utf8')
+ break
+ default:
+ throw new TypeError('unsupported charset in extended field')
+ }
+
+ return value
+}
+
+/**
+ * Get ISO-8859-1 version of string.
+ *
+ * @param {string} val
+ * @return {string}
+ * @api private
+ */
+
+function getlatin1(val) {
+ // simple Unicode -> ISO-8859-1 transformation
+ return String(val).replace(nonLatin1RegExp, '?')
+}
+
+/**
+ * Parse Content-Disposition header string.
+ *
+ * @param {string} string
+ * @return {object}
+ * @api private
+ */
+
+function parse(string) {
+ if (!string || typeof string !== 'string') {
+ throw new TypeError('argument string is required')
+ }
+
+ var match = dispositionTypeRegExp.exec(string)
+
+ if (!match) {
+ throw new TypeError('invalid type format')
+ }
+
+ // normalize type
+ var index = match[0].length
+ var type = match[1].toLowerCase()
+
+ var key
+ var names = []
+ var params = {}
+ var value
+
+ // calculate index to start at
+ index = paramRegExp.lastIndex = match[0].substr(-1) === ';'
+ ? index - 1
+ : index
+
+ // match parameters
+ while (match = paramRegExp.exec(string)) {
+ if (match.index !== index) {
+ throw new TypeError('invalid parameter format')
+ }
+
+ index += match[0].length
+ key = match[1].toLowerCase()
+ value = match[2]
+
+ if (names.indexOf(key) !== -1) {
+ throw new TypeError('invalid duplicate parameter')
+ }
+
+ names.push(key)
+
+ if (key.indexOf('*') + 1 === key.length) {
+ // decode extended value
+ key = key.slice(0, -1)
+ value = decodefield(value)
+
+ // overwrite existing value
+ params[key] = value
+ continue
+ }
+
+ if (typeof params[key] === 'string') {
+ continue
+ }
+
+ if (value[0] === '"') {
+ // remove quotes and escapes
+ value = value
+ .substr(1, value.length - 2)
+ .replace(qescRegExp, '$1')
+ }
+
+ params[key] = value
+ }
+
+ if (index !== -1 && index !== string.length) {
+ throw new TypeError('invalid parameter format')
+ }
+
+ return new ContentDisposition(type, params)
+}
+
+/**
+ * Percent decode a single character.
+ *
+ * @param {string} str
+ * @param {string} hex
+ * @return {string}
+ * @api private
+ */
+
+function pdecode(str, hex) {
+ return String.fromCharCode(parseInt(hex, 16))
+}
+
+/**
+ * Percent encode a single character.
+ *
+ * @param {string} char
+ * @return {string}
+ * @api private
+ */
+
+function pencode(char) {
+ var hex = String(char)
+ .charCodeAt(0)
+ .toString(16)
+ .toUpperCase()
+ return hex.length === 1
+ ? '%0' + hex
+ : '%' + hex
+}
+
+/**
+ * Quote a string for HTTP.
+ *
+ * @param {string} val
+ * @return {string}
+ * @api private
+ */
+
+function qstring(val) {
+ var str = String(val)
+
+ return '"' + str.replace(quoteRegExp, '\\$1') + '"'
+}
+
+/**
+ * Encode a Unicode string for HTTP (RFC 5987).
+ *
+ * @param {string} val
+ * @return {string}
+ * @api private
+ */
+
+function ustring(val) {
+ var str = String(val)
+
+ // percent encode as UTF-8
+ var encoded = encodeURIComponent(str)
+ .replace(encodeUriAttrCharRegExp, pencode)
+
+ return 'UTF-8\'\'' + encoded
+}
+
+/**
+ * Class for parsed Content-Disposition header for v8 optimization
+ */
+
+function ContentDisposition(type, parameters) {
+ this.type = type
+ this.parameters = parameters
+}
diff --git a/server/node_modules/express/node_modules/content-disposition/package.json b/server/node_modules/express/node_modules/content-disposition/package.json
new file mode 100755
index 0000000..ef77d51
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-disposition/package.json
@@ -0,0 +1,66 @@
+{
+ "name": "content-disposition",
+ "description": "Create and parse Content-Disposition header",
+ "version": "0.5.1",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "content-disposition",
+ "http",
+ "rfc6266",
+ "res"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/content-disposition.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.2",
+ "mocha": "1.21.5"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "7b391db3af5629d4c698f1de21802940bb9f22a5",
+ "bugs": {
+ "url": "https://github.com/jshttp/content-disposition/issues"
+ },
+ "homepage": "https://github.com/jshttp/content-disposition",
+ "_id": "content-disposition@0.5.1",
+ "_shasum": "87476c6a67c8daa87e32e87616df883ba7fb071b",
+ "_from": "content-disposition@0.5.1",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "87476c6a67c8daa87e32e87616df883ba7fb071b",
+ "tarball": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/content-type/HISTORY.md b/server/node_modules/express/node_modules/content-type/HISTORY.md
new file mode 100755
index 0000000..01652ff
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-type/HISTORY.md
@@ -0,0 +1,14 @@
+1.0.2 / 2016-05-09
+==================
+
+ * perf: enable strict mode
+
+1.0.1 / 2015-02-13
+==================
+
+ * Improve missing `Content-Type` header error message
+
+1.0.0 / 2015-02-01
+==================
+
+ * Initial implementation, derived from `media-typer@0.3.0`
diff --git a/server/node_modules/express/node_modules/content-type/LICENSE b/server/node_modules/express/node_modules/content-type/LICENSE
new file mode 100755
index 0000000..34b1a2d
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-type/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/content-type/README.md b/server/node_modules/express/node_modules/content-type/README.md
new file mode 100755
index 0000000..3ed6741
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-type/README.md
@@ -0,0 +1,92 @@
+# content-type
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Create and parse HTTP Content-Type header according to RFC 7231
+
+## Installation
+
+```sh
+$ npm install content-type
+```
+
+## API
+
+```js
+var contentType = require('content-type')
+```
+
+### contentType.parse(string)
+
+```js
+var obj = contentType.parse('image/svg+xml; charset=utf-8')
+```
+
+Parse a content type string. This will return an object with the following
+properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`):
+
+ - `type`: The media type (the type and subtype, always lower case).
+ Example: `'image/svg+xml'`
+
+ - `parameters`: An object of the parameters in the media type (name of parameter
+ always lower case). Example: `{charset: 'utf-8'}`
+
+Throws a `TypeError` if the string is missing or invalid.
+
+### contentType.parse(req)
+
+```js
+var obj = contentType.parse(req)
+```
+
+Parse the `content-type` header from the given `req`. Short-cut for
+`contentType.parse(req.headers['content-type'])`.
+
+Throws a `TypeError` if the `Content-Type` header is missing or invalid.
+
+### contentType.parse(res)
+
+```js
+var obj = contentType.parse(res)
+```
+
+Parse the `content-type` header set on the given `res`. Short-cut for
+`contentType.parse(res.getHeader('content-type'))`.
+
+Throws a `TypeError` if the `Content-Type` header is missing or invalid.
+
+### contentType.format(obj)
+
+```js
+var str = contentType.format({type: 'image/svg+xml'})
+```
+
+Format an object into a content type string. This will return a string of the
+content type for the given object with the following properties (examples are
+shown that produce the string `'image/svg+xml; charset=utf-8'`):
+
+ - `type`: The media type (will be lower-cased). Example: `'image/svg+xml'`
+
+ - `parameters`: An object of the parameters in the media type (name of the
+ parameter will be lower-cased). Example: `{charset: 'utf-8'}`
+
+Throws a `TypeError` if the object contains an invalid type or parameter names.
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/content-type.svg
+[npm-url]: https://npmjs.org/package/content-type
+[node-version-image]: https://img.shields.io/node/v/content-type.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/content-type/master.svg
+[travis-url]: https://travis-ci.org/jshttp/content-type
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/content-type/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/content-type
+[downloads-image]: https://img.shields.io/npm/dm/content-type.svg
+[downloads-url]: https://npmjs.org/package/content-type
diff --git a/server/node_modules/express/node_modules/content-type/index.js b/server/node_modules/express/node_modules/content-type/index.js
new file mode 100755
index 0000000..61ba6b5
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-type/index.js
@@ -0,0 +1,216 @@
+/*!
+ * content-type
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * RegExp to match *( ";" parameter ) in RFC 7231 sec 3.1.1.1
+ *
+ * parameter = token "=" ( token / quoted-string )
+ * token = 1*tchar
+ * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*"
+ * / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
+ * / DIGIT / ALPHA
+ * ; any VCHAR, except delimiters
+ * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE
+ * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text
+ * obs-text = %x80-FF
+ * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
+ */
+var paramRegExp = /; *([!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+) */g
+var textRegExp = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/
+var tokenRegExp = /^[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+$/
+
+/**
+ * RegExp to match quoted-pair in RFC 7230 sec 3.2.6
+ *
+ * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
+ * obs-text = %x80-FF
+ */
+var qescRegExp = /\\([\u000b\u0020-\u00ff])/g
+
+/**
+ * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6
+ */
+var quoteRegExp = /([\\"])/g
+
+/**
+ * RegExp to match type in RFC 6838
+ *
+ * media-type = type "/" subtype
+ * type = token
+ * subtype = token
+ */
+var typeRegExp = /^[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+\/[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+$/
+
+/**
+ * Module exports.
+ * @public
+ */
+
+exports.format = format
+exports.parse = parse
+
+/**
+ * Format object to media type.
+ *
+ * @param {object} obj
+ * @return {string}
+ * @public
+ */
+
+function format(obj) {
+ if (!obj || typeof obj !== 'object') {
+ throw new TypeError('argument obj is required')
+ }
+
+ var parameters = obj.parameters
+ var type = obj.type
+
+ if (!type || !typeRegExp.test(type)) {
+ throw new TypeError('invalid type')
+ }
+
+ var string = type
+
+ // append parameters
+ if (parameters && typeof parameters === 'object') {
+ var param
+ var params = Object.keys(parameters).sort()
+
+ for (var i = 0; i < params.length; i++) {
+ param = params[i]
+
+ if (!tokenRegExp.test(param)) {
+ throw new TypeError('invalid parameter name')
+ }
+
+ string += '; ' + param + '=' + qstring(parameters[param])
+ }
+ }
+
+ return string
+}
+
+/**
+ * Parse media type to object.
+ *
+ * @param {string|object} string
+ * @return {Object}
+ * @public
+ */
+
+function parse(string) {
+ if (!string) {
+ throw new TypeError('argument string is required')
+ }
+
+ if (typeof string === 'object') {
+ // support req/res-like objects as argument
+ string = getcontenttype(string)
+
+ if (typeof string !== 'string') {
+ throw new TypeError('content-type header is missing from object');
+ }
+ }
+
+ if (typeof string !== 'string') {
+ throw new TypeError('argument string is required to be a string')
+ }
+
+ var index = string.indexOf(';')
+ var type = index !== -1
+ ? string.substr(0, index).trim()
+ : string.trim()
+
+ if (!typeRegExp.test(type)) {
+ throw new TypeError('invalid media type')
+ }
+
+ var key
+ var match
+ var obj = new ContentType(type.toLowerCase())
+ var value
+
+ paramRegExp.lastIndex = index
+
+ while (match = paramRegExp.exec(string)) {
+ if (match.index !== index) {
+ throw new TypeError('invalid parameter format')
+ }
+
+ index += match[0].length
+ key = match[1].toLowerCase()
+ value = match[2]
+
+ if (value[0] === '"') {
+ // remove quotes and escapes
+ value = value
+ .substr(1, value.length - 2)
+ .replace(qescRegExp, '$1')
+ }
+
+ obj.parameters[key] = value
+ }
+
+ if (index !== -1 && index !== string.length) {
+ throw new TypeError('invalid parameter format')
+ }
+
+ return obj
+}
+
+/**
+ * Get content-type from req/res objects.
+ *
+ * @param {object}
+ * @return {Object}
+ * @private
+ */
+
+function getcontenttype(obj) {
+ if (typeof obj.getHeader === 'function') {
+ // res-like
+ return obj.getHeader('content-type')
+ }
+
+ if (typeof obj.headers === 'object') {
+ // req-like
+ return obj.headers && obj.headers['content-type']
+ }
+}
+
+/**
+ * Quote a string if necessary.
+ *
+ * @param {string} val
+ * @return {string}
+ * @private
+ */
+
+function qstring(val) {
+ var str = String(val)
+
+ // no need to quote tokens
+ if (tokenRegExp.test(str)) {
+ return str
+ }
+
+ if (str.length > 0 && !textRegExp.test(str)) {
+ throw new TypeError('invalid parameter value')
+ }
+
+ return '"' + str.replace(quoteRegExp, '\\$1') + '"'
+}
+
+/**
+ * Class to represent a content type.
+ * @private
+ */
+function ContentType(type) {
+ this.parameters = Object.create(null)
+ this.type = type
+}
diff --git a/server/node_modules/express/node_modules/content-type/package.json b/server/node_modules/express/node_modules/content-type/package.json
new file mode 100755
index 0000000..9f11091
--- /dev/null
+++ b/server/node_modules/express/node_modules/content-type/package.json
@@ -0,0 +1,70 @@
+{
+ "name": "content-type",
+ "description": "Create and parse HTTP Content-Type header",
+ "version": "1.0.2",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "keywords": [
+ "content-type",
+ "http",
+ "req",
+ "res",
+ "rfc7231"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/content-type.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.3",
+ "mocha": "~1.21.5"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --check-leaks --bail test/",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
+ },
+ "gitHead": "8118763adfbbac80cf1254191889330aec8b8be7",
+ "bugs": {
+ "url": "https://github.com/jshttp/content-type/issues"
+ },
+ "homepage": "https://github.com/jshttp/content-type#readme",
+ "_id": "content-type@1.0.2",
+ "_shasum": "b7d113aee7a8dd27bd21133c4dc2529df1721eed",
+ "_from": "content-type@>=1.0.2 <1.1.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "b7d113aee7a8dd27bd21133c4dc2529df1721eed",
+ "tarball": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/content-type-1.0.2.tgz_1462852785748_0.5491233412176371"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/cookie-signature/.npmignore b/server/node_modules/express/node_modules/cookie-signature/.npmignore
new file mode 100755
index 0000000..f1250e5
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie-signature/.npmignore
@@ -0,0 +1,4 @@
+support
+test
+examples
+*.sock
diff --git a/server/node_modules/express/node_modules/cookie-signature/History.md b/server/node_modules/express/node_modules/cookie-signature/History.md
new file mode 100755
index 0000000..78513cc
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie-signature/History.md
@@ -0,0 +1,38 @@
+1.0.6 / 2015-02-03
+==================
+
+* use `npm test` instead of `make test` to run tests
+* clearer assertion messages when checking input
+
+
+1.0.5 / 2014-09-05
+==================
+
+* add license to package.json
+
+1.0.4 / 2014-06-25
+==================
+
+ * corrected avoidance of timing attacks (thanks @tenbits!)
+
+1.0.3 / 2014-01-28
+==================
+
+ * [incorrect] fix for timing attacks
+
+1.0.2 / 2014-01-28
+==================
+
+ * fix missing repository warning
+ * fix typo in test
+
+1.0.1 / 2013-04-15
+==================
+
+ * Revert "Changed underlying HMAC algo. to sha512."
+ * Revert "Fix for timing attacks on MAC verification."
+
+0.0.1 / 2010-01-03
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/cookie-signature/Readme.md b/server/node_modules/express/node_modules/cookie-signature/Readme.md
new file mode 100755
index 0000000..2559e84
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie-signature/Readme.md
@@ -0,0 +1,42 @@
+
+# cookie-signature
+
+ Sign and unsign cookies.
+
+## Example
+
+```js
+var cookie = require('cookie-signature');
+
+var val = cookie.sign('hello', 'tobiiscool');
+val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI');
+
+var val = cookie.sign('hello', 'tobiiscool');
+cookie.unsign(val, 'tobiiscool').should.equal('hello');
+cookie.unsign(val, 'luna').should.be.false;
+```
+
+## License
+
+(The MIT License)
+
+Copyright (c) 2012 LearnBoost <tj@learnboost.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/server/node_modules/express/node_modules/cookie-signature/index.js b/server/node_modules/express/node_modules/cookie-signature/index.js
new file mode 100755
index 0000000..b8c9463
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie-signature/index.js
@@ -0,0 +1,51 @@
+/**
+ * Module dependencies.
+ */
+
+var crypto = require('crypto');
+
+/**
+ * Sign the given `val` with `secret`.
+ *
+ * @param {String} val
+ * @param {String} secret
+ * @return {String}
+ * @api private
+ */
+
+exports.sign = function(val, secret){
+ if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string.");
+ if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
+ return val + '.' + crypto
+ .createHmac('sha256', secret)
+ .update(val)
+ .digest('base64')
+ .replace(/\=+$/, '');
+};
+
+/**
+ * Unsign and decode the given `val` with `secret`,
+ * returning `false` if the signature is invalid.
+ *
+ * @param {String} val
+ * @param {String} secret
+ * @return {String|Boolean}
+ * @api private
+ */
+
+exports.unsign = function(val, secret){
+ if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided.");
+ if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
+ var str = val.slice(0, val.lastIndexOf('.'))
+ , mac = exports.sign(str, secret);
+
+ return sha1(mac) == sha1(val) ? str : false;
+};
+
+/**
+ * Private
+ */
+
+function sha1(str){
+ return crypto.createHash('sha1').update(str).digest('hex');
+}
diff --git a/server/node_modules/express/node_modules/cookie-signature/package.json b/server/node_modules/express/node_modules/cookie-signature/package.json
new file mode 100755
index 0000000..f564ea5
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie-signature/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "cookie-signature",
+ "version": "1.0.6",
+ "description": "Sign and unsign cookies",
+ "keywords": [
+ "cookie",
+ "sign",
+ "unsign"
+ ],
+ "author": {
+ "name": "TJ Holowaychuk",
+ "email": "tj@learnboost.com"
+ },
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/visionmedia/node-cookie-signature.git"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "mocha": "*",
+ "should": "*"
+ },
+ "scripts": {
+ "test": "mocha --require should --reporter spec"
+ },
+ "main": "index",
+ "gitHead": "391b56cf44d88c493491b7e3fc53208cfb976d2a",
+ "bugs": {
+ "url": "https://github.com/visionmedia/node-cookie-signature/issues"
+ },
+ "homepage": "https://github.com/visionmedia/node-cookie-signature",
+ "_id": "cookie-signature@1.0.6",
+ "_shasum": "e303a882b342cc3ee8ca513a79999734dab3ae2c",
+ "_from": "cookie-signature@1.0.6",
+ "_npmVersion": "2.3.0",
+ "_nodeVersion": "0.10.36",
+ "_npmUser": {
+ "name": "natevw",
+ "email": "natevw@yahoo.com"
+ },
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "natevw",
+ "email": "natevw@yahoo.com"
+ }
+ ],
+ "dist": {
+ "shasum": "e303a882b342cc3ee8ca513a79999734dab3ae2c",
+ "tarball": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/cookie/HISTORY.md b/server/node_modules/express/node_modules/cookie/HISTORY.md
new file mode 100755
index 0000000..5bd6485
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie/HISTORY.md
@@ -0,0 +1,118 @@
+0.3.1 / 2016-05-26
+==================
+
+ * Fix `sameSite: true` to work with draft-7 clients
+ - `true` now sends `SameSite=Strict` instead of `SameSite`
+
+0.3.0 / 2016-05-26
+==================
+
+ * Add `sameSite` option
+ - Replaces `firstPartyOnly` option, never implemented by browsers
+ * Improve error message when `encode` is not a function
+ * Improve error message when `expires` is not a `Date`
+
+0.2.4 / 2016-05-20
+==================
+
+ * perf: enable strict mode
+ * perf: use for loop in parse
+ * perf: use string concatination for serialization
+
+0.2.3 / 2015-10-25
+==================
+
+ * Fix cookie `Max-Age` to never be a floating point number
+
+0.2.2 / 2015-09-17
+==================
+
+ * Fix regression when setting empty cookie value
+ - Ease the new restriction, which is just basic header-level validation
+ * Fix typo in invalid value errors
+
+0.2.1 / 2015-09-17
+==================
+
+ * Throw on invalid values provided to `serialize`
+ - Ensures the resulting string is a valid HTTP header value
+
+0.2.0 / 2015-08-13
+==================
+
+ * Add `firstPartyOnly` option
+ * Throw better error for invalid argument to parse
+ * perf: hoist regular expression
+
+0.1.5 / 2015-09-17
+==================
+
+ * Fix regression when setting empty cookie value
+ - Ease the new restriction, which is just basic header-level validation
+ * Fix typo in invalid value errors
+
+0.1.4 / 2015-09-17
+==================
+
+ * Throw better error for invalid argument to parse
+ * Throw on invalid values provided to `serialize`
+ - Ensures the resulting string is a valid HTTP header value
+
+0.1.3 / 2015-05-19
+==================
+
+ * Reduce the scope of try-catch deopt
+ * Remove argument reassignments
+
+0.1.2 / 2014-04-16
+==================
+
+ * Remove unnecessary files from npm package
+
+0.1.1 / 2014-02-23
+==================
+
+ * Fix bad parse when cookie value contained a comma
+ * Fix support for `maxAge` of `0`
+
+0.1.0 / 2013-05-01
+==================
+
+ * Add `decode` option
+ * Add `encode` option
+
+0.0.6 / 2013-04-08
+==================
+
+ * Ignore cookie parts missing `=`
+
+0.0.5 / 2012-10-29
+==================
+
+ * Return raw cookie value if value unescape errors
+
+0.0.4 / 2012-06-21
+==================
+
+ * Use encode/decodeURIComponent for cookie encoding/decoding
+ - Improve server/client interoperability
+
+0.0.3 / 2012-06-06
+==================
+
+ * Only escape special characters per the cookie RFC
+
+0.0.2 / 2012-06-01
+==================
+
+ * Fix `maxAge` option to not throw error
+
+0.0.1 / 2012-05-28
+==================
+
+ * Add more tests
+
+0.0.0 / 2012-05-28
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/cookie/LICENSE b/server/node_modules/express/node_modules/cookie/LICENSE
new file mode 100755
index 0000000..058b6b4
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie/LICENSE
@@ -0,0 +1,24 @@
+(The MIT License)
+
+Copyright (c) 2012-2014 Roman Shtylman
+Copyright (c) 2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/server/node_modules/express/node_modules/cookie/README.md b/server/node_modules/express/node_modules/cookie/README.md
new file mode 100755
index 0000000..db0d078
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie/README.md
@@ -0,0 +1,220 @@
+# cookie
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Basic HTTP cookie parser and serializer for HTTP servers.
+
+## Installation
+
+```sh
+$ npm install cookie
+```
+
+## API
+
+```js
+var cookie = require('cookie');
+```
+
+### cookie.parse(str, options)
+
+Parse an HTTP `Cookie` header string and returning an object of all cookie name-value pairs.
+The `str` argument is the string representing a `Cookie` header value and `options` is an
+optional object containing additional parsing options.
+
+```js
+var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
+// { foo: 'bar', equation: 'E=mc^2' }
+```
+
+#### Options
+
+`cookie.parse` accepts these properties in the options object.
+
+##### decode
+
+Specifies a function that will be used to decode a cookie's value. Since the value of a cookie
+has a limited character set (and must be a simple string), this function can be used to decode
+a previously-encoded cookie value into a JavaScript string or other object.
+
+The default function is the global `decodeURIComponent`, which will decode any URL-encoded
+sequences into their byte representations.
+
+**note** if an error is thrown from this function, the original, non-decoded cookie value will
+be returned as the cookie's value.
+
+### cookie.serialize(name, value, options)
+
+Serialize a cookie name-value pair into a `Set-Cookie` header string. The `name` argument is the
+name for the cookie, the `value` argument is the value to set the cookie to, and the `options`
+argument is an optional object containing additional serialization options.
+
+```js
+var setCookie = cookie.serialize('foo', 'bar');
+// foo=bar
+```
+
+#### Options
+
+`cookie.serialize` accepts these properties in the options object.
+
+##### domain
+
+Specifies the value for the [`Domain` `Set-Cookie` attribute][rfc-6266-5.2.3]. By default, no
+domain is set, and most clients will consider the cookie to apply to only the current domain.
+
+##### encode
+
+Specifies a function that will be used to encode a cookie's value. Since value of a cookie
+has a limited character set (and must be a simple string), this function can be used to encode
+a value into a string suited for a cookie's value.
+
+The default function is the global `ecodeURIComponent`, which will encode a JavaScript string
+into UTF-8 byte sequences and then URL-encode any that fall outside of the cookie range.
+
+##### expires
+
+Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute][rfc-6266-5.2.1].
+By default, no expiration is set, and most clients will consider this a "non-persistent cookie" and
+will delete it on a condition like exiting a web browser application.
+
+**note** the [cookie storage model specification][rfc-6266-5.3] states that if both `expires` and
+`magAge` are set, then `maxAge` takes precedence, but it is possiblke not all clients by obey this,
+so if both are set, they should point to the same date and time.
+
+##### httpOnly
+
+Specifies the `boolean` value for the [`HttpOnly` `Set-Cookie` attribute][rfc-6266-5.2.6]. When truthy,
+the `HttpOnly` attribute is set, otherwise it is not. By default, the `HttpOnly` attribute is not set.
+
+**note** be careful when setting this to `true`, as compliant clients will not allow client-side
+JavaScript to see the cookie in `document.cookie`.
+
+##### maxAge
+
+Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute][rfc-6266-5.2.2].
+The given number will be converted to an integer by rounding down. By default, no maximum age is set.
+
+**note** the [cookie storage model specification][rfc-6266-5.3] states that if both `expires` and
+`magAge` are set, then `maxAge` takes precedence, but it is possiblke not all clients by obey this,
+so if both are set, they should point to the same date and time.
+
+##### path
+
+Specifies the value for the [`Path` `Set-Cookie` attribute][rfc-6266-5.2.4]. By default, the path
+is considered the ["default path"][rfc-6266-5.1.4]. By default, no maximum age is set, and most
+clients will consider this a "non-persistent cookie" and will delete it on a condition like exiting
+a web browser application.
+
+##### sameSite
+
+Specifies the `boolean` or `string` to be the value for the [`SameSite` `Set-Cookie` attribute][draft-west-first-party-cookies-07].
+
+ - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
+ - `false` will not set the `SameSite` attribute.
+ - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement.
+ - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
+
+More information about the different enforcement levels can be found in the specification
+https://tools.ietf.org/html/draft-west-first-party-cookies-07#section-4.1.1
+
+**note** This is an attribute that has not yet been fully standardized, and may change in the future.
+This also means many clients may ignore this attribute until they understand it.
+
+##### secure
+
+Specifies the `boolean` value for the [`Secure` `Set-Cookie` attribute][rfc-6266-5.2.5]. When truthy,
+the `Secure` attribute is set, otherwise it is not. By default, the `Secure` attribute is not set.
+
+**note** be careful when setting this to `true`, as compliant clients will not send the cookie back to
+the server in the future if the browser does not have an HTTPS connection.
+
+## Example
+
+The following example uses this module in conjunction with the Node.js core HTTP server
+to prompt a user for their name and display it back on future visits.
+
+```js
+var cookie = require('cookie');
+var escapeHtml = require('escape-html');
+var http = require('http');
+var url = require('url');
+
+function onRequest(req, res) {
+ // Parse the query string
+ var query = url.parse(req.url, true, true).query;
+
+ if (query && query.name) {
+ // Set a new cookie with the name
+ res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
+ httpOnly: true,
+ maxAge: 60 * 60 * 24 * 7 // 1 week
+ }));
+
+ // Redirect back after setting cookie
+ res.statusCode = 302;
+ res.setHeader('Location', req.headers.referer || '/');
+ res.end();
+ return;
+ }
+
+ // Parse the cookies on the request
+ var cookies = cookie.parse(req.headers.cookie || '');
+
+ // Get the visitor name set in the cookie
+ var name = cookies.name;
+
+ res.setHeader('Content-Type', 'text/html; charset=UTF-8');
+
+ if (name) {
+ res.write('Welcome back, ' + escapeHtml(name) + ' !
');
+ } else {
+ res.write('Hello, new visitor!
');
+ }
+
+ res.write(' values
+ *
+ * @param {string} str
+ * @param {object} [options]
+ * @return {object}
+ * @public
+ */
+
+function parse(str, options) {
+ if (typeof str !== 'string') {
+ throw new TypeError('argument str must be a string');
+ }
+
+ var obj = {}
+ var opt = options || {};
+ var pairs = str.split(pairSplitRegExp);
+ var dec = opt.decode || decode;
+
+ for (var i = 0; i < pairs.length; i++) {
+ var pair = pairs[i];
+ var eq_idx = pair.indexOf('=');
+
+ // skip things that don't look like key=value
+ if (eq_idx < 0) {
+ continue;
+ }
+
+ var key = pair.substr(0, eq_idx).trim()
+ var val = pair.substr(++eq_idx, pair.length).trim();
+
+ // quoted values
+ if ('"' == val[0]) {
+ val = val.slice(1, -1);
+ }
+
+ // only assign once
+ if (undefined == obj[key]) {
+ obj[key] = tryDecode(val, dec);
+ }
+ }
+
+ return obj;
+}
+
+/**
+ * Serialize data into a cookie header.
+ *
+ * Serialize the a name value pair into a cookie string suitable for
+ * http headers. An optional options object specified cookie parameters.
+ *
+ * serialize('foo', 'bar', { httpOnly: true })
+ * => "foo=bar; httpOnly"
+ *
+ * @param {string} name
+ * @param {string} val
+ * @param {object} [options]
+ * @return {string}
+ * @public
+ */
+
+function serialize(name, val, options) {
+ var opt = options || {};
+ var enc = opt.encode || encode;
+
+ if (typeof enc !== 'function') {
+ throw new TypeError('option encode is invalid');
+ }
+
+ if (!fieldContentRegExp.test(name)) {
+ throw new TypeError('argument name is invalid');
+ }
+
+ var value = enc(val);
+
+ if (value && !fieldContentRegExp.test(value)) {
+ throw new TypeError('argument val is invalid');
+ }
+
+ var str = name + '=' + value;
+
+ if (null != opt.maxAge) {
+ var maxAge = opt.maxAge - 0;
+ if (isNaN(maxAge)) throw new Error('maxAge should be a Number');
+ str += '; Max-Age=' + Math.floor(maxAge);
+ }
+
+ if (opt.domain) {
+ if (!fieldContentRegExp.test(opt.domain)) {
+ throw new TypeError('option domain is invalid');
+ }
+
+ str += '; Domain=' + opt.domain;
+ }
+
+ if (opt.path) {
+ if (!fieldContentRegExp.test(opt.path)) {
+ throw new TypeError('option path is invalid');
+ }
+
+ str += '; Path=' + opt.path;
+ }
+
+ if (opt.expires) {
+ if (typeof opt.expires.toUTCString !== 'function') {
+ throw new TypeError('option expires is invalid');
+ }
+
+ str += '; Expires=' + opt.expires.toUTCString();
+ }
+
+ if (opt.httpOnly) {
+ str += '; HttpOnly';
+ }
+
+ if (opt.secure) {
+ str += '; Secure';
+ }
+
+ if (opt.sameSite) {
+ var sameSite = typeof opt.sameSite === 'string'
+ ? opt.sameSite.toLowerCase() : opt.sameSite;
+
+ switch (sameSite) {
+ case true:
+ str += '; SameSite=Strict';
+ break;
+ case 'lax':
+ str += '; SameSite=Lax';
+ break;
+ case 'strict':
+ str += '; SameSite=Strict';
+ break;
+ default:
+ throw new TypeError('option sameSite is invalid');
+ }
+ }
+
+ return str;
+}
+
+/**
+ * Try decoding a string using a decoding function.
+ *
+ * @param {string} str
+ * @param {function} decode
+ * @private
+ */
+
+function tryDecode(str, decode) {
+ try {
+ return decode(str);
+ } catch (e) {
+ return str;
+ }
+}
diff --git a/server/node_modules/express/node_modules/cookie/package.json b/server/node_modules/express/node_modules/cookie/package.json
new file mode 100755
index 0000000..a24d81c
--- /dev/null
+++ b/server/node_modules/express/node_modules/cookie/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "cookie",
+ "description": "HTTP server cookie parsing and serialization",
+ "version": "0.3.1",
+ "author": {
+ "name": "Roman Shtylman",
+ "email": "shtylman@gmail.com"
+ },
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "cookie",
+ "cookies"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jshttp/cookie"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
+ },
+ "gitHead": "e3c77d497d66c8b8d4b677b8954c1b192a09f0b3",
+ "bugs": {
+ "url": "https://github.com/jshttp/cookie/issues"
+ },
+ "homepage": "https://github.com/jshttp/cookie",
+ "_id": "cookie@0.3.1",
+ "_shasum": "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb",
+ "_from": "cookie@0.3.1",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb",
+ "tarball": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/cookie-0.3.1.tgz_1464323556714_0.6435900838114321"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz"
+}
diff --git a/server/node_modules/express/node_modules/debug/.jshintrc b/server/node_modules/express/node_modules/debug/.jshintrc
new file mode 100755
index 0000000..299877f
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/.jshintrc
@@ -0,0 +1,3 @@
+{
+ "laxbreak": true
+}
diff --git a/server/node_modules/express/node_modules/debug/.npmignore b/server/node_modules/express/node_modules/debug/.npmignore
new file mode 100755
index 0000000..7e6163d
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/.npmignore
@@ -0,0 +1,6 @@
+support
+test
+examples
+example
+*.sock
+dist
diff --git a/server/node_modules/express/node_modules/debug/History.md b/server/node_modules/express/node_modules/debug/History.md
new file mode 100755
index 0000000..854c971
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/History.md
@@ -0,0 +1,195 @@
+
+2.2.0 / 2015-05-09
+==================
+
+ * package: update "ms" to v0.7.1 (#202, @dougwilson)
+ * README: add logging to file example (#193, @DanielOchoa)
+ * README: fixed a typo (#191, @amir-s)
+ * browser: expose `storage` (#190, @stephenmathieson)
+ * Makefile: add a `distclean` target (#189, @stephenmathieson)
+
+2.1.3 / 2015-03-13
+==================
+
+ * Updated stdout/stderr example (#186)
+ * Updated example/stdout.js to match debug current behaviour
+ * Renamed example/stderr.js to stdout.js
+ * Update Readme.md (#184)
+ * replace high intensity foreground color for bold (#182, #183)
+
+2.1.2 / 2015-03-01
+==================
+
+ * dist: recompile
+ * update "ms" to v0.7.0
+ * package: update "browserify" to v9.0.3
+ * component: fix "ms.js" repo location
+ * changed bower package name
+ * updated documentation about using debug in a browser
+ * fix: security error on safari (#167, #168, @yields)
+
+2.1.1 / 2014-12-29
+==================
+
+ * browser: use `typeof` to check for `console` existence
+ * browser: check for `console.log` truthiness (fix IE 8/9)
+ * browser: add support for Chrome apps
+ * Readme: added Windows usage remarks
+ * Add `bower.json` to properly support bower install
+
+2.1.0 / 2014-10-15
+==================
+
+ * node: implement `DEBUG_FD` env variable support
+ * package: update "browserify" to v6.1.0
+ * package: add "license" field to package.json (#135, @panuhorsmalahti)
+
+2.0.0 / 2014-09-01
+==================
+
+ * package: update "browserify" to v5.11.0
+ * node: use stderr rather than stdout for logging (#29, @stephenmathieson)
+
+1.0.4 / 2014-07-15
+==================
+
+ * dist: recompile
+ * example: remove `console.info()` log usage
+ * example: add "Content-Type" UTF-8 header to browser example
+ * browser: place %c marker after the space character
+ * browser: reset the "content" color via `color: inherit`
+ * browser: add colors support for Firefox >= v31
+ * debug: prefer an instance `log()` function over the global one (#119)
+ * Readme: update documentation about styled console logs for FF v31 (#116, @wryk)
+
+1.0.3 / 2014-07-09
+==================
+
+ * Add support for multiple wildcards in namespaces (#122, @seegno)
+ * browser: fix lint
+
+1.0.2 / 2014-06-10
+==================
+
+ * browser: update color palette (#113, @gscottolson)
+ * common: make console logging function configurable (#108, @timoxley)
+ * node: fix %o colors on old node <= 0.8.x
+ * Makefile: find node path using shell/which (#109, @timoxley)
+
+1.0.1 / 2014-06-06
+==================
+
+ * browser: use `removeItem()` to clear localStorage
+ * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777)
+ * package: add "contributors" section
+ * node: fix comment typo
+ * README: list authors
+
+1.0.0 / 2014-06-04
+==================
+
+ * make ms diff be global, not be scope
+ * debug: ignore empty strings in enable()
+ * node: make DEBUG_COLORS able to disable coloring
+ * *: export the `colors` array
+ * npmignore: don't publish the `dist` dir
+ * Makefile: refactor to use browserify
+ * package: add "browserify" as a dev dependency
+ * Readme: add Web Inspector Colors section
+ * node: reset terminal color for the debug content
+ * node: map "%o" to `util.inspect()`
+ * browser: map "%j" to `JSON.stringify()`
+ * debug: add custom "formatters"
+ * debug: use "ms" module for humanizing the diff
+ * Readme: add "bash" syntax highlighting
+ * browser: add Firebug color support
+ * browser: add colors for WebKit browsers
+ * node: apply log to `console`
+ * rewrite: abstract common logic for Node & browsers
+ * add .jshintrc file
+
+0.8.1 / 2014-04-14
+==================
+
+ * package: re-add the "component" section
+
+0.8.0 / 2014-03-30
+==================
+
+ * add `enable()` method for nodejs. Closes #27
+ * change from stderr to stdout
+ * remove unnecessary index.js file
+
+0.7.4 / 2013-11-13
+==================
+
+ * remove "browserify" key from package.json (fixes something in browserify)
+
+0.7.3 / 2013-10-30
+==================
+
+ * fix: catch localStorage security error when cookies are blocked (Chrome)
+ * add debug(err) support. Closes #46
+ * add .browser prop to package.json. Closes #42
+
+0.7.2 / 2013-02-06
+==================
+
+ * fix package.json
+ * fix: Mobile Safari (private mode) is broken with debug
+ * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript
+
+0.7.1 / 2013-02-05
+==================
+
+ * add repository URL to package.json
+ * add DEBUG_COLORED to force colored output
+ * add browserify support
+ * fix component. Closes #24
+
+0.7.0 / 2012-05-04
+==================
+
+ * Added .component to package.json
+ * Added debug.component.js build
+
+0.6.0 / 2012-03-16
+==================
+
+ * Added support for "-" prefix in DEBUG [Vinay Pulim]
+ * Added `.enabled` flag to the node version [TooTallNate]
+
+0.5.0 / 2012-02-02
+==================
+
+ * Added: humanize diffs. Closes #8
+ * Added `debug.disable()` to the CS variant
+ * Removed padding. Closes #10
+ * Fixed: persist client-side variant again. Closes #9
+
+0.4.0 / 2012-02-01
+==================
+
+ * Added browser variant support for older browsers [TooTallNate]
+ * Added `debug.enable('project:*')` to browser variant [TooTallNate]
+ * Added padding to diff (moved it to the right)
+
+0.3.0 / 2012-01-26
+==================
+
+ * Added millisecond diff when isatty, otherwise UTC string
+
+0.2.0 / 2012-01-22
+==================
+
+ * Added wildcard support
+
+0.1.0 / 2011-12-02
+==================
+
+ * Added: remove colors unless stderr isatty [TooTallNate]
+
+0.0.1 / 2010-01-03
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/debug/Makefile b/server/node_modules/express/node_modules/debug/Makefile
new file mode 100755
index 0000000..5cf4a59
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/Makefile
@@ -0,0 +1,36 @@
+
+# get Makefile directory name: http://stackoverflow.com/a/5982798/376773
+THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)
+
+# BIN directory
+BIN := $(THIS_DIR)/node_modules/.bin
+
+# applications
+NODE ?= $(shell which node)
+NPM ?= $(NODE) $(shell which npm)
+BROWSERIFY ?= $(NODE) $(BIN)/browserify
+
+all: dist/debug.js
+
+install: node_modules
+
+clean:
+ @rm -rf dist
+
+dist:
+ @mkdir -p $@
+
+dist/debug.js: node_modules browser.js debug.js dist
+ @$(BROWSERIFY) \
+ --standalone debug \
+ . > $@
+
+distclean: clean
+ @rm -rf node_modules
+
+node_modules: package.json
+ @NODE_ENV= $(NPM) install
+ @touch node_modules
+
+.PHONY: all install clean distclean
diff --git a/server/node_modules/express/node_modules/debug/Readme.md b/server/node_modules/express/node_modules/debug/Readme.md
new file mode 100755
index 0000000..b4f45e3
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/Readme.md
@@ -0,0 +1,188 @@
+# debug
+
+ tiny node.js debugging utility modelled after node core's debugging technique.
+
+## Installation
+
+```bash
+$ npm install debug
+```
+
+## Usage
+
+ With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.
+
+Example _app.js_:
+
+```js
+var debug = require('debug')('http')
+ , http = require('http')
+ , name = 'My App';
+
+// fake app
+
+debug('booting %s', name);
+
+http.createServer(function(req, res){
+ debug(req.method + ' ' + req.url);
+ res.end('hello\n');
+}).listen(3000, function(){
+ debug('listening');
+});
+
+// fake worker of some kind
+
+require('./worker');
+```
+
+Example _worker.js_:
+
+```js
+var debug = require('debug')('worker');
+
+setInterval(function(){
+ debug('doing some work');
+}, 1000);
+```
+
+ The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:
+
+ ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)
+
+ ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)
+
+#### Windows note
+
+ On Windows the environment variable is set using the `set` command.
+
+ ```cmd
+ set DEBUG=*,-not_this
+ ```
+
+Then, run the program to be debugged as usual.
+
+## Millisecond diff
+
+ When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
+
+ ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)
+
+ When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:
+
+ ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)
+
+## Conventions
+
+ If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser".
+
+## Wildcards
+
+ The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
+
+ You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:".
+
+## Browser support
+
+ Debug works in the browser as well, currently persisted by `localStorage`. Consider the situation shown below where you have `worker:a` and `worker:b`, and wish to debug both. Somewhere in the code on your page, include:
+
+```js
+window.myDebug = require("debug");
+```
+
+ ("debug" is a global object in the browser so we give this object a different name.) When your page is open in the browser, type the following in the console:
+
+```js
+myDebug.enable("worker:*")
+```
+
+ Refresh the page. Debug output will continue to be sent to the console until it is disabled by typing `myDebug.disable()` in the console.
+
+```js
+a = debug('worker:a');
+b = debug('worker:b');
+
+setInterval(function(){
+ a('doing some work');
+}, 1000);
+
+setInterval(function(){
+ b('doing some work');
+}, 1200);
+```
+
+#### Web Inspector Colors
+
+ Colors are also enabled on "Web Inspectors" that understand the `%c` formatting
+ option. These are WebKit web inspectors, Firefox ([since version
+ 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/))
+ and the Firebug plugin for Firefox (any version).
+
+ Colored output looks something like:
+
+ ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png)
+
+### stderr vs stdout
+
+You can set an alternative logging method per-namespace by overriding the `log` method on a per-namespace or globally:
+
+Example _stdout.js_:
+
+```js
+var debug = require('debug');
+var error = debug('app:error');
+
+// by default stderr is used
+error('goes to stderr!');
+
+var log = debug('app:log');
+// set this namespace to log via console.log
+log.log = console.log.bind(console); // don't forget to bind to console!
+log('goes to stdout');
+error('still goes to stderr!');
+
+// set all output to go via console.info
+// overrides all per-namespace log settings
+debug.log = console.info.bind(console);
+error('now goes to stdout via console.info');
+log('still goes to stdout, but via console.info now');
+```
+
+### Save debug output to a file
+
+You can save all debug statements to a file by piping them.
+
+Example:
+
+```bash
+$ DEBUG_FD=3 node your-app.js 3> whatever.log
+```
+
+## Authors
+
+ - TJ Holowaychuk
+ - Nathan Rajlich
+
+## License
+
+(The MIT License)
+
+Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/debug/bower.json b/server/node_modules/express/node_modules/debug/bower.json
new file mode 100755
index 0000000..6af573f
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/bower.json
@@ -0,0 +1,28 @@
+{
+ "name": "visionmedia-debug",
+ "main": "dist/debug.js",
+ "version": "2.2.0",
+ "homepage": "https://github.com/visionmedia/debug",
+ "authors": [
+ "TJ Holowaychuk "
+ ],
+ "description": "visionmedia-debug",
+ "moduleType": [
+ "amd",
+ "es6",
+ "globals",
+ "node"
+ ],
+ "keywords": [
+ "visionmedia",
+ "debug"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "tests"
+ ]
+}
diff --git a/server/node_modules/express/node_modules/debug/browser.js b/server/node_modules/express/node_modules/debug/browser.js
new file mode 100755
index 0000000..7c76452
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/browser.js
@@ -0,0 +1,168 @@
+
+/**
+ * This is the web browser implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+exports = module.exports = require('./debug');
+exports.log = log;
+exports.formatArgs = formatArgs;
+exports.save = save;
+exports.load = load;
+exports.useColors = useColors;
+exports.storage = 'undefined' != typeof chrome
+ && 'undefined' != typeof chrome.storage
+ ? chrome.storage.local
+ : localstorage();
+
+/**
+ * Colors.
+ */
+
+exports.colors = [
+ 'lightseagreen',
+ 'forestgreen',
+ 'goldenrod',
+ 'dodgerblue',
+ 'darkorchid',
+ 'crimson'
+];
+
+/**
+ * Currently only WebKit-based Web Inspectors, Firefox >= v31,
+ * and the Firebug extension (any Firefox version) are known
+ * to support "%c" CSS customizations.
+ *
+ * TODO: add a `localStorage` variable to explicitly enable/disable colors
+ */
+
+function useColors() {
+ // is webkit? http://stackoverflow.com/a/16459606/376773
+ return ('WebkitAppearance' in document.documentElement.style) ||
+ // is firebug? http://stackoverflow.com/a/398120/376773
+ (window.console && (console.firebug || (console.exception && console.table))) ||
+ // is firefox >= v31?
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
+ (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31);
+}
+
+/**
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
+ */
+
+exports.formatters.j = function(v) {
+ return JSON.stringify(v);
+};
+
+
+/**
+ * Colorize log arguments if enabled.
+ *
+ * @api public
+ */
+
+function formatArgs() {
+ var args = arguments;
+ var useColors = this.useColors;
+
+ args[0] = (useColors ? '%c' : '')
+ + this.namespace
+ + (useColors ? ' %c' : ' ')
+ + args[0]
+ + (useColors ? '%c ' : ' ')
+ + '+' + exports.humanize(this.diff);
+
+ if (!useColors) return args;
+
+ var c = 'color: ' + this.color;
+ args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));
+
+ // the final "%c" is somewhat tricky, because there could be other
+ // arguments passed either before or after the %c, so we need to
+ // figure out the correct index to insert the CSS into
+ var index = 0;
+ var lastC = 0;
+ args[0].replace(/%[a-z%]/g, function(match) {
+ if ('%%' === match) return;
+ index++;
+ if ('%c' === match) {
+ // we only are interested in the *last* %c
+ // (the user may have provided their own)
+ lastC = index;
+ }
+ });
+
+ args.splice(lastC, 0, c);
+ return args;
+}
+
+/**
+ * Invokes `console.log()` when available.
+ * No-op when `console.log` is not a "function".
+ *
+ * @api public
+ */
+
+function log() {
+ // this hackery is required for IE8/9, where
+ // the `console.log` function doesn't have 'apply'
+ return 'object' === typeof console
+ && console.log
+ && Function.prototype.apply.call(console.log, console, arguments);
+}
+
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+
+function save(namespaces) {
+ try {
+ if (null == namespaces) {
+ exports.storage.removeItem('debug');
+ } else {
+ exports.storage.debug = namespaces;
+ }
+ } catch(e) {}
+}
+
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+
+function load() {
+ var r;
+ try {
+ r = exports.storage.debug;
+ } catch(e) {}
+ return r;
+}
+
+/**
+ * Enable namespaces listed in `localStorage.debug` initially.
+ */
+
+exports.enable(load());
+
+/**
+ * Localstorage attempts to return the localstorage.
+ *
+ * This is necessary because safari throws
+ * when a user disables cookies/localstorage
+ * and you attempt to access it.
+ *
+ * @return {LocalStorage}
+ * @api private
+ */
+
+function localstorage(){
+ try {
+ return window.localStorage;
+ } catch (e) {}
+}
diff --git a/server/node_modules/express/node_modules/debug/component.json b/server/node_modules/express/node_modules/debug/component.json
new file mode 100755
index 0000000..ca10637
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/component.json
@@ -0,0 +1,19 @@
+{
+ "name": "debug",
+ "repo": "visionmedia/debug",
+ "description": "small debugging utility",
+ "version": "2.2.0",
+ "keywords": [
+ "debug",
+ "log",
+ "debugger"
+ ],
+ "main": "browser.js",
+ "scripts": [
+ "browser.js",
+ "debug.js"
+ ],
+ "dependencies": {
+ "rauchg/ms.js": "0.7.1"
+ }
+}
diff --git a/server/node_modules/express/node_modules/debug/debug.js b/server/node_modules/express/node_modules/debug/debug.js
new file mode 100755
index 0000000..7571a86
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/debug.js
@@ -0,0 +1,197 @@
+
+/**
+ * This is the common logic for both the Node.js and web browser
+ * implementations of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+exports = module.exports = debug;
+exports.coerce = coerce;
+exports.disable = disable;
+exports.enable = enable;
+exports.enabled = enabled;
+exports.humanize = require('ms');
+
+/**
+ * The currently active debug mode names, and names to skip.
+ */
+
+exports.names = [];
+exports.skips = [];
+
+/**
+ * Map of special "%n" handling functions, for the debug "format" argument.
+ *
+ * Valid key names are a single, lowercased letter, i.e. "n".
+ */
+
+exports.formatters = {};
+
+/**
+ * Previously assigned color.
+ */
+
+var prevColor = 0;
+
+/**
+ * Previous log timestamp.
+ */
+
+var prevTime;
+
+/**
+ * Select a color.
+ *
+ * @return {Number}
+ * @api private
+ */
+
+function selectColor() {
+ return exports.colors[prevColor++ % exports.colors.length];
+}
+
+/**
+ * Create a debugger with the given `namespace`.
+ *
+ * @param {String} namespace
+ * @return {Function}
+ * @api public
+ */
+
+function debug(namespace) {
+
+ // define the `disabled` version
+ function disabled() {
+ }
+ disabled.enabled = false;
+
+ // define the `enabled` version
+ function enabled() {
+
+ var self = enabled;
+
+ // set `diff` timestamp
+ var curr = +new Date();
+ var ms = curr - (prevTime || curr);
+ self.diff = ms;
+ self.prev = prevTime;
+ self.curr = curr;
+ prevTime = curr;
+
+ // add the `color` if not set
+ if (null == self.useColors) self.useColors = exports.useColors();
+ if (null == self.color && self.useColors) self.color = selectColor();
+
+ var args = Array.prototype.slice.call(arguments);
+
+ args[0] = exports.coerce(args[0]);
+
+ if ('string' !== typeof args[0]) {
+ // anything else let's inspect with %o
+ args = ['%o'].concat(args);
+ }
+
+ // apply any `formatters` transformations
+ var index = 0;
+ args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {
+ // if we encounter an escaped % then don't increase the array index
+ if (match === '%%') return match;
+ index++;
+ var formatter = exports.formatters[format];
+ if ('function' === typeof formatter) {
+ var val = args[index];
+ match = formatter.call(self, val);
+
+ // now we need to remove `args[index]` since it's inlined in the `format`
+ args.splice(index, 1);
+ index--;
+ }
+ return match;
+ });
+
+ if ('function' === typeof exports.formatArgs) {
+ args = exports.formatArgs.apply(self, args);
+ }
+ var logFn = enabled.log || exports.log || console.log.bind(console);
+ logFn.apply(self, args);
+ }
+ enabled.enabled = true;
+
+ var fn = exports.enabled(namespace) ? enabled : disabled;
+
+ fn.namespace = namespace;
+
+ return fn;
+}
+
+/**
+ * Enables a debug mode by namespaces. This can include modes
+ * separated by a colon and wildcards.
+ *
+ * @param {String} namespaces
+ * @api public
+ */
+
+function enable(namespaces) {
+ exports.save(namespaces);
+
+ var split = (namespaces || '').split(/[\s,]+/);
+ var len = split.length;
+
+ for (var i = 0; i < len; i++) {
+ if (!split[i]) continue; // ignore empty strings
+ namespaces = split[i].replace(/\*/g, '.*?');
+ if (namespaces[0] === '-') {
+ exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
+ } else {
+ exports.names.push(new RegExp('^' + namespaces + '$'));
+ }
+ }
+}
+
+/**
+ * Disable debug output.
+ *
+ * @api public
+ */
+
+function disable() {
+ exports.enable('');
+}
+
+/**
+ * Returns true if the given mode name is enabled, false otherwise.
+ *
+ * @param {String} name
+ * @return {Boolean}
+ * @api public
+ */
+
+function enabled(name) {
+ var i, len;
+ for (i = 0, len = exports.skips.length; i < len; i++) {
+ if (exports.skips[i].test(name)) {
+ return false;
+ }
+ }
+ for (i = 0, len = exports.names.length; i < len; i++) {
+ if (exports.names[i].test(name)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+/**
+ * Coerce `val`.
+ *
+ * @param {Mixed} val
+ * @return {Mixed}
+ * @api private
+ */
+
+function coerce(val) {
+ if (val instanceof Error) return val.stack || val.message;
+ return val;
+}
diff --git a/server/node_modules/express/node_modules/debug/node.js b/server/node_modules/express/node_modules/debug/node.js
new file mode 100755
index 0000000..1d392a8
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/node.js
@@ -0,0 +1,209 @@
+
+/**
+ * Module dependencies.
+ */
+
+var tty = require('tty');
+var util = require('util');
+
+/**
+ * This is the Node.js implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+exports = module.exports = require('./debug');
+exports.log = log;
+exports.formatArgs = formatArgs;
+exports.save = save;
+exports.load = load;
+exports.useColors = useColors;
+
+/**
+ * Colors.
+ */
+
+exports.colors = [6, 2, 3, 4, 5, 1];
+
+/**
+ * The file descriptor to write the `debug()` calls to.
+ * Set the `DEBUG_FD` env variable to override with another value. i.e.:
+ *
+ * $ DEBUG_FD=3 node script.js 3>debug.log
+ */
+
+var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
+var stream = 1 === fd ? process.stdout :
+ 2 === fd ? process.stderr :
+ createWritableStdioStream(fd);
+
+/**
+ * Is stdout a TTY? Colored output is enabled when `true`.
+ */
+
+function useColors() {
+ var debugColors = (process.env.DEBUG_COLORS || '').trim().toLowerCase();
+ if (0 === debugColors.length) {
+ return tty.isatty(fd);
+ } else {
+ return '0' !== debugColors
+ && 'no' !== debugColors
+ && 'false' !== debugColors
+ && 'disabled' !== debugColors;
+ }
+}
+
+/**
+ * Map %o to `util.inspect()`, since Node doesn't do that out of the box.
+ */
+
+var inspect = (4 === util.inspect.length ?
+ // node <= 0.8.x
+ function (v, colors) {
+ return util.inspect(v, void 0, void 0, colors);
+ } :
+ // node > 0.8.x
+ function (v, colors) {
+ return util.inspect(v, { colors: colors });
+ }
+);
+
+exports.formatters.o = function(v) {
+ return inspect(v, this.useColors)
+ .replace(/\s*\n\s*/g, ' ');
+};
+
+/**
+ * Adds ANSI color escape codes if enabled.
+ *
+ * @api public
+ */
+
+function formatArgs() {
+ var args = arguments;
+ var useColors = this.useColors;
+ var name = this.namespace;
+
+ if (useColors) {
+ var c = this.color;
+
+ args[0] = ' \u001b[3' + c + ';1m' + name + ' '
+ + '\u001b[0m'
+ + args[0] + '\u001b[3' + c + 'm'
+ + ' +' + exports.humanize(this.diff) + '\u001b[0m';
+ } else {
+ args[0] = new Date().toUTCString()
+ + ' ' + name + ' ' + args[0];
+ }
+ return args;
+}
+
+/**
+ * Invokes `console.error()` with the specified arguments.
+ */
+
+function log() {
+ return stream.write(util.format.apply(this, arguments) + '\n');
+}
+
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+
+function save(namespaces) {
+ if (null == namespaces) {
+ // If you set a process.env field to null or undefined, it gets cast to the
+ // string 'null' or 'undefined'. Just delete instead.
+ delete process.env.DEBUG;
+ } else {
+ process.env.DEBUG = namespaces;
+ }
+}
+
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+
+function load() {
+ return process.env.DEBUG;
+}
+
+/**
+ * Copied from `node/src/node.js`.
+ *
+ * XXX: It's lame that node doesn't expose this API out-of-the-box. It also
+ * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.
+ */
+
+function createWritableStdioStream (fd) {
+ var stream;
+ var tty_wrap = process.binding('tty_wrap');
+
+ // Note stream._type is used for test-module-load-list.js
+
+ switch (tty_wrap.guessHandleType(fd)) {
+ case 'TTY':
+ stream = new tty.WriteStream(fd);
+ stream._type = 'tty';
+
+ // Hack to have stream not keep the event loop alive.
+ // See https://github.com/joyent/node/issues/1726
+ if (stream._handle && stream._handle.unref) {
+ stream._handle.unref();
+ }
+ break;
+
+ case 'FILE':
+ var fs = require('fs');
+ stream = new fs.SyncWriteStream(fd, { autoClose: false });
+ stream._type = 'fs';
+ break;
+
+ case 'PIPE':
+ case 'TCP':
+ var net = require('net');
+ stream = new net.Socket({
+ fd: fd,
+ readable: false,
+ writable: true
+ });
+
+ // FIXME Should probably have an option in net.Socket to create a
+ // stream from an existing fd which is writable only. But for now
+ // we'll just add this hack and set the `readable` member to false.
+ // Test: ./node test/fixtures/echo.js < /etc/passwd
+ stream.readable = false;
+ stream.read = null;
+ stream._type = 'pipe';
+
+ // FIXME Hack to have stream not keep the event loop alive.
+ // See https://github.com/joyent/node/issues/1726
+ if (stream._handle && stream._handle.unref) {
+ stream._handle.unref();
+ }
+ break;
+
+ default:
+ // Probably an error on in uv_guess_handle()
+ throw new Error('Implement me. Unknown stream file type!');
+ }
+
+ // For supporting legacy API we put the FD here.
+ stream.fd = fd;
+
+ stream._isStdio = true;
+
+ return stream;
+}
+
+/**
+ * Enable namespaces listed in `process.env.DEBUG` initially.
+ */
+
+exports.enable(load());
diff --git a/server/node_modules/express/node_modules/debug/node_modules/ms/.npmignore b/server/node_modules/express/node_modules/debug/node_modules/ms/.npmignore
new file mode 100755
index 0000000..d1aa0ce
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/node_modules/ms/.npmignore
@@ -0,0 +1,5 @@
+node_modules
+test
+History.md
+Makefile
+component.json
diff --git a/server/node_modules/express/node_modules/debug/node_modules/ms/History.md b/server/node_modules/express/node_modules/debug/node_modules/ms/History.md
new file mode 100755
index 0000000..32fdfc1
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/node_modules/ms/History.md
@@ -0,0 +1,66 @@
+
+0.7.1 / 2015-04-20
+==================
+
+ * prevent extraordinary long inputs (@evilpacket)
+ * Fixed broken readme link
+
+0.7.0 / 2014-11-24
+==================
+
+ * add time abbreviations, updated tests and readme for the new units
+ * fix example in the readme.
+ * add LICENSE file
+
+0.6.2 / 2013-12-05
+==================
+
+ * Adding repository section to package.json to suppress warning from NPM.
+
+0.6.1 / 2013-05-10
+==================
+
+ * fix singularization [visionmedia]
+
+0.6.0 / 2013-03-15
+==================
+
+ * fix minutes
+
+0.5.1 / 2013-02-24
+==================
+
+ * add component namespace
+
+0.5.0 / 2012-11-09
+==================
+
+ * add short formatting as default and .long option
+ * add .license property to component.json
+ * add version to component.json
+
+0.4.0 / 2012-10-22
+==================
+
+ * add rounding to fix crazy decimals
+
+0.3.0 / 2012-09-07
+==================
+
+ * fix `ms()` [visionmedia]
+
+0.2.0 / 2012-09-03
+==================
+
+ * add component.json [visionmedia]
+ * add days support [visionmedia]
+ * add hours support [visionmedia]
+ * add minutes support [visionmedia]
+ * add seconds support [visionmedia]
+ * add ms string support [visionmedia]
+ * refactor tests to facilitate ms(number) [visionmedia]
+
+0.1.0 / 2012-03-07
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/debug/node_modules/ms/LICENSE b/server/node_modules/express/node_modules/debug/node_modules/ms/LICENSE
new file mode 100755
index 0000000..6c07561
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/node_modules/ms/LICENSE
@@ -0,0 +1,20 @@
+(The MIT License)
+
+Copyright (c) 2014 Guillermo Rauch
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/debug/node_modules/ms/README.md b/server/node_modules/express/node_modules/debug/node_modules/ms/README.md
new file mode 100755
index 0000000..9b4fd03
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/node_modules/ms/README.md
@@ -0,0 +1,35 @@
+# ms.js: miliseconds conversion utility
+
+```js
+ms('2 days') // 172800000
+ms('1d') // 86400000
+ms('10h') // 36000000
+ms('2.5 hrs') // 9000000
+ms('2h') // 7200000
+ms('1m') // 60000
+ms('5s') // 5000
+ms('100') // 100
+```
+
+```js
+ms(60000) // "1m"
+ms(2 * 60000) // "2m"
+ms(ms('10 hours')) // "10h"
+```
+
+```js
+ms(60000, { long: true }) // "1 minute"
+ms(2 * 60000, { long: true }) // "2 minutes"
+ms(ms('10 hours'), { long: true }) // "10 hours"
+```
+
+- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](http://nodejs.org/download).
+- If a number is supplied to `ms`, a string with a unit is returned.
+- If a string that contains the number is supplied, it returns it as
+a number (e.g: it returns `100` for `'100'`).
+- If you pass a string with a number and a valid unit, the number of
+equivalent ms is returned.
+
+## License
+
+MIT
diff --git a/server/node_modules/express/node_modules/debug/node_modules/ms/index.js b/server/node_modules/express/node_modules/debug/node_modules/ms/index.js
new file mode 100755
index 0000000..4f92771
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/node_modules/ms/index.js
@@ -0,0 +1,125 @@
+/**
+ * Helpers.
+ */
+
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var y = d * 365.25;
+
+/**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} options
+ * @return {String|Number}
+ * @api public
+ */
+
+module.exports = function(val, options){
+ options = options || {};
+ if ('string' == typeof val) return parse(val);
+ return options.long
+ ? long(val)
+ : short(val);
+};
+
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+function parse(str) {
+ str = '' + str;
+ if (str.length > 10000) return;
+ var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);
+ if (!match) return;
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s;
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n;
+ }
+}
+
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function short(ms) {
+ if (ms >= d) return Math.round(ms / d) + 'd';
+ if (ms >= h) return Math.round(ms / h) + 'h';
+ if (ms >= m) return Math.round(ms / m) + 'm';
+ if (ms >= s) return Math.round(ms / s) + 's';
+ return ms + 'ms';
+}
+
+/**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function long(ms) {
+ return plural(ms, d, 'day')
+ || plural(ms, h, 'hour')
+ || plural(ms, m, 'minute')
+ || plural(ms, s, 'second')
+ || ms + ' ms';
+}
+
+/**
+ * Pluralization helper.
+ */
+
+function plural(ms, n, name) {
+ if (ms < n) return;
+ if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
+ return Math.ceil(ms / n) + ' ' + name + 's';
+}
diff --git a/server/node_modules/express/node_modules/debug/node_modules/ms/package.json b/server/node_modules/express/node_modules/debug/node_modules/ms/package.json
new file mode 100755
index 0000000..e36489e
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/node_modules/ms/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "ms",
+ "version": "0.7.1",
+ "description": "Tiny ms conversion utility",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/guille/ms.js.git"
+ },
+ "main": "./index",
+ "devDependencies": {
+ "mocha": "*",
+ "expect.js": "*",
+ "serve": "*"
+ },
+ "component": {
+ "scripts": {
+ "ms/index.js": "index.js"
+ }
+ },
+ "gitHead": "713dcf26d9e6fd9dbc95affe7eff9783b7f1b909",
+ "bugs": {
+ "url": "https://github.com/guille/ms.js/issues"
+ },
+ "homepage": "https://github.com/guille/ms.js",
+ "_id": "ms@0.7.1",
+ "scripts": {},
+ "_shasum": "9cd13c03adbff25b65effde7ce864ee952017098",
+ "_from": "ms@0.7.1",
+ "_npmVersion": "2.7.5",
+ "_nodeVersion": "0.12.2",
+ "_npmUser": {
+ "name": "rauchg",
+ "email": "rauchg@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "rauchg",
+ "email": "rauchg@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "9cd13c03adbff25b65effde7ce864ee952017098",
+ "tarball": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/debug/package.json b/server/node_modules/express/node_modules/debug/package.json
new file mode 100755
index 0000000..f2148c9
--- /dev/null
+++ b/server/node_modules/express/node_modules/debug/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "debug",
+ "version": "2.2.0",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/visionmedia/debug.git"
+ },
+ "description": "small debugging utility",
+ "keywords": [
+ "debug",
+ "log",
+ "debugger"
+ ],
+ "author": {
+ "name": "TJ Holowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ "contributors": [
+ {
+ "name": "Nathan Rajlich",
+ "email": "nathan@tootallnate.net",
+ "url": "http://n8.io"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "ms": "0.7.1"
+ },
+ "devDependencies": {
+ "browserify": "9.0.3",
+ "mocha": "*"
+ },
+ "main": "./node.js",
+ "browser": "./browser.js",
+ "component": {
+ "scripts": {
+ "debug/index.js": "browser.js",
+ "debug/debug.js": "debug.js"
+ }
+ },
+ "gitHead": "b38458422b5aa8aa6d286b10dfe427e8a67e2b35",
+ "bugs": {
+ "url": "https://github.com/visionmedia/debug/issues"
+ },
+ "homepage": "https://github.com/visionmedia/debug",
+ "_id": "debug@2.2.0",
+ "scripts": {},
+ "_shasum": "f87057e995b1a1f6ae6a4960664137bc56f039da",
+ "_from": "debug@>=2.2.0 <2.3.0",
+ "_npmVersion": "2.7.4",
+ "_nodeVersion": "0.12.2",
+ "_npmUser": {
+ "name": "tootallnate",
+ "email": "nathan@tootallnate.net"
+ },
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "tootallnate",
+ "email": "nathan@tootallnate.net"
+ }
+ ],
+ "dist": {
+ "shasum": "f87057e995b1a1f6ae6a4960664137bc56f039da",
+ "tarball": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/depd/History.md b/server/node_modules/express/node_modules/depd/History.md
new file mode 100755
index 0000000..ace1171
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/History.md
@@ -0,0 +1,84 @@
+1.1.0 / 2015-09-14
+==================
+
+ * Enable strict mode in more places
+ * Support io.js 3.x
+ * Support io.js 2.x
+ * Support web browser loading
+ - Requires bundler like Browserify or webpack
+
+1.0.1 / 2015-04-07
+==================
+
+ * Fix `TypeError`s when under `'use strict'` code
+ * Fix useless type name on auto-generated messages
+ * Support io.js 1.x
+ * Support Node.js 0.12
+
+1.0.0 / 2014-09-17
+==================
+
+ * No changes
+
+0.4.5 / 2014-09-09
+==================
+
+ * Improve call speed to functions using the function wrapper
+ * Support Node.js 0.6
+
+0.4.4 / 2014-07-27
+==================
+
+ * Work-around v8 generating empty stack traces
+
+0.4.3 / 2014-07-26
+==================
+
+ * Fix exception when global `Error.stackTraceLimit` is too low
+
+0.4.2 / 2014-07-19
+==================
+
+ * Correct call site for wrapped functions and properties
+
+0.4.1 / 2014-07-19
+==================
+
+ * Improve automatic message generation for function properties
+
+0.4.0 / 2014-07-19
+==================
+
+ * Add `TRACE_DEPRECATION` environment variable
+ * Remove non-standard grey color from color output
+ * Support `--no-deprecation` argument
+ * Support `--trace-deprecation` argument
+ * Support `deprecate.property(fn, prop, message)`
+
+0.3.0 / 2014-06-16
+==================
+
+ * Add `NO_DEPRECATION` environment variable
+
+0.2.0 / 2014-06-15
+==================
+
+ * Add `deprecate.property(obj, prop, message)`
+ * Remove `supports-color` dependency for node.js 0.8
+
+0.1.0 / 2014-06-15
+==================
+
+ * Add `deprecate.function(fn, message)`
+ * Add `process.on('deprecation', fn)` emitter
+ * Automatically generate message when omitted from `deprecate()`
+
+0.0.1 / 2014-06-15
+==================
+
+ * Fix warning for dynamic calls at singe call site
+
+0.0.0 / 2014-06-15
+==================
+
+ * Initial implementation
diff --git a/server/node_modules/express/node_modules/depd/LICENSE b/server/node_modules/express/node_modules/depd/LICENSE
new file mode 100755
index 0000000..142ede3
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014-2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/depd/Readme.md b/server/node_modules/express/node_modules/depd/Readme.md
new file mode 100755
index 0000000..09bb979
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/Readme.md
@@ -0,0 +1,281 @@
+# depd
+
+[![NPM Version][npm-version-image]][npm-url]
+[![NPM Downloads][npm-downloads-image]][npm-url]
+[![Node.js Version][node-image]][node-url]
+[![Linux Build][travis-image]][travis-url]
+[![Windows Build][appveyor-image]][appveyor-url]
+[![Coverage Status][coveralls-image]][coveralls-url]
+[![Gratipay][gratipay-image]][gratipay-url]
+
+Deprecate all the things
+
+> With great modules comes great responsibility; mark things deprecated!
+
+## Install
+
+This module is installed directly using `npm`:
+
+```sh
+$ npm install depd
+```
+
+This module can also be bundled with systems like
+[Browserify](http://browserify.org/) or [webpack](https://webpack.github.io/),
+though by default this module will alter it's API to no longer display or
+track deprecations.
+
+## API
+
+```js
+var deprecate = require('depd')('my-module')
+```
+
+This library allows you to display deprecation messages to your users.
+This library goes above and beyond with deprecation warnings by
+introspection of the call stack (but only the bits that it is interested
+in).
+
+Instead of just warning on the first invocation of a deprecated
+function and never again, this module will warn on the first invocation
+of a deprecated function per unique call site, making it ideal to alert
+users of all deprecated uses across the code base, rather than just
+whatever happens to execute first.
+
+The deprecation warnings from this module also include the file and line
+information for the call into the module that the deprecated function was
+in.
+
+**NOTE** this library has a similar interface to the `debug` module, and
+this module uses the calling file to get the boundary for the call stacks,
+so you should always create a new `deprecate` object in each file and not
+within some central file.
+
+### depd(namespace)
+
+Create a new deprecate function that uses the given namespace name in the
+messages and will display the call site prior to the stack entering the
+file this function was called from. It is highly suggested you use the
+name of your module as the namespace.
+
+### deprecate(message)
+
+Call this function from deprecated code to display a deprecation message.
+This message will appear once per unique caller site. Caller site is the
+first call site in the stack in a different file from the caller of this
+function.
+
+If the message is omitted, a message is generated for you based on the site
+of the `deprecate()` call and will display the name of the function called,
+similar to the name displayed in a stack trace.
+
+### deprecate.function(fn, message)
+
+Call this function to wrap a given function in a deprecation message on any
+call to the function. An optional message can be supplied to provide a custom
+message.
+
+### deprecate.property(obj, prop, message)
+
+Call this function to wrap a given property on object in a deprecation message
+on any accessing or setting of the property. An optional message can be supplied
+to provide a custom message.
+
+The method must be called on the object where the property belongs (not
+inherited from the prototype).
+
+If the property is a data descriptor, it will be converted to an accessor
+descriptor in order to display the deprecation message.
+
+### process.on('deprecation', fn)
+
+This module will allow easy capturing of deprecation errors by emitting the
+errors as the type "deprecation" on the global `process`. If there are no
+listeners for this type, the errors are written to STDERR as normal, but if
+there are any listeners, nothing will be written to STDERR and instead only
+emitted. From there, you can write the errors in a different format or to a
+logging source.
+
+The error represents the deprecation and is emitted only once with the same
+rules as writing to STDERR. The error has the following properties:
+
+ - `message` - This is the message given by the library
+ - `name` - This is always `'DeprecationError'`
+ - `namespace` - This is the namespace the deprecation came from
+ - `stack` - This is the stack of the call to the deprecated thing
+
+Example `error.stack` output:
+
+```
+DeprecationError: my-cool-module deprecated oldfunction
+ at Object. ([eval]-wrapper:6:22)
+ at Module._compile (module.js:456:26)
+ at evalScript (node.js:532:25)
+ at startup (node.js:80:7)
+ at node.js:902:3
+```
+
+### process.env.NO_DEPRECATION
+
+As a user of modules that are deprecated, the environment variable `NO_DEPRECATION`
+is provided as a quick solution to silencing deprecation warnings from being
+output. The format of this is similar to that of `DEBUG`:
+
+```sh
+$ NO_DEPRECATION=my-module,othermod node app.js
+```
+
+This will suppress deprecations from being output for "my-module" and "othermod".
+The value is a list of comma-separated namespaces. To suppress every warning
+across all namespaces, use the value `*` for a namespace.
+
+Providing the argument `--no-deprecation` to the `node` executable will suppress
+all deprecations (only available in Node.js 0.8 or higher).
+
+**NOTE** This will not suppress the deperecations given to any "deprecation"
+event listeners, just the output to STDERR.
+
+### process.env.TRACE_DEPRECATION
+
+As a user of modules that are deprecated, the environment variable `TRACE_DEPRECATION`
+is provided as a solution to getting more detailed location information in deprecation
+warnings by including the entire stack trace. The format of this is the same as
+`NO_DEPRECATION`:
+
+```sh
+$ TRACE_DEPRECATION=my-module,othermod node app.js
+```
+
+This will include stack traces for deprecations being output for "my-module" and
+"othermod". The value is a list of comma-separated namespaces. To trace every
+warning across all namespaces, use the value `*` for a namespace.
+
+Providing the argument `--trace-deprecation` to the `node` executable will trace
+all deprecations (only available in Node.js 0.8 or higher).
+
+**NOTE** This will not trace the deperecations silenced by `NO_DEPRECATION`.
+
+## Display
+
+![message](files/message.png)
+
+When a user calls a function in your library that you mark deprecated, they
+will see the following written to STDERR (in the given colors, similar colors
+and layout to the `debug` module):
+
+```
+bright cyan bright yellow
+| | reset cyan
+| | | |
+▼ ▼ ▼ ▼
+my-cool-module deprecated oldfunction [eval]-wrapper:6:22
+▲ ▲ ▲ ▲
+| | | |
+namespace | | location of mycoolmod.oldfunction() call
+ | deprecation message
+ the word "deprecated"
+```
+
+If the user redirects their STDERR to a file or somewhere that does not support
+colors, they see (similar layout to the `debug` module):
+
+```
+Sun, 15 Jun 2014 05:21:37 GMT my-cool-module deprecated oldfunction at [eval]-wrapper:6:22
+▲ ▲ ▲ ▲ ▲
+| | | | |
+timestamp of message namespace | | location of mycoolmod.oldfunction() call
+ | deprecation message
+ the word "deprecated"
+```
+
+## Examples
+
+### Deprecating all calls to a function
+
+This will display a deprecated message about "oldfunction" being deprecated
+from "my-module" on STDERR.
+
+```js
+var deprecate = require('depd')('my-cool-module')
+
+// message automatically derived from function name
+// Object.oldfunction
+exports.oldfunction = deprecate.function(function oldfunction() {
+ // all calls to function are deprecated
+})
+
+// specific message
+exports.oldfunction = deprecate.function(function () {
+ // all calls to function are deprecated
+}, 'oldfunction')
+```
+
+### Conditionally deprecating a function call
+
+This will display a deprecated message about "weirdfunction" being deprecated
+from "my-module" on STDERR when called with less than 2 arguments.
+
+```js
+var deprecate = require('depd')('my-cool-module')
+
+exports.weirdfunction = function () {
+ if (arguments.length < 2) {
+ // calls with 0 or 1 args are deprecated
+ deprecate('weirdfunction args < 2')
+ }
+}
+```
+
+When calling `deprecate` as a function, the warning is counted per call site
+within your own module, so you can display different deprecations depending
+on different situations and the users will still get all the warnings:
+
+```js
+var deprecate = require('depd')('my-cool-module')
+
+exports.weirdfunction = function () {
+ if (arguments.length < 2) {
+ // calls with 0 or 1 args are deprecated
+ deprecate('weirdfunction args < 2')
+ } else if (typeof arguments[0] !== 'string') {
+ // calls with non-string first argument are deprecated
+ deprecate('weirdfunction non-string first arg')
+ }
+}
+```
+
+### Deprecating property access
+
+This will display a deprecated message about "oldprop" being deprecated
+from "my-module" on STDERR when accessed. A deprecation will be displayed
+when setting the value and when getting the value.
+
+```js
+var deprecate = require('depd')('my-cool-module')
+
+exports.oldprop = 'something'
+
+// message automatically derives from property name
+deprecate.property(exports, 'oldprop')
+
+// explicit message
+deprecate.property(exports, 'oldprop', 'oldprop >= 0.10')
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-version-image]: https://img.shields.io/npm/v/depd.svg
+[npm-downloads-image]: https://img.shields.io/npm/dm/depd.svg
+[npm-url]: https://npmjs.org/package/depd
+[travis-image]: https://img.shields.io/travis/dougwilson/nodejs-depd/master.svg?label=linux
+[travis-url]: https://travis-ci.org/dougwilson/nodejs-depd
+[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/nodejs-depd/master.svg?label=windows
+[appveyor-url]: https://ci.appveyor.com/project/dougwilson/nodejs-depd
+[coveralls-image]: https://img.shields.io/coveralls/dougwilson/nodejs-depd/master.svg
+[coveralls-url]: https://coveralls.io/r/dougwilson/nodejs-depd?branch=master
+[node-image]: https://img.shields.io/node/v/depd.svg
+[node-url]: http://nodejs.org/download/
+[gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg
+[gratipay-url]: https://www.gratipay.com/dougwilson/
diff --git a/server/node_modules/express/node_modules/depd/index.js b/server/node_modules/express/node_modules/depd/index.js
new file mode 100755
index 0000000..fddcae8
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/index.js
@@ -0,0 +1,521 @@
+/*!
+ * depd
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+/**
+ * Module dependencies.
+ */
+
+var callSiteToString = require('./lib/compat').callSiteToString
+var eventListenerCount = require('./lib/compat').eventListenerCount
+var relative = require('path').relative
+
+/**
+ * Module exports.
+ */
+
+module.exports = depd
+
+/**
+ * Get the path to base files on.
+ */
+
+var basePath = process.cwd()
+
+/**
+ * Determine if namespace is contained in the string.
+ */
+
+function containsNamespace(str, namespace) {
+ var val = str.split(/[ ,]+/)
+
+ namespace = String(namespace).toLowerCase()
+
+ for (var i = 0 ; i < val.length; i++) {
+ if (!(str = val[i])) continue;
+
+ // namespace contained
+ if (str === '*' || str.toLowerCase() === namespace) {
+ return true
+ }
+ }
+
+ return false
+}
+
+/**
+ * Convert a data descriptor to accessor descriptor.
+ */
+
+function convertDataDescriptorToAccessor(obj, prop, message) {
+ var descriptor = Object.getOwnPropertyDescriptor(obj, prop)
+ var value = descriptor.value
+
+ descriptor.get = function getter() { return value }
+
+ if (descriptor.writable) {
+ descriptor.set = function setter(val) { return value = val }
+ }
+
+ delete descriptor.value
+ delete descriptor.writable
+
+ Object.defineProperty(obj, prop, descriptor)
+
+ return descriptor
+}
+
+/**
+ * Create arguments string to keep arity.
+ */
+
+function createArgumentsString(arity) {
+ var str = ''
+
+ for (var i = 0; i < arity; i++) {
+ str += ', arg' + i
+ }
+
+ return str.substr(2)
+}
+
+/**
+ * Create stack string from stack.
+ */
+
+function createStackString(stack) {
+ var str = this.name + ': ' + this.namespace
+
+ if (this.message) {
+ str += ' deprecated ' + this.message
+ }
+
+ for (var i = 0; i < stack.length; i++) {
+ str += '\n at ' + callSiteToString(stack[i])
+ }
+
+ return str
+}
+
+/**
+ * Create deprecate for namespace in caller.
+ */
+
+function depd(namespace) {
+ if (!namespace) {
+ throw new TypeError('argument namespace is required')
+ }
+
+ var stack = getStack()
+ var site = callSiteLocation(stack[1])
+ var file = site[0]
+
+ function deprecate(message) {
+ // call to self as log
+ log.call(deprecate, message)
+ }
+
+ deprecate._file = file
+ deprecate._ignored = isignored(namespace)
+ deprecate._namespace = namespace
+ deprecate._traced = istraced(namespace)
+ deprecate._warned = Object.create(null)
+
+ deprecate.function = wrapfunction
+ deprecate.property = wrapproperty
+
+ return deprecate
+}
+
+/**
+ * Determine if namespace is ignored.
+ */
+
+function isignored(namespace) {
+ /* istanbul ignore next: tested in a child processs */
+ if (process.noDeprecation) {
+ // --no-deprecation support
+ return true
+ }
+
+ var str = process.env.NO_DEPRECATION || ''
+
+ // namespace ignored
+ return containsNamespace(str, namespace)
+}
+
+/**
+ * Determine if namespace is traced.
+ */
+
+function istraced(namespace) {
+ /* istanbul ignore next: tested in a child processs */
+ if (process.traceDeprecation) {
+ // --trace-deprecation support
+ return true
+ }
+
+ var str = process.env.TRACE_DEPRECATION || ''
+
+ // namespace traced
+ return containsNamespace(str, namespace)
+}
+
+/**
+ * Display deprecation message.
+ */
+
+function log(message, site) {
+ var haslisteners = eventListenerCount(process, 'deprecation') !== 0
+
+ // abort early if no destination
+ if (!haslisteners && this._ignored) {
+ return
+ }
+
+ var caller
+ var callFile
+ var callSite
+ var i = 0
+ var seen = false
+ var stack = getStack()
+ var file = this._file
+
+ if (site) {
+ // provided site
+ callSite = callSiteLocation(stack[1])
+ callSite.name = site.name
+ file = callSite[0]
+ } else {
+ // get call site
+ i = 2
+ site = callSiteLocation(stack[i])
+ callSite = site
+ }
+
+ // get caller of deprecated thing in relation to file
+ for (; i < stack.length; i++) {
+ caller = callSiteLocation(stack[i])
+ callFile = caller[0]
+
+ if (callFile === file) {
+ seen = true
+ } else if (callFile === this._file) {
+ file = this._file
+ } else if (seen) {
+ break
+ }
+ }
+
+ var key = caller
+ ? site.join(':') + '__' + caller.join(':')
+ : undefined
+
+ if (key !== undefined && key in this._warned) {
+ // already warned
+ return
+ }
+
+ this._warned[key] = true
+
+ // generate automatic message from call site
+ if (!message) {
+ message = callSite === site || !callSite.name
+ ? defaultMessage(site)
+ : defaultMessage(callSite)
+ }
+
+ // emit deprecation if listeners exist
+ if (haslisteners) {
+ var err = DeprecationError(this._namespace, message, stack.slice(i))
+ process.emit('deprecation', err)
+ return
+ }
+
+ // format and write message
+ var format = process.stderr.isTTY
+ ? formatColor
+ : formatPlain
+ var msg = format.call(this, message, caller, stack.slice(i))
+ process.stderr.write(msg + '\n', 'utf8')
+
+ return
+}
+
+/**
+ * Get call site location as array.
+ */
+
+function callSiteLocation(callSite) {
+ var file = callSite.getFileName() || ''
+ var line = callSite.getLineNumber()
+ var colm = callSite.getColumnNumber()
+
+ if (callSite.isEval()) {
+ file = callSite.getEvalOrigin() + ', ' + file
+ }
+
+ var site = [file, line, colm]
+
+ site.callSite = callSite
+ site.name = callSite.getFunctionName()
+
+ return site
+}
+
+/**
+ * Generate a default message from the site.
+ */
+
+function defaultMessage(site) {
+ var callSite = site.callSite
+ var funcName = site.name
+
+ // make useful anonymous name
+ if (!funcName) {
+ funcName = ''
+ }
+
+ var context = callSite.getThis()
+ var typeName = context && callSite.getTypeName()
+
+ // ignore useless type name
+ if (typeName === 'Object') {
+ typeName = undefined
+ }
+
+ // make useful type name
+ if (typeName === 'Function') {
+ typeName = context.name || typeName
+ }
+
+ return typeName && callSite.getMethodName()
+ ? typeName + '.' + funcName
+ : funcName
+}
+
+/**
+ * Format deprecation message without color.
+ */
+
+function formatPlain(msg, caller, stack) {
+ var timestamp = new Date().toUTCString()
+
+ var formatted = timestamp
+ + ' ' + this._namespace
+ + ' deprecated ' + msg
+
+ // add stack trace
+ if (this._traced) {
+ for (var i = 0; i < stack.length; i++) {
+ formatted += '\n at ' + callSiteToString(stack[i])
+ }
+
+ return formatted
+ }
+
+ if (caller) {
+ formatted += ' at ' + formatLocation(caller)
+ }
+
+ return formatted
+}
+
+/**
+ * Format deprecation message with color.
+ */
+
+function formatColor(msg, caller, stack) {
+ var formatted = '\x1b[36;1m' + this._namespace + '\x1b[22;39m' // bold cyan
+ + ' \x1b[33;1mdeprecated\x1b[22;39m' // bold yellow
+ + ' \x1b[0m' + msg + '\x1b[39m' // reset
+
+ // add stack trace
+ if (this._traced) {
+ for (var i = 0; i < stack.length; i++) {
+ formatted += '\n \x1b[36mat ' + callSiteToString(stack[i]) + '\x1b[39m' // cyan
+ }
+
+ return formatted
+ }
+
+ if (caller) {
+ formatted += ' \x1b[36m' + formatLocation(caller) + '\x1b[39m' // cyan
+ }
+
+ return formatted
+}
+
+/**
+ * Format call site location.
+ */
+
+function formatLocation(callSite) {
+ return relative(basePath, callSite[0])
+ + ':' + callSite[1]
+ + ':' + callSite[2]
+}
+
+/**
+ * Get the stack as array of call sites.
+ */
+
+function getStack() {
+ var limit = Error.stackTraceLimit
+ var obj = {}
+ var prep = Error.prepareStackTrace
+
+ Error.prepareStackTrace = prepareObjectStackTrace
+ Error.stackTraceLimit = Math.max(10, limit)
+
+ // capture the stack
+ Error.captureStackTrace(obj)
+
+ // slice this function off the top
+ var stack = obj.stack.slice(1)
+
+ Error.prepareStackTrace = prep
+ Error.stackTraceLimit = limit
+
+ return stack
+}
+
+/**
+ * Capture call site stack from v8.
+ */
+
+function prepareObjectStackTrace(obj, stack) {
+ return stack
+}
+
+/**
+ * Return a wrapped function in a deprecation message.
+ */
+
+function wrapfunction(fn, message) {
+ if (typeof fn !== 'function') {
+ throw new TypeError('argument fn must be a function')
+ }
+
+ var args = createArgumentsString(fn.length)
+ var deprecate = this
+ var stack = getStack()
+ var site = callSiteLocation(stack[1])
+
+ site.name = fn.name
+
+ var deprecatedfn = eval('(function (' + args + ') {\n'
+ + '"use strict"\n'
+ + 'log.call(deprecate, message, site)\n'
+ + 'return fn.apply(this, arguments)\n'
+ + '})')
+
+ return deprecatedfn
+}
+
+/**
+ * Wrap property in a deprecation message.
+ */
+
+function wrapproperty(obj, prop, message) {
+ if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
+ throw new TypeError('argument obj must be object')
+ }
+
+ var descriptor = Object.getOwnPropertyDescriptor(obj, prop)
+
+ if (!descriptor) {
+ throw new TypeError('must call property on owner object')
+ }
+
+ if (!descriptor.configurable) {
+ throw new TypeError('property must be configurable')
+ }
+
+ var deprecate = this
+ var stack = getStack()
+ var site = callSiteLocation(stack[1])
+
+ // set site name
+ site.name = prop
+
+ // convert data descriptor
+ if ('value' in descriptor) {
+ descriptor = convertDataDescriptorToAccessor(obj, prop, message)
+ }
+
+ var get = descriptor.get
+ var set = descriptor.set
+
+ // wrap getter
+ if (typeof get === 'function') {
+ descriptor.get = function getter() {
+ log.call(deprecate, message, site)
+ return get.apply(this, arguments)
+ }
+ }
+
+ // wrap setter
+ if (typeof set === 'function') {
+ descriptor.set = function setter() {
+ log.call(deprecate, message, site)
+ return set.apply(this, arguments)
+ }
+ }
+
+ Object.defineProperty(obj, prop, descriptor)
+}
+
+/**
+ * Create DeprecationError for deprecation
+ */
+
+function DeprecationError(namespace, message, stack) {
+ var error = new Error()
+ var stackString
+
+ Object.defineProperty(error, 'constructor', {
+ value: DeprecationError
+ })
+
+ Object.defineProperty(error, 'message', {
+ configurable: true,
+ enumerable: false,
+ value: message,
+ writable: true
+ })
+
+ Object.defineProperty(error, 'name', {
+ enumerable: false,
+ configurable: true,
+ value: 'DeprecationError',
+ writable: true
+ })
+
+ Object.defineProperty(error, 'namespace', {
+ configurable: true,
+ enumerable: false,
+ value: namespace,
+ writable: true
+ })
+
+ Object.defineProperty(error, 'stack', {
+ configurable: true,
+ enumerable: false,
+ get: function () {
+ if (stackString !== undefined) {
+ return stackString
+ }
+
+ // prepare stack trace
+ return stackString = createStackString.call(this, stack)
+ },
+ set: function setter(val) {
+ stackString = val
+ }
+ })
+
+ return error
+}
diff --git a/server/node_modules/express/node_modules/depd/lib/browser/index.js b/server/node_modules/express/node_modules/depd/lib/browser/index.js
new file mode 100755
index 0000000..f464e05
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/lib/browser/index.js
@@ -0,0 +1,79 @@
+/*!
+ * depd
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = depd
+
+/**
+ * Create deprecate for namespace in caller.
+ */
+
+function depd(namespace) {
+ if (!namespace) {
+ throw new TypeError('argument namespace is required')
+ }
+
+ function deprecate(message) {
+ // no-op in browser
+ }
+
+ deprecate._file = undefined
+ deprecate._ignored = true
+ deprecate._namespace = namespace
+ deprecate._traced = false
+ deprecate._warned = Object.create(null)
+
+ deprecate.function = wrapfunction
+ deprecate.property = wrapproperty
+
+ return deprecate
+}
+
+/**
+ * Return a wrapped function in a deprecation message.
+ *
+ * This is a no-op version of the wrapper, which does nothing but call
+ * validation.
+ */
+
+function wrapfunction(fn, message) {
+ if (typeof fn !== 'function') {
+ throw new TypeError('argument fn must be a function')
+ }
+
+ return fn
+}
+
+/**
+ * Wrap property in a deprecation message.
+ *
+ * This is a no-op version of the wrapper, which does nothing but call
+ * validation.
+ */
+
+function wrapproperty(obj, prop, message) {
+ if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
+ throw new TypeError('argument obj must be object')
+ }
+
+ var descriptor = Object.getOwnPropertyDescriptor(obj, prop)
+
+ if (!descriptor) {
+ throw new TypeError('must call property on owner object')
+ }
+
+ if (!descriptor.configurable) {
+ throw new TypeError('property must be configurable')
+ }
+
+ return
+}
diff --git a/server/node_modules/express/node_modules/depd/lib/compat/buffer-concat.js b/server/node_modules/express/node_modules/depd/lib/compat/buffer-concat.js
new file mode 100755
index 0000000..4b73381
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/lib/compat/buffer-concat.js
@@ -0,0 +1,35 @@
+/*!
+ * depd
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ */
+
+module.exports = bufferConcat
+
+/**
+ * Concatenate an array of Buffers.
+ */
+
+function bufferConcat(bufs) {
+ var length = 0
+
+ for (var i = 0, len = bufs.length; i < len; i++) {
+ length += bufs[i].length
+ }
+
+ var buf = new Buffer(length)
+ var pos = 0
+
+ for (var i = 0, len = bufs.length; i < len; i++) {
+ bufs[i].copy(buf, pos)
+ pos += bufs[i].length
+ }
+
+ return buf
+}
diff --git a/server/node_modules/express/node_modules/depd/lib/compat/callsite-tostring.js b/server/node_modules/express/node_modules/depd/lib/compat/callsite-tostring.js
new file mode 100755
index 0000000..9ecef34
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/lib/compat/callsite-tostring.js
@@ -0,0 +1,103 @@
+/*!
+ * depd
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ */
+
+module.exports = callSiteToString
+
+/**
+ * Format a CallSite file location to a string.
+ */
+
+function callSiteFileLocation(callSite) {
+ var fileName
+ var fileLocation = ''
+
+ if (callSite.isNative()) {
+ fileLocation = 'native'
+ } else if (callSite.isEval()) {
+ fileName = callSite.getScriptNameOrSourceURL()
+ if (!fileName) {
+ fileLocation = callSite.getEvalOrigin()
+ }
+ } else {
+ fileName = callSite.getFileName()
+ }
+
+ if (fileName) {
+ fileLocation += fileName
+
+ var lineNumber = callSite.getLineNumber()
+ if (lineNumber != null) {
+ fileLocation += ':' + lineNumber
+
+ var columnNumber = callSite.getColumnNumber()
+ if (columnNumber) {
+ fileLocation += ':' + columnNumber
+ }
+ }
+ }
+
+ return fileLocation || 'unknown source'
+}
+
+/**
+ * Format a CallSite to a string.
+ */
+
+function callSiteToString(callSite) {
+ var addSuffix = true
+ var fileLocation = callSiteFileLocation(callSite)
+ var functionName = callSite.getFunctionName()
+ var isConstructor = callSite.isConstructor()
+ var isMethodCall = !(callSite.isToplevel() || isConstructor)
+ var line = ''
+
+ if (isMethodCall) {
+ var methodName = callSite.getMethodName()
+ var typeName = getConstructorName(callSite)
+
+ if (functionName) {
+ if (typeName && functionName.indexOf(typeName) !== 0) {
+ line += typeName + '.'
+ }
+
+ line += functionName
+
+ if (methodName && functionName.lastIndexOf('.' + methodName) !== functionName.length - methodName.length - 1) {
+ line += ' [as ' + methodName + ']'
+ }
+ } else {
+ line += typeName + '.' + (methodName || '')
+ }
+ } else if (isConstructor) {
+ line += 'new ' + (functionName || '')
+ } else if (functionName) {
+ line += functionName
+ } else {
+ addSuffix = false
+ line += fileLocation
+ }
+
+ if (addSuffix) {
+ line += ' (' + fileLocation + ')'
+ }
+
+ return line
+}
+
+/**
+ * Get constructor name of reviver.
+ */
+
+function getConstructorName(obj) {
+ var receiver = obj.receiver
+ return (receiver.constructor && receiver.constructor.name) || null
+}
diff --git a/server/node_modules/express/node_modules/depd/lib/compat/event-listener-count.js b/server/node_modules/express/node_modules/depd/lib/compat/event-listener-count.js
new file mode 100755
index 0000000..a05fceb
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/lib/compat/event-listener-count.js
@@ -0,0 +1,22 @@
+/*!
+ * depd
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = eventListenerCount
+
+/**
+ * Get the count of listeners on an event emitter of a specific type.
+ */
+
+function eventListenerCount(emitter, type) {
+ return emitter.listeners(type).length
+}
diff --git a/server/node_modules/express/node_modules/depd/lib/compat/index.js b/server/node_modules/express/node_modules/depd/lib/compat/index.js
new file mode 100755
index 0000000..aa3c1de
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/lib/compat/index.js
@@ -0,0 +1,84 @@
+/*!
+ * depd
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var Buffer = require('buffer')
+var EventEmitter = require('events').EventEmitter
+
+/**
+ * Module exports.
+ * @public
+ */
+
+lazyProperty(module.exports, 'bufferConcat', function bufferConcat() {
+ return Buffer.concat || require('./buffer-concat')
+})
+
+lazyProperty(module.exports, 'callSiteToString', function callSiteToString() {
+ var limit = Error.stackTraceLimit
+ var obj = {}
+ var prep = Error.prepareStackTrace
+
+ function prepareObjectStackTrace(obj, stack) {
+ return stack
+ }
+
+ Error.prepareStackTrace = prepareObjectStackTrace
+ Error.stackTraceLimit = 2
+
+ // capture the stack
+ Error.captureStackTrace(obj)
+
+ // slice the stack
+ var stack = obj.stack.slice()
+
+ Error.prepareStackTrace = prep
+ Error.stackTraceLimit = limit
+
+ return stack[0].toString ? toString : require('./callsite-tostring')
+})
+
+lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount() {
+ return EventEmitter.listenerCount || require('./event-listener-count')
+})
+
+/**
+ * Define a lazy property.
+ */
+
+function lazyProperty(obj, prop, getter) {
+ function get() {
+ var val = getter()
+
+ Object.defineProperty(obj, prop, {
+ configurable: true,
+ enumerable: true,
+ value: val
+ })
+
+ return val
+ }
+
+ Object.defineProperty(obj, prop, {
+ configurable: true,
+ enumerable: true,
+ get: get
+ })
+}
+
+/**
+ * Call toString() on the obj
+ */
+
+function toString(obj) {
+ return obj.toString()
+}
diff --git a/server/node_modules/express/node_modules/depd/package.json b/server/node_modules/express/node_modules/depd/package.json
new file mode 100755
index 0000000..edfc0b2
--- /dev/null
+++ b/server/node_modules/express/node_modules/depd/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "depd",
+ "description": "Deprecate all the things",
+ "version": "1.1.0",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "keywords": [
+ "deprecate",
+ "deprecated"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/dougwilson/nodejs-depd.git"
+ },
+ "browser": "lib/browser/index.js",
+ "devDependencies": {
+ "benchmark": "1.0.0",
+ "beautify-benchmark": "0.2.4",
+ "istanbul": "0.3.5",
+ "mocha": "~1.21.5"
+ },
+ "files": [
+ "lib/",
+ "History.md",
+ "LICENSE",
+ "index.js",
+ "Readme.md"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "bench": "node benchmark/index.js",
+ "test": "mocha --reporter spec --bail test/",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --no-exit test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/"
+ },
+ "gitHead": "78c659de20283e3a6bee92bda455e6daff01686a",
+ "bugs": {
+ "url": "https://github.com/dougwilson/nodejs-depd/issues"
+ },
+ "homepage": "https://github.com/dougwilson/nodejs-depd",
+ "_id": "depd@1.1.0",
+ "_shasum": "e1bd82c6aab6ced965b97b88b17ed3e528ca18c3",
+ "_from": "depd@>=1.1.0 <1.2.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "e1bd82c6aab6ced965b97b88b17ed3e528ca18c3",
+ "tarball": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/encodeurl/HISTORY.md b/server/node_modules/express/node_modules/encodeurl/HISTORY.md
new file mode 100755
index 0000000..06d34a5
--- /dev/null
+++ b/server/node_modules/express/node_modules/encodeurl/HISTORY.md
@@ -0,0 +1,9 @@
+1.0.1 / 2016-06-09
+==================
+
+ * Fix encoding unpaired surrogates at start/end of string
+
+1.0.0 / 2016-06-08
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/encodeurl/LICENSE b/server/node_modules/express/node_modules/encodeurl/LICENSE
new file mode 100755
index 0000000..8812229
--- /dev/null
+++ b/server/node_modules/express/node_modules/encodeurl/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2016 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/encodeurl/README.md b/server/node_modules/express/node_modules/encodeurl/README.md
new file mode 100755
index 0000000..b086133
--- /dev/null
+++ b/server/node_modules/express/node_modules/encodeurl/README.md
@@ -0,0 +1,124 @@
+# encodeurl
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Encode a URL to a percent-encoded form, excluding already-encoded sequences
+
+## Installation
+
+```sh
+$ npm install encodeurl
+```
+
+## API
+
+```js
+var encodeUrl = require('encodeurl')
+```
+
+### encodeUrl(url)
+
+Encode a URL to a percent-encoded form, excluding already-encoded sequences.
+
+This function will take an already-encoded URL and encode all the non-URL
+code points (as UTF-8 byte sequences). This function will not encode the
+"%" character unless it is not part of a valid sequence (`%20` will be
+left as-is, but `%foo` will be encoded as `%25foo`).
+
+This encode is meant to be "safe" and does not throw errors. It will try as
+hard as it can to properly encode the given URL, including replacing any raw,
+unpaired surrogate pairs with the Unicode replacement character prior to
+encoding.
+
+This function is _similar_ to the intrinsic function `encodeURI`, except it
+will not encode the `%` character if that is part of a valid sequence, will
+not encode `[` and `]` (for IPv6 hostnames) and will replace raw, unpaired
+surrogate pairs with the Unicode replacement character (instead of throwing).
+
+## Examples
+
+### Encode a URL containing user-controled data
+
+```js
+var encodeUrl = require('encodeurl')
+var escapeHtml = require('escape-html')
+
+http.createServer(function onRequest (req, res) {
+ // get encoded form of inbound url
+ var url = encodeUrl(req.url)
+
+ // create html message
+ var body = 'Location ' + escapeHtml(url) + ' not found
'
+
+ // send a 404
+ res.statusCode = 404
+ res.setHeader('Content-Type', 'text/html; charset=UTF-8')
+ res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8')))
+ res.end(body, 'utf-8')
+})
+```
+
+### Encode a URL for use in a header field
+
+```js
+var encodeUrl = require('encodeurl')
+var escapeHtml = require('escape-html')
+var url = require('url')
+
+http.createServer(function onRequest (req, res) {
+ // parse inbound url
+ var href = url.parse(req)
+
+ // set new host for redirect
+ href.host = 'localhost'
+ href.protocol = 'https:'
+ href.slashes = true
+
+ // create location header
+ var location = encodeUrl(url.format(href))
+
+ // create html message
+ var body = 'Redirecting to new site: ' + escapeHtml(location) + '
'
+
+ // send a 301
+ res.statusCode = 301
+ res.setHeader('Content-Type', 'text/html; charset=UTF-8')
+ res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8')))
+ res.setHeader('Location', location)
+ res.end(body, 'utf-8')
+})
+```
+
+## Testing
+
+```sh
+$ npm test
+$ npm run lint
+```
+
+## References
+
+- [RFC 3986: Uniform Resource Identifier (URI): Generic Syntax][rfc-3986]
+- [WHATWG URL Living Standard][whatwg-url]
+
+[rfc-3986]: https://tools.ietf.org/html/rfc3986
+[whatwg-url]: https://url.spec.whatwg.org/
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/encodeurl.svg
+[npm-url]: https://npmjs.org/package/encodeurl
+[node-version-image]: https://img.shields.io/node/v/encodeurl.svg
+[node-version-url]: https://nodejs.org/en/download
+[travis-image]: https://img.shields.io/travis/pillarjs/encodeurl.svg
+[travis-url]: https://travis-ci.org/pillarjs/encodeurl
+[coveralls-image]: https://img.shields.io/coveralls/pillarjs/encodeurl.svg
+[coveralls-url]: https://coveralls.io/r/pillarjs/encodeurl?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/encodeurl.svg
+[downloads-url]: https://npmjs.org/package/encodeurl
diff --git a/server/node_modules/express/node_modules/encodeurl/index.js b/server/node_modules/express/node_modules/encodeurl/index.js
new file mode 100755
index 0000000..ae77cc9
--- /dev/null
+++ b/server/node_modules/express/node_modules/encodeurl/index.js
@@ -0,0 +1,60 @@
+/*!
+ * encodeurl
+ * Copyright(c) 2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = encodeUrl
+
+/**
+ * RegExp to match non-URL code points, *after* encoding (i.e. not including "%")
+ * and including invalid escape sequences.
+ * @private
+ */
+
+var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]))+/g
+
+/**
+ * RegExp to match unmatched surrogate pair.
+ * @private
+ */
+
+var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g
+
+/**
+ * String to replace unmatched surrogate pair with.
+ * @private
+ */
+
+var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2'
+
+/**
+ * Encode a URL to a percent-encoded form, excluding already-encoded sequences.
+ *
+ * This function will take an already-encoded URL and encode all the non-URL
+ * code points. This function will not encode the "%" character unless it is
+ * not part of a valid sequence (`%20` will be left as-is, but `%foo` will
+ * be encoded as `%25foo`).
+ *
+ * This encode is meant to be "safe" and does not throw errors. It will try as
+ * hard as it can to properly encode the given URL, including replacing any raw,
+ * unpaired surrogate pairs with the Unicode replacement character prior to
+ * encoding.
+ *
+ * @param {string} url
+ * @return {string}
+ * @public
+ */
+
+function encodeUrl (url) {
+ return String(url)
+ .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)
+ .replace(ENCODE_CHARS_REGEXP, encodeURI)
+}
diff --git a/server/node_modules/express/node_modules/encodeurl/package.json b/server/node_modules/express/node_modules/encodeurl/package.json
new file mode 100755
index 0000000..0ff2381
--- /dev/null
+++ b/server/node_modules/express/node_modules/encodeurl/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "encodeurl",
+ "description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences",
+ "version": "1.0.1",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "encode",
+ "encodeurl",
+ "url"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/pillarjs/encodeurl.git"
+ },
+ "devDependencies": {
+ "eslint": "2.11.1",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.3.2",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "2.5.3"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "scripts": {
+ "lint": "eslint **/*.js",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "39ed0c235fed4cea7d012038fd6bb0480561d226",
+ "bugs": {
+ "url": "https://github.com/pillarjs/encodeurl/issues"
+ },
+ "homepage": "https://github.com/pillarjs/encodeurl#readme",
+ "_id": "encodeurl@1.0.1",
+ "_shasum": "79e3d58655346909fe6f0f45a5de68103b294d20",
+ "_from": "encodeurl@>=1.0.1 <1.1.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "79e3d58655346909fe6f0f45a5de68103b294d20",
+ "tarball": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/encodeurl-1.0.1.tgz_1465519736251_0.09314409433864057"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz"
+}
diff --git a/server/node_modules/express/node_modules/escape-html/LICENSE b/server/node_modules/express/node_modules/escape-html/LICENSE
new file mode 100755
index 0000000..2e70de9
--- /dev/null
+++ b/server/node_modules/express/node_modules/escape-html/LICENSE
@@ -0,0 +1,24 @@
+(The MIT License)
+
+Copyright (c) 2012-2013 TJ Holowaychuk
+Copyright (c) 2015 Andreas Lubbe
+Copyright (c) 2015 Tiancheng "Timothy" Gu
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/escape-html/Readme.md b/server/node_modules/express/node_modules/escape-html/Readme.md
new file mode 100755
index 0000000..653d9ea
--- /dev/null
+++ b/server/node_modules/express/node_modules/escape-html/Readme.md
@@ -0,0 +1,43 @@
+
+# escape-html
+
+ Escape string for use in HTML
+
+## Example
+
+```js
+var escape = require('escape-html');
+var html = escape('foo & bar');
+// -> foo & bar
+```
+
+## Benchmark
+
+```
+$ npm run-script bench
+
+> escape-html@1.0.3 bench nodejs-escape-html
+> node benchmark/index.js
+
+
+ http_parser@1.0
+ node@0.10.33
+ v8@3.14.5.9
+ ares@1.9.0-DEV
+ uv@0.10.29
+ zlib@1.2.3
+ modules@11
+ openssl@1.0.1j
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ no special characters x 19,435,271 ops/sec ±0.85% (187 runs sampled)
+ single special character x 6,132,421 ops/sec ±0.67% (194 runs sampled)
+ many special characters x 3,175,826 ops/sec ±0.65% (193 runs sampled)
+```
+
+## License
+
+ MIT
\ No newline at end of file
diff --git a/server/node_modules/express/node_modules/escape-html/index.js b/server/node_modules/express/node_modules/escape-html/index.js
new file mode 100755
index 0000000..bf9e226
--- /dev/null
+++ b/server/node_modules/express/node_modules/escape-html/index.js
@@ -0,0 +1,78 @@
+/*!
+ * escape-html
+ * Copyright(c) 2012-2013 TJ Holowaychuk
+ * Copyright(c) 2015 Andreas Lubbe
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var matchHtmlRegExp = /["'&<>]/;
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = escapeHtml;
+
+/**
+ * Escape special characters in the given string of html.
+ *
+ * @param {string} string The string to escape for inserting into HTML
+ * @return {string}
+ * @public
+ */
+
+function escapeHtml(string) {
+ var str = '' + string;
+ var match = matchHtmlRegExp.exec(str);
+
+ if (!match) {
+ return str;
+ }
+
+ var escape;
+ var html = '';
+ var index = 0;
+ var lastIndex = 0;
+
+ for (index = match.index; index < str.length; index++) {
+ switch (str.charCodeAt(index)) {
+ case 34: // "
+ escape = '"';
+ break;
+ case 38: // &
+ escape = '&';
+ break;
+ case 39: // '
+ escape = ''';
+ break;
+ case 60: // <
+ escape = '<';
+ break;
+ case 62: // >
+ escape = '>';
+ break;
+ default:
+ continue;
+ }
+
+ if (lastIndex !== index) {
+ html += str.substring(lastIndex, index);
+ }
+
+ lastIndex = index + 1;
+ html += escape;
+ }
+
+ return lastIndex !== index
+ ? html + str.substring(lastIndex, index)
+ : html;
+}
diff --git a/server/node_modules/express/node_modules/escape-html/package.json b/server/node_modules/express/node_modules/escape-html/package.json
new file mode 100755
index 0000000..3f418d6
--- /dev/null
+++ b/server/node_modules/express/node_modules/escape-html/package.json
@@ -0,0 +1,57 @@
+{
+ "name": "escape-html",
+ "description": "Escape string for use in HTML",
+ "version": "1.0.3",
+ "license": "MIT",
+ "keywords": [
+ "escape",
+ "html",
+ "utility"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/component/escape-html.git"
+ },
+ "devDependencies": {
+ "benchmark": "1.0.0",
+ "beautify-benchmark": "0.2.4"
+ },
+ "files": [
+ "LICENSE",
+ "Readme.md",
+ "index.js"
+ ],
+ "scripts": {
+ "bench": "node benchmark/index.js"
+ },
+ "gitHead": "7ac2ea3977fcac3d4c5be8d2a037812820c65f28",
+ "bugs": {
+ "url": "https://github.com/component/escape-html/issues"
+ },
+ "homepage": "https://github.com/component/escape-html",
+ "_id": "escape-html@1.0.3",
+ "_shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988",
+ "_from": "escape-html@>=1.0.3 <1.1.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988",
+ "tarball": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/etag/HISTORY.md b/server/node_modules/express/node_modules/etag/HISTORY.md
new file mode 100755
index 0000000..bd0f26d
--- /dev/null
+++ b/server/node_modules/express/node_modules/etag/HISTORY.md
@@ -0,0 +1,71 @@
+1.7.0 / 2015-06-08
+==================
+
+ * Always include entity length in ETags for hash length extensions
+ * Generate non-Stats ETags using MD5 only (no longer CRC32)
+ * Improve stat performance by removing hashing
+ * Remove base64 padding in ETags to shorten
+ * Use MD5 instead of MD4 in weak ETags over 1KB
+
+1.6.0 / 2015-05-10
+==================
+
+ * Improve support for JXcore
+ * Remove requirement of `atime` in the stats object
+ * Support "fake" stats objects in environments without `fs`
+
+1.5.1 / 2014-11-19
+==================
+
+ * deps: crc@3.2.1
+ - Minor fixes
+
+1.5.0 / 2014-10-14
+==================
+
+ * Improve string performance
+ * Slightly improve speed for weak ETags over 1KB
+
+1.4.0 / 2014-09-21
+==================
+
+ * Support "fake" stats objects
+ * Support Node.js 0.6
+
+1.3.1 / 2014-09-14
+==================
+
+ * Use the (new and improved) `crc` for crc32
+
+1.3.0 / 2014-08-29
+==================
+
+ * Default strings to strong ETags
+ * Improve speed for weak ETags over 1KB
+
+1.2.1 / 2014-08-29
+==================
+
+ * Use the (much faster) `buffer-crc32` for crc32
+
+1.2.0 / 2014-08-24
+==================
+
+ * Add support for file stat objects
+
+1.1.0 / 2014-08-24
+==================
+
+ * Add fast-path for empty entity
+ * Add weak ETag generation
+ * Shrink size of generated ETags
+
+1.0.1 / 2014-08-24
+==================
+
+ * Fix behavior of string containing Unicode
+
+1.0.0 / 2014-05-18
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/etag/LICENSE b/server/node_modules/express/node_modules/etag/LICENSE
new file mode 100755
index 0000000..142ede3
--- /dev/null
+++ b/server/node_modules/express/node_modules/etag/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014-2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/etag/README.md b/server/node_modules/express/node_modules/etag/README.md
new file mode 100755
index 0000000..8da9e05
--- /dev/null
+++ b/server/node_modules/express/node_modules/etag/README.md
@@ -0,0 +1,165 @@
+# etag
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Create simple ETags
+
+## Installation
+
+```sh
+$ npm install etag
+```
+
+## API
+
+```js
+var etag = require('etag')
+```
+
+### etag(entity, [options])
+
+Generate a strong ETag for the given entity. This should be the complete
+body of the entity. Strings, `Buffer`s, and `fs.Stats` are accepted. By
+default, a strong ETag is generated except for `fs.Stats`, which will
+generate a weak ETag (this can be overwritten by `options.weak`).
+
+```js
+res.setHeader('ETag', etag(body))
+```
+
+#### Options
+
+`etag` accepts these properties in the options object.
+
+##### weak
+
+Specifies if the generated ETag will include the weak validator mark (that
+is, the leading `W/`). The actual entity tag is the same. The default value
+is `false`, unless the `entity` is `fs.Stats`, in which case it is `true`.
+
+## Testing
+
+```sh
+$ npm test
+```
+
+## Benchmark
+
+```bash
+$ npm run-script bench
+
+> etag@1.6.0 bench nodejs-etag
+> node benchmark/index.js
+
+ http_parser@1.0
+ node@0.10.33
+ v8@3.14.5.9
+ ares@1.9.0-DEV
+ uv@0.10.29
+ zlib@1.2.3
+ modules@11
+ openssl@1.0.1j
+
+> node benchmark/body0-100b.js
+
+ 100B body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 289,198 ops/sec ±1.09% (190 runs sampled)
+* buffer - weak x 287,838 ops/sec ±0.91% (189 runs sampled)
+* string - strong x 284,586 ops/sec ±1.05% (192 runs sampled)
+* string - weak x 287,439 ops/sec ±0.82% (192 runs sampled)
+
+> node benchmark/body1-1kb.js
+
+ 1KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 212,423 ops/sec ±0.75% (193 runs sampled)
+* buffer - weak x 211,871 ops/sec ±0.74% (194 runs sampled)
+ string - strong x 205,291 ops/sec ±0.86% (194 runs sampled)
+ string - weak x 208,463 ops/sec ±0.79% (192 runs sampled)
+
+> node benchmark/body2-5kb.js
+
+ 5KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 92,901 ops/sec ±0.58% (195 runs sampled)
+* buffer - weak x 93,045 ops/sec ±0.65% (192 runs sampled)
+ string - strong x 89,621 ops/sec ±0.68% (194 runs sampled)
+ string - weak x 90,070 ops/sec ±0.70% (196 runs sampled)
+
+> node benchmark/body3-10kb.js
+
+ 10KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 54,220 ops/sec ±0.85% (192 runs sampled)
+* buffer - weak x 54,069 ops/sec ±0.83% (191 runs sampled)
+ string - strong x 53,078 ops/sec ±0.53% (194 runs sampled)
+ string - weak x 53,849 ops/sec ±0.47% (197 runs sampled)
+
+> node benchmark/body4-100kb.js
+
+ 100KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* buffer - strong x 6,673 ops/sec ±0.15% (197 runs sampled)
+* buffer - weak x 6,716 ops/sec ±0.12% (198 runs sampled)
+ string - strong x 6,357 ops/sec ±0.14% (197 runs sampled)
+ string - weak x 6,344 ops/sec ±0.21% (197 runs sampled)
+
+> node benchmark/stats.js
+
+ stats
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+* real - strong x 1,671,989 ops/sec ±0.13% (197 runs sampled)
+* real - weak x 1,681,297 ops/sec ±0.12% (198 runs sampled)
+ fake - strong x 927,063 ops/sec ±0.14% (198 runs sampled)
+ fake - weak x 914,461 ops/sec ±0.41% (191 runs sampled)
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/etag.svg
+[npm-url]: https://npmjs.org/package/etag
+[node-version-image]: https://img.shields.io/node/v/etag.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/etag/master.svg
+[travis-url]: https://travis-ci.org/jshttp/etag
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/etag?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/etag.svg
+[downloads-url]: https://npmjs.org/package/etag
diff --git a/server/node_modules/express/node_modules/etag/index.js b/server/node_modules/express/node_modules/etag/index.js
new file mode 100755
index 0000000..b582c84
--- /dev/null
+++ b/server/node_modules/express/node_modules/etag/index.js
@@ -0,0 +1,132 @@
+/*!
+ * etag
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = etag
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var crypto = require('crypto')
+var Stats = require('fs').Stats
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var base64PadCharRegExp = /=+$/
+var toString = Object.prototype.toString
+
+/**
+ * Generate an entity tag.
+ *
+ * @param {Buffer|string} entity
+ * @return {string}
+ * @private
+ */
+
+function entitytag(entity) {
+ if (entity.length === 0) {
+ // fast-path empty
+ return '"0-1B2M2Y8AsgTpgAmY7PhCfg"'
+ }
+
+ // compute hash of entity
+ var hash = crypto
+ .createHash('md5')
+ .update(entity, 'utf8')
+ .digest('base64')
+ .replace(base64PadCharRegExp, '')
+
+ // compute length of entity
+ var len = typeof entity === 'string'
+ ? Buffer.byteLength(entity, 'utf8')
+ : entity.length
+
+ return '"' + len.toString(16) + '-' + hash + '"'
+}
+
+/**
+ * Create a simple ETag.
+ *
+ * @param {string|Buffer|Stats} entity
+ * @param {object} [options]
+ * @param {boolean} [options.weak]
+ * @return {String}
+ * @public
+ */
+
+function etag(entity, options) {
+ if (entity == null) {
+ throw new TypeError('argument entity is required')
+ }
+
+ // support fs.Stats object
+ var isStats = isstats(entity)
+ var weak = options && typeof options.weak === 'boolean'
+ ? options.weak
+ : isStats
+
+ // validate argument
+ if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) {
+ throw new TypeError('argument entity must be string, Buffer, or fs.Stats')
+ }
+
+ // generate entity tag
+ var tag = isStats
+ ? stattag(entity)
+ : entitytag(entity)
+
+ return weak
+ ? 'W/' + tag
+ : tag
+}
+
+/**
+ * Determine if object is a Stats object.
+ *
+ * @param {object} obj
+ * @return {boolean}
+ * @api private
+ */
+
+function isstats(obj) {
+ // genuine fs.Stats
+ if (typeof Stats === 'function' && obj instanceof Stats) {
+ return true
+ }
+
+ // quack quack
+ return obj && typeof obj === 'object'
+ && 'ctime' in obj && toString.call(obj.ctime) === '[object Date]'
+ && 'mtime' in obj && toString.call(obj.mtime) === '[object Date]'
+ && 'ino' in obj && typeof obj.ino === 'number'
+ && 'size' in obj && typeof obj.size === 'number'
+}
+
+/**
+ * Generate a tag for a stat.
+ *
+ * @param {object} stat
+ * @return {string}
+ * @private
+ */
+
+function stattag(stat) {
+ var mtime = stat.mtime.getTime().toString(16)
+ var size = stat.size.toString(16)
+
+ return '"' + size + '-' + mtime + '"'
+}
diff --git a/server/node_modules/express/node_modules/etag/package.json b/server/node_modules/express/node_modules/etag/package.json
new file mode 100755
index 0000000..b1b5d22
--- /dev/null
+++ b/server/node_modules/express/node_modules/etag/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "etag",
+ "description": "Create simple ETags",
+ "version": "1.7.0",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "David Björklund",
+ "email": "david.bjorklund@gmail.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "etag",
+ "http",
+ "res"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/etag.git"
+ },
+ "devDependencies": {
+ "benchmark": "1.0.0",
+ "beautify-benchmark": "0.2.4",
+ "istanbul": "0.3.14",
+ "mocha": "~1.21.4",
+ "seedrandom": "2.3.11"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "bench": "node benchmark/index.js",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "a511f5c8c930fd9546dbd88acb080f96bc788cfc",
+ "bugs": {
+ "url": "https://github.com/jshttp/etag/issues"
+ },
+ "homepage": "https://github.com/jshttp/etag",
+ "_id": "etag@1.7.0",
+ "_shasum": "03d30b5f67dd6e632d2945d30d6652731a34d5d8",
+ "_from": "etag@>=1.7.0 <1.8.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "03d30b5f67dd6e632d2945d30d6652731a34d5d8",
+ "tarball": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/finalhandler/HISTORY.md b/server/node_modules/express/node_modules/finalhandler/HISTORY.md
new file mode 100755
index 0000000..e7e144c
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/HISTORY.md
@@ -0,0 +1,108 @@
+0.5.0 / 2016-06-15
+==================
+
+ * Change invalid or non-numeric status code to 500
+ * Overwrite status message to match set status code
+ * Prefer `err.statusCode` if `err.status` is invalid
+ * Set response headers from `err.headers` object
+ * Use `statuses` instead of `http` module for status messages
+ - Includes all defined status messages
+
+0.4.1 / 2015-12-02
+==================
+
+ * deps: escape-html@~1.0.3
+ - perf: enable strict mode
+ - perf: optimize string replacement
+ - perf: use faster string coercion
+
+0.4.0 / 2015-06-14
+==================
+
+ * Fix a false-positive when unpiping in Node.js 0.8
+ * Support `statusCode` property on `Error` objects
+ * Use `unpipe` module for unpiping requests
+ * deps: escape-html@1.0.2
+ * deps: on-finished@~2.3.0
+ - Add defined behavior for HTTP `CONNECT` requests
+ - Add defined behavior for HTTP `Upgrade` requests
+ - deps: ee-first@1.1.1
+ * perf: enable strict mode
+ * perf: remove argument reassignment
+
+0.3.6 / 2015-05-11
+==================
+
+ * deps: debug@~2.2.0
+ - deps: ms@0.7.1
+
+0.3.5 / 2015-04-22
+==================
+
+ * deps: on-finished@~2.2.1
+ - Fix `isFinished(req)` when data buffered
+
+0.3.4 / 2015-03-15
+==================
+
+ * deps: debug@~2.1.3
+ - Fix high intensity foreground color for bold
+ - deps: ms@0.7.0
+
+0.3.3 / 2015-01-01
+==================
+
+ * deps: debug@~2.1.1
+ * deps: on-finished@~2.2.0
+
+0.3.2 / 2014-10-22
+==================
+
+ * deps: on-finished@~2.1.1
+ - Fix handling of pipelined requests
+
+0.3.1 / 2014-10-16
+==================
+
+ * deps: debug@~2.1.0
+ - Implement `DEBUG_FD` env variable support
+
+0.3.0 / 2014-09-17
+==================
+
+ * Terminate in progress response only on error
+ * Use `on-finished` to determine request status
+
+0.2.0 / 2014-09-03
+==================
+
+ * Set `X-Content-Type-Options: nosniff` header
+ * deps: debug@~2.0.0
+
+0.1.0 / 2014-07-16
+==================
+
+ * Respond after request fully read
+ - prevents hung responses and socket hang ups
+ * deps: debug@1.0.4
+
+0.0.3 / 2014-07-11
+==================
+
+ * deps: debug@1.0.3
+ - Add support for multiple wildcards in namespaces
+
+0.0.2 / 2014-06-19
+==================
+
+ * Handle invalid status codes
+
+0.0.1 / 2014-06-05
+==================
+
+ * deps: debug@1.0.2
+
+0.0.0 / 2014-06-05
+==================
+
+ * Extracted from connect/express
diff --git a/server/node_modules/express/node_modules/finalhandler/LICENSE b/server/node_modules/express/node_modules/finalhandler/LICENSE
new file mode 100755
index 0000000..b60a5ad
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014-2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/finalhandler/README.md b/server/node_modules/express/node_modules/finalhandler/README.md
new file mode 100755
index 0000000..58bf720
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/README.md
@@ -0,0 +1,142 @@
+# finalhandler
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-image]][node-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Node.js function to invoke as the final step to respond to HTTP request.
+
+## Installation
+
+```sh
+$ npm install finalhandler
+```
+
+## API
+
+```js
+var finalhandler = require('finalhandler')
+```
+
+### finalhandler(req, res, [options])
+
+Returns function to be invoked as the final step for the given `req` and `res`.
+This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will
+write out a 404 response to the `res`. If it is truthy, an error response will
+be written out to the `res`.
+
+When an error is written, the following information is added to the response:
+
+ * The `res.statusCode` is set from `err.status` (or `err.statusCode`). If
+ this value is outside the 4xx or 5xx range, it will be set to 500.
+ * The `res.statusMessage` is set according to the status code.
+ * The body will be the HTML of the status code message if `env` is
+ `'production'`, otherwise will be `err.stack`.
+ * Any headers specified in an `err.headers` object.
+
+The final handler will also unpipe anything from `req` when it is invoked.
+
+#### options.env
+
+By default, the environment is determined by `NODE_ENV` variable, but it can be
+overridden by this option.
+
+#### options.onerror
+
+Provide a function to be called with the `err` when it exists. Can be used for
+writing errors to a central location without excessive function generation. Called
+as `onerror(err, req, res)`.
+
+## Examples
+
+### always 404
+
+```js
+var finalhandler = require('finalhandler')
+var http = require('http')
+
+var server = http.createServer(function (req, res) {
+ var done = finalhandler(req, res)
+ done()
+})
+
+server.listen(3000)
+```
+
+### perform simple action
+
+```js
+var finalhandler = require('finalhandler')
+var fs = require('fs')
+var http = require('http')
+
+var server = http.createServer(function (req, res) {
+ var done = finalhandler(req, res)
+
+ fs.readFile('index.html', function (err, buf) {
+ if (err) return done(err)
+ res.setHeader('Content-Type', 'text/html')
+ res.end(buf)
+ })
+})
+
+server.listen(3000)
+```
+
+### use with middleware-style functions
+
+```js
+var finalhandler = require('finalhandler')
+var http = require('http')
+var serveStatic = require('serve-static')
+
+var serve = serveStatic('public')
+
+var server = http.createServer(function (req, res) {
+ var done = finalhandler(req, res)
+ serve(req, res, done)
+})
+
+server.listen(3000)
+```
+
+### keep log of all errors
+
+```js
+var finalhandler = require('finalhandler')
+var fs = require('fs')
+var http = require('http')
+
+var server = http.createServer(function (req, res) {
+ var done = finalhandler(req, res, {onerror: logerror})
+
+ fs.readFile('index.html', function (err, buf) {
+ if (err) return done(err)
+ res.setHeader('Content-Type', 'text/html')
+ res.end(buf)
+ })
+})
+
+server.listen(3000)
+
+function logerror(err) {
+ console.error(err.stack || err.toString())
+}
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/finalhandler.svg
+[npm-url]: https://npmjs.org/package/finalhandler
+[node-image]: https://img.shields.io/node/v/finalhandler.svg
+[node-url]: https://nodejs.org/en/download
+[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg
+[travis-url]: https://travis-ci.org/pillarjs/finalhandler
+[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg
+[coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg
+[downloads-url]: https://npmjs.org/package/finalhandler
diff --git a/server/node_modules/express/node_modules/finalhandler/index.js b/server/node_modules/express/node_modules/finalhandler/index.js
new file mode 100755
index 0000000..884d802
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/index.js
@@ -0,0 +1,189 @@
+/*!
+ * finalhandler
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var debug = require('debug')('finalhandler')
+var escapeHtml = require('escape-html')
+var onFinished = require('on-finished')
+var statuses = require('statuses')
+var unpipe = require('unpipe')
+
+/**
+ * Module variables.
+ * @private
+ */
+
+/* istanbul ignore next */
+var defer = typeof setImmediate === 'function'
+ ? setImmediate
+ : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }
+var isFinished = onFinished.isFinished
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = finalhandler
+
+/**
+ * Create a function to handle the final response.
+ *
+ * @param {Request} req
+ * @param {Response} res
+ * @param {Object} [options]
+ * @return {Function}
+ * @public
+ */
+
+function finalhandler (req, res, options) {
+ var opts = options || {}
+
+ // get environment
+ var env = opts.env || process.env.NODE_ENV || 'development'
+
+ // get error callback
+ var onerror = opts.onerror
+
+ return function (err) {
+ var headers = Object.create(null)
+ var status
+
+ // ignore 404 on in-flight response
+ if (!err && res._header) {
+ debug('cannot 404 after headers sent')
+ return
+ }
+
+ // unhandled error
+ if (err) {
+ // respect status code from error
+ status = getErrorStatusCode(err) || res.statusCode
+
+ // default status code to 500 if outside valid range
+ if (typeof status !== 'number' || status < 400 || status > 599) {
+ status = 500
+ }
+
+ // respect err.headers
+ if (err.headers && (err.status === status || err.statusCode === status)) {
+ var keys = Object.keys(err.headers)
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i]
+ headers[key] = err.headers[key]
+ }
+ }
+
+ // production gets a basic error message
+ var msg = env === 'production'
+ ? statuses[status]
+ : err.stack || err.toString()
+ msg = escapeHtml(msg)
+ .replace(/\n/g, ' ')
+ .replace(/\x20{2}/g, ' ') + '\n'
+ } else {
+ status = 404
+ msg = 'Cannot ' + escapeHtml(req.method) + ' ' + escapeHtml(req.originalUrl || req.url) + '\n'
+ }
+
+ debug('default %s', status)
+
+ // schedule onerror callback
+ if (err && onerror) {
+ defer(onerror, err, req, res)
+ }
+
+ // cannot actually respond
+ if (res._header) {
+ debug('cannot %d after headers sent', status)
+ req.socket.destroy()
+ return
+ }
+
+ // send response
+ send(req, res, status, headers, msg)
+ }
+}
+
+/**
+ * Get status code from Error object.
+ *
+ * @param {Error} err
+ * @return {number}
+ * @private
+ */
+
+function getErrorStatusCode (err) {
+ // check err.status
+ if (typeof err.status === 'number' && err.status >= 400 && err.status < 600) {
+ return err.status
+ }
+
+ // check err.statusCode
+ if (typeof err.statusCode === 'number' && err.statusCode >= 400 && err.statusCode < 600) {
+ return err.statusCode
+ }
+
+ return undefined
+}
+
+/**
+ * Send response.
+ *
+ * @param {IncomingMessage} req
+ * @param {OutgoingMessage} res
+ * @param {number} status
+ * @param {object} headers
+ * @param {string} body
+ * @private
+ */
+
+function send (req, res, status, headers, body) {
+ function write () {
+ // response status
+ res.statusCode = status
+ res.statusMessage = statuses[status]
+
+ // response headers
+ var keys = Object.keys(headers)
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i]
+ res.setHeader(key, headers[key])
+ }
+
+ // security header for content sniffing
+ res.setHeader('X-Content-Type-Options', 'nosniff')
+
+ // standard headers
+ res.setHeader('Content-Type', 'text/html; charset=utf-8')
+ res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8'))
+
+ if (req.method === 'HEAD') {
+ res.end()
+ return
+ }
+
+ res.end(body, 'utf8')
+ }
+
+ if (isFinished(req)) {
+ write()
+ return
+ }
+
+ // unpipe everything from the request
+ unpipe(req)
+
+ // flush the request
+ onFinished(req, write)
+ req.resume()
+}
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/HISTORY.md b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/HISTORY.md
new file mode 100755
index 0000000..b175575
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/HISTORY.md
@@ -0,0 +1,50 @@
+1.3.0 / 2016-05-17
+==================
+
+ * Add `421 Misdirected Request`
+ * perf: enable strict mode
+
+1.2.1 / 2015-02-01
+==================
+
+ * Fix message for status 451
+ - `451 Unavailable For Legal Reasons`
+
+1.2.0 / 2014-09-28
+==================
+
+ * Add `208 Already Repored`
+ * Add `226 IM Used`
+ * Add `306 (Unused)`
+ * Add `415 Unable For Legal Reasons`
+ * Add `508 Loop Detected`
+
+1.1.1 / 2014-09-24
+==================
+
+ * Add missing 308 to `codes.json`
+
+1.1.0 / 2014-09-21
+==================
+
+ * Add `codes.json` for universal support
+
+1.0.4 / 2014-08-20
+==================
+
+ * Package cleanup
+
+1.0.3 / 2014-06-08
+==================
+
+ * Add 308 to `.redirect` category
+
+1.0.2 / 2014-03-13
+==================
+
+ * Add `.retry` category
+
+1.0.1 / 2014-03-12
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/LICENSE b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/LICENSE
new file mode 100755
index 0000000..82af4df
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/LICENSE
@@ -0,0 +1,23 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/README.md b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/README.md
new file mode 100755
index 0000000..1a699da
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/README.md
@@ -0,0 +1,114 @@
+# Statuses
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+HTTP status utility for node.
+
+## API
+
+```js
+var status = require('statuses')
+```
+
+### var code = status(Integer || String)
+
+If `Integer` or `String` is a valid HTTP code or status message, then the appropriate `code` will be returned. Otherwise, an error will be thrown.
+
+```js
+status(403) // => 403
+status('403') // => 403
+status('forbidden') // => 403
+status('Forbidden') // => 403
+status(306) // throws, as it's not supported by node.js
+```
+
+### status.codes
+
+Returns an array of all the status codes as `Integer`s.
+
+### var msg = status[code]
+
+Map of `code` to `status message`. `undefined` for invalid `code`s.
+
+```js
+status[404] // => 'Not Found'
+```
+
+### var code = status[msg]
+
+Map of `status message` to `code`. `msg` can either be title-cased or lower-cased. `undefined` for invalid `status message`s.
+
+```js
+status['not found'] // => 404
+status['Not Found'] // => 404
+```
+
+### status.redirect[code]
+
+Returns `true` if a status code is a valid redirect status.
+
+```js
+status.redirect[200] // => undefined
+status.redirect[301] // => true
+```
+
+### status.empty[code]
+
+Returns `true` if a status code expects an empty body.
+
+```js
+status.empty[200] // => undefined
+status.empty[204] // => true
+status.empty[304] // => true
+```
+
+### status.retry[code]
+
+Returns `true` if you should retry the rest.
+
+```js
+status.retry[501] // => undefined
+status.retry[503] // => true
+```
+
+### statuses/codes.json
+
+```js
+var codes = require('statuses/codes.json')
+```
+
+This is a JSON file of the status codes
+taken from `require('http').STATUS_CODES`.
+This is saved so that codes are consistent even in older node.js versions.
+For example, `308` will be added in v0.12.
+
+## Adding Status Codes
+
+The status codes are primarily sourced from http://www.iana.org/assignments/http-status-codes/http-status-codes-1.csv.
+Additionally, custom codes are added from http://en.wikipedia.org/wiki/List_of_HTTP_status_codes.
+These are added manually in the `lib/*.json` files.
+If you would like to add a status code, add it to the appropriate JSON file.
+
+To rebuild `codes.json`, run the following:
+
+```bash
+# update src/iana.json
+npm run fetch
+# build codes.json
+npm run build
+```
+
+[npm-image]: https://img.shields.io/npm/v/statuses.svg
+[npm-url]: https://npmjs.org/package/statuses
+[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg
+[node-version-url]: https://nodejs.org/en/download
+[travis-image]: https://img.shields.io/travis/jshttp/statuses.svg
+[travis-url]: https://travis-ci.org/jshttp/statuses
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/statuses.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/statuses?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/statuses.svg
+[downloads-url]: https://npmjs.org/package/statuses
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/codes.json b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/codes.json
new file mode 100755
index 0000000..e765123
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/codes.json
@@ -0,0 +1,65 @@
+{
+ "100": "Continue",
+ "101": "Switching Protocols",
+ "102": "Processing",
+ "200": "OK",
+ "201": "Created",
+ "202": "Accepted",
+ "203": "Non-Authoritative Information",
+ "204": "No Content",
+ "205": "Reset Content",
+ "206": "Partial Content",
+ "207": "Multi-Status",
+ "208": "Already Reported",
+ "226": "IM Used",
+ "300": "Multiple Choices",
+ "301": "Moved Permanently",
+ "302": "Found",
+ "303": "See Other",
+ "304": "Not Modified",
+ "305": "Use Proxy",
+ "306": "(Unused)",
+ "307": "Temporary Redirect",
+ "308": "Permanent Redirect",
+ "400": "Bad Request",
+ "401": "Unauthorized",
+ "402": "Payment Required",
+ "403": "Forbidden",
+ "404": "Not Found",
+ "405": "Method Not Allowed",
+ "406": "Not Acceptable",
+ "407": "Proxy Authentication Required",
+ "408": "Request Timeout",
+ "409": "Conflict",
+ "410": "Gone",
+ "411": "Length Required",
+ "412": "Precondition Failed",
+ "413": "Payload Too Large",
+ "414": "URI Too Long",
+ "415": "Unsupported Media Type",
+ "416": "Range Not Satisfiable",
+ "417": "Expectation Failed",
+ "418": "I'm a teapot",
+ "421": "Misdirected Request",
+ "422": "Unprocessable Entity",
+ "423": "Locked",
+ "424": "Failed Dependency",
+ "425": "Unordered Collection",
+ "426": "Upgrade Required",
+ "428": "Precondition Required",
+ "429": "Too Many Requests",
+ "431": "Request Header Fields Too Large",
+ "451": "Unavailable For Legal Reasons",
+ "500": "Internal Server Error",
+ "501": "Not Implemented",
+ "502": "Bad Gateway",
+ "503": "Service Unavailable",
+ "504": "Gateway Timeout",
+ "505": "HTTP Version Not Supported",
+ "506": "Variant Also Negotiates",
+ "507": "Insufficient Storage",
+ "508": "Loop Detected",
+ "509": "Bandwidth Limit Exceeded",
+ "510": "Not Extended",
+ "511": "Network Authentication Required"
+}
\ No newline at end of file
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/index.js b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/index.js
new file mode 100755
index 0000000..c2b555a
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/index.js
@@ -0,0 +1,110 @@
+/*!
+ * statuses
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var codes = require('./codes.json')
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = status
+
+// array of status codes
+status.codes = populateStatusesMap(status, codes)
+
+// status codes for redirects
+status.redirect = {
+ 300: true,
+ 301: true,
+ 302: true,
+ 303: true,
+ 305: true,
+ 307: true,
+ 308: true
+}
+
+// status codes for empty bodies
+status.empty = {
+ 204: true,
+ 205: true,
+ 304: true
+}
+
+// status codes for when you should retry the request
+status.retry = {
+ 502: true,
+ 503: true,
+ 504: true
+}
+
+/**
+ * Populate the statuses map for given codes.
+ * @private
+ */
+
+function populateStatusesMap (statuses, codes) {
+ var arr = []
+
+ Object.keys(codes).forEach(function forEachCode (code) {
+ var message = codes[code]
+ var status = Number(code)
+
+ // Populate properties
+ statuses[status] = message
+ statuses[message] = status
+ statuses[message.toLowerCase()] = status
+
+ // Add to array
+ arr.push(status)
+ })
+
+ return arr
+}
+
+/**
+ * Get the status code.
+ *
+ * Given a number, this will throw if it is not a known status
+ * code, otherwise the code will be returned. Given a string,
+ * the string will be parsed for a number and return the code
+ * if valid, otherwise will lookup the code assuming this is
+ * the status message.
+ *
+ * @param {string|number} code
+ * @returns {string}
+ * @public
+ */
+
+function status (code) {
+ if (typeof code === 'number') {
+ if (!status[code]) throw new Error('invalid status code: ' + code)
+ return code
+ }
+
+ if (typeof code !== 'string') {
+ throw new TypeError('code must be a number or string')
+ }
+
+ // '403'
+ var n = parseInt(code, 10)
+ if (!isNaN(n)) {
+ if (!status[n]) throw new Error('invalid status code: ' + n)
+ return n
+ }
+
+ n = status[code.toLowerCase()]
+ if (!n) throw new Error('invalid status message: "' + code + '"')
+ return n
+}
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/package.json b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/package.json
new file mode 100755
index 0000000..c4608eb
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/statuses/package.json
@@ -0,0 +1,103 @@
+{
+ "name": "statuses",
+ "description": "HTTP status utility",
+ "version": "1.3.0",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jshttp/statuses"
+ },
+ "license": "MIT",
+ "keywords": [
+ "http",
+ "status",
+ "code"
+ ],
+ "files": [
+ "HISTORY.md",
+ "index.js",
+ "codes.json",
+ "LICENSE"
+ ],
+ "devDependencies": {
+ "csv-parse": "1.0.1",
+ "eslint": "2.10.2",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.1.0",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5",
+ "stream-to-array": "2.2.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "build": "node scripts/build.js",
+ "fetch": "node scripts/fetch.js",
+ "lint": "eslint **/*.js",
+ "test": "mocha --reporter spec --check-leaks --bail test/",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "update": "npm run fetch && npm run build"
+ },
+ "gitHead": "b3e31e8c32dd8107e898b44b8c0b2dfff3cba495",
+ "bugs": {
+ "url": "https://github.com/jshttp/statuses/issues"
+ },
+ "homepage": "https://github.com/jshttp/statuses",
+ "_id": "statuses@1.3.0",
+ "_shasum": "8e55758cb20e7682c1f4fce8dcab30bf01d1e07a",
+ "_from": "statuses@>=1.3.0 <1.4.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "defunctzombie",
+ "email": "shtylman@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "fishrock123",
+ "email": "fishrock123@rocketmail.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "mscdex",
+ "email": "mscdex@mscdex.net"
+ },
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ }
+ ],
+ "dist": {
+ "shasum": "8e55758cb20e7682c1f4fce8dcab30bf01d1e07a",
+ "tarball": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/statuses-1.3.0.tgz_1463517875633_0.19560232176445425"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/HISTORY.md b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/HISTORY.md
new file mode 100755
index 0000000..85e0f8d
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/HISTORY.md
@@ -0,0 +1,4 @@
+1.0.0 / 2015-06-14
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/LICENSE b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/LICENSE
new file mode 100755
index 0000000..aed0138
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/README.md b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/README.md
new file mode 100755
index 0000000..e536ad2
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/README.md
@@ -0,0 +1,43 @@
+# unpipe
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-image]][node-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Unpipe a stream from all destinations.
+
+## Installation
+
+```sh
+$ npm install unpipe
+```
+
+## API
+
+```js
+var unpipe = require('unpipe')
+```
+
+### unpipe(stream)
+
+Unpipes all destinations from a given stream. With stream 2+, this is
+equivalent to `stream.unpipe()`. When used with streams 1 style streams
+(typically Node.js 0.8 and below), this module attempts to undo the
+actions done in `stream.pipe(dest)`.
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/unpipe.svg
+[npm-url]: https://npmjs.org/package/unpipe
+[node-image]: https://img.shields.io/node/v/unpipe.svg
+[node-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/stream-utils/unpipe.svg
+[travis-url]: https://travis-ci.org/stream-utils/unpipe
+[coveralls-image]: https://img.shields.io/coveralls/stream-utils/unpipe.svg
+[coveralls-url]: https://coveralls.io/r/stream-utils/unpipe?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/unpipe.svg
+[downloads-url]: https://npmjs.org/package/unpipe
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/index.js b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/index.js
new file mode 100755
index 0000000..15c3d97
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/index.js
@@ -0,0 +1,69 @@
+/*!
+ * unpipe
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = unpipe
+
+/**
+ * Determine if there are Node.js pipe-like data listeners.
+ * @private
+ */
+
+function hasPipeDataListeners(stream) {
+ var listeners = stream.listeners('data')
+
+ for (var i = 0; i < listeners.length; i++) {
+ if (listeners[i].name === 'ondata') {
+ return true
+ }
+ }
+
+ return false
+}
+
+/**
+ * Unpipe a stream from all destinations.
+ *
+ * @param {object} stream
+ * @public
+ */
+
+function unpipe(stream) {
+ if (!stream) {
+ throw new TypeError('argument stream is required')
+ }
+
+ if (typeof stream.unpipe === 'function') {
+ // new-style
+ stream.unpipe()
+ return
+ }
+
+ // Node.js 0.8 hack
+ if (!hasPipeDataListeners(stream)) {
+ return
+ }
+
+ var listener
+ var listeners = stream.listeners('close')
+
+ for (var i = 0; i < listeners.length; i++) {
+ listener = listeners[i]
+
+ if (listener.name !== 'cleanup' && listener.name !== 'onclose') {
+ continue
+ }
+
+ // invoke the listener
+ listener.call(stream)
+ }
+}
diff --git a/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/package.json b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/package.json
new file mode 100755
index 0000000..1dcbe65
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/node_modules/unpipe/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "unpipe",
+ "description": "Unpipe a stream from all destinations",
+ "version": "1.0.0",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/stream-utils/unpipe"
+ },
+ "devDependencies": {
+ "istanbul": "0.3.15",
+ "mocha": "2.2.5",
+ "readable-stream": "1.1.13"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "d2df901c06487430e78dca62b6edb8bb2fc5e99d",
+ "bugs": {
+ "url": "https://github.com/stream-utils/unpipe/issues"
+ },
+ "homepage": "https://github.com/stream-utils/unpipe",
+ "_id": "unpipe@1.0.0",
+ "_shasum": "b2bf4ee8514aae6165b4817829d21b2ef49904ec",
+ "_from": "unpipe@>=1.0.0 <1.1.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "b2bf4ee8514aae6165b4817829d21b2ef49904ec",
+ "tarball": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/finalhandler/package.json b/server/node_modules/express/node_modules/finalhandler/package.json
new file mode 100755
index 0000000..b1bd0ea
--- /dev/null
+++ b/server/node_modules/express/node_modules/finalhandler/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "finalhandler",
+ "description": "Node.js final http responder",
+ "version": "0.5.0",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/pillarjs/finalhandler"
+ },
+ "dependencies": {
+ "debug": "~2.2.0",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "statuses": "~1.3.0",
+ "unpipe": "~1.0.0"
+ },
+ "devDependencies": {
+ "eslint": "2.12.0",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.3.2",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "2.5.3",
+ "readable-stream": "2.1.2",
+ "supertest": "1.1.0"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "scripts": {
+ "lint": "eslint **/*.js",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "15cc543eb87dd0e2f29e931d86816a6eb348c573",
+ "bugs": {
+ "url": "https://github.com/pillarjs/finalhandler/issues"
+ },
+ "homepage": "https://github.com/pillarjs/finalhandler",
+ "_id": "finalhandler@0.5.0",
+ "_shasum": "e9508abece9b6dba871a6942a1d7911b91911ac7",
+ "_from": "finalhandler@0.5.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "e9508abece9b6dba871a6942a1d7911b91911ac7",
+ "tarball": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/finalhandler-0.5.0.tgz_1466028655505_0.19758180482313037"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/fresh/HISTORY.md b/server/node_modules/express/node_modules/fresh/HISTORY.md
new file mode 100755
index 0000000..3c95fbb
--- /dev/null
+++ b/server/node_modules/express/node_modules/fresh/HISTORY.md
@@ -0,0 +1,38 @@
+0.3.0 / 2015-05-12
+==================
+
+ * Add weak `ETag` matching support
+
+0.2.4 / 2014-09-07
+==================
+
+ * Support Node.js 0.6
+
+0.2.3 / 2014-09-07
+==================
+
+ * Move repository to jshttp
+
+0.2.2 / 2014-02-19
+==================
+
+ * Revert "Fix for blank page on Safari reload"
+
+0.2.1 / 2014-01-29
+==================
+
+ * Fix for blank page on Safari reload
+
+0.2.0 / 2013-08-11
+==================
+
+ * Return stale for `Cache-Control: no-cache`
+
+0.1.0 / 2012-06-15
+==================
+ * Add `If-None-Match: *` support
+
+0.0.1 / 2012-06-10
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/fresh/LICENSE b/server/node_modules/express/node_modules/fresh/LICENSE
new file mode 100755
index 0000000..f527394
--- /dev/null
+++ b/server/node_modules/express/node_modules/fresh/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2012 TJ Holowaychuk
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/fresh/README.md b/server/node_modules/express/node_modules/fresh/README.md
new file mode 100755
index 0000000..0813e30
--- /dev/null
+++ b/server/node_modules/express/node_modules/fresh/README.md
@@ -0,0 +1,58 @@
+# fresh
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+HTTP response freshness testing
+
+## Installation
+
+```
+$ npm install fresh
+```
+
+## API
+
+```js
+var fresh = require('fresh')
+```
+
+### fresh(req, res)
+
+ Check freshness of `req` and `res` headers.
+
+ When the cache is "fresh" __true__ is returned,
+ otherwise __false__ is returned to indicate that
+ the cache is now stale.
+
+## Example
+
+```js
+var req = { 'if-none-match': 'tobi' };
+var res = { 'etag': 'luna' };
+fresh(req, res);
+// => false
+
+var req = { 'if-none-match': 'tobi' };
+var res = { 'etag': 'tobi' };
+fresh(req, res);
+// => true
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/fresh.svg
+[npm-url]: https://npmjs.org/package/fresh
+[node-version-image]: https://img.shields.io/node/v/fresh.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/fresh/master.svg
+[travis-url]: https://travis-ci.org/jshttp/fresh
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/fresh/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/fresh?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/fresh.svg
+[downloads-url]: https://npmjs.org/package/fresh
diff --git a/server/node_modules/express/node_modules/fresh/index.js b/server/node_modules/express/node_modules/fresh/index.js
new file mode 100755
index 0000000..a900873
--- /dev/null
+++ b/server/node_modules/express/node_modules/fresh/index.js
@@ -0,0 +1,57 @@
+
+/**
+ * Expose `fresh()`.
+ */
+
+module.exports = fresh;
+
+/**
+ * Check freshness of `req` and `res` headers.
+ *
+ * When the cache is "fresh" __true__ is returned,
+ * otherwise __false__ is returned to indicate that
+ * the cache is now stale.
+ *
+ * @param {Object} req
+ * @param {Object} res
+ * @return {Boolean}
+ * @api public
+ */
+
+function fresh(req, res) {
+ // defaults
+ var etagMatches = true;
+ var notModified = true;
+
+ // fields
+ var modifiedSince = req['if-modified-since'];
+ var noneMatch = req['if-none-match'];
+ var lastModified = res['last-modified'];
+ var etag = res['etag'];
+ var cc = req['cache-control'];
+
+ // unconditional request
+ if (!modifiedSince && !noneMatch) return false;
+
+ // check for no-cache cache request directive
+ if (cc && cc.indexOf('no-cache') !== -1) return false;
+
+ // parse if-none-match
+ if (noneMatch) noneMatch = noneMatch.split(/ *, */);
+
+ // if-none-match
+ if (noneMatch) {
+ etagMatches = noneMatch.some(function (match) {
+ return match === '*' || match === etag || match === 'W/' + etag;
+ });
+ }
+
+ // if-modified-since
+ if (modifiedSince) {
+ modifiedSince = new Date(modifiedSince);
+ lastModified = new Date(lastModified);
+ notModified = lastModified <= modifiedSince;
+ }
+
+ return !! (etagMatches && notModified);
+}
diff --git a/server/node_modules/express/node_modules/fresh/package.json b/server/node_modules/express/node_modules/fresh/package.json
new file mode 100755
index 0000000..c0fc622
--- /dev/null
+++ b/server/node_modules/express/node_modules/fresh/package.json
@@ -0,0 +1,87 @@
+{
+ "name": "fresh",
+ "description": "HTTP response freshness testing",
+ "version": "0.3.0",
+ "author": {
+ "name": "TJ Holowaychuk",
+ "email": "tj@vision-media.ca",
+ "url": "http://tjholowaychuk.com"
+ },
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "fresh",
+ "http",
+ "conditional",
+ "cache"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/fresh.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.3.9",
+ "mocha": "1.21.5"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "14616c9748368ca08cd6a955dd88ab659b778634",
+ "bugs": {
+ "url": "https://github.com/jshttp/fresh/issues"
+ },
+ "homepage": "https://github.com/jshttp/fresh",
+ "_id": "fresh@0.3.0",
+ "_shasum": "651f838e22424e7566de161d8358caa199f83d4f",
+ "_from": "fresh@0.3.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "jonathanong",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "651f838e22424e7566de161d8358caa199f83d4f",
+ "tarball": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/merge-descriptors/HISTORY.md b/server/node_modules/express/node_modules/merge-descriptors/HISTORY.md
new file mode 100755
index 0000000..486771f
--- /dev/null
+++ b/server/node_modules/express/node_modules/merge-descriptors/HISTORY.md
@@ -0,0 +1,21 @@
+1.0.1 / 2016-01-17
+==================
+
+ * perf: enable strict mode
+
+1.0.0 / 2015-03-01
+==================
+
+ * Add option to only add new descriptors
+ * Add simple argument validation
+ * Add jsdoc to source file
+
+0.0.2 / 2013-12-14
+==================
+
+ * Move repository to `component` organization
+
+0.0.1 / 2013-10-29
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/merge-descriptors/LICENSE b/server/node_modules/express/node_modules/merge-descriptors/LICENSE
new file mode 100755
index 0000000..274bfd8
--- /dev/null
+++ b/server/node_modules/express/node_modules/merge-descriptors/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2013 Jonathan Ong
+Copyright (c) 2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/merge-descriptors/README.md b/server/node_modules/express/node_modules/merge-descriptors/README.md
new file mode 100755
index 0000000..d593c0e
--- /dev/null
+++ b/server/node_modules/express/node_modules/merge-descriptors/README.md
@@ -0,0 +1,48 @@
+# Merge Descriptors
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Merge objects using descriptors.
+
+```js
+var thing = {
+ get name() {
+ return 'jon'
+ }
+}
+
+var animal = {
+
+}
+
+merge(animal, thing)
+
+animal.name === 'jon'
+```
+
+## API
+
+### merge(destination, source)
+
+Redefines `destination`'s descriptors with `source`'s.
+
+### merge(destination, source, false)
+
+Defines `source`'s descriptors on `destination` if `destination` does not have
+a descriptor by the same name.
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/merge-descriptors.svg
+[npm-url]: https://npmjs.org/package/merge-descriptors
+[travis-image]: https://img.shields.io/travis/component/merge-descriptors/master.svg
+[travis-url]: https://travis-ci.org/component/merge-descriptors
+[coveralls-image]: https://img.shields.io/coveralls/component/merge-descriptors/master.svg
+[coveralls-url]: https://coveralls.io/r/component/merge-descriptors?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/merge-descriptors.svg
+[downloads-url]: https://npmjs.org/package/merge-descriptors
diff --git a/server/node_modules/express/node_modules/merge-descriptors/index.js b/server/node_modules/express/node_modules/merge-descriptors/index.js
new file mode 100755
index 0000000..573b132
--- /dev/null
+++ b/server/node_modules/express/node_modules/merge-descriptors/index.js
@@ -0,0 +1,60 @@
+/*!
+ * merge-descriptors
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = merge
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var hasOwnProperty = Object.prototype.hasOwnProperty
+
+/**
+ * Merge the property descriptors of `src` into `dest`
+ *
+ * @param {object} dest Object to add descriptors to
+ * @param {object} src Object to clone descriptors from
+ * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties
+ * @returns {object} Reference to dest
+ * @public
+ */
+
+function merge(dest, src, redefine) {
+ if (!dest) {
+ throw new TypeError('argument dest is required')
+ }
+
+ if (!src) {
+ throw new TypeError('argument src is required')
+ }
+
+ if (redefine === undefined) {
+ // Default to true
+ redefine = true
+ }
+
+ Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) {
+ if (!redefine && hasOwnProperty.call(dest, name)) {
+ // Skip desriptor
+ return
+ }
+
+ // Copy descriptor
+ var descriptor = Object.getOwnPropertyDescriptor(src, name)
+ Object.defineProperty(dest, name, descriptor)
+ })
+
+ return dest
+}
diff --git a/server/node_modules/express/node_modules/merge-descriptors/package.json b/server/node_modules/express/node_modules/merge-descriptors/package.json
new file mode 100755
index 0000000..e2cde77
--- /dev/null
+++ b/server/node_modules/express/node_modules/merge-descriptors/package.json
@@ -0,0 +1,138 @@
+{
+ "name": "merge-descriptors",
+ "description": "Merge objects using descriptors",
+ "version": "1.0.1",
+ "author": {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Mike Grabowski",
+ "email": "grabbou@gmail.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/component/merge-descriptors.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.1",
+ "mocha": "1.21.5"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "README.md",
+ "index.js"
+ ],
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
+ },
+ "gitHead": "f26c49c3b423b0b2ac31f6e32a84e1632f2d7ac2",
+ "bugs": {
+ "url": "https://github.com/component/merge-descriptors/issues"
+ },
+ "homepage": "https://github.com/component/merge-descriptors",
+ "_id": "merge-descriptors@1.0.1",
+ "_shasum": "b00aaa556dd8b44568150ec9d1b953f3f90cbb61",
+ "_from": "merge-descriptors@1.0.1",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "anthonyshort",
+ "email": "antshort@gmail.com"
+ },
+ {
+ "name": "clintwood",
+ "email": "clint@anotherway.co.za"
+ },
+ {
+ "name": "dfcreative",
+ "email": "df.creative@gmail.com"
+ },
+ {
+ "name": "dominicbarnes",
+ "email": "dominic@dbarnes.info"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "ianstormtaylor",
+ "email": "ian@ianstormtaylor.com"
+ },
+ {
+ "name": "jonathanong",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "juliangruber",
+ "email": "julian@juliangruber.com"
+ },
+ {
+ "name": "mattmueller",
+ "email": "mattmuelle@gmail.com"
+ },
+ {
+ "name": "queckezz",
+ "email": "fabian.eichenberger@gmail.com"
+ },
+ {
+ "name": "stephenmathieson",
+ "email": "me@stephenmathieson.com"
+ },
+ {
+ "name": "thehydroimpulse",
+ "email": "dnfagnan@gmail.com"
+ },
+ {
+ "name": "timaschew",
+ "email": "timaschew@gmail.com"
+ },
+ {
+ "name": "timoxley",
+ "email": "secoif@gmail.com"
+ },
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "tootallnate",
+ "email": "nathan@tootallnate.net"
+ },
+ {
+ "name": "trevorgerhardt",
+ "email": "trevorgerhardt@gmail.com"
+ },
+ {
+ "name": "yields",
+ "email": "yields@icloud.com"
+ }
+ ],
+ "dist": {
+ "shasum": "b00aaa556dd8b44568150ec9d1b953f3f90cbb61",
+ "tarball": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/methods/HISTORY.md b/server/node_modules/express/node_modules/methods/HISTORY.md
new file mode 100755
index 0000000..c0ecf07
--- /dev/null
+++ b/server/node_modules/express/node_modules/methods/HISTORY.md
@@ -0,0 +1,29 @@
+1.1.2 / 2016-01-17
+==================
+
+ * perf: enable strict mode
+
+1.1.1 / 2014-12-30
+==================
+
+ * Improve `browserify` support
+
+1.1.0 / 2014-07-05
+==================
+
+ * Add `CONNECT` method
+
+1.0.1 / 2014-06-02
+==================
+
+ * Fix module to work with harmony transform
+
+1.0.0 / 2014-05-08
+==================
+
+ * Add `PURGE` method
+
+0.1.0 / 2013-10-28
+==================
+
+ * Add `http.METHODS` support
diff --git a/server/node_modules/express/node_modules/methods/LICENSE b/server/node_modules/express/node_modules/methods/LICENSE
new file mode 100755
index 0000000..220dc1a
--- /dev/null
+++ b/server/node_modules/express/node_modules/methods/LICENSE
@@ -0,0 +1,24 @@
+(The MIT License)
+
+Copyright (c) 2013-2014 TJ Holowaychuk
+Copyright (c) 2015-2016 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/server/node_modules/express/node_modules/methods/README.md b/server/node_modules/express/node_modules/methods/README.md
new file mode 100755
index 0000000..672a32b
--- /dev/null
+++ b/server/node_modules/express/node_modules/methods/README.md
@@ -0,0 +1,51 @@
+# Methods
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+HTTP verbs that Node.js core's HTTP parser supports.
+
+This module provides an export that is just like `http.METHODS` from Node.js core,
+with the following differences:
+
+ * All method names are lower-cased.
+ * Contains a fallback list of methods for Node.js versions that do not have a
+ `http.METHODS` export (0.10 and lower).
+ * Provides the fallback list when using tools like `browserify` without pulling
+ in the `http` shim module.
+
+## Install
+
+```bash
+$ npm install methods
+```
+
+## API
+
+```js
+var methods = require('methods')
+```
+
+### methods
+
+This is an array of lower-cased method names that Node.js supports. If Node.js
+provides the `http.METHODS` export, then this is the same array lower-cased,
+otherwise it is a snapshot of the verbs from Node.js 0.10.
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/methods.svg?style=flat
+[npm-url]: https://npmjs.org/package/methods
+[node-version-image]: https://img.shields.io/node/v/methods.svg?style=flat
+[node-version-url]: https://nodejs.org/en/download/
+[travis-image]: https://img.shields.io/travis/jshttp/methods.svg?style=flat
+[travis-url]: https://travis-ci.org/jshttp/methods
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/methods.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/jshttp/methods?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/methods.svg?style=flat
+[downloads-url]: https://npmjs.org/package/methods
diff --git a/server/node_modules/express/node_modules/methods/index.js b/server/node_modules/express/node_modules/methods/index.js
new file mode 100755
index 0000000..667a50b
--- /dev/null
+++ b/server/node_modules/express/node_modules/methods/index.js
@@ -0,0 +1,69 @@
+/*!
+ * methods
+ * Copyright(c) 2013-2014 TJ Holowaychuk
+ * Copyright(c) 2015-2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var http = require('http');
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = getCurrentNodeMethods() || getBasicNodeMethods();
+
+/**
+ * Get the current Node.js methods.
+ * @private
+ */
+
+function getCurrentNodeMethods() {
+ return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) {
+ return method.toLowerCase();
+ });
+}
+
+/**
+ * Get the "basic" Node.js methods, a snapshot from Node.js 0.10.
+ * @private
+ */
+
+function getBasicNodeMethods() {
+ return [
+ 'get',
+ 'post',
+ 'put',
+ 'head',
+ 'delete',
+ 'options',
+ 'trace',
+ 'copy',
+ 'lock',
+ 'mkcol',
+ 'move',
+ 'purge',
+ 'propfind',
+ 'proppatch',
+ 'unlock',
+ 'report',
+ 'mkactivity',
+ 'checkout',
+ 'merge',
+ 'm-search',
+ 'notify',
+ 'subscribe',
+ 'unsubscribe',
+ 'patch',
+ 'search',
+ 'connect'
+ ];
+}
diff --git a/server/node_modules/express/node_modules/methods/package.json b/server/node_modules/express/node_modules/methods/package.json
new file mode 100755
index 0000000..09ed887
--- /dev/null
+++ b/server/node_modules/express/node_modules/methods/package.json
@@ -0,0 +1,88 @@
+{
+ "name": "methods",
+ "description": "HTTP methods that node supports",
+ "version": "1.1.2",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ {
+ "name": "TJ Holowaychuk",
+ "email": "tj@vision-media.ca",
+ "url": "http://tjholowaychuk.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/methods.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.1",
+ "mocha": "1.21.5"
+ },
+ "files": [
+ "index.js",
+ "HISTORY.md",
+ "LICENSE"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "browser": {
+ "http": false
+ },
+ "keywords": [
+ "http",
+ "methods"
+ ],
+ "gitHead": "25d257d913f1b94bd2d73581521ff72c81469140",
+ "bugs": {
+ "url": "https://github.com/jshttp/methods/issues"
+ },
+ "homepage": "https://github.com/jshttp/methods",
+ "_id": "methods@1.1.2",
+ "_shasum": "5529a4d67654134edcc5266656835b0f851afcee",
+ "_from": "methods@>=1.1.2 <1.2.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "jonathanong",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "5529a4d67654134edcc5266656835b0f851afcee",
+ "tarball": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/on-finished/HISTORY.md b/server/node_modules/express/node_modules/on-finished/HISTORY.md
new file mode 100755
index 0000000..98ff0e9
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/HISTORY.md
@@ -0,0 +1,88 @@
+2.3.0 / 2015-05-26
+==================
+
+ * Add defined behavior for HTTP `CONNECT` requests
+ * Add defined behavior for HTTP `Upgrade` requests
+ * deps: ee-first@1.1.1
+
+2.2.1 / 2015-04-22
+==================
+
+ * Fix `isFinished(req)` when data buffered
+
+2.2.0 / 2014-12-22
+==================
+
+ * Add message object to callback arguments
+
+2.1.1 / 2014-10-22
+==================
+
+ * Fix handling of pipelined requests
+
+2.1.0 / 2014-08-16
+==================
+
+ * Check if `socket` is detached
+ * Return `undefined` for `isFinished` if state unknown
+
+2.0.0 / 2014-08-16
+==================
+
+ * Add `isFinished` function
+ * Move to `jshttp` organization
+ * Remove support for plain socket argument
+ * Rename to `on-finished`
+ * Support both `req` and `res` as arguments
+ * deps: ee-first@1.0.5
+
+1.2.2 / 2014-06-10
+==================
+
+ * Reduce listeners added to emitters
+ - avoids "event emitter leak" warnings when used multiple times on same request
+
+1.2.1 / 2014-06-08
+==================
+
+ * Fix returned value when already finished
+
+1.2.0 / 2014-06-05
+==================
+
+ * Call callback when called on already-finished socket
+
+1.1.4 / 2014-05-27
+==================
+
+ * Support node.js 0.8
+
+1.1.3 / 2014-04-30
+==================
+
+ * Make sure errors passed as instanceof `Error`
+
+1.1.2 / 2014-04-18
+==================
+
+ * Default the `socket` to passed-in object
+
+1.1.1 / 2014-01-16
+==================
+
+ * Rename module to `finished`
+
+1.1.0 / 2013-12-25
+==================
+
+ * Call callback when called on already-errored socket
+
+1.0.1 / 2013-12-20
+==================
+
+ * Actually pass the error to the callback
+
+1.0.0 / 2013-12-20
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/on-finished/LICENSE b/server/node_modules/express/node_modules/on-finished/LICENSE
new file mode 100755
index 0000000..5931fd2
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2013 Jonathan Ong
+Copyright (c) 2014 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/on-finished/README.md b/server/node_modules/express/node_modules/on-finished/README.md
new file mode 100755
index 0000000..a0e1157
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/README.md
@@ -0,0 +1,154 @@
+# on-finished
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Execute a callback when a HTTP request closes, finishes, or errors.
+
+## Install
+
+```sh
+$ npm install on-finished
+```
+
+## API
+
+```js
+var onFinished = require('on-finished')
+```
+
+### onFinished(res, listener)
+
+Attach a listener to listen for the response to finish. The listener will
+be invoked only once when the response finished. If the response finished
+to an error, the first argument will contain the error. If the response
+has already finished, the listener will be invoked.
+
+Listening to the end of a response would be used to close things associated
+with the response, like open files.
+
+Listener is invoked as `listener(err, res)`.
+
+```js
+onFinished(res, function (err, res) {
+ // clean up open fds, etc.
+ // err contains the error is request error'd
+})
+```
+
+### onFinished(req, listener)
+
+Attach a listener to listen for the request to finish. The listener will
+be invoked only once when the request finished. If the request finished
+to an error, the first argument will contain the error. If the request
+has already finished, the listener will be invoked.
+
+Listening to the end of a request would be used to know when to continue
+after reading the data.
+
+Listener is invoked as `listener(err, req)`.
+
+```js
+var data = ''
+
+req.setEncoding('utf8')
+res.on('data', function (str) {
+ data += str
+})
+
+onFinished(req, function (err, req) {
+ // data is read unless there is err
+})
+```
+
+### onFinished.isFinished(res)
+
+Determine if `res` is already finished. This would be useful to check and
+not even start certain operations if the response has already finished.
+
+### onFinished.isFinished(req)
+
+Determine if `req` is already finished. This would be useful to check and
+not even start certain operations if the request has already finished.
+
+## Special Node.js requests
+
+### HTTP CONNECT method
+
+The meaning of the `CONNECT` method from RFC 7231, section 4.3.6:
+
+> The CONNECT method requests that the recipient establish a tunnel to
+> the destination origin server identified by the request-target and,
+> if successful, thereafter restrict its behavior to blind forwarding
+> of packets, in both directions, until the tunnel is closed. Tunnels
+> are commonly used to create an end-to-end virtual connection, through
+> one or more proxies, which can then be secured using TLS (Transport
+> Layer Security, [RFC5246]).
+
+In Node.js, these request objects come from the `'connect'` event on
+the HTTP server.
+
+When this module is used on a HTTP `CONNECT` request, the request is
+considered "finished" immediately, **due to limitations in the Node.js
+interface**. This means if the `CONNECT` request contains a request entity,
+the request will be considered "finished" even before it has been read.
+
+There is no such thing as a response object to a `CONNECT` request in
+Node.js, so there is no support for for one.
+
+### HTTP Upgrade request
+
+The meaning of the `Upgrade` header from RFC 7230, section 6.1:
+
+> The "Upgrade" header field is intended to provide a simple mechanism
+> for transitioning from HTTP/1.1 to some other protocol on the same
+> connection.
+
+In Node.js, these request objects come from the `'upgrade'` event on
+the HTTP server.
+
+When this module is used on a HTTP request with an `Upgrade` header, the
+request is considered "finished" immediately, **due to limitations in the
+Node.js interface**. This means if the `Upgrade` request contains a request
+entity, the request will be considered "finished" even before it has been
+read.
+
+There is no such thing as a response object to a `Upgrade` request in
+Node.js, so there is no support for for one.
+
+## Example
+
+The following code ensures that file descriptors are always closed
+once the response finishes.
+
+```js
+var destroy = require('destroy')
+var http = require('http')
+var onFinished = require('on-finished')
+
+http.createServer(function onRequest(req, res) {
+ var stream = fs.createReadStream('package.json')
+ stream.pipe(res)
+ onFinished(res, function (err) {
+ destroy(stream)
+ })
+})
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/on-finished.svg
+[npm-url]: https://npmjs.org/package/on-finished
+[node-version-image]: https://img.shields.io/node/v/on-finished.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/on-finished/master.svg
+[travis-url]: https://travis-ci.org/jshttp/on-finished
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/on-finished/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/on-finished.svg
+[downloads-url]: https://npmjs.org/package/on-finished
diff --git a/server/node_modules/express/node_modules/on-finished/index.js b/server/node_modules/express/node_modules/on-finished/index.js
new file mode 100755
index 0000000..9abd98f
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/index.js
@@ -0,0 +1,196 @@
+/*!
+ * on-finished
+ * Copyright(c) 2013 Jonathan Ong
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = onFinished
+module.exports.isFinished = isFinished
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var first = require('ee-first')
+
+/**
+ * Variables.
+ * @private
+ */
+
+/* istanbul ignore next */
+var defer = typeof setImmediate === 'function'
+ ? setImmediate
+ : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) }
+
+/**
+ * Invoke callback when the response has finished, useful for
+ * cleaning up resources afterwards.
+ *
+ * @param {object} msg
+ * @param {function} listener
+ * @return {object}
+ * @public
+ */
+
+function onFinished(msg, listener) {
+ if (isFinished(msg) !== false) {
+ defer(listener, null, msg)
+ return msg
+ }
+
+ // attach the listener to the message
+ attachListener(msg, listener)
+
+ return msg
+}
+
+/**
+ * Determine if message is already finished.
+ *
+ * @param {object} msg
+ * @return {boolean}
+ * @public
+ */
+
+function isFinished(msg) {
+ var socket = msg.socket
+
+ if (typeof msg.finished === 'boolean') {
+ // OutgoingMessage
+ return Boolean(msg.finished || (socket && !socket.writable))
+ }
+
+ if (typeof msg.complete === 'boolean') {
+ // IncomingMessage
+ return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable))
+ }
+
+ // don't know
+ return undefined
+}
+
+/**
+ * Attach a finished listener to the message.
+ *
+ * @param {object} msg
+ * @param {function} callback
+ * @private
+ */
+
+function attachFinishedListener(msg, callback) {
+ var eeMsg
+ var eeSocket
+ var finished = false
+
+ function onFinish(error) {
+ eeMsg.cancel()
+ eeSocket.cancel()
+
+ finished = true
+ callback(error)
+ }
+
+ // finished on first message event
+ eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)
+
+ function onSocket(socket) {
+ // remove listener
+ msg.removeListener('socket', onSocket)
+
+ if (finished) return
+ if (eeMsg !== eeSocket) return
+
+ // finished on first socket event
+ eeSocket = first([[socket, 'error', 'close']], onFinish)
+ }
+
+ if (msg.socket) {
+ // socket already assigned
+ onSocket(msg.socket)
+ return
+ }
+
+ // wait for socket to be assigned
+ msg.on('socket', onSocket)
+
+ if (msg.socket === undefined) {
+ // node.js 0.8 patch
+ patchAssignSocket(msg, onSocket)
+ }
+}
+
+/**
+ * Attach the listener to the message.
+ *
+ * @param {object} msg
+ * @return {function}
+ * @private
+ */
+
+function attachListener(msg, listener) {
+ var attached = msg.__onFinished
+
+ // create a private single listener with queue
+ if (!attached || !attached.queue) {
+ attached = msg.__onFinished = createListener(msg)
+ attachFinishedListener(msg, attached)
+ }
+
+ attached.queue.push(listener)
+}
+
+/**
+ * Create listener on message.
+ *
+ * @param {object} msg
+ * @return {function}
+ * @private
+ */
+
+function createListener(msg) {
+ function listener(err) {
+ if (msg.__onFinished === listener) msg.__onFinished = null
+ if (!listener.queue) return
+
+ var queue = listener.queue
+ listener.queue = null
+
+ for (var i = 0; i < queue.length; i++) {
+ queue[i](err, msg)
+ }
+ }
+
+ listener.queue = []
+
+ return listener
+}
+
+/**
+ * Patch ServerResponse.prototype.assignSocket for node.js 0.8.
+ *
+ * @param {ServerResponse} res
+ * @param {function} callback
+ * @private
+ */
+
+function patchAssignSocket(res, callback) {
+ var assignSocket = res.assignSocket
+
+ if (typeof assignSocket !== 'function') return
+
+ // res.on('socket', callback) is broken in 0.8
+ res.assignSocket = function _assignSocket(socket) {
+ assignSocket.call(this, socket)
+ callback(socket)
+ }
+}
diff --git a/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE b/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE
new file mode 100755
index 0000000..a7ae8ee
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE
@@ -0,0 +1,22 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md b/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md
new file mode 100755
index 0000000..cbd2478
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md
@@ -0,0 +1,80 @@
+# EE First
+
+[![NPM version][npm-image]][npm-url]
+[![Build status][travis-image]][travis-url]
+[![Test coverage][coveralls-image]][coveralls-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+[![Gittip][gittip-image]][gittip-url]
+
+Get the first event in a set of event emitters and event pairs,
+then clean up after itself.
+
+## Install
+
+```sh
+$ npm install ee-first
+```
+
+## API
+
+```js
+var first = require('ee-first')
+```
+
+### first(arr, listener)
+
+Invoke `listener` on the first event from the list specified in `arr`. `arr` is
+an array of arrays, with each array in the format `[ee, ...event]`. `listener`
+will be called only once, the first time any of the given events are emitted. If
+`error` is one of the listened events, then if that fires first, the `listener`
+will be given the `err` argument.
+
+The `listener` is invoked as `listener(err, ee, event, args)`, where `err` is the
+first argument emitted from an `error` event, if applicable; `ee` is the event
+emitter that fired; `event` is the string event name that fired; and `args` is an
+array of the arguments that were emitted on the event.
+
+```js
+var ee1 = new EventEmitter()
+var ee2 = new EventEmitter()
+
+first([
+ [ee1, 'close', 'end', 'error'],
+ [ee2, 'error']
+], function (err, ee, event, args) {
+ // listener invoked
+})
+```
+
+#### .cancel()
+
+The group of listeners can be cancelled before being invoked and have all the event
+listeners removed from the underlying event emitters.
+
+```js
+var thunk = first([
+ [ee1, 'close', 'end', 'error'],
+ [ee2, 'error']
+], function (err, ee, event, args) {
+ // listener invoked
+})
+
+// cancel and clean up
+thunk.cancel()
+```
+
+[npm-image]: https://img.shields.io/npm/v/ee-first.svg?style=flat-square
+[npm-url]: https://npmjs.org/package/ee-first
+[github-tag]: http://img.shields.io/github/tag/jonathanong/ee-first.svg?style=flat-square
+[github-url]: https://github.com/jonathanong/ee-first/tags
+[travis-image]: https://img.shields.io/travis/jonathanong/ee-first.svg?style=flat-square
+[travis-url]: https://travis-ci.org/jonathanong/ee-first
+[coveralls-image]: https://img.shields.io/coveralls/jonathanong/ee-first.svg?style=flat-square
+[coveralls-url]: https://coveralls.io/r/jonathanong/ee-first?branch=master
+[license-image]: http://img.shields.io/npm/l/ee-first.svg?style=flat-square
+[license-url]: LICENSE.md
+[downloads-image]: http://img.shields.io/npm/dm/ee-first.svg?style=flat-square
+[downloads-url]: https://npmjs.org/package/ee-first
+[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square
+[gittip-url]: https://www.gittip.com/jonathanong/
diff --git a/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js b/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js
new file mode 100755
index 0000000..501287c
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js
@@ -0,0 +1,95 @@
+/*!
+ * ee-first
+ * Copyright(c) 2014 Jonathan Ong
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = first
+
+/**
+ * Get the first event in a set of event emitters and event pairs.
+ *
+ * @param {array} stuff
+ * @param {function} done
+ * @public
+ */
+
+function first(stuff, done) {
+ if (!Array.isArray(stuff))
+ throw new TypeError('arg must be an array of [ee, events...] arrays')
+
+ var cleanups = []
+
+ for (var i = 0; i < stuff.length; i++) {
+ var arr = stuff[i]
+
+ if (!Array.isArray(arr) || arr.length < 2)
+ throw new TypeError('each array member must be [ee, events...]')
+
+ var ee = arr[0]
+
+ for (var j = 1; j < arr.length; j++) {
+ var event = arr[j]
+ var fn = listener(event, callback)
+
+ // listen to the event
+ ee.on(event, fn)
+ // push this listener to the list of cleanups
+ cleanups.push({
+ ee: ee,
+ event: event,
+ fn: fn,
+ })
+ }
+ }
+
+ function callback() {
+ cleanup()
+ done.apply(null, arguments)
+ }
+
+ function cleanup() {
+ var x
+ for (var i = 0; i < cleanups.length; i++) {
+ x = cleanups[i]
+ x.ee.removeListener(x.event, x.fn)
+ }
+ }
+
+ function thunk(fn) {
+ done = fn
+ }
+
+ thunk.cancel = cleanup
+
+ return thunk
+}
+
+/**
+ * Create the event listener.
+ * @private
+ */
+
+function listener(event, done) {
+ return function onevent(arg1) {
+ var args = new Array(arguments.length)
+ var ee = this
+ var err = event === 'error'
+ ? arg1
+ : null
+
+ // copy args to prevent arguments escaping scope
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i]
+ }
+
+ done(err, ee, event, args)
+ }
+}
diff --git a/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json b/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json
new file mode 100755
index 0000000..c67faf1
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json
@@ -0,0 +1,64 @@
+{
+ "name": "ee-first",
+ "description": "return the first event in a set of ee/event pairs",
+ "version": "1.1.1",
+ "author": {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jonathanong/ee-first.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.3.9",
+ "mocha": "2.2.5"
+ },
+ "files": [
+ "index.js",
+ "LICENSE"
+ ],
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "512e0ce4cc3643f603708f965a97b61b1a9c0441",
+ "bugs": {
+ "url": "https://github.com/jonathanong/ee-first/issues"
+ },
+ "homepage": "https://github.com/jonathanong/ee-first",
+ "_id": "ee-first@1.1.1",
+ "_shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d",
+ "_from": "ee-first@1.1.1",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d",
+ "tarball": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/on-finished/package.json b/server/node_modules/express/node_modules/on-finished/package.json
new file mode 100755
index 0000000..97a5680
--- /dev/null
+++ b/server/node_modules/express/node_modules/on-finished/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "on-finished",
+ "description": "Execute a callback when a request closes, finishes, or errors",
+ "version": "2.3.0",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/on-finished.git"
+ },
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "devDependencies": {
+ "istanbul": "0.3.9",
+ "mocha": "2.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "index.js"
+ ],
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "34babcb58126a416fcf5205768204f2e12699dda",
+ "bugs": {
+ "url": "https://github.com/jshttp/on-finished/issues"
+ },
+ "homepage": "https://github.com/jshttp/on-finished",
+ "_id": "on-finished@2.3.0",
+ "_shasum": "20f1336481b083cd75337992a16971aa2d906947",
+ "_from": "on-finished@>=2.3.0 <2.4.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "20f1336481b083cd75337992a16971aa2d906947",
+ "tarball": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/parseurl/HISTORY.md b/server/node_modules/express/node_modules/parseurl/HISTORY.md
new file mode 100755
index 0000000..395041e
--- /dev/null
+++ b/server/node_modules/express/node_modules/parseurl/HISTORY.md
@@ -0,0 +1,47 @@
+1.3.1 / 2016-01-17
+==================
+
+ * perf: enable strict mode
+
+1.3.0 / 2014-08-09
+==================
+
+ * Add `parseurl.original` for parsing `req.originalUrl` with fallback
+ * Return `undefined` if `req.url` is `undefined`
+
+1.2.0 / 2014-07-21
+==================
+
+ * Cache URLs based on original value
+ * Remove no-longer-needed URL mis-parse work-around
+ * Simplify the "fast-path" `RegExp`
+
+1.1.3 / 2014-07-08
+==================
+
+ * Fix typo
+
+1.1.2 / 2014-07-08
+==================
+
+ * Seriously fix Node.js 0.8 compatibility
+
+1.1.1 / 2014-07-08
+==================
+
+ * Fix Node.js 0.8 compatibility
+
+1.1.0 / 2014-07-08
+==================
+
+ * Incorporate URL href-only parse fast-path
+
+1.0.1 / 2014-03-08
+==================
+
+ * Add missing `require`
+
+1.0.0 / 2014-03-08
+==================
+
+ * Genesis from `connect`
diff --git a/server/node_modules/express/node_modules/parseurl/LICENSE b/server/node_modules/express/node_modules/parseurl/LICENSE
new file mode 100755
index 0000000..ec7dfe7
--- /dev/null
+++ b/server/node_modules/express/node_modules/parseurl/LICENSE
@@ -0,0 +1,24 @@
+
+(The MIT License)
+
+Copyright (c) 2014 Jonathan Ong
+Copyright (c) 2014 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/parseurl/README.md b/server/node_modules/express/node_modules/parseurl/README.md
new file mode 100755
index 0000000..f4796eb
--- /dev/null
+++ b/server/node_modules/express/node_modules/parseurl/README.md
@@ -0,0 +1,120 @@
+# parseurl
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Parse a URL with memoization.
+
+## Install
+
+```bash
+$ npm install parseurl
+```
+
+## API
+
+```js
+var parseurl = require('parseurl')
+```
+
+### parseurl(req)
+
+Parse the URL of the given request object (looks at the `req.url` property)
+and return the result. The result is the same as `url.parse` in Node.js core.
+Calling this function multiple times on the same `req` where `req.url` does
+not change will return a cached parsed object, rather than parsing again.
+
+### parseurl.original(req)
+
+Parse the original URL of the given request object and return the result.
+This works by trying to parse `req.originalUrl` if it is a string, otherwise
+parses `req.url`. The result is the same as `url.parse` in Node.js core.
+Calling this function multiple times on the same `req` where `req.originalUrl`
+does not change will return a cached parsed object, rather than parsing again.
+
+## Benchmark
+
+```bash
+$ npm run-script bench
+
+> parseurl@1.3.1 bench nodejs-parseurl
+> node benchmark/index.js
+
+> node benchmark/fullurl.js
+
+ Parsing URL "http://localhost:8888/foo/bar?user=tj&pet=fluffy"
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 1,290,780 ops/sec ±0.46% (195 runs sampled)
+ nativeurl x 56,401 ops/sec ±0.22% (196 runs sampled)
+ parseurl x 55,231 ops/sec ±0.22% (194 runs sampled)
+
+> node benchmark/pathquery.js
+
+ Parsing URL "/foo/bar?user=tj&pet=fluffy"
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 1,986,668 ops/sec ±0.27% (190 runs sampled)
+ nativeurl x 98,740 ops/sec ±0.21% (195 runs sampled)
+ parseurl x 2,628,171 ops/sec ±0.36% (195 runs sampled)
+
+> node benchmark/samerequest.js
+
+ Parsing URL "/foo/bar?user=tj&pet=fluffy" on same request object
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 2,184,468 ops/sec ±0.40% (194 runs sampled)
+ nativeurl x 99,437 ops/sec ±0.71% (194 runs sampled)
+ parseurl x 10,498,005 ops/sec ±0.61% (186 runs sampled)
+
+> node benchmark/simplepath.js
+
+ Parsing URL "/foo/bar"
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 4,535,825 ops/sec ±0.27% (191 runs sampled)
+ nativeurl x 98,769 ops/sec ±0.54% (191 runs sampled)
+ parseurl x 4,164,865 ops/sec ±0.34% (192 runs sampled)
+
+> node benchmark/slash.js
+
+ Parsing URL "/"
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 4,908,405 ops/sec ±0.42% (191 runs sampled)
+ nativeurl x 100,945 ops/sec ±0.59% (188 runs sampled)
+ parseurl x 4,333,208 ops/sec ±0.27% (194 runs sampled)
+```
+
+## License
+
+ [MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/parseurl.svg
+[npm-url]: https://npmjs.org/package/parseurl
+[node-version-image]: https://img.shields.io/node/v/parseurl.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/pillarjs/parseurl/master.svg
+[travis-url]: https://travis-ci.org/pillarjs/parseurl
+[coveralls-image]: https://img.shields.io/coveralls/pillarjs/parseurl/master.svg
+[coveralls-url]: https://coveralls.io/r/pillarjs/parseurl?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/parseurl.svg
+[downloads-url]: https://npmjs.org/package/parseurl
diff --git a/server/node_modules/express/node_modules/parseurl/index.js b/server/node_modules/express/node_modules/parseurl/index.js
new file mode 100755
index 0000000..56cc6ec
--- /dev/null
+++ b/server/node_modules/express/node_modules/parseurl/index.js
@@ -0,0 +1,138 @@
+/*!
+ * parseurl
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ */
+
+var url = require('url')
+var parse = url.parse
+var Url = url.Url
+
+/**
+ * Pattern for a simple path case.
+ * See: https://github.com/joyent/node/pull/7878
+ */
+
+var simplePathRegExp = /^(\/\/?(?!\/)[^\?#\s]*)(\?[^#\s]*)?$/
+
+/**
+ * Exports.
+ */
+
+module.exports = parseurl
+module.exports.original = originalurl
+
+/**
+ * Parse the `req` url with memoization.
+ *
+ * @param {ServerRequest} req
+ * @return {Object}
+ * @api public
+ */
+
+function parseurl(req) {
+ var url = req.url
+
+ if (url === undefined) {
+ // URL is undefined
+ return undefined
+ }
+
+ var parsed = req._parsedUrl
+
+ if (fresh(url, parsed)) {
+ // Return cached URL parse
+ return parsed
+ }
+
+ // Parse the URL
+ parsed = fastparse(url)
+ parsed._raw = url
+
+ return req._parsedUrl = parsed
+};
+
+/**
+ * Parse the `req` original url with fallback and memoization.
+ *
+ * @param {ServerRequest} req
+ * @return {Object}
+ * @api public
+ */
+
+function originalurl(req) {
+ var url = req.originalUrl
+
+ if (typeof url !== 'string') {
+ // Fallback
+ return parseurl(req)
+ }
+
+ var parsed = req._parsedOriginalUrl
+
+ if (fresh(url, parsed)) {
+ // Return cached URL parse
+ return parsed
+ }
+
+ // Parse the URL
+ parsed = fastparse(url)
+ parsed._raw = url
+
+ return req._parsedOriginalUrl = parsed
+};
+
+/**
+ * Parse the `str` url with fast-path short-cut.
+ *
+ * @param {string} str
+ * @return {Object}
+ * @api private
+ */
+
+function fastparse(str) {
+ // Try fast path regexp
+ // See: https://github.com/joyent/node/pull/7878
+ var simplePath = typeof str === 'string' && simplePathRegExp.exec(str)
+
+ // Construct simple URL
+ if (simplePath) {
+ var pathname = simplePath[1]
+ var search = simplePath[2] || null
+ var url = Url !== undefined
+ ? new Url()
+ : {}
+ url.path = str
+ url.href = str
+ url.pathname = pathname
+ url.search = search
+ url.query = search && search.substr(1)
+
+ return url
+ }
+
+ return parse(str)
+}
+
+/**
+ * Determine if parsed is still fresh for url.
+ *
+ * @param {string} url
+ * @param {object} parsedUrl
+ * @return {boolean}
+ * @api private
+ */
+
+function fresh(url, parsedUrl) {
+ return typeof parsedUrl === 'object'
+ && parsedUrl !== null
+ && (Url === undefined || parsedUrl instanceof Url)
+ && parsedUrl._raw === url
+}
diff --git a/server/node_modules/express/node_modules/parseurl/package.json b/server/node_modules/express/node_modules/parseurl/package.json
new file mode 100755
index 0000000..7f57caa
--- /dev/null
+++ b/server/node_modules/express/node_modules/parseurl/package.json
@@ -0,0 +1,89 @@
+{
+ "name": "parseurl",
+ "description": "parse a url with memoization",
+ "version": "1.3.1",
+ "author": {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/pillarjs/parseurl.git"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "benchmark": "2.0.0",
+ "beautify-benchmark": "0.2.4",
+ "fast-url-parser": "1.1.3",
+ "istanbul": "0.4.2",
+ "mocha": "~1.21.5"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "scripts": {
+ "bench": "node benchmark/index.js",
+ "test": "mocha --check-leaks --bail --reporter spec test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"
+ },
+ "gitHead": "6d22d376d75b927ab2b5347ce3a1d6735133dd43",
+ "bugs": {
+ "url": "https://github.com/pillarjs/parseurl/issues"
+ },
+ "homepage": "https://github.com/pillarjs/parseurl",
+ "_id": "parseurl@1.3.1",
+ "_shasum": "c8ab8c9223ba34888aa64a297b28853bec18da56",
+ "_from": "parseurl@>=1.3.1 <1.4.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "mscdex",
+ "email": "mscdex@mscdex.net"
+ },
+ {
+ "name": "fishrock123",
+ "email": "fishrock123@rocketmail.com"
+ },
+ {
+ "name": "defunctzombie",
+ "email": "shtylman@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "c8ab8c9223ba34888aa64a297b28853bec18da56",
+ "tarball": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/path-to-regexp/History.md b/server/node_modules/express/node_modules/path-to-regexp/History.md
new file mode 100755
index 0000000..7f65878
--- /dev/null
+++ b/server/node_modules/express/node_modules/path-to-regexp/History.md
@@ -0,0 +1,36 @@
+0.1.7 / 2015-07-28
+==================
+
+ * Fixed regression with escaped round brackets and matching groups.
+
+0.1.6 / 2015-06-19
+==================
+
+ * Replace `index` feature by outputting all parameters, unnamed and named.
+
+0.1.5 / 2015-05-08
+==================
+
+ * Add an index property for position in match result.
+
+0.1.4 / 2015-03-05
+==================
+
+ * Add license information
+
+0.1.3 / 2014-07-06
+==================
+
+ * Better array support
+ * Improved support for trailing slash in non-ending mode
+
+0.1.0 / 2014-03-06
+==================
+
+ * add options.end
+
+0.0.2 / 2013-02-10
+==================
+
+ * Update to match current express
+ * add .license property to component.json
diff --git a/server/node_modules/express/node_modules/path-to-regexp/LICENSE b/server/node_modules/express/node_modules/path-to-regexp/LICENSE
new file mode 100755
index 0000000..983fbe8
--- /dev/null
+++ b/server/node_modules/express/node_modules/path-to-regexp/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/path-to-regexp/Readme.md b/server/node_modules/express/node_modules/path-to-regexp/Readme.md
new file mode 100755
index 0000000..95452a6
--- /dev/null
+++ b/server/node_modules/express/node_modules/path-to-regexp/Readme.md
@@ -0,0 +1,35 @@
+# Path-to-RegExp
+
+Turn an Express-style path string such as `/user/:name` into a regular expression.
+
+**Note:** This is a legacy branch. You should upgrade to `1.x`.
+
+## Usage
+
+```javascript
+var pathToRegexp = require('path-to-regexp');
+```
+
+### pathToRegexp(path, keys, options)
+
+ - **path** A string in the express format, an array of such strings, or a regular expression
+ - **keys** An array to be populated with the keys present in the url. Once the function completes, this will be an array of strings.
+ - **options**
+ - **options.sensitive** Defaults to false, set this to true to make routes case sensitive
+ - **options.strict** Defaults to false, set this to true to make the trailing slash matter.
+ - **options.end** Defaults to true, set this to false to only match the prefix of the URL.
+
+```javascript
+var keys = [];
+var exp = pathToRegexp('/foo/:bar', keys);
+//keys = ['bar']
+//exp = /^\/foo\/(?:([^\/]+?))\/?$/i
+```
+
+## Live Demo
+
+You can see a live demo of this library in use at [express-route-tester](http://forbeslindesay.github.com/express-route-tester/).
+
+## License
+
+ MIT
diff --git a/server/node_modules/express/node_modules/path-to-regexp/index.js b/server/node_modules/express/node_modules/path-to-regexp/index.js
new file mode 100755
index 0000000..500d1da
--- /dev/null
+++ b/server/node_modules/express/node_modules/path-to-regexp/index.js
@@ -0,0 +1,129 @@
+/**
+ * Expose `pathtoRegexp`.
+ */
+
+module.exports = pathtoRegexp;
+
+/**
+ * Match matching groups in a regular expression.
+ */
+var MATCHING_GROUP_REGEXP = /\((?!\?)/g;
+
+/**
+ * Normalize the given path string,
+ * returning a regular expression.
+ *
+ * An empty array should be passed,
+ * which will contain the placeholder
+ * key names. For example "/user/:id" will
+ * then contain ["id"].
+ *
+ * @param {String|RegExp|Array} path
+ * @param {Array} keys
+ * @param {Object} options
+ * @return {RegExp}
+ * @api private
+ */
+
+function pathtoRegexp(path, keys, options) {
+ options = options || {};
+ keys = keys || [];
+ var strict = options.strict;
+ var end = options.end !== false;
+ var flags = options.sensitive ? '' : 'i';
+ var extraOffset = 0;
+ var keysOffset = keys.length;
+ var i = 0;
+ var name = 0;
+ var m;
+
+ if (path instanceof RegExp) {
+ while (m = MATCHING_GROUP_REGEXP.exec(path.source)) {
+ keys.push({
+ name: name++,
+ optional: false,
+ offset: m.index
+ });
+ }
+
+ return path;
+ }
+
+ if (Array.isArray(path)) {
+ // Map array parts into regexps and return their source. We also pass
+ // the same keys and options instance into every generation to get
+ // consistent matching groups before we join the sources together.
+ path = path.map(function (value) {
+ return pathtoRegexp(value, keys, options).source;
+ });
+
+ return new RegExp('(?:' + path.join('|') + ')', flags);
+ }
+
+ path = ('^' + path + (strict ? '' : path[path.length - 1] === '/' ? '?' : '/?'))
+ .replace(/\/\(/g, '/(?:')
+ .replace(/([\/\.])/g, '\\$1')
+ .replace(/(\\\/)?(\\\.)?:(\w+)(\(.*?\))?(\*)?(\?)?/g, function (match, slash, format, key, capture, star, optional, offset) {
+ slash = slash || '';
+ format = format || '';
+ capture = capture || '([^\\/' + format + ']+?)';
+ optional = optional || '';
+
+ keys.push({
+ name: key,
+ optional: !!optional,
+ offset: offset + extraOffset
+ });
+
+ var result = ''
+ + (optional ? '' : slash)
+ + '(?:'
+ + format + (optional ? slash : '') + capture
+ + (star ? '((?:[\\/' + format + '].+?)?)' : '')
+ + ')'
+ + optional;
+
+ extraOffset += result.length - match.length;
+
+ return result;
+ })
+ .replace(/\*/g, function (star, index) {
+ var len = keys.length
+
+ while (len-- > keysOffset && keys[len].offset > index) {
+ keys[len].offset += 3; // Replacement length minus asterisk length.
+ }
+
+ return '(.*)';
+ });
+
+ // This is a workaround for handling unnamed matching groups.
+ while (m = MATCHING_GROUP_REGEXP.exec(path)) {
+ var escapeCount = 0;
+ var index = m.index;
+
+ while (path.charAt(--index) === '\\') {
+ escapeCount++;
+ }
+
+ // It's possible to escape the bracket.
+ if (escapeCount % 2 === 1) {
+ continue;
+ }
+
+ if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) {
+ keys.splice(keysOffset + i, 0, {
+ name: name++, // Unnamed matching groups must be consistently linear.
+ optional: false,
+ offset: m.index
+ });
+ }
+
+ i++;
+ }
+
+ // If the path is non-ending, match until the end or a slash.
+ path += (end ? '$' : (path[path.length - 1] === '/' ? '' : '(?=\\/|$)'));
+
+ return new RegExp(path, flags);
+};
diff --git a/server/node_modules/express/node_modules/path-to-regexp/package.json b/server/node_modules/express/node_modules/path-to-regexp/package.json
new file mode 100755
index 0000000..042586a
--- /dev/null
+++ b/server/node_modules/express/node_modules/path-to-regexp/package.json
@@ -0,0 +1,185 @@
+{
+ "name": "path-to-regexp",
+ "description": "Express style path to RegExp utility",
+ "version": "0.1.7",
+ "files": [
+ "index.js",
+ "LICENSE"
+ ],
+ "scripts": {
+ "test": "istanbul cover _mocha -- -R spec"
+ },
+ "keywords": [
+ "express",
+ "regexp"
+ ],
+ "component": {
+ "scripts": {
+ "path-to-regexp": "index.js"
+ }
+ },
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/component/path-to-regexp.git"
+ },
+ "devDependencies": {
+ "mocha": "^1.17.1",
+ "istanbul": "^0.2.6"
+ },
+ "gitHead": "039118d6c3c186d3f176c73935ca887a32a33d93",
+ "bugs": {
+ "url": "https://github.com/component/path-to-regexp/issues"
+ },
+ "homepage": "https://github.com/component/path-to-regexp#readme",
+ "_id": "path-to-regexp@0.1.7",
+ "_shasum": "df604178005f522f15eb4490e7247a1bfaa67f8c",
+ "_from": "path-to-regexp@0.1.7",
+ "_npmVersion": "2.13.2",
+ "_nodeVersion": "2.3.3",
+ "_npmUser": {
+ "name": "blakeembrey",
+ "email": "hello@blakeembrey.com"
+ },
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "hughsk",
+ "email": "hughskennedy@gmail.com"
+ },
+ {
+ "name": "timaschew",
+ "email": "timaschew@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "dominicbarnes",
+ "email": "dominic@dbarnes.info"
+ },
+ {
+ "name": "tootallnate",
+ "email": "nathan@tootallnate.net"
+ },
+ {
+ "name": "rauchg",
+ "email": "rauchg@gmail.com"
+ },
+ {
+ "name": "retrofox",
+ "email": "rdsuarez@gmail.com"
+ },
+ {
+ "name": "coreh",
+ "email": "thecoreh@gmail.com"
+ },
+ {
+ "name": "forbeslindesay",
+ "email": "forbes@lindesay.co.uk"
+ },
+ {
+ "name": "kelonye",
+ "email": "kelonyemitchel@gmail.com"
+ },
+ {
+ "name": "mattmueller",
+ "email": "mattmuelle@gmail.com"
+ },
+ {
+ "name": "yields",
+ "email": "yields@icloud.com"
+ },
+ {
+ "name": "anthonyshort",
+ "email": "antshort@gmail.com"
+ },
+ {
+ "name": "ianstormtaylor",
+ "email": "ian@ianstormtaylor.com"
+ },
+ {
+ "name": "cristiandouce",
+ "email": "cristian@gravityonmars.com"
+ },
+ {
+ "name": "swatinem",
+ "email": "arpad.borsos@googlemail.com"
+ },
+ {
+ "name": "stagas",
+ "email": "gstagas@gmail.com"
+ },
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "juliangruber",
+ "email": "julian@juliangruber.com"
+ },
+ {
+ "name": "calvinfo",
+ "email": "calvin@calv.info"
+ },
+ {
+ "name": "blakeembrey",
+ "email": "hello@blakeembrey.com"
+ },
+ {
+ "name": "timoxley",
+ "email": "secoif@gmail.com"
+ },
+ {
+ "name": "jonathanong",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "queckezz",
+ "email": "fabian.eichenberger@gmail.com"
+ },
+ {
+ "name": "nami-doc",
+ "email": "vendethiel@hotmail.fr"
+ },
+ {
+ "name": "clintwood",
+ "email": "clint@anotherway.co.za"
+ },
+ {
+ "name": "thehydroimpulse",
+ "email": "dnfagnan@gmail.com"
+ },
+ {
+ "name": "stephenmathieson",
+ "email": "me@stephenmathieson.com"
+ },
+ {
+ "name": "trevorgerhardt",
+ "email": "trevorgerhardt@gmail.com"
+ },
+ {
+ "name": "dfcreative",
+ "email": "df.creative@gmail.com"
+ },
+ {
+ "name": "defunctzombie",
+ "email": "shtylman@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "df604178005f522f15eb4490e7247a1bfaa67f8c",
+ "tarball": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/proxy-addr/HISTORY.md b/server/node_modules/express/node_modules/proxy-addr/HISTORY.md
new file mode 100755
index 0000000..a7389db
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/HISTORY.md
@@ -0,0 +1,99 @@
+1.1.2 / 2016-05-29
+==================
+
+ * deps: ipaddr.js@1.1.1
+ - Fix IPv6-mapped IPv4 validation edge cases
+
+1.1.1 / 2016-05-03
+==================
+
+ * Fix regression matching mixed versions against multiple subnets
+
+1.1.0 / 2016-05-01
+==================
+
+ * Fix accepting various invalid netmasks
+ - IPv4 netmasks must be contingous
+ - IPv6 addresses cannot be used as a netmask
+ * deps: ipaddr.js@1.1.0
+
+1.0.10 / 2015-12-09
+===================
+
+ * deps: ipaddr.js@1.0.5
+ - Fix regression in `isValid` with non-string arguments
+
+1.0.9 / 2015-12-01
+==================
+
+ * deps: ipaddr.js@1.0.4
+ - Fix accepting some invalid IPv6 addresses
+ - Reject CIDRs with negative or overlong masks
+ * perf: enable strict mode
+
+1.0.8 / 2015-05-10
+==================
+
+ * deps: ipaddr.js@1.0.1
+
+1.0.7 / 2015-03-16
+==================
+
+ * deps: ipaddr.js@0.1.9
+ - Fix OOM on certain inputs to `isValid`
+
+1.0.6 / 2015-02-01
+==================
+
+ * deps: ipaddr.js@0.1.8
+
+1.0.5 / 2015-01-08
+==================
+
+ * deps: ipaddr.js@0.1.6
+
+1.0.4 / 2014-11-23
+==================
+
+ * deps: ipaddr.js@0.1.5
+ - Fix edge cases with `isValid`
+
+1.0.3 / 2014-09-21
+==================
+
+ * Use `forwarded` npm module
+
+1.0.2 / 2014-09-18
+==================
+
+ * Fix a global leak when multiple subnets are trusted
+ * Support Node.js 0.6
+ * deps: ipaddr.js@0.1.3
+
+1.0.1 / 2014-06-03
+==================
+
+ * Fix links in npm package
+
+1.0.0 / 2014-05-08
+==================
+
+ * Add `trust` argument to determine proxy trust on
+ * Accepts custom function
+ * Accepts IPv4/IPv6 address(es)
+ * Accepts subnets
+ * Accepts pre-defined names
+ * Add optional `trust` argument to `proxyaddr.all` to
+ stop at first untrusted
+ * Add `proxyaddr.compile` to pre-compile `trust` function
+ to make subsequent calls faster
+
+0.0.1 / 2014-05-04
+==================
+
+ * Fix bad npm publish
+
+0.0.0 / 2014-05-04
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/proxy-addr/LICENSE b/server/node_modules/express/node_modules/proxy-addr/LICENSE
new file mode 100755
index 0000000..cab251c
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014-2016 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/proxy-addr/README.md b/server/node_modules/express/node_modules/proxy-addr/README.md
new file mode 100755
index 0000000..1bffc76
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/README.md
@@ -0,0 +1,136 @@
+# proxy-addr
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Determine address of proxied request
+
+## Install
+
+```sh
+$ npm install proxy-addr
+```
+
+## API
+
+```js
+var proxyaddr = require('proxy-addr')
+```
+
+### proxyaddr(req, trust)
+
+Return the address of the request, using the given `trust` parameter.
+
+The `trust` argument is a function that returns `true` if you trust
+the address, `false` if you don't. The closest untrusted address is
+returned.
+
+```js
+proxyaddr(req, function(addr){ return addr === '127.0.0.1' })
+proxyaddr(req, function(addr, i){ return i < 1 })
+```
+
+The `trust` arugment may also be a single IP address string or an
+array of trusted addresses, as plain IP addresses, CIDR-formatted
+strings, or IP/netmask strings.
+
+```js
+proxyaddr(req, '127.0.0.1')
+proxyaddr(req, ['127.0.0.0/8', '10.0.0.0/8'])
+proxyaddr(req, ['127.0.0.0/255.0.0.0', '192.168.0.0/255.255.0.0'])
+```
+
+This module also supports IPv6. Your IPv6 addresses will be normalized
+automatically (i.e. `fe80::00ed:1` equals `fe80:0:0:0:0:0:ed:1`).
+
+```js
+proxyaddr(req, '::1')
+proxyaddr(req, ['::1/128', 'fe80::/10'])
+```
+
+This module will automatically work with IPv4-mapped IPv6 addresses
+as well to support node.js in IPv6-only mode. This means that you do
+not have to specify both `::ffff:a00:1` and `10.0.0.1`.
+
+As a convenience, this module also takes certain pre-defined names
+in addition to IP addresses, which expand into IP addresses:
+
+```js
+proxyaddr(req, 'loopback')
+proxyaddr(req, ['loopback', 'fc00:ac:1ab5:fff::1/64'])
+```
+
+ * `loopback`: IPv4 and IPv6 loopback addresses (like `::1` and
+ `127.0.0.1`).
+ * `linklocal`: IPv4 and IPv6 link-local addresses (like
+ `fe80::1:1:1:1` and `169.254.0.1`).
+ * `uniquelocal`: IPv4 private addresses and IPv6 unique-local
+ addresses (like `fc00:ac:1ab5:fff::1` and `192.168.0.1`).
+
+When `trust` is specified as a function, it will be called for each
+address to determine if it is a trusted address. The function is
+given two arguments: `addr` and `i`, where `addr` is a string of
+the address to check and `i` is a number that represents the distance
+from the socket address.
+
+### proxyaddr.all(req, [trust])
+
+Return all the addresses of the request, optionally stopping at the
+first untrusted. This array is ordered from closest to furthest
+(i.e. `arr[0] === req.connection.remoteAddress`).
+
+```js
+proxyaddr.all(req)
+```
+
+The optional `trust` argument takes the same arguments as `trust`
+does in `proxyaddr(req, trust)`.
+
+```js
+proxyaddr.all(req, 'loopback')
+```
+
+### proxyaddr.compile(val)
+
+Compiles argument `val` into a `trust` function. This function takes
+the same arguments as `trust` does in `proxyaddr(req, trust)` and
+returns a function suitable for `proxyaddr(req, trust)`.
+
+```js
+var trust = proxyaddr.compile('localhost')
+var addr = proxyaddr(req, trust)
+```
+
+This function is meant to be optimized for use against every request.
+It is recommend to compile a trust function up-front for the trusted
+configuration and pass that to `proxyaddr(req, trust)` for each request.
+
+## Testing
+
+```sh
+$ npm test
+```
+
+## Benchmarks
+
+```sh
+$ npm run-script bench
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/proxy-addr.svg
+[npm-url]: https://npmjs.org/package/proxy-addr
+[node-version-image]: https://img.shields.io/node/v/proxy-addr.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/proxy-addr/master.svg
+[travis-url]: https://travis-ci.org/jshttp/proxy-addr
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/proxy-addr/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/proxy-addr?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/proxy-addr.svg
+[downloads-url]: https://npmjs.org/package/proxy-addr
diff --git a/server/node_modules/express/node_modules/proxy-addr/index.js b/server/node_modules/express/node_modules/proxy-addr/index.js
new file mode 100755
index 0000000..0b3cf0b
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/index.js
@@ -0,0 +1,321 @@
+/*!
+ * proxy-addr
+ * Copyright(c) 2014-2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ */
+
+module.exports = proxyaddr;
+module.exports.all = alladdrs;
+module.exports.compile = compile;
+
+/**
+ * Module dependencies.
+ */
+
+var forwarded = require('forwarded');
+var ipaddr = require('ipaddr.js');
+
+/**
+ * Variables.
+ */
+
+var digitre = /^[0-9]+$/;
+var isip = ipaddr.isValid;
+var parseip = ipaddr.parse;
+
+/**
+ * Pre-defined IP ranges.
+ */
+
+var ipranges = {
+ linklocal: ['169.254.0.0/16', 'fe80::/10'],
+ loopback: ['127.0.0.1/8', '::1/128'],
+ uniquelocal: ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7']
+};
+
+/**
+ * Get all addresses in the request, optionally stopping
+ * at the first untrusted.
+ *
+ * @param {Object} request
+ * @param {Function|Array|String} [trust]
+ * @api public
+ */
+
+function alladdrs(req, trust) {
+ // get addresses
+ var addrs = forwarded(req);
+
+ if (!trust) {
+ // Return all addresses
+ return addrs;
+ }
+
+ if (typeof trust !== 'function') {
+ trust = compile(trust);
+ }
+
+ for (var i = 0; i < addrs.length - 1; i++) {
+ if (trust(addrs[i], i)) continue;
+
+ addrs.length = i + 1;
+ }
+
+ return addrs;
+}
+
+/**
+ * Compile argument into trust function.
+ *
+ * @param {Array|String} val
+ * @api private
+ */
+
+function compile(val) {
+ if (!val) {
+ throw new TypeError('argument is required');
+ }
+
+ var trust = typeof val === 'string'
+ ? [val]
+ : val;
+
+ if (!Array.isArray(trust)) {
+ throw new TypeError('unsupported trust argument');
+ }
+
+ for (var i = 0; i < trust.length; i++) {
+ val = trust[i];
+
+ if (!ipranges.hasOwnProperty(val)) {
+ continue;
+ }
+
+ // Splice in pre-defined range
+ val = ipranges[val];
+ trust.splice.apply(trust, [i, 1].concat(val));
+ i += val.length - 1;
+ }
+
+ return compileTrust(compileRangeSubnets(trust));
+}
+
+/**
+ * Compile `arr` elements into range subnets.
+ *
+ * @param {Array} arr
+ * @api private
+ */
+
+function compileRangeSubnets(arr) {
+ var rangeSubnets = new Array(arr.length);
+
+ for (var i = 0; i < arr.length; i++) {
+ rangeSubnets[i] = parseipNotation(arr[i]);
+ }
+
+ return rangeSubnets;
+}
+
+/**
+ * Compile range subnet array into trust function.
+ *
+ * @param {Array} rangeSubnets
+ * @api private
+ */
+
+function compileTrust(rangeSubnets) {
+ // Return optimized function based on length
+ var len = rangeSubnets.length;
+ return len === 0
+ ? trustNone
+ : len === 1
+ ? trustSingle(rangeSubnets[0])
+ : trustMulti(rangeSubnets);
+}
+
+/**
+ * Parse IP notation string into range subnet.
+ *
+ * @param {String} note
+ * @api private
+ */
+
+function parseipNotation(note) {
+ var pos = note.lastIndexOf('/');
+ var str = pos !== -1
+ ? note.substring(0, pos)
+ : note;
+
+ if (!isip(str)) {
+ throw new TypeError('invalid IP address: ' + str);
+ }
+
+ var ip = parseip(str);
+
+ if (pos === -1 && ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) {
+ // Store as IPv4
+ ip = ip.toIPv4Address();
+ }
+
+ var max = ip.kind() === 'ipv6'
+ ? 128
+ : 32;
+
+ var range = pos !== -1
+ ? note.substring(pos + 1, note.length)
+ : null;
+
+ if (range === null) {
+ range = max;
+ } else if (digitre.test(range)) {
+ range = parseInt(range, 10);
+ } else if (ip.kind() === 'ipv4' && isip(range)) {
+ range = parseNetmask(range);
+ } else {
+ range = null;
+ }
+
+ if (range <= 0 || range > max) {
+ throw new TypeError('invalid range on address: ' + note);
+ }
+
+ return [ip, range];
+}
+
+/**
+ * Parse netmask string into CIDR range.
+ *
+ * @param {String} netmask
+ * @api private
+ */
+
+function parseNetmask(netmask) {
+ var ip = parseip(netmask);
+ var kind = ip.kind();
+
+ return kind === 'ipv4'
+ ? ip.prefixLengthFromSubnetMask()
+ : null;
+}
+
+/**
+ * Determine address of proxied request.
+ *
+ * @param {Object} request
+ * @param {Function|Array|String} trust
+ * @api public
+ */
+
+function proxyaddr(req, trust) {
+ if (!req) {
+ throw new TypeError('req argument is required');
+ }
+
+ if (!trust) {
+ throw new TypeError('trust argument is required');
+ }
+
+ var addrs = alladdrs(req, trust);
+ var addr = addrs[addrs.length - 1];
+
+ return addr;
+}
+
+/**
+ * Static trust function to trust nothing.
+ *
+ * @api private
+ */
+
+function trustNone() {
+ return false;
+}
+
+/**
+ * Compile trust function for multiple subnets.
+ *
+ * @param {Array} subnets
+ * @api private
+ */
+
+function trustMulti(subnets) {
+ return function trust(addr) {
+ if (!isip(addr)) return false;
+
+ var ip = parseip(addr);
+ var ipconv;
+ var kind = ip.kind();
+
+ for (var i = 0; i < subnets.length; i++) {
+ var subnet = subnets[i];
+ var subnetip = subnet[0];
+ var subnetkind = subnetip.kind();
+ var subnetrange = subnet[1];
+ var trusted = ip;
+
+ if (kind !== subnetkind) {
+ if (subnetkind === 'ipv4' && !ip.isIPv4MappedAddress()) {
+ // Incompatible IP addresses
+ continue;
+ }
+
+ if (!ipconv) {
+ // Convert IP to match subnet IP kind
+ ipconv = subnetkind === 'ipv4'
+ ? ip.toIPv4Address()
+ : ip.toIPv4MappedAddress();
+ }
+
+ trusted = ipconv;
+ }
+
+ if (trusted.match(subnetip, subnetrange)) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+}
+
+/**
+ * Compile trust function for single subnet.
+ *
+ * @param {Object} subnet
+ * @api private
+ */
+
+function trustSingle(subnet) {
+ var subnetip = subnet[0];
+ var subnetkind = subnetip.kind();
+ var subnetisipv4 = subnetkind === 'ipv4';
+ var subnetrange = subnet[1];
+
+ return function trust(addr) {
+ if (!isip(addr)) return false;
+
+ var ip = parseip(addr);
+ var kind = ip.kind();
+
+ if (kind !== subnetkind) {
+ if (subnetisipv4 && !ip.isIPv4MappedAddress()) {
+ // Incompatible IP addresses
+ return false;
+ }
+
+ // Convert IP to match subnet IP kind
+ ip = subnetisipv4
+ ? ip.toIPv4Address()
+ : ip.toIPv4MappedAddress();
+ }
+
+ return ip.match(subnetip, subnetrange);
+ };
+}
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/HISTORY.md b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/HISTORY.md
new file mode 100755
index 0000000..97fa1d1
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/HISTORY.md
@@ -0,0 +1,4 @@
+0.1.0 / 2014-09-21
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/LICENSE b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/LICENSE
new file mode 100755
index 0000000..b7dce6c
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/README.md b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/README.md
new file mode 100755
index 0000000..2b4988f
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/README.md
@@ -0,0 +1,53 @@
+# forwarded
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Parse HTTP X-Forwarded-For header
+
+## Installation
+
+```sh
+$ npm install forwarded
+```
+
+## API
+
+```js
+var forwarded = require('forwarded')
+```
+
+### forwarded(req)
+
+```js
+var addresses = forwarded(req)
+```
+
+Parse the `X-Forwarded-For` header from the request. Returns an array
+of the addresses, including the socket address for the `req`. In reverse
+order (i.e. index `0` is the socket address and the last index is the
+furthest address, typically the end-user).
+
+## Testing
+
+```sh
+$ npm test
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/forwarded.svg?style=flat
+[npm-url]: https://npmjs.org/package/forwarded
+[node-version-image]: https://img.shields.io/node/v/forwarded.svg?style=flat
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/forwarded.svg?style=flat
+[travis-url]: https://travis-ci.org/jshttp/forwarded
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/forwarded.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/jshttp/forwarded?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/forwarded.svg?style=flat
+[downloads-url]: https://npmjs.org/package/forwarded
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/index.js b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/index.js
new file mode 100755
index 0000000..2f5c340
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/index.js
@@ -0,0 +1,35 @@
+/*!
+ * forwarded
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+/**
+ * Module exports.
+ */
+
+module.exports = forwarded
+
+/**
+ * Get all addresses in the request, using the `X-Forwarded-For` header.
+ *
+ * @param {Object} req
+ * @api public
+ */
+
+function forwarded(req) {
+ if (!req) {
+ throw new TypeError('argument req is required')
+ }
+
+ // simple header parsing
+ var proxyAddrs = (req.headers['x-forwarded-for'] || '')
+ .split(/ *, */)
+ .filter(Boolean)
+ .reverse()
+ var socketAddr = req.connection.remoteAddress
+ var addrs = [socketAddr].concat(proxyAddrs)
+
+ // return all addresses
+ return addrs
+}
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/package.json b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/package.json
new file mode 100755
index 0000000..336f528
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/forwarded/package.json
@@ -0,0 +1,64 @@
+{
+ "name": "forwarded",
+ "description": "Parse HTTP X-Forwarded-For header",
+ "version": "0.1.0",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "x-forwarded-for",
+ "http",
+ "req"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jshttp/forwarded"
+ },
+ "devDependencies": {
+ "istanbul": "0.3.2",
+ "mocha": "~1.21.4"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "e9a9faeb3cfaadf40eb57d144fff26bca9b818e8",
+ "bugs": {
+ "url": "https://github.com/jshttp/forwarded/issues"
+ },
+ "homepage": "https://github.com/jshttp/forwarded",
+ "_id": "forwarded@0.1.0",
+ "_shasum": "19ef9874c4ae1c297bcf078fde63a09b66a84363",
+ "_from": "forwarded@>=0.1.0 <0.2.0",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "19ef9874c4ae1c297bcf078fde63a09b66a84363",
+ "tarball": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.npmignore b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.npmignore
new file mode 100755
index 0000000..7a1537b
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.npmignore
@@ -0,0 +1,2 @@
+.idea
+node_modules
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.travis.yml b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.travis.yml
new file mode 100755
index 0000000..aa3d14a
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/.travis.yml
@@ -0,0 +1,10 @@
+language: node_js
+
+node_js:
+ - "0.10"
+ - "0.11"
+ - "0.12"
+ - "4.0"
+ - "4.1"
+ - "4.2"
+ - "5"
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/Cakefile b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/Cakefile
new file mode 100755
index 0000000..7fd355a
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/Cakefile
@@ -0,0 +1,18 @@
+fs = require 'fs'
+CoffeeScript = require 'coffee-script'
+nodeunit = require 'nodeunit'
+UglifyJS = require 'uglify-js'
+
+task 'build', 'build the JavaScript files from CoffeeScript source', build = (cb) ->
+ source = fs.readFileSync 'src/ipaddr.coffee'
+ fs.writeFileSync 'lib/ipaddr.js', CoffeeScript.compile source.toString()
+
+ invoke 'test'
+ invoke 'compress'
+
+task 'test', 'run the bundled tests', (cb) ->
+ nodeunit.reporters.default.run ['test']
+
+task 'compress', 'uglify the resulting javascript', (cb) ->
+ result = UglifyJS.minify('lib/ipaddr.js')
+ fs.writeFileSync('ipaddr.min.js', result.code)
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/LICENSE b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/LICENSE
new file mode 100755
index 0000000..3493f0d
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2011 Peter Zotov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/README.md b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/README.md
new file mode 100755
index 0000000..bfcb1c9
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/README.md
@@ -0,0 +1,209 @@
+# ipaddr.js — an IPv6 and IPv4 address manipulation library [![Build Status](https://travis-ci.org/whitequark/ipaddr.js.svg)](https://travis-ci.org/whitequark/ipaddr.js)
+
+ipaddr.js is a small (1.9K minified and gzipped) library for manipulating
+IP addresses in JavaScript environments. It runs on both CommonJS runtimes
+(e.g. [nodejs]) and in a web browser.
+
+ipaddr.js allows you to verify and parse string representation of an IP
+address, match it against a CIDR range or range list, determine if it falls
+into some reserved ranges (examples include loopback and private ranges),
+and convert between IPv4 and IPv4-mapped IPv6 addresses.
+
+[nodejs]: http://nodejs.org
+
+## Installation
+
+`npm install ipaddr.js`
+
+or
+
+`bower install ipaddr.js`
+
+## API
+
+ipaddr.js defines one object in the global scope: `ipaddr`. In CommonJS,
+it is exported from the module:
+
+```js
+var ipaddr = require('ipaddr.js');
+```
+
+The API consists of several global methods and two classes: ipaddr.IPv6 and ipaddr.IPv4.
+
+### Global methods
+
+There are three global methods defined: `ipaddr.isValid`, `ipaddr.parse` and
+`ipaddr.process`. All of them receive a string as a single parameter.
+
+The `ipaddr.isValid` method returns `true` if the address is a valid IPv4 or
+IPv6 address, and `false` otherwise. It does not throw any exceptions.
+
+The `ipaddr.parse` method returns an object representing the IP address,
+or throws an `Error` if the passed string is not a valid representation of an
+IP address.
+
+The `ipaddr.process` method works just like the `ipaddr.parse` one, but it
+automatically converts IPv4-mapped IPv6 addresses to their IPv4 couterparts
+before returning. It is useful when you have a Node.js instance listening
+on an IPv6 socket, and the `net.ivp6.bindv6only` sysctl parameter (or its
+equivalent on non-Linux OS) is set to 0. In this case, you can accept IPv4
+connections on your IPv6-only socket, but the remote address will be mangled.
+Use `ipaddr.process` method to automatically demangle it.
+
+### Object representation
+
+Parsing methods return an object which descends from `ipaddr.IPv6` or
+`ipaddr.IPv4`. These objects share some properties, but most of them differ.
+
+#### Shared properties
+
+One can determine the type of address by calling `addr.kind()`. It will return
+either `"ipv6"` or `"ipv4"`.
+
+An address can be converted back to its string representation with `addr.toString()`.
+Note that this method:
+ * does not return the original string used to create the object (in fact, there is
+ no way of getting that string)
+ * returns a compact representation (when it is applicable)
+
+A `match(range, bits)` method can be used to check if the address falls into a
+certain CIDR range.
+Note that an address can be (obviously) matched only against an address of the same type.
+
+For example:
+
+```js
+var addr = ipaddr.parse("2001:db8:1234::1");
+var range = ipaddr.parse("2001:db8::");
+
+addr.match(range, 32); // => true
+```
+
+Alternatively, `match` can also be called as `match([range, bits])`. In this way,
+it can be used together with the `parseCIDR(string)` method, which parses an IP
+address together with a CIDR range.
+
+For example:
+
+```js
+var addr = ipaddr.parse("2001:db8:1234::1");
+
+addr.match(ipaddr.parseCIDR("2001:db8::/32")); // => true
+```
+
+A `range()` method returns one of predefined names for several special ranges defined
+by IP protocols. The exact names (and their respective CIDR ranges) can be looked up
+in the source: [IPv6 ranges] and [IPv4 ranges]. Some common ones include `"unicast"`
+(the default one) and `"reserved"`.
+
+You can match against your own range list by using
+`ipaddr.subnetMatch(address, rangeList, defaultName)` method. It can work with both
+IPv6 and IPv4 addresses, and accepts a name-to-subnet map as the range list. For example:
+
+```js
+var rangeList = {
+ documentationOnly: [ ipaddr.parse('2001:db8::'), 32 ],
+ tunnelProviders: [
+ [ ipaddr.parse('2001:470::'), 32 ], // he.net
+ [ ipaddr.parse('2001:5c0::'), 32 ] // freenet6
+ ]
+};
+ipaddr.subnetMatch(ipaddr.parse('2001:470:8:66::1'), rangeList, 'unknown'); // => "he.net"
+```
+
+The addresses can be converted to their byte representation with `toByteArray()`.
+(Actually, JavaScript mostly does not know about byte buffers. They are emulated with
+arrays of numbers, each in range of 0..255.)
+
+```js
+var bytes = ipaddr.parse('2a00:1450:8007::68').toByteArray(); // ipv6.google.com
+bytes // => [42, 0x00, 0x14, 0x50, 0x80, 0x07, 0x00, , 0x00, 0x68 ]
+```
+
+The `ipaddr.IPv4` and `ipaddr.IPv6` objects have some methods defined, too. All of them
+have the same interface for both protocols, and are similar to global methods.
+
+`ipaddr.IPvX.isValid(string)` can be used to check if the string is a valid address
+for particular protocol, and `ipaddr.IPvX.parse(string)` is the error-throwing parser.
+
+[IPv6 ranges]: https://github.com/whitequark/ipaddr.js/blob/master/src/ipaddr.coffee#L186
+[IPv4 ranges]: https://github.com/whitequark/ipaddr.js/blob/master/src/ipaddr.coffee#L71
+
+#### IPv6 properties
+
+Sometimes you will want to convert IPv6 not to a compact string representation (with
+the `::` substitution); the `toNormalizedString()` method will return an address where
+all zeroes are explicit.
+
+For example:
+
+```js
+var addr = ipaddr.parse("2001:0db8::0001");
+addr.toString(); // => "2001:db8::1"
+addr.toNormalizedString(); // => "2001:db8:0:0:0:0:0:1"
+```
+
+The `isIPv4MappedAddress()` method will return `true` if this address is an IPv4-mapped
+one, and `toIPv4Address()` will return an IPv4 object address.
+
+To access the underlying binary representation of the address, use `addr.parts`.
+
+```js
+var addr = ipaddr.parse("2001:db8:10::1234:DEAD");
+addr.parts // => [0x2001, 0xdb8, 0x10, 0, 0, 0, 0x1234, 0xdead]
+```
+
+#### IPv4 properties
+
+`toIPv4MappedAddress()` will return a corresponding IPv4-mapped IPv6 address.
+
+To access the underlying representation of the address, use `addr.octets`.
+
+```js
+var addr = ipaddr.parse("192.168.1.1");
+addr.octets // => [192, 168, 1, 1]
+```
+
+`prefixLengthFromSubnetMask()` will return a CIDR prefix length for a valid IPv4 netmask or
+false if the netmask is not valid.
+
+```js
+ipaddr.IPv4.parse('255.255.255.240').prefixLengthFromSubnetMask() == 28
+ipaddr.IPv4.parse('255.192.164.0').prefixLengthFromSubnetMask() == null
+```
+
+#### Conversion
+
+IPv4 and IPv6 can be converted bidirectionally to and from network byte order (MSB) byte arrays.
+
+The `fromByteArray()` method will take an array and create an appropriate IPv4 or IPv6 object
+if the input satisfies the requirements. For IPv4 it has to be an array of four 8-bit values,
+while for IPv6 it has to be an array of sixteen 8-bit values.
+
+For example:
+```js
+var addr = ipaddr.fromByteArray([0x7f, 0, 0, 1]);
+addr.toString(); // => "127.0.0.1"
+```
+
+or
+
+```js
+var addr = ipaddr.fromByteArray([0x20, 1, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
+addr.toString(); // => "2001:db8::1"
+```
+
+Both objects also offer a `toByteArray()` method, which returns an array in network byte order (MSB).
+
+For example:
+```js
+var addr = ipaddr.parse("127.0.0.1");
+addr.toByteArray(); // => [0x7f, 0, 0, 1]
+```
+
+or
+
+```js
+var addr = ipaddr.parse("2001:db8::1");
+addr.toByteArray(); // => [0x20, 1, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
+```
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/bower.json b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/bower.json
new file mode 100755
index 0000000..e494f97
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/bower.json
@@ -0,0 +1,29 @@
+{
+ "name": "ipaddr.js",
+ "version": "1.1.1",
+ "homepage": "https://github.com/whitequark/ipaddr.js",
+ "authors": [
+ "whitequark "
+ ],
+ "description": "IP address manipulation library in JavaScript (CoffeeScript, actually)",
+ "main": "lib/ipaddr.js",
+ "moduleType": [
+ "globals",
+ "node"
+ ],
+ "keywords": [
+ "javscript",
+ "ip",
+ "address",
+ "ipv4",
+ "ipv6"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "tests"
+ ]
+}
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
new file mode 100755
index 0000000..ffa32ff
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
@@ -0,0 +1 @@
+(function(){var r,t,n,e,i,o,a,s;t={},s=this,"undefined"!=typeof module&&null!==module&&module.exports?module.exports=t:s.ipaddr=t,a=function(r,t,n,e){var i,o;if(r.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(i=0;e>0;){if(o=n-e,0>o&&(o=0),r[i]>>o!==t[i]>>o)return!1;e-=n,i+=1}return!0},t.subnetMatch=function(r,t,n){var e,i,o,a,s;null==n&&(n="unicast");for(e in t)for(i=t[e],!i[0]||i[0]instanceof Array||(i=[i]),a=0,s=i.length;s>a;a++)if(o=i[a],r.match.apply(r,o))return e;return n},t.IPv4=function(){function r(r){var t,n,e;if(4!==r.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(n=0,e=r.length;e>n;n++)if(t=r[n],!(t>=0&&255>=t))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=r}return r.prototype.kind=function(){return"ipv4"},r.prototype.toString=function(){return this.octets.join(".")},r.prototype.toByteArray=function(){return this.octets.slice(0)},r.prototype.match=function(r,t){var n;if(void 0===t&&(n=r,r=n[0],t=n[1]),"ipv4"!==r.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,r.octets,8,t)},r.prototype.SpecialRanges={unspecified:[[new r([0,0,0,0]),8]],broadcast:[[new r([255,255,255,255]),32]],multicast:[[new r([224,0,0,0]),4]],linkLocal:[[new r([169,254,0,0]),16]],loopback:[[new r([127,0,0,0]),8]],"private":[[new r([10,0,0,0]),8],[new r([172,16,0,0]),12],[new r([192,168,0,0]),16]],reserved:[[new r([192,0,0,0]),24],[new r([192,0,2,0]),24],[new r([192,88,99,0]),24],[new r([198,51,100,0]),24],[new r([203,0,113,0]),24],[new r([240,0,0,0]),4]]},r.prototype.range=function(){return t.subnetMatch(this,this.SpecialRanges)},r.prototype.toIPv4MappedAddress=function(){return t.IPv6.parse("::ffff:"+this.toString())},r.prototype.prefixLengthFromSubnetMask=function(){var r,t,n,e,i,o,a;for(o={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},r=0,e=!1,t=a=3;a>=0;t=a+=-1){if(n=this.octets[t],!(n in o))return null;if(i=o[n],e&&0!==i)return null;8!==i&&(e=!0),r+=i}return 32-r},r}(),n="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new RegExp("^"+n+"\\."+n+"\\."+n+"\\."+n+"$","i"),longValue:new RegExp("^"+n+"$","i")},t.IPv4.parser=function(r){var t,n,i,o,a;if(n=function(r){return"0"===r[0]&&"x"!==r[1]?parseInt(r,8):parseInt(r)},t=r.match(e.fourOctet))return function(){var r,e,o,a;for(o=t.slice(1,6),a=[],r=0,e=o.length;e>r;r++)i=o[r],a.push(n(i));return a}();if(t=r.match(e.longValue)){if(a=n(t[1]),a>4294967295||0>a)throw new Error("ipaddr: address outside defined range");return function(){var r,t;for(t=[],o=r=0;24>=r;o=r+=8)t.push(a>>o&255);return t}().reverse()}return null},t.IPv6=function(){function r(r){var t,n,e,i,o,a;if(16===r.length)for(this.parts=[],t=e=0;14>=e;t=e+=2)this.parts.push(r[t]<<8|r[t+1]);else{if(8!==r.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=r}for(a=this.parts,i=0,o=a.length;o>i;i++)if(n=a[i],!(n>=0&&65535>=n))throw new Error("ipaddr: ipv6 part should fit in 16 bits")}return r.prototype.kind=function(){return"ipv6"},r.prototype.toString=function(){var r,t,n,e,i,o,a;for(i=function(){var r,n,e,i;for(e=this.parts,i=[],r=0,n=e.length;n>r;r++)t=e[r],i.push(t.toString(16));return i}.call(this),r=[],n=function(t){return r.push(t)},e=0,o=0,a=i.length;a>o;o++)switch(t=i[o],e){case 0:n("0"===t?"":t),e=1;break;case 1:"0"===t?e=2:n(t);break;case 2:"0"!==t&&(n(""),n(t),e=3);break;case 3:n(t)}return 2===e&&(n(""),n("")),r.join(":")},r.prototype.toByteArray=function(){var r,t,n,e,i;for(r=[],i=this.parts,n=0,e=i.length;e>n;n++)t=i[n],r.push(t>>8),r.push(255&t);return r},r.prototype.toNormalizedString=function(){var r;return function(){var t,n,e,i;for(e=this.parts,i=[],t=0,n=e.length;n>t;t++)r=e[t],i.push(r.toString(16));return i}.call(this).join(":")},r.prototype.match=function(r,t){var n;if(void 0===t&&(n=r,r=n[0],t=n[1]),"ipv6"!==r.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,r.parts,16,t)},r.prototype.SpecialRanges={unspecified:[new r([0,0,0,0,0,0,0,0]),128],linkLocal:[new r([65152,0,0,0,0,0,0,0]),10],multicast:[new r([65280,0,0,0,0,0,0,0]),8],loopback:[new r([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new r([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new r([0,0,0,0,0,65535,0,0]),96],rfc6145:[new r([0,0,0,0,65535,0,0,0]),96],rfc6052:[new r([100,65435,0,0,0,0,0,0]),96],"6to4":[new r([8194,0,0,0,0,0,0,0]),16],teredo:[new r([8193,0,0,0,0,0,0,0]),32],reserved:[[new r([8193,3512,0,0,0,0,0,0]),32]]},r.prototype.range=function(){return t.subnetMatch(this,this.SpecialRanges)},r.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},r.prototype.toIPv4Address=function(){var r,n,e;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=this.parts.slice(-2),r=e[0],n=e[1],new t.IPv4([r>>8,255&r,n>>8,255&n])},r}(),i="(?:[0-9a-f]+::?)+",o={"native":new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(""+n+"\\."+n+"\\."+n+"\\."+n+"$"),"i")},r=function(r,t){var n,e,i,o,a;if(r.indexOf("::")!==r.lastIndexOf("::"))return null;for(n=0,e=-1;(e=r.indexOf(":",e+1))>=0;)n++;if("::"===r.substr(0,2)&&n--,"::"===r.substr(-2,2)&&n--,n>t)return null;for(a=t-n,o=":";a--;)o+="0:";return r=r.replace("::",o),":"===r[0]&&(r=r.slice(1)),":"===r[r.length-1]&&(r=r.slice(0,-1)),function(){var t,n,e,o;for(e=r.split(":"),o=[],t=0,n=e.length;n>t;t++)i=e[t],o.push(parseInt(i,16));return o}()},t.IPv6.parser=function(t){var n,e,i,a,s,p;if(t.match(o["native"]))return r(t,8);if((n=t.match(o.transitional))&&(a=r(n[1].slice(0,-1),6))){for(i=[parseInt(n[2]),parseInt(n[3]),parseInt(n[4]),parseInt(n[5])],s=0,p=i.length;p>s;s++)if(e=i[s],!(e>=0&&255>=e))return null;return a.push(i[0]<<8|i[1]),a.push(i[2]<<8|i[3]),a}return null},t.IPv4.isIPv4=t.IPv6.isIPv6=function(r){return null!==this.parser(r)},t.IPv4.isValid=function(r){var t;try{return new this(this.parser(r)),!0}catch(n){return t=n,!1}},t.IPv6.isValid=function(r){var t;if("string"==typeof r&&-1===r.indexOf(":"))return!1;try{return new this(this.parser(r)),!0}catch(n){return t=n,!1}},t.IPv4.parse=t.IPv6.parse=function(r){var t;if(t=this.parser(r),null===t)throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},t.IPv4.parseCIDR=function(r){var t,n;if((n=r.match(/^(.+)\/(\d+)$/))&&(t=parseInt(n[2]),t>=0&&32>=t))return[this.parse(n[1]),t];throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},t.IPv6.parseCIDR=function(r){var t,n;if((n=r.match(/^(.+)\/(\d+)$/))&&(t=parseInt(n[2]),t>=0&&128>=t))return[this.parse(n[1]),t];throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},t.isValid=function(r){return t.IPv6.isValid(r)||t.IPv4.isValid(r)},t.parse=function(r){if(t.IPv6.isValid(r))return t.IPv6.parse(r);if(t.IPv4.isValid(r))return t.IPv4.parse(r);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},t.parseCIDR=function(r){var n;try{return t.IPv6.parseCIDR(r)}catch(e){n=e;try{return t.IPv4.parseCIDR(r)}catch(e){throw n=e,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},t.fromByteArray=function(r){var n;if(n=r.length,4===n)return new t.IPv4(r);if(16===n)return new t.IPv6(r);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},t.process=function(r){var t;return t=this.parse(r),"ipv6"===t.kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(this);
\ No newline at end of file
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
new file mode 100755
index 0000000..36774e7
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
@@ -0,0 +1,526 @@
+(function() {
+ var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root;
+
+ ipaddr = {};
+
+ root = this;
+
+ if ((typeof module !== "undefined" && module !== null) && module.exports) {
+ module.exports = ipaddr;
+ } else {
+ root['ipaddr'] = ipaddr;
+ }
+
+ matchCIDR = function(first, second, partSize, cidrBits) {
+ var part, shift;
+ if (first.length !== second.length) {
+ throw new Error("ipaddr: cannot match CIDR for objects with different lengths");
+ }
+ part = 0;
+ while (cidrBits > 0) {
+ shift = partSize - cidrBits;
+ if (shift < 0) {
+ shift = 0;
+ }
+ if (first[part] >> shift !== second[part] >> shift) {
+ return false;
+ }
+ cidrBits -= partSize;
+ part += 1;
+ }
+ return true;
+ };
+
+ ipaddr.subnetMatch = function(address, rangeList, defaultName) {
+ var rangeName, rangeSubnets, subnet, _i, _len;
+ if (defaultName == null) {
+ defaultName = 'unicast';
+ }
+ for (rangeName in rangeList) {
+ rangeSubnets = rangeList[rangeName];
+ if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {
+ rangeSubnets = [rangeSubnets];
+ }
+ for (_i = 0, _len = rangeSubnets.length; _i < _len; _i++) {
+ subnet = rangeSubnets[_i];
+ if (address.match.apply(address, subnet)) {
+ return rangeName;
+ }
+ }
+ }
+ return defaultName;
+ };
+
+ ipaddr.IPv4 = (function() {
+ function IPv4(octets) {
+ var octet, _i, _len;
+ if (octets.length !== 4) {
+ throw new Error("ipaddr: ipv4 octet count should be 4");
+ }
+ for (_i = 0, _len = octets.length; _i < _len; _i++) {
+ octet = octets[_i];
+ if (!((0 <= octet && octet <= 255))) {
+ throw new Error("ipaddr: ipv4 octet should fit in 8 bits");
+ }
+ }
+ this.octets = octets;
+ }
+
+ IPv4.prototype.kind = function() {
+ return 'ipv4';
+ };
+
+ IPv4.prototype.toString = function() {
+ return this.octets.join(".");
+ };
+
+ IPv4.prototype.toByteArray = function() {
+ return this.octets.slice(0);
+ };
+
+ IPv4.prototype.match = function(other, cidrRange) {
+ var _ref;
+ if (cidrRange === void 0) {
+ _ref = other, other = _ref[0], cidrRange = _ref[1];
+ }
+ if (other.kind() !== 'ipv4') {
+ throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");
+ }
+ return matchCIDR(this.octets, other.octets, 8, cidrRange);
+ };
+
+ IPv4.prototype.SpecialRanges = {
+ unspecified: [[new IPv4([0, 0, 0, 0]), 8]],
+ broadcast: [[new IPv4([255, 255, 255, 255]), 32]],
+ multicast: [[new IPv4([224, 0, 0, 0]), 4]],
+ linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],
+ loopback: [[new IPv4([127, 0, 0, 0]), 8]],
+ "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]],
+ reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]]
+ };
+
+ IPv4.prototype.range = function() {
+ return ipaddr.subnetMatch(this, this.SpecialRanges);
+ };
+
+ IPv4.prototype.toIPv4MappedAddress = function() {
+ return ipaddr.IPv6.parse("::ffff:" + (this.toString()));
+ };
+
+ IPv4.prototype.prefixLengthFromSubnetMask = function() {
+ var cidr, i, octet, stop, zeros, zerotable, _i;
+ zerotable = {
+ 0: 8,
+ 128: 7,
+ 192: 6,
+ 224: 5,
+ 240: 4,
+ 248: 3,
+ 252: 2,
+ 254: 1,
+ 255: 0
+ };
+ cidr = 0;
+ stop = false;
+ for (i = _i = 3; _i >= 0; i = _i += -1) {
+ octet = this.octets[i];
+ if (octet in zerotable) {
+ zeros = zerotable[octet];
+ if (stop && zeros !== 0) {
+ return null;
+ }
+ if (zeros !== 8) {
+ stop = true;
+ }
+ cidr += zeros;
+ } else {
+ return null;
+ }
+ }
+ return 32 - cidr;
+ };
+
+ return IPv4;
+
+ })();
+
+ ipv4Part = "(0?\\d+|0x[a-f0-9]+)";
+
+ ipv4Regexes = {
+ fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", 'i'),
+ longValue: new RegExp("^" + ipv4Part + "$", 'i')
+ };
+
+ ipaddr.IPv4.parser = function(string) {
+ var match, parseIntAuto, part, shift, value;
+ parseIntAuto = function(string) {
+ if (string[0] === "0" && string[1] !== "x") {
+ return parseInt(string, 8);
+ } else {
+ return parseInt(string);
+ }
+ };
+ if (match = string.match(ipv4Regexes.fourOctet)) {
+ return (function() {
+ var _i, _len, _ref, _results;
+ _ref = match.slice(1, 6);
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ part = _ref[_i];
+ _results.push(parseIntAuto(part));
+ }
+ return _results;
+ })();
+ } else if (match = string.match(ipv4Regexes.longValue)) {
+ value = parseIntAuto(match[1]);
+ if (value > 0xffffffff || value < 0) {
+ throw new Error("ipaddr: address outside defined range");
+ }
+ return ((function() {
+ var _i, _results;
+ _results = [];
+ for (shift = _i = 0; _i <= 24; shift = _i += 8) {
+ _results.push((value >> shift) & 0xff);
+ }
+ return _results;
+ })()).reverse();
+ } else {
+ return null;
+ }
+ };
+
+ ipaddr.IPv6 = (function() {
+ function IPv6(parts) {
+ var i, part, _i, _j, _len, _ref;
+ if (parts.length === 16) {
+ this.parts = [];
+ for (i = _i = 0; _i <= 14; i = _i += 2) {
+ this.parts.push((parts[i] << 8) | parts[i + 1]);
+ }
+ } else if (parts.length === 8) {
+ this.parts = parts;
+ } else {
+ throw new Error("ipaddr: ipv6 part count should be 8 or 16");
+ }
+ _ref = this.parts;
+ for (_j = 0, _len = _ref.length; _j < _len; _j++) {
+ part = _ref[_j];
+ if (!((0 <= part && part <= 0xffff))) {
+ throw new Error("ipaddr: ipv6 part should fit in 16 bits");
+ }
+ }
+ }
+
+ IPv6.prototype.kind = function() {
+ return 'ipv6';
+ };
+
+ IPv6.prototype.toString = function() {
+ var compactStringParts, part, pushPart, state, stringParts, _i, _len;
+ stringParts = (function() {
+ var _i, _len, _ref, _results;
+ _ref = this.parts;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ part = _ref[_i];
+ _results.push(part.toString(16));
+ }
+ return _results;
+ }).call(this);
+ compactStringParts = [];
+ pushPart = function(part) {
+ return compactStringParts.push(part);
+ };
+ state = 0;
+ for (_i = 0, _len = stringParts.length; _i < _len; _i++) {
+ part = stringParts[_i];
+ switch (state) {
+ case 0:
+ if (part === '0') {
+ pushPart('');
+ } else {
+ pushPart(part);
+ }
+ state = 1;
+ break;
+ case 1:
+ if (part === '0') {
+ state = 2;
+ } else {
+ pushPart(part);
+ }
+ break;
+ case 2:
+ if (part !== '0') {
+ pushPart('');
+ pushPart(part);
+ state = 3;
+ }
+ break;
+ case 3:
+ pushPart(part);
+ }
+ }
+ if (state === 2) {
+ pushPart('');
+ pushPart('');
+ }
+ return compactStringParts.join(":");
+ };
+
+ IPv6.prototype.toByteArray = function() {
+ var bytes, part, _i, _len, _ref;
+ bytes = [];
+ _ref = this.parts;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ part = _ref[_i];
+ bytes.push(part >> 8);
+ bytes.push(part & 0xff);
+ }
+ return bytes;
+ };
+
+ IPv6.prototype.toNormalizedString = function() {
+ var part;
+ return ((function() {
+ var _i, _len, _ref, _results;
+ _ref = this.parts;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ part = _ref[_i];
+ _results.push(part.toString(16));
+ }
+ return _results;
+ }).call(this)).join(":");
+ };
+
+ IPv6.prototype.match = function(other, cidrRange) {
+ var _ref;
+ if (cidrRange === void 0) {
+ _ref = other, other = _ref[0], cidrRange = _ref[1];
+ }
+ if (other.kind() !== 'ipv6') {
+ throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");
+ }
+ return matchCIDR(this.parts, other.parts, 16, cidrRange);
+ };
+
+ IPv6.prototype.SpecialRanges = {
+ unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],
+ linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],
+ multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],
+ loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],
+ uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],
+ ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],
+ rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],
+ rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],
+ '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],
+ teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],
+ reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]]
+ };
+
+ IPv6.prototype.range = function() {
+ return ipaddr.subnetMatch(this, this.SpecialRanges);
+ };
+
+ IPv6.prototype.isIPv4MappedAddress = function() {
+ return this.range() === 'ipv4Mapped';
+ };
+
+ IPv6.prototype.toIPv4Address = function() {
+ var high, low, _ref;
+ if (!this.isIPv4MappedAddress()) {
+ throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");
+ }
+ _ref = this.parts.slice(-2), high = _ref[0], low = _ref[1];
+ return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);
+ };
+
+ return IPv6;
+
+ })();
+
+ ipv6Part = "(?:[0-9a-f]+::?)+";
+
+ ipv6Regexes = {
+ "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?$", 'i'),
+ transitional: new RegExp(("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)") + ("" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$"), 'i')
+ };
+
+ expandIPv6 = function(string, parts) {
+ var colonCount, lastColon, part, replacement, replacementCount;
+ if (string.indexOf('::') !== string.lastIndexOf('::')) {
+ return null;
+ }
+ colonCount = 0;
+ lastColon = -1;
+ while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {
+ colonCount++;
+ }
+ if (string.substr(0, 2) === '::') {
+ colonCount--;
+ }
+ if (string.substr(-2, 2) === '::') {
+ colonCount--;
+ }
+ if (colonCount > parts) {
+ return null;
+ }
+ replacementCount = parts - colonCount;
+ replacement = ':';
+ while (replacementCount--) {
+ replacement += '0:';
+ }
+ string = string.replace('::', replacement);
+ if (string[0] === ':') {
+ string = string.slice(1);
+ }
+ if (string[string.length - 1] === ':') {
+ string = string.slice(0, -1);
+ }
+ return (function() {
+ var _i, _len, _ref, _results;
+ _ref = string.split(":");
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ part = _ref[_i];
+ _results.push(parseInt(part, 16));
+ }
+ return _results;
+ })();
+ };
+
+ ipaddr.IPv6.parser = function(string) {
+ var match, octet, octets, parts, _i, _len;
+ if (string.match(ipv6Regexes['native'])) {
+ return expandIPv6(string, 8);
+ } else if (match = string.match(ipv6Regexes['transitional'])) {
+ parts = expandIPv6(match[1].slice(0, -1), 6);
+ if (parts) {
+ octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])];
+ for (_i = 0, _len = octets.length; _i < _len; _i++) {
+ octet = octets[_i];
+ if (!((0 <= octet && octet <= 255))) {
+ return null;
+ }
+ }
+ parts.push(octets[0] << 8 | octets[1]);
+ parts.push(octets[2] << 8 | octets[3]);
+ return parts;
+ }
+ }
+ return null;
+ };
+
+ ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) {
+ return this.parser(string) !== null;
+ };
+
+ ipaddr.IPv4.isValid = function(string) {
+ var e;
+ try {
+ new this(this.parser(string));
+ return true;
+ } catch (_error) {
+ e = _error;
+ return false;
+ }
+ };
+
+ ipaddr.IPv6.isValid = function(string) {
+ var e;
+ if (typeof string === "string" && string.indexOf(":") === -1) {
+ return false;
+ }
+ try {
+ new this(this.parser(string));
+ return true;
+ } catch (_error) {
+ e = _error;
+ return false;
+ }
+ };
+
+ ipaddr.IPv4.parse = ipaddr.IPv6.parse = function(string) {
+ var parts;
+ parts = this.parser(string);
+ if (parts === null) {
+ throw new Error("ipaddr: string is not formatted like ip address");
+ }
+ return new this(parts);
+ };
+
+ ipaddr.IPv4.parseCIDR = function(string) {
+ var maskLength, match;
+ if (match = string.match(/^(.+)\/(\d+)$/)) {
+ maskLength = parseInt(match[2]);
+ if (maskLength >= 0 && maskLength <= 32) {
+ return [this.parse(match[1]), maskLength];
+ }
+ }
+ throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range");
+ };
+
+ ipaddr.IPv6.parseCIDR = function(string) {
+ var maskLength, match;
+ if (match = string.match(/^(.+)\/(\d+)$/)) {
+ maskLength = parseInt(match[2]);
+ if (maskLength >= 0 && maskLength <= 128) {
+ return [this.parse(match[1]), maskLength];
+ }
+ }
+ throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range");
+ };
+
+ ipaddr.isValid = function(string) {
+ return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);
+ };
+
+ ipaddr.parse = function(string) {
+ if (ipaddr.IPv6.isValid(string)) {
+ return ipaddr.IPv6.parse(string);
+ } else if (ipaddr.IPv4.isValid(string)) {
+ return ipaddr.IPv4.parse(string);
+ } else {
+ throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format");
+ }
+ };
+
+ ipaddr.parseCIDR = function(string) {
+ var e;
+ try {
+ return ipaddr.IPv6.parseCIDR(string);
+ } catch (_error) {
+ e = _error;
+ try {
+ return ipaddr.IPv4.parseCIDR(string);
+ } catch (_error) {
+ e = _error;
+ throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format");
+ }
+ }
+ };
+
+ ipaddr.fromByteArray = function(bytes) {
+ var length;
+ length = bytes.length;
+ if (length === 4) {
+ return new ipaddr.IPv4(bytes);
+ } else if (length === 16) {
+ return new ipaddr.IPv6(bytes);
+ } else {
+ throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address");
+ }
+ };
+
+ ipaddr.process = function(string) {
+ var addr;
+ addr = this.parse(string);
+ if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {
+ return addr.toIPv4Address();
+ } else {
+ return addr;
+ }
+ };
+
+}).call(this);
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
new file mode 100755
index 0000000..cf43635
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "ipaddr.js",
+ "description": "A library for manipulating IPv4 and IPv6 addresses in JavaScript.",
+ "version": "1.1.1",
+ "author": {
+ "name": "whitequark",
+ "email": "whitequark@whitequark.org"
+ },
+ "directories": {
+ "lib": "./lib"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "coffee-script": "~1.6",
+ "nodeunit": ">=0.8.2 <0.8.7",
+ "uglify-js": "latest"
+ },
+ "scripts": {
+ "test": "cake build test"
+ },
+ "keywords": [
+ "ip",
+ "ipv4",
+ "ipv6"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/whitequark/ipaddr.js"
+ },
+ "main": "./lib/ipaddr",
+ "engines": {
+ "node": ">= 0.10"
+ },
+ "license": "MIT",
+ "gitHead": "dbc7d98bc0d8fff68a894be0c60721566807e2fc",
+ "bugs": {
+ "url": "https://github.com/whitequark/ipaddr.js/issues"
+ },
+ "_id": "ipaddr.js@1.1.1",
+ "_shasum": "c791d95f52b29c1247d5df80ada39b8a73647230",
+ "_from": "ipaddr.js@1.1.1",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "whitequark",
+ "email": "whitequark@whitequark.org"
+ },
+ "maintainers": [
+ {
+ "name": "whitequark",
+ "email": "whitequark@whitequark.org"
+ }
+ ],
+ "dist": {
+ "shasum": "c791d95f52b29c1247d5df80ada39b8a73647230",
+ "tarball": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.1.1.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/ipaddr.js-1.1.1.tgz_1464074293475_0.6683731523808092"
+ },
+ "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.1.1.tgz"
+}
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
new file mode 100755
index 0000000..d2abf91
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
@@ -0,0 +1,450 @@
+# Define the main object
+ipaddr = {}
+
+root = this
+
+# Export for both the CommonJS and browser-like environment
+if module? && module.exports
+ module.exports = ipaddr
+else
+ root['ipaddr'] = ipaddr
+
+# A generic CIDR (Classless Inter-Domain Routing) RFC1518 range matcher.
+matchCIDR = (first, second, partSize, cidrBits) ->
+ if first.length != second.length
+ throw new Error "ipaddr: cannot match CIDR for objects with different lengths"
+
+ part = 0
+ while cidrBits > 0
+ shift = partSize - cidrBits
+ shift = 0 if shift < 0
+
+ if first[part] >> shift != second[part] >> shift
+ return false
+
+ cidrBits -= partSize
+ part += 1
+
+ return true
+
+# An utility function to ease named range matching. See examples below.
+ipaddr.subnetMatch = (address, rangeList, defaultName='unicast') ->
+ for rangeName, rangeSubnets of rangeList
+ # ECMA5 Array.isArray isn't available everywhere
+ if rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)
+ rangeSubnets = [ rangeSubnets ]
+
+ for subnet in rangeSubnets
+ return rangeName if address.match.apply(address, subnet)
+
+ return defaultName
+
+# An IPv4 address (RFC791).
+class ipaddr.IPv4
+ # Constructs a new IPv4 address from an array of four octets
+ # in network order (MSB first)
+ # Verifies the input.
+ constructor: (octets) ->
+ if octets.length != 4
+ throw new Error "ipaddr: ipv4 octet count should be 4"
+
+ for octet in octets
+ if !(0 <= octet <= 255)
+ throw new Error "ipaddr: ipv4 octet should fit in 8 bits"
+
+ @octets = octets
+
+ # The 'kind' method exists on both IPv4 and IPv6 classes.
+ kind: ->
+ return 'ipv4'
+
+ # Returns the address in convenient, decimal-dotted format.
+ toString: ->
+ return @octets.join "."
+
+ # Returns an array of byte-sized values in network order (MSB first)
+ toByteArray: ->
+ return @octets.slice(0) # octets.clone
+
+ # Checks if this address matches other one within given CIDR range.
+ match: (other, cidrRange) ->
+ if cidrRange == undefined
+ [other, cidrRange] = other
+
+ if other.kind() != 'ipv4'
+ throw new Error "ipaddr: cannot match ipv4 address with non-ipv4 one"
+
+ return matchCIDR(this.octets, other.octets, 8, cidrRange)
+
+ # Special IPv4 address ranges.
+ SpecialRanges:
+ unspecified: [
+ [ new IPv4([0, 0, 0, 0]), 8 ]
+ ]
+ broadcast: [
+ [ new IPv4([255, 255, 255, 255]), 32 ]
+ ]
+ multicast: [ # RFC3171
+ [ new IPv4([224, 0, 0, 0]), 4 ]
+ ]
+ linkLocal: [ # RFC3927
+ [ new IPv4([169, 254, 0, 0]), 16 ]
+ ]
+ loopback: [ # RFC5735
+ [ new IPv4([127, 0, 0, 0]), 8 ]
+ ]
+ private: [ # RFC1918
+ [ new IPv4([10, 0, 0, 0]), 8 ]
+ [ new IPv4([172, 16, 0, 0]), 12 ]
+ [ new IPv4([192, 168, 0, 0]), 16 ]
+ ]
+ reserved: [ # Reserved and testing-only ranges; RFCs 5735, 5737, 2544, 1700
+ [ new IPv4([192, 0, 0, 0]), 24 ]
+ [ new IPv4([192, 0, 2, 0]), 24 ]
+ [ new IPv4([192, 88, 99, 0]), 24 ]
+ [ new IPv4([198, 51, 100, 0]), 24 ]
+ [ new IPv4([203, 0, 113, 0]), 24 ]
+ [ new IPv4([240, 0, 0, 0]), 4 ]
+ ]
+
+ # Checks if the address corresponds to one of the special ranges.
+ range: ->
+ return ipaddr.subnetMatch(this, @SpecialRanges)
+
+ # Convrets this IPv4 address to an IPv4-mapped IPv6 address.
+ toIPv4MappedAddress: ->
+ return ipaddr.IPv6.parse "::ffff:#{@toString()}"
+
+ # returns a number of leading ones in IPv4 address, making sure that
+ # the rest is a solid sequence of 0's (valid netmask)
+ # returns either the CIDR length or null if mask is not valid
+ prefixLengthFromSubnetMask: ->
+ # number of zeroes in octet
+ zerotable =
+ 0: 8
+ 128: 7
+ 192: 6
+ 224: 5
+ 240: 4
+ 248: 3
+ 252: 2
+ 254: 1
+ 255: 0
+
+ cidr = 0
+ # non-zero encountered stop scanning for zeroes
+ stop = false
+ for i in [3..0] by -1
+ octet = @octets[i]
+ if octet of zerotable
+ zeros = zerotable[octet]
+ if stop and zeros != 0
+ return null
+ unless zeros == 8
+ stop = true
+ cidr += zeros
+ else
+ return null
+ return 32 - cidr
+
+# A list of regular expressions that match arbitrary IPv4 addresses,
+# for which a number of weird notations exist.
+# Note that an address like 0010.0xa5.1.1 is considered legal.
+ipv4Part = "(0?\\d+|0x[a-f0-9]+)"
+ipv4Regexes =
+ fourOctet: new RegExp "^#{ipv4Part}\\.#{ipv4Part}\\.#{ipv4Part}\\.#{ipv4Part}$", 'i'
+ longValue: new RegExp "^#{ipv4Part}$", 'i'
+
+# Classful variants (like a.b, where a is an octet, and b is a 24-bit
+# value representing last three octets; this corresponds to a class C
+# address) are omitted due to classless nature of modern Internet.
+ipaddr.IPv4.parser = (string) ->
+ parseIntAuto = (string) ->
+ if string[0] == "0" && string[1] != "x"
+ parseInt(string, 8)
+ else
+ parseInt(string)
+
+ # parseInt recognizes all that octal & hexadecimal weirdness for us
+ if match = string.match(ipv4Regexes.fourOctet)
+ return (parseIntAuto(part) for part in match[1..5])
+ else if match = string.match(ipv4Regexes.longValue)
+ value = parseIntAuto(match[1])
+ if value > 0xffffffff || value < 0
+ throw new Error "ipaddr: address outside defined range"
+ return ((value >> shift) & 0xff for shift in [0..24] by 8).reverse()
+ else
+ return null
+
+# An IPv6 address (RFC2460)
+class ipaddr.IPv6
+ # Constructs an IPv6 address from an array of eight 16-bit parts
+ # or sixteen 8-bit parts in network order (MSB first).
+ # Throws an error if the input is invalid.
+ constructor: (parts) ->
+ if parts.length == 16
+ @parts = []
+ for i in [0..14] by 2
+ @parts.push((parts[i] << 8) | parts[i + 1])
+ else if parts.length == 8
+ @parts = parts
+ else
+ throw new Error "ipaddr: ipv6 part count should be 8 or 16"
+
+ for part in @parts
+ if !(0 <= part <= 0xffff)
+ throw new Error "ipaddr: ipv6 part should fit in 16 bits"
+
+ # The 'kind' method exists on both IPv4 and IPv6 classes.
+ kind: ->
+ return 'ipv6'
+
+ # Returns the address in compact, human-readable format like
+ # 2001:db8:8:66::1
+ toString: ->
+ stringParts = (part.toString(16) for part in @parts)
+
+ compactStringParts = []
+ pushPart = (part) -> compactStringParts.push part
+
+ state = 0
+ for part in stringParts
+ switch state
+ when 0
+ if part == '0'
+ pushPart('')
+ else
+ pushPart(part)
+
+ state = 1
+ when 1
+ if part == '0'
+ state = 2
+ else
+ pushPart(part)
+ when 2
+ unless part == '0'
+ pushPart('')
+ pushPart(part)
+ state = 3
+ when 3
+ pushPart(part)
+
+ if state == 2
+ pushPart('')
+ pushPart('')
+
+ return compactStringParts.join ":"
+
+ # Returns an array of byte-sized values in network order (MSB first)
+ toByteArray: ->
+ bytes = []
+ for part in @parts
+ bytes.push(part >> 8)
+ bytes.push(part & 0xff)
+
+ return bytes
+
+ # Returns the address in expanded format with all zeroes included, like
+ # 2001:db8:8:66:0:0:0:1
+ toNormalizedString: ->
+ return (part.toString(16) for part in @parts).join ":"
+
+ # Checks if this address matches other one within given CIDR range.
+ match: (other, cidrRange) ->
+ if cidrRange == undefined
+ [other, cidrRange] = other
+
+ if other.kind() != 'ipv6'
+ throw new Error "ipaddr: cannot match ipv6 address with non-ipv6 one"
+
+ return matchCIDR(this.parts, other.parts, 16, cidrRange)
+
+ # Special IPv6 ranges
+ SpecialRanges:
+ unspecified: [ new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128 ] # RFC4291, here and after
+ linkLocal: [ new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10 ]
+ multicast: [ new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8 ]
+ loopback: [ new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128 ]
+ uniqueLocal: [ new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7 ]
+ ipv4Mapped: [ new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96 ]
+ rfc6145: [ new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96 ] # RFC6145
+ rfc6052: [ new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96 ] # RFC6052
+ '6to4': [ new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16 ] # RFC3056
+ teredo: [ new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32 ] # RFC6052, RFC6146
+ reserved: [
+ [ new IPv6([ 0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32 ] # RFC4291
+ ]
+
+ # Checks if the address corresponds to one of the special ranges.
+ range: ->
+ return ipaddr.subnetMatch(this, @SpecialRanges)
+
+ # Checks if this address is an IPv4-mapped IPv6 address.
+ isIPv4MappedAddress: ->
+ return @range() == 'ipv4Mapped'
+
+ # Converts this address to IPv4 address if it is an IPv4-mapped IPv6 address.
+ # Throws an error otherwise.
+ toIPv4Address: ->
+ unless @isIPv4MappedAddress()
+ throw new Error "ipaddr: trying to convert a generic ipv6 address to ipv4"
+
+ [high, low] = @parts[-2..-1]
+
+ return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff])
+
+# IPv6-matching regular expressions.
+# For IPv6, the task is simpler: it is enough to match the colon-delimited
+# hexadecimal IPv6 and a transitional variant with dotted-decimal IPv4 at
+# the end.
+ipv6Part = "(?:[0-9a-f]+::?)+"
+ipv6Regexes =
+ native: new RegExp "^(::)?(#{ipv6Part})?([0-9a-f]+)?(::)?$", 'i'
+ transitional: new RegExp "^((?:#{ipv6Part})|(?:::)(?:#{ipv6Part})?)" +
+ "#{ipv4Part}\\.#{ipv4Part}\\.#{ipv4Part}\\.#{ipv4Part}$", 'i'
+
+# Expand :: in an IPv6 address or address part consisting of `parts` groups.
+expandIPv6 = (string, parts) ->
+ # More than one '::' means invalid adddress
+ if string.indexOf('::') != string.lastIndexOf('::')
+ return null
+
+ # How many parts do we already have?
+ colonCount = 0
+ lastColon = -1
+ while (lastColon = string.indexOf(':', lastColon + 1)) >= 0
+ colonCount++
+
+ # 0::0 is two parts more than ::
+ colonCount-- if string.substr(0, 2) == '::'
+ colonCount-- if string.substr(-2, 2) == '::'
+
+ # The following loop would hang if colonCount > parts
+ if colonCount > parts
+ return null
+
+ # replacement = ':' + '0:' * (parts - colonCount)
+ replacementCount = parts - colonCount
+ replacement = ':'
+ while replacementCount--
+ replacement += '0:'
+
+ # Insert the missing zeroes
+ string = string.replace('::', replacement)
+
+ # Trim any garbage which may be hanging around if :: was at the edge in
+ # the source string
+ string = string[1..-1] if string[0] == ':'
+ string = string[0..-2] if string[string.length-1] == ':'
+
+ return (parseInt(part, 16) for part in string.split(":"))
+
+# Parse an IPv6 address.
+ipaddr.IPv6.parser = (string) ->
+ if string.match(ipv6Regexes['native'])
+ return expandIPv6(string, 8)
+
+ else if match = string.match(ipv6Regexes['transitional'])
+ parts = expandIPv6(match[1][0..-2], 6)
+ if parts
+ octets = [parseInt(match[2]), parseInt(match[3]),
+ parseInt(match[4]), parseInt(match[5])]
+ for octet in octets
+ if !(0 <= octet <= 255)
+ return null
+
+ parts.push(octets[0] << 8 | octets[1])
+ parts.push(octets[2] << 8 | octets[3])
+ return parts
+
+ return null
+
+# Checks if a given string is formatted like IPv4/IPv6 address.
+ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = (string) ->
+ return @parser(string) != null
+
+# Checks if a given string is a valid IPv4/IPv6 address.
+ipaddr.IPv4.isValid = (string) ->
+ try
+ new this(@parser(string))
+ return true
+ catch e
+ return false
+
+ipaddr.IPv6.isValid = (string) ->
+ # Since IPv6.isValid is always called first, this shortcut
+ # provides a substantial performance gain.
+ if typeof string == "string" and string.indexOf(":") == -1
+ return false
+
+ try
+ new this(@parser(string))
+ return true
+ catch e
+ return false
+
+# Tries to parse and validate a string with IPv4/IPv6 address.
+# Throws an error if it fails.
+ipaddr.IPv4.parse = ipaddr.IPv6.parse = (string) ->
+ parts = @parser(string)
+ if parts == null
+ throw new Error "ipaddr: string is not formatted like ip address"
+
+ return new this(parts)
+
+ipaddr.IPv4.parseCIDR = (string) ->
+ if match = string.match(/^(.+)\/(\d+)$/)
+ maskLength = parseInt(match[2])
+ if maskLength >= 0 and maskLength <= 32
+ return [@parse(match[1]), maskLength]
+
+ throw new Error "ipaddr: string is not formatted like an IPv4 CIDR range"
+
+ipaddr.IPv6.parseCIDR = (string) ->
+ if match = string.match(/^(.+)\/(\d+)$/)
+ maskLength = parseInt(match[2])
+ if maskLength >= 0 and maskLength <= 128
+ return [@parse(match[1]), maskLength]
+
+ throw new Error "ipaddr: string is not formatted like an IPv6 CIDR range"
+
+# Checks if the address is valid IP address
+ipaddr.isValid = (string) ->
+ return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string)
+
+# Try to parse an address and throw an error if it is impossible
+ipaddr.parse = (string) ->
+ if ipaddr.IPv6.isValid(string)
+ return ipaddr.IPv6.parse(string)
+ else if ipaddr.IPv4.isValid(string)
+ return ipaddr.IPv4.parse(string)
+ else
+ throw new Error "ipaddr: the address has neither IPv6 nor IPv4 format"
+
+ipaddr.parseCIDR = (string) ->
+ try
+ return ipaddr.IPv6.parseCIDR(string)
+ catch e
+ try
+ return ipaddr.IPv4.parseCIDR(string)
+ catch e
+ throw new Error "ipaddr: the address has neither IPv6 nor IPv4 CIDR format"
+
+# Try to parse an array in network order (MSB first) for IPv4 and IPv6
+ipaddr.fromByteArray = (bytes) ->
+ length = bytes.length
+ if length == 4
+ return new ipaddr.IPv4(bytes)
+ else if length == 16
+ return new ipaddr.IPv6(bytes)
+ else
+ throw new Error "ipaddr: the binary input is neither an IPv6 nor IPv4 address"
+
+# Parse an address and return plain IPv4 address if it is an IPv4-mapped address
+ipaddr.process = (string) ->
+ addr = @parse(string)
+ if addr.kind() == 'ipv6' && addr.isIPv4MappedAddress()
+ return addr.toIPv4Address()
+ else
+ return addr
diff --git a/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
new file mode 100755
index 0000000..5f07526
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
@@ -0,0 +1,339 @@
+ipaddr = require '../lib/ipaddr'
+
+module.exports =
+ 'should define main classes': (test) ->
+ test.ok(ipaddr.IPv4?, 'defines IPv4 class')
+ test.ok(ipaddr.IPv6?, 'defines IPv6 class')
+ test.done()
+
+ 'can construct IPv4 from octets': (test) ->
+ test.doesNotThrow ->
+ new ipaddr.IPv4([192, 168, 1, 2])
+ test.done()
+
+ 'refuses to construct invalid IPv4': (test) ->
+ test.throws ->
+ new ipaddr.IPv4([300, 1, 2, 3])
+ test.throws ->
+ new ipaddr.IPv4([8, 8, 8])
+ test.done()
+
+ 'converts IPv4 to string correctly': (test) ->
+ addr = new ipaddr.IPv4([192, 168, 1, 1])
+ test.equal(addr.toString(), '192.168.1.1')
+ test.done()
+
+ 'returns correct kind for IPv4': (test) ->
+ addr = new ipaddr.IPv4([1, 2, 3, 4])
+ test.equal(addr.kind(), 'ipv4')
+ test.done()
+
+ 'allows to access IPv4 octets': (test) ->
+ addr = new ipaddr.IPv4([42, 0, 0, 0])
+ test.equal(addr.octets[0], 42)
+ test.done()
+
+ 'checks IPv4 address format': (test) ->
+ test.equal(ipaddr.IPv4.isIPv4('192.168.007.0xa'), true)
+ test.equal(ipaddr.IPv4.isIPv4('1024.0.0.1'), true)
+ test.equal(ipaddr.IPv4.isIPv4('8.0xa.wtf.6'), false)
+ test.done()
+
+ 'validates IPv4 addresses': (test) ->
+ test.equal(ipaddr.IPv4.isValid('192.168.007.0xa'), true)
+ test.equal(ipaddr.IPv4.isValid('1024.0.0.1'), false)
+ test.equal(ipaddr.IPv4.isValid('8.0xa.wtf.6'), false)
+ test.done()
+
+ 'parses IPv4 in several weird formats': (test) ->
+ test.deepEqual(ipaddr.IPv4.parse('192.168.1.1').octets, [192, 168, 1, 1])
+ test.deepEqual(ipaddr.IPv4.parse('0xc0.168.1.1').octets, [192, 168, 1, 1])
+ test.deepEqual(ipaddr.IPv4.parse('192.0250.1.1').octets, [192, 168, 1, 1])
+ test.deepEqual(ipaddr.IPv4.parse('0xc0a80101').octets, [192, 168, 1, 1])
+ test.deepEqual(ipaddr.IPv4.parse('030052000401').octets, [192, 168, 1, 1])
+ test.deepEqual(ipaddr.IPv4.parse('3232235777').octets, [192, 168, 1, 1])
+ test.done()
+
+ 'barfs at invalid IPv4': (test) ->
+ test.throws ->
+ ipaddr.IPv4.parse('10.0.0.wtf')
+ test.done()
+
+ 'matches IPv4 CIDR correctly': (test) ->
+ addr = new ipaddr.IPv4([10, 5, 0, 1])
+ test.equal(addr.match(ipaddr.IPv4.parse('0.0.0.0'), 0), true)
+ test.equal(addr.match(ipaddr.IPv4.parse('11.0.0.0'), 8), false)
+ test.equal(addr.match(ipaddr.IPv4.parse('10.0.0.0'), 8), true)
+ test.equal(addr.match(ipaddr.IPv4.parse('10.0.0.1'), 8), true)
+ test.equal(addr.match(ipaddr.IPv4.parse('10.0.0.10'), 8), true)
+ test.equal(addr.match(ipaddr.IPv4.parse('10.5.5.0'), 16), true)
+ test.equal(addr.match(ipaddr.IPv4.parse('10.4.5.0'), 16), false)
+ test.equal(addr.match(ipaddr.IPv4.parse('10.4.5.0'), 15), true)
+ test.equal(addr.match(ipaddr.IPv4.parse('10.5.0.2'), 32), false)
+ test.equal(addr.match(addr, 32), true)
+ test.done()
+
+ 'parses IPv4 CIDR correctly': (test) ->
+ addr = new ipaddr.IPv4([10, 5, 0, 1])
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('0.0.0.0/0')), true)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('11.0.0.0/8')), false)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.0.0.0/8')), true)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.0.0.1/8')), true)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.0.0.10/8')), true)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.5.5.0/16')), true)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.4.5.0/16')), false)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.4.5.0/15')), true)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.5.0.2/32')), false)
+ test.equal(addr.match(ipaddr.IPv4.parseCIDR('10.5.0.1/32')), true)
+ test.throws ->
+ ipaddr.IPv4.parseCIDR('10.5.0.1')
+ test.throws ->
+ ipaddr.IPv4.parseCIDR('0.0.0.0/-1')
+ test.throws ->
+ ipaddr.IPv4.parseCIDR('0.0.0.0/33')
+ test.done()
+
+ 'detects reserved IPv4 networks': (test) ->
+ test.equal(ipaddr.IPv4.parse('0.0.0.0').range(), 'unspecified')
+ test.equal(ipaddr.IPv4.parse('0.1.0.0').range(), 'unspecified')
+ test.equal(ipaddr.IPv4.parse('10.1.0.1').range(), 'private')
+ test.equal(ipaddr.IPv4.parse('192.168.2.1').range(), 'private')
+ test.equal(ipaddr.IPv4.parse('224.100.0.1').range(), 'multicast')
+ test.equal(ipaddr.IPv4.parse('169.254.15.0').range(), 'linkLocal')
+ test.equal(ipaddr.IPv4.parse('127.1.1.1').range(), 'loopback')
+ test.equal(ipaddr.IPv4.parse('255.255.255.255').range(), 'broadcast')
+ test.equal(ipaddr.IPv4.parse('240.1.2.3').range(), 'reserved')
+ test.equal(ipaddr.IPv4.parse('8.8.8.8').range(), 'unicast')
+ test.done()
+
+ 'can construct IPv6 from 16bit parts': (test) ->
+ test.doesNotThrow ->
+ new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1])
+ test.done()
+
+ 'can construct IPv6 from 8bit parts': (test) ->
+ test.doesNotThrow ->
+ new ipaddr.IPv6([0x20, 0x01, 0xd, 0xb8, 0xf5, 0x3a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
+ test.deepEqual(new ipaddr.IPv6([0x20, 0x01, 0xd, 0xb8, 0xf5, 0x3a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]),
+ new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1]))
+ test.done()
+
+ 'refuses to construct invalid IPv6': (test) ->
+ test.throws ->
+ new ipaddr.IPv6([0xfffff, 0, 0, 0, 0, 0, 0, 1])
+ test.throws ->
+ new ipaddr.IPv6([0xfffff, 0, 0, 0, 0, 0, 1])
+ test.throws ->
+ new ipaddr.IPv6([0xffff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
+ test.done()
+
+ 'converts IPv6 to string correctly': (test) ->
+ addr = new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1])
+ test.equal(addr.toNormalizedString(), '2001:db8:f53a:0:0:0:0:1')
+ test.equal(addr.toString(), '2001:db8:f53a::1')
+ test.equal(new ipaddr.IPv6([0, 0, 0, 0, 0, 0, 0, 1]).toString(), '::1')
+ test.equal(new ipaddr.IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]).toString(), '2001:db8::')
+ test.done()
+
+ 'returns correct kind for IPv6': (test) ->
+ addr = new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1])
+ test.equal(addr.kind(), 'ipv6')
+ test.done()
+
+ 'allows to access IPv6 address parts': (test) ->
+ addr = new ipaddr.IPv6([0x2001, 0xdb8, 0xf53a, 0, 0, 42, 0, 1])
+ test.equal(addr.parts[5], 42)
+ test.done()
+
+ 'checks IPv6 address format': (test) ->
+ test.equal(ipaddr.IPv6.isIPv6('2001:db8:F53A::1'), true)
+ test.equal(ipaddr.IPv6.isIPv6('200001::1'), true)
+ test.equal(ipaddr.IPv6.isIPv6('::ffff:192.168.1.1'), true)
+ test.equal(ipaddr.IPv6.isIPv6('::ffff:300.168.1.1'), false)
+ test.equal(ipaddr.IPv6.isIPv6('::ffff:300.168.1.1:0'), false)
+ test.equal(ipaddr.IPv6.isIPv6('fe80::wtf'), false)
+ test.done()
+
+ 'validates IPv6 addresses': (test) ->
+ test.equal(ipaddr.IPv6.isValid('2001:db8:F53A::1'), true)
+ test.equal(ipaddr.IPv6.isValid('200001::1'), false)
+ test.equal(ipaddr.IPv6.isValid('::ffff:192.168.1.1'), true)
+ test.equal(ipaddr.IPv6.isValid('::ffff:300.168.1.1'), false)
+ test.equal(ipaddr.IPv6.isValid('::ffff:300.168.1.1:0'), false)
+ test.equal(ipaddr.IPv6.isValid('::ffff:222.1.41.9000'), false)
+ test.equal(ipaddr.IPv6.isValid('2001:db8::F53A::1'), false)
+ test.equal(ipaddr.IPv6.isValid('fe80::wtf'), false)
+ test.equal(ipaddr.IPv6.isValid('2002::2:'), false)
+ test.equal(ipaddr.IPv6.isValid(undefined), false)
+ test.done()
+
+ 'parses IPv6 in different formats': (test) ->
+ test.deepEqual(ipaddr.IPv6.parse('2001:db8:F53A:0:0:0:0:1').parts, [0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 1])
+ test.deepEqual(ipaddr.IPv6.parse('fe80::10').parts, [0xfe80, 0, 0, 0, 0, 0, 0, 0x10])
+ test.deepEqual(ipaddr.IPv6.parse('2001:db8:F53A::').parts, [0x2001, 0xdb8, 0xf53a, 0, 0, 0, 0, 0])
+ test.deepEqual(ipaddr.IPv6.parse('::1').parts, [0, 0, 0, 0, 0, 0, 0, 1])
+ test.deepEqual(ipaddr.IPv6.parse('::').parts, [0, 0, 0, 0, 0, 0, 0, 0])
+ test.done()
+
+ 'barfs at invalid IPv6': (test) ->
+ test.throws ->
+ ipaddr.IPv6.parse('fe80::0::1')
+ test.done()
+
+ 'matches IPv6 CIDR correctly': (test) ->
+ addr = ipaddr.IPv6.parse('2001:db8:f53a::1')
+ test.equal(addr.match(ipaddr.IPv6.parse('::'), 0), true)
+ test.equal(addr.match(ipaddr.IPv6.parse('2001:db8:f53a::1:1'), 64), true)
+ test.equal(addr.match(ipaddr.IPv6.parse('2001:db8:f53b::1:1'), 48), false)
+ test.equal(addr.match(ipaddr.IPv6.parse('2001:db8:f531::1:1'), 44), true)
+ test.equal(addr.match(ipaddr.IPv6.parse('2001:db8:f500::1'), 40), true)
+ test.equal(addr.match(ipaddr.IPv6.parse('2001:db9:f500::1'), 40), false)
+ test.equal(addr.match(addr, 128), true)
+ test.done()
+
+ 'parses IPv6 CIDR correctly': (test) ->
+ addr = ipaddr.IPv6.parse('2001:db8:f53a::1')
+ test.equal(addr.match(ipaddr.IPv6.parseCIDR('::/0')), true)
+ test.equal(addr.match(ipaddr.IPv6.parseCIDR('2001:db8:f53a::1:1/64')), true)
+ test.equal(addr.match(ipaddr.IPv6.parseCIDR('2001:db8:f53b::1:1/48')), false)
+ test.equal(addr.match(ipaddr.IPv6.parseCIDR('2001:db8:f531::1:1/44')), true)
+ test.equal(addr.match(ipaddr.IPv6.parseCIDR('2001:db8:f500::1/40')), true)
+ test.equal(addr.match(ipaddr.IPv6.parseCIDR('2001:db9:f500::1/40')), false)
+ test.equal(addr.match(ipaddr.IPv6.parseCIDR('2001:db8:f53a::1/128')), true)
+ test.throws ->
+ ipaddr.IPv6.parseCIDR('2001:db8:f53a::1')
+ test.throws ->
+ ipaddr.IPv6.parseCIDR('2001:db8:f53a::1/-1')
+ test.throws ->
+ ipaddr.IPv6.parseCIDR('2001:db8:f53a::1/129')
+ test.done()
+
+ 'converts between IPv4-mapped IPv6 addresses and IPv4 addresses': (test) ->
+ addr = ipaddr.IPv4.parse('77.88.21.11')
+ mapped = addr.toIPv4MappedAddress()
+ test.deepEqual(mapped.parts, [0, 0, 0, 0, 0, 0xffff, 0x4d58, 0x150b])
+ test.deepEqual(mapped.toIPv4Address().octets, addr.octets)
+ test.done()
+
+ 'refuses to convert non-IPv4-mapped IPv6 address to IPv4 address': (test) ->
+ test.throws ->
+ ipaddr.IPv6.parse('2001:db8::1').toIPv4Address()
+ test.done()
+
+ 'detects reserved IPv6 networks': (test) ->
+ test.equal(ipaddr.IPv6.parse('::').range(), 'unspecified')
+ test.equal(ipaddr.IPv6.parse('fe80::1234:5678:abcd:0123').range(), 'linkLocal')
+ test.equal(ipaddr.IPv6.parse('ff00::1234').range(), 'multicast')
+ test.equal(ipaddr.IPv6.parse('::1').range(), 'loopback')
+ test.equal(ipaddr.IPv6.parse('fc00::').range(), 'uniqueLocal')
+ test.equal(ipaddr.IPv6.parse('::ffff:192.168.1.10').range(), 'ipv4Mapped')
+ test.equal(ipaddr.IPv6.parse('::ffff:0:192.168.1.10').range(), 'rfc6145')
+ test.equal(ipaddr.IPv6.parse('64:ff9b::1234').range(), 'rfc6052')
+ test.equal(ipaddr.IPv6.parse('2002:1f63:45e8::1').range(), '6to4')
+ test.equal(ipaddr.IPv6.parse('2001::4242').range(), 'teredo')
+ test.equal(ipaddr.IPv6.parse('2001:db8::3210').range(), 'reserved')
+ test.equal(ipaddr.IPv6.parse('2001:470:8:66::1').range(), 'unicast')
+ test.done()
+
+ 'is able to determine IP address type': (test) ->
+ test.equal(ipaddr.parse('8.8.8.8').kind(), 'ipv4')
+ test.equal(ipaddr.parse('2001:db8:3312::1').kind(), 'ipv6')
+ test.done()
+
+ 'throws an error if tried to parse an invalid address': (test) ->
+ test.throws ->
+ ipaddr.parse('::some.nonsense')
+ test.done()
+
+ 'correctly processes IPv4-mapped addresses': (test) ->
+ test.equal(ipaddr.process('8.8.8.8').kind(), 'ipv4')
+ test.equal(ipaddr.process('2001:db8:3312::1').kind(), 'ipv6')
+ test.equal(ipaddr.process('::ffff:192.168.1.1').kind(), 'ipv4')
+ test.done()
+
+ 'correctly converts IPv6 and IPv4 addresses to byte arrays': (test) ->
+ test.deepEqual(ipaddr.parse('1.2.3.4').toByteArray(),
+ [0x1, 0x2, 0x3, 0x4]);
+ # Fuck yeah. The first byte of Google's IPv6 address is 42. 42!
+ test.deepEqual(ipaddr.parse('2a00:1450:8007::68').toByteArray(),
+ [42, 0x00, 0x14, 0x50, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68 ])
+ test.done()
+
+ 'correctly parses 1 as an IPv4 address': (test) ->
+ test.equal(ipaddr.IPv6.isValid('1'), false)
+ test.equal(ipaddr.IPv4.isValid('1'), true)
+ test.deepEqual(new ipaddr.IPv4([0, 0, 0, 1]), ipaddr.parse('1'))
+ test.done()
+
+ 'correctly detects IPv4 and IPv6 CIDR addresses': (test) ->
+ test.deepEqual([ipaddr.IPv6.parse('fc00::'), 64],
+ ipaddr.parseCIDR('fc00::/64'))
+ test.deepEqual([ipaddr.IPv4.parse('1.2.3.4'), 5],
+ ipaddr.parseCIDR('1.2.3.4/5'))
+ test.done()
+
+ 'does not consider a very large or very small number a valid IP address': (test) ->
+ test.equal(ipaddr.isValid('4999999999'), false)
+ test.equal(ipaddr.isValid('-1'), false)
+ test.done()
+
+ 'does not hang on ::8:8:8:8:8:8:8:8:8': (test) ->
+ test.equal(ipaddr.IPv6.isValid('::8:8:8:8:8:8:8:8:8'), false)
+ test.done()
+
+ 'subnetMatch does not fail on empty range': (test) ->
+ ipaddr.subnetMatch(new ipaddr.IPv4([1,2,3,4]), {}, false)
+ ipaddr.subnetMatch(new ipaddr.IPv4([1,2,3,4]), {subnet: []}, false)
+ test.done()
+
+ 'subnetMatch returns default subnet on empty range': (test) ->
+ test.equal(ipaddr.subnetMatch(new ipaddr.IPv4([1,2,3,4]), {}, false), false)
+ test.equal(ipaddr.subnetMatch(new ipaddr.IPv4([1,2,3,4]), {subnet: []}, false), false)
+ test.done()
+
+ 'is able to determine IP address type from byte array input': (test) ->
+ test.equal(ipaddr.fromByteArray([0x7f, 0, 0, 1]).kind(), 'ipv4')
+ test.equal(ipaddr.fromByteArray([0x20, 0x01, 0xd, 0xb8, 0xf5, 0x3a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]).kind(), 'ipv6')
+ test.throws ->
+ ipaddr.fromByteArray([1])
+ test.done()
+
+ 'prefixLengthFromSubnetMask returns proper CIDR notation for standard IPv4 masks': (test) ->
+ test.equal(ipaddr.IPv4.parse('255.255.255.255').prefixLengthFromSubnetMask(), 32)
+ test.equal(ipaddr.IPv4.parse('255.255.255.254').prefixLengthFromSubnetMask(), 31)
+ test.equal(ipaddr.IPv4.parse('255.255.255.252').prefixLengthFromSubnetMask(), 30)
+ test.equal(ipaddr.IPv4.parse('255.255.255.248').prefixLengthFromSubnetMask(), 29)
+ test.equal(ipaddr.IPv4.parse('255.255.255.240').prefixLengthFromSubnetMask(), 28)
+ test.equal(ipaddr.IPv4.parse('255.255.255.224').prefixLengthFromSubnetMask(), 27)
+ test.equal(ipaddr.IPv4.parse('255.255.255.192').prefixLengthFromSubnetMask(), 26)
+ test.equal(ipaddr.IPv4.parse('255.255.255.128').prefixLengthFromSubnetMask(), 25)
+ test.equal(ipaddr.IPv4.parse('255.255.255.0').prefixLengthFromSubnetMask(), 24)
+ test.equal(ipaddr.IPv4.parse('255.255.254.0').prefixLengthFromSubnetMask(), 23)
+ test.equal(ipaddr.IPv4.parse('255.255.252.0').prefixLengthFromSubnetMask(), 22)
+ test.equal(ipaddr.IPv4.parse('255.255.248.0').prefixLengthFromSubnetMask(), 21)
+ test.equal(ipaddr.IPv4.parse('255.255.240.0').prefixLengthFromSubnetMask(), 20)
+ test.equal(ipaddr.IPv4.parse('255.255.224.0').prefixLengthFromSubnetMask(), 19)
+ test.equal(ipaddr.IPv4.parse('255.255.192.0').prefixLengthFromSubnetMask(), 18)
+ test.equal(ipaddr.IPv4.parse('255.255.128.0').prefixLengthFromSubnetMask(), 17)
+ test.equal(ipaddr.IPv4.parse('255.255.0.0').prefixLengthFromSubnetMask(), 16)
+ test.equal(ipaddr.IPv4.parse('255.254.0.0').prefixLengthFromSubnetMask(), 15)
+ test.equal(ipaddr.IPv4.parse('255.252.0.0').prefixLengthFromSubnetMask(), 14)
+ test.equal(ipaddr.IPv4.parse('255.248.0.0').prefixLengthFromSubnetMask(), 13)
+ test.equal(ipaddr.IPv4.parse('255.240.0.0').prefixLengthFromSubnetMask(), 12)
+ test.equal(ipaddr.IPv4.parse('255.224.0.0').prefixLengthFromSubnetMask(), 11)
+ test.equal(ipaddr.IPv4.parse('255.192.0.0').prefixLengthFromSubnetMask(), 10)
+ test.equal(ipaddr.IPv4.parse('255.128.0.0').prefixLengthFromSubnetMask(), 9)
+ test.equal(ipaddr.IPv4.parse('255.0.0.0').prefixLengthFromSubnetMask(), 8)
+ test.equal(ipaddr.IPv4.parse('254.0.0.0').prefixLengthFromSubnetMask(), 7)
+ test.equal(ipaddr.IPv4.parse('252.0.0.0').prefixLengthFromSubnetMask(), 6)
+ test.equal(ipaddr.IPv4.parse('248.0.0.0').prefixLengthFromSubnetMask(), 5)
+ test.equal(ipaddr.IPv4.parse('240.0.0.0').prefixLengthFromSubnetMask(), 4)
+ test.equal(ipaddr.IPv4.parse('224.0.0.0').prefixLengthFromSubnetMask(), 3)
+ test.equal(ipaddr.IPv4.parse('192.0.0.0').prefixLengthFromSubnetMask(), 2)
+ test.equal(ipaddr.IPv4.parse('128.0.0.0').prefixLengthFromSubnetMask(), 1)
+ test.equal(ipaddr.IPv4.parse('0.0.0.0').prefixLengthFromSubnetMask(), 0)
+ # negative cases
+ test.equal(ipaddr.IPv4.parse('192.168.255.0').prefixLengthFromSubnetMask(), null)
+ test.equal(ipaddr.IPv4.parse('255.0.255.0').prefixLengthFromSubnetMask(), null)
+ test.done()
+
diff --git a/server/node_modules/express/node_modules/proxy-addr/package.json b/server/node_modules/express/node_modules/proxy-addr/package.json
new file mode 100755
index 0000000..f7dd90b
--- /dev/null
+++ b/server/node_modules/express/node_modules/proxy-addr/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "proxy-addr",
+ "description": "Determine address of proxied request",
+ "version": "1.1.2",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "keywords": [
+ "ip",
+ "proxy",
+ "x-forwarded-for"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/proxy-addr.git"
+ },
+ "dependencies": {
+ "forwarded": "~0.1.0",
+ "ipaddr.js": "1.1.1"
+ },
+ "devDependencies": {
+ "benchmark": "2.1.0",
+ "beautify-benchmark": "0.2.4",
+ "istanbul": "0.4.3",
+ "mocha": "~1.21.5"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "bench": "node benchmark/index.js",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "28c34525632884a6d5e69a9165d7420b3f972d8b",
+ "bugs": {
+ "url": "https://github.com/jshttp/proxy-addr/issues"
+ },
+ "homepage": "https://github.com/jshttp/proxy-addr#readme",
+ "_id": "proxy-addr@1.1.2",
+ "_shasum": "b4cc5f22610d9535824c123aef9d3cf73c40ba37",
+ "_from": "proxy-addr@>=1.1.2 <1.2.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "b4cc5f22610d9535824c123aef9d3cf73c40ba37",
+ "tarball": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.2.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/proxy-addr-1.1.2.tgz_1464573376704_0.6896329398732632"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.2.tgz"
+}
diff --git a/server/node_modules/express/node_modules/qs/.eslintignore b/server/node_modules/express/node_modules/qs/.eslintignore
new file mode 100755
index 0000000..1521c8b
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/.eslintignore
@@ -0,0 +1 @@
+dist
diff --git a/server/node_modules/express/node_modules/qs/.eslintrc b/server/node_modules/express/node_modules/qs/.eslintrc
new file mode 100755
index 0000000..1faac27
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/.eslintrc
@@ -0,0 +1,19 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "complexity": [2, 22],
+ "consistent-return": [1],
+ "id-length": [2, { "min": 1, "max": 25, "properties": "never" }],
+ "indent": [2, 4],
+ "max-params": [2, 9],
+ "max-statements": [2, 36],
+ "no-extra-parens": [1],
+ "no-continue": [1],
+ "no-magic-numbers": 0,
+ "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"],
+ "operator-linebreak": 1
+ }
+}
diff --git a/server/node_modules/express/node_modules/qs/.jscs.json b/server/node_modules/express/node_modules/qs/.jscs.json
new file mode 100755
index 0000000..3d099c4
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/.jscs.json
@@ -0,0 +1,176 @@
+{
+ "es3": true,
+
+ "additionalRules": [],
+
+ "requireSemicolons": true,
+
+ "disallowMultipleSpaces": true,
+
+ "disallowIdentifierNames": [],
+
+ "requireCurlyBraces": {
+ "allExcept": [],
+ "keywords": ["if", "else", "for", "while", "do", "try", "catch"]
+ },
+
+ "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
+
+ "disallowSpaceAfterKeywords": [],
+
+ "disallowSpaceBeforeComma": true,
+ "disallowSpaceAfterComma": false,
+ "disallowSpaceBeforeSemicolon": true,
+
+ "disallowNodeTypes": [
+ "DebuggerStatement",
+ "ForInStatement",
+ "LabeledStatement",
+ "SwitchCase",
+ "SwitchStatement",
+ "WithStatement"
+ ],
+
+ "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] },
+
+ "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
+ "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
+ "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
+ "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
+ "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
+
+ "requireSpaceBetweenArguments": true,
+
+ "disallowSpacesInsideParentheses": true,
+
+ "disallowSpacesInsideArrayBrackets": true,
+
+ "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] },
+
+ "disallowSpaceAfterObjectKeys": true,
+
+ "requireCommaBeforeLineBreak": true,
+
+ "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
+ "requireSpaceAfterPrefixUnaryOperators": [],
+
+ "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
+ "requireSpaceBeforePostfixUnaryOperators": [],
+
+ "disallowSpaceBeforeBinaryOperators": [],
+ "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
+
+ "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
+ "disallowSpaceAfterBinaryOperators": [],
+
+ "disallowImplicitTypeConversion": ["binary", "string"],
+
+ "disallowKeywords": ["with", "eval"],
+
+ "requireKeywordsOnNewLine": [],
+ "disallowKeywordsOnNewLine": ["else"],
+
+ "requireLineFeedAtFileEnd": true,
+
+ "disallowTrailingWhitespace": true,
+
+ "disallowTrailingComma": true,
+
+ "excludeFiles": ["node_modules/**", "vendor/**"],
+
+ "disallowMultipleLineStrings": true,
+
+ "requireDotNotation": { "allExcept": ["keywords"] },
+
+ "requireParenthesesAroundIIFE": true,
+
+ "validateLineBreaks": "LF",
+
+ "validateQuoteMarks": {
+ "escape": true,
+ "mark": "'"
+ },
+
+ "disallowOperatorBeforeLineBreak": [],
+
+ "requireSpaceBeforeKeywords": [
+ "do",
+ "for",
+ "if",
+ "else",
+ "switch",
+ "case",
+ "try",
+ "catch",
+ "finally",
+ "while",
+ "with",
+ "return"
+ ],
+
+ "validateAlignedFunctionParameters": {
+ "lineBreakAfterOpeningBraces": true,
+ "lineBreakBeforeClosingBraces": true
+ },
+
+ "requirePaddingNewLinesBeforeExport": true,
+
+ "validateNewlineAfterArrayElements": {
+ "maximum": 1
+ },
+
+ "requirePaddingNewLinesAfterUseStrict": true,
+
+ "disallowArrowFunctions": true,
+
+ "disallowMultiLineTernary": true,
+
+ "validateOrderInObjectKeys": "asc-insensitive",
+
+ "disallowIdenticalDestructuringNames": true,
+
+ "disallowNestedTernaries": { "maxLevel": 1 },
+
+ "requireSpaceAfterComma": { "allExcept": ["trailing"] },
+ "requireAlignedMultilineParams": false,
+
+ "requireSpacesInGenerator": {
+ "afterStar": true
+ },
+
+ "disallowSpacesInGenerator": {
+ "beforeStar": true
+ },
+
+ "disallowVar": false,
+
+ "requireArrayDestructuring": false,
+
+ "requireEnhancedObjectLiterals": false,
+
+ "requireObjectDestructuring": false,
+
+ "requireEarlyReturn": false,
+
+ "requireCapitalizedConstructorsNew": {
+ "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"]
+ },
+
+ "requireImportAlphabetized": false,
+
+ "requireSpaceBeforeObjectValues": true,
+ "requireSpaceBeforeDestructuredValues": true,
+
+ "disallowSpacesInsideTemplateStringPlaceholders": true,
+
+ "disallowArrayDestructuringReturn": false,
+
+ "requireNewlineBeforeSingleStatementsInIf": false,
+
+ "disallowUnusedVariables": true,
+
+ "requireSpacesInsideImportedObjectBraces": true,
+
+ "requireUseStrict": true
+}
+
diff --git a/server/node_modules/express/node_modules/qs/CHANGELOG.md b/server/node_modules/express/node_modules/qs/CHANGELOG.md
new file mode 100755
index 0000000..e318a05
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/CHANGELOG.md
@@ -0,0 +1,120 @@
+## [**6.2.0**](https://github.com/ljharb/qs/issues?milestone=36&state=closed)
+- [New] pass Buffers to the encoder/decoder directly (#161)
+- [New] add "encoder" and "decoder" options, for custom param encoding/decoding (#160)
+- [Fix] fix compacting of nested sparse arrays (#150)
+
+## [**6.1.0**](https://github.com/ljharb/qs/issues?milestone=35&state=closed)
+- [New] allowDots option for `stringify` (#151)
+- [Fix] "sort" option should work at a depth of 3 or more (#151)
+- [Fix] Restore `dist` directory; will be removed in v7 (#148)
+
+## [**6.0.2**](https://github.com/ljharb/qs/issues?milestone=33&state=closed)
+- Revert ES6 requirement and restore support for node down to v0.8.
+
+## [**6.0.1**](https://github.com/ljharb/qs/issues?milestone=32&state=closed)
+- [**#127**](https://github.com/ljharb/qs/pull/127) Fix engines definition in package.json
+
+## [**6.0.0**](https://github.com/ljharb/qs/issues?milestone=31&state=closed)
+- [**#124**](https://github.com/ljharb/qs/issues/124) Use ES6 and drop support for node < v4
+
+## [**5.2.0**](https://github.com/ljharb/qs/issues?milestone=30&state=closed)
+- [**#64**](https://github.com/ljharb/qs/issues/64) Add option to sort object keys in the query string
+
+## [**5.1.0**](https://github.com/ljharb/qs/issues?milestone=29&state=closed)
+- [**#117**](https://github.com/ljharb/qs/issues/117) make URI encoding stringified results optional
+- [**#106**](https://github.com/ljharb/qs/issues/106) Add flag `skipNulls` to optionally skip null values in stringify
+
+## [**5.0.0**](https://github.com/ljharb/qs/issues?milestone=28&state=closed)
+- [**#114**](https://github.com/ljharb/qs/issues/114) default allowDots to false
+- [**#100**](https://github.com/ljharb/qs/issues/100) include dist to npm
+
+## [**4.0.0**](https://github.com/ljharb/qs/issues?milestone=26&state=closed)
+- [**#98**](https://github.com/ljharb/qs/issues/98) make returning plain objects and allowing prototype overwriting properties optional
+
+## [**3.1.0**](https://github.com/ljharb/qs/issues?milestone=24&state=closed)
+- [**#89**](https://github.com/ljharb/qs/issues/89) Add option to disable "Transform dot notation to bracket notation"
+
+## [**3.0.0**](https://github.com/ljharb/qs/issues?milestone=23&state=closed)
+- [**#80**](https://github.com/ljharb/qs/issues/80) qs.parse silently drops properties
+- [**#77**](https://github.com/ljharb/qs/issues/77) Perf boost
+- [**#60**](https://github.com/ljharb/qs/issues/60) Add explicit option to disable array parsing
+- [**#74**](https://github.com/ljharb/qs/issues/74) Bad parse when turning array into object
+- [**#81**](https://github.com/ljharb/qs/issues/81) Add a `filter` option
+- [**#68**](https://github.com/ljharb/qs/issues/68) Fixed issue with recursion and passing strings into objects.
+- [**#66**](https://github.com/ljharb/qs/issues/66) Add mixed array and object dot notation support Closes: #47
+- [**#76**](https://github.com/ljharb/qs/issues/76) RFC 3986
+- [**#85**](https://github.com/ljharb/qs/issues/85) No equal sign
+- [**#84**](https://github.com/ljharb/qs/issues/84) update license attribute
+
+## [**2.4.1**](https://github.com/ljharb/qs/issues?milestone=20&state=closed)
+- [**#73**](https://github.com/ljharb/qs/issues/73) Property 'hasOwnProperty' of object # is not a function
+
+## [**2.4.0**](https://github.com/ljharb/qs/issues?milestone=19&state=closed)
+- [**#70**](https://github.com/ljharb/qs/issues/70) Add arrayFormat option
+
+## [**2.3.3**](https://github.com/ljharb/qs/issues?milestone=18&state=closed)
+- [**#59**](https://github.com/ljharb/qs/issues/59) make sure array indexes are >= 0, closes #57
+- [**#58**](https://github.com/ljharb/qs/issues/58) make qs usable for browser loader
+
+## [**2.3.2**](https://github.com/ljharb/qs/issues?milestone=17&state=closed)
+- [**#55**](https://github.com/ljharb/qs/issues/55) allow merging a string into an object
+
+## [**2.3.1**](https://github.com/ljharb/qs/issues?milestone=16&state=closed)
+- [**#52**](https://github.com/ljharb/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError".
+
+## [**2.3.0**](https://github.com/ljharb/qs/issues?milestone=15&state=closed)
+- [**#50**](https://github.com/ljharb/qs/issues/50) add option to omit array indices, closes #46
+
+## [**2.2.5**](https://github.com/ljharb/qs/issues?milestone=14&state=closed)
+- [**#39**](https://github.com/ljharb/qs/issues/39) Is there an alternative to Buffer.isBuffer?
+- [**#49**](https://github.com/ljharb/qs/issues/49) refactor utils.merge, fixes #45
+- [**#41**](https://github.com/ljharb/qs/issues/41) avoid browserifying Buffer, for #39
+
+## [**2.2.4**](https://github.com/ljharb/qs/issues?milestone=13&state=closed)
+- [**#38**](https://github.com/ljharb/qs/issues/38) how to handle object keys beginning with a number
+
+## [**2.2.3**](https://github.com/ljharb/qs/issues?milestone=12&state=closed)
+- [**#37**](https://github.com/ljharb/qs/issues/37) parser discards first empty value in array
+- [**#36**](https://github.com/ljharb/qs/issues/36) Update to lab 4.x
+
+## [**2.2.2**](https://github.com/ljharb/qs/issues?milestone=11&state=closed)
+- [**#33**](https://github.com/ljharb/qs/issues/33) Error when plain object in a value
+- [**#34**](https://github.com/ljharb/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty
+- [**#24**](https://github.com/ljharb/qs/issues/24) Changelog? Semver?
+
+## [**2.2.1**](https://github.com/ljharb/qs/issues?milestone=10&state=closed)
+- [**#32**](https://github.com/ljharb/qs/issues/32) account for circular references properly, closes #31
+- [**#31**](https://github.com/ljharb/qs/issues/31) qs.parse stackoverflow on circular objects
+
+## [**2.2.0**](https://github.com/ljharb/qs/issues?milestone=9&state=closed)
+- [**#26**](https://github.com/ljharb/qs/issues/26) Don't use Buffer global if it's not present
+- [**#30**](https://github.com/ljharb/qs/issues/30) Bug when merging non-object values into arrays
+- [**#29**](https://github.com/ljharb/qs/issues/29) Don't call Utils.clone at the top of Utils.merge
+- [**#23**](https://github.com/ljharb/qs/issues/23) Ability to not limit parameters?
+
+## [**2.1.0**](https://github.com/ljharb/qs/issues?milestone=8&state=closed)
+- [**#22**](https://github.com/ljharb/qs/issues/22) Enable using a RegExp as delimiter
+
+## [**2.0.0**](https://github.com/ljharb/qs/issues?milestone=7&state=closed)
+- [**#18**](https://github.com/ljharb/qs/issues/18) Why is there arrayLimit?
+- [**#20**](https://github.com/ljharb/qs/issues/20) Configurable parametersLimit
+- [**#21**](https://github.com/ljharb/qs/issues/21) make all limits optional, for #18, for #20
+
+## [**1.2.2**](https://github.com/ljharb/qs/issues?milestone=6&state=closed)
+- [**#19**](https://github.com/ljharb/qs/issues/19) Don't overwrite null values
+
+## [**1.2.1**](https://github.com/ljharb/qs/issues?milestone=5&state=closed)
+- [**#16**](https://github.com/ljharb/qs/issues/16) ignore non-string delimiters
+- [**#15**](https://github.com/ljharb/qs/issues/15) Close code block
+
+## [**1.2.0**](https://github.com/ljharb/qs/issues?milestone=4&state=closed)
+- [**#12**](https://github.com/ljharb/qs/issues/12) Add optional delim argument
+- [**#13**](https://github.com/ljharb/qs/issues/13) fix #11: flattened keys in array are now correctly parsed
+
+## [**1.1.0**](https://github.com/ljharb/qs/issues?milestone=3&state=closed)
+- [**#7**](https://github.com/ljharb/qs/issues/7) Empty values of a POST array disappear after being submitted
+- [**#9**](https://github.com/ljharb/qs/issues/9) Should not omit equals signs (=) when value is null
+- [**#6**](https://github.com/ljharb/qs/issues/6) Minor grammar fix in README
+
+## [**1.0.2**](https://github.com/ljharb/qs/issues?milestone=2&state=closed)
+- [**#5**](https://github.com/ljharb/qs/issues/5) array holes incorrectly copied into object on large index
diff --git a/server/node_modules/express/node_modules/qs/CONTRIBUTING.md b/server/node_modules/express/node_modules/qs/CONTRIBUTING.md
new file mode 100755
index 0000000..8928361
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/CONTRIBUTING.md
@@ -0,0 +1 @@
+Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md).
diff --git a/server/node_modules/express/node_modules/qs/LICENSE b/server/node_modules/express/node_modules/qs/LICENSE
new file mode 100755
index 0000000..d456948
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/LICENSE
@@ -0,0 +1,28 @@
+Copyright (c) 2014 Nathan LaFreniere and other contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The names of any contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ * * *
+
+The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors
diff --git a/server/node_modules/express/node_modules/qs/dist/qs.js b/server/node_modules/express/node_modules/qs/dist/qs.js
new file mode 100755
index 0000000..4cc6f30
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/dist/qs.js
@@ -0,0 +1,487 @@
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 0 &&
+ (options.parseArrays && index <= options.arrayLimit)
+ ) {
+ obj = [];
+ obj[index] = parseObject(chain, val, options);
+ } else {
+ obj[cleanRoot] = parseObject(chain, val, options);
+ }
+ }
+
+ return obj;
+};
+
+var parseKeys = function parseKeys(givenKey, val, options) {
+ if (!givenKey) {
+ return;
+ }
+
+ // Transform dot notation to bracket notation
+ var key = options.allowDots ? givenKey.replace(/\.([^\.\[]+)/g, '[$1]') : givenKey;
+
+ // The regex chunks
+
+ var parent = /^([^\[\]]*)/;
+ var child = /(\[[^\[\]]*\])/g;
+
+ // Get the parent
+
+ var segment = parent.exec(key);
+
+ // Stash the parent if it exists
+
+ var keys = [];
+ if (segment[1]) {
+ // If we aren't using plain objects, optionally prefix keys
+ // that would overwrite object prototype properties
+ if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1])) {
+ if (!options.allowPrototypes) {
+ return;
+ }
+ }
+
+ keys.push(segment[1]);
+ }
+
+ // Loop through children appending to the array until we hit depth
+
+ var i = 0;
+ while ((segment = child.exec(key)) !== null && i < options.depth) {
+ i += 1;
+ if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) {
+ if (!options.allowPrototypes) {
+ continue;
+ }
+ }
+ keys.push(segment[1]);
+ }
+
+ // If there's a remainder, just add whatever is left
+
+ if (segment) {
+ keys.push('[' + key.slice(segment.index) + ']');
+ }
+
+ return parseObject(keys, val, options);
+};
+
+module.exports = function (str, opts) {
+ var options = opts || {};
+
+ if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {
+ throw new TypeError('Decoder has to be a function.');
+ }
+
+ options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;
+ options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;
+ options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;
+ options.parseArrays = options.parseArrays !== false;
+ options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;
+ options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;
+ options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;
+ options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;
+ options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;
+ options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
+
+ if (str === '' || str === null || typeof str === 'undefined') {
+ return options.plainObjects ? Object.create(null) : {};
+ }
+
+ var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
+ var obj = options.plainObjects ? Object.create(null) : {};
+
+ // Iterate over the keys and setup the new object
+
+ var keys = Object.keys(tempObj);
+ for (var i = 0; i < keys.length; ++i) {
+ var key = keys[i];
+ var newObj = parseKeys(key, tempObj[key], options);
+ obj = Utils.merge(obj, newObj, options);
+ }
+
+ return Utils.compact(obj);
+};
+
+},{"./utils":4}],3:[function(require,module,exports){
+'use strict';
+
+var Utils = require('./utils');
+
+var arrayPrefixGenerators = {
+ brackets: function brackets(prefix) {
+ return prefix + '[]';
+ },
+ indices: function indices(prefix, key) {
+ return prefix + '[' + key + ']';
+ },
+ repeat: function repeat(prefix) {
+ return prefix;
+ }
+};
+
+var defaults = {
+ delimiter: '&',
+ strictNullHandling: false,
+ skipNulls: false,
+ encode: true,
+ encoder: Utils.encode
+};
+
+var stringify = function stringify(object, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots) {
+ var obj = object;
+ if (typeof filter === 'function') {
+ obj = filter(prefix, obj);
+ } else if (obj instanceof Date) {
+ obj = obj.toISOString();
+ } else if (obj === null) {
+ if (strictNullHandling) {
+ return encoder ? encoder(prefix) : prefix;
+ }
+
+ obj = '';
+ }
+
+ if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || Utils.isBuffer(obj)) {
+ if (encoder) {
+ return [encoder(prefix) + '=' + encoder(obj)];
+ }
+ return [prefix + '=' + String(obj)];
+ }
+
+ var values = [];
+
+ if (typeof obj === 'undefined') {
+ return values;
+ }
+
+ var objKeys;
+ if (Array.isArray(filter)) {
+ objKeys = filter;
+ } else {
+ var keys = Object.keys(obj);
+ objKeys = sort ? keys.sort(sort) : keys;
+ }
+
+ for (var i = 0; i < objKeys.length; ++i) {
+ var key = objKeys[i];
+
+ if (skipNulls && obj[key] === null) {
+ continue;
+ }
+
+ if (Array.isArray(obj)) {
+ values = values.concat(stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
+ } else {
+ values = values.concat(stringify(obj[key], prefix + (allowDots ? '.' + key : '[' + key + ']'), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
+ }
+ }
+
+ return values;
+};
+
+module.exports = function (object, opts) {
+ var obj = object;
+ var options = opts || {};
+ var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;
+ var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
+ var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;
+ var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;
+ var encoder = encode ? (typeof options.encoder === 'function' ? options.encoder : defaults.encoder) : null;
+ var sort = typeof options.sort === 'function' ? options.sort : null;
+ var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
+ var objKeys;
+ var filter;
+
+ if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
+ throw new TypeError('Encoder has to be a function.');
+ }
+
+ if (typeof options.filter === 'function') {
+ filter = options.filter;
+ obj = filter('', obj);
+ } else if (Array.isArray(options.filter)) {
+ objKeys = filter = options.filter;
+ }
+
+ var keys = [];
+
+ if (typeof obj !== 'object' || obj === null) {
+ return '';
+ }
+
+ var arrayFormat;
+ if (options.arrayFormat in arrayPrefixGenerators) {
+ arrayFormat = options.arrayFormat;
+ } else if ('indices' in options) {
+ arrayFormat = options.indices ? 'indices' : 'repeat';
+ } else {
+ arrayFormat = 'indices';
+ }
+
+ var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
+
+ if (!objKeys) {
+ objKeys = Object.keys(obj);
+ }
+
+ if (sort) {
+ objKeys.sort(sort);
+ }
+
+ for (var i = 0; i < objKeys.length; ++i) {
+ var key = objKeys[i];
+
+ if (skipNulls && obj[key] === null) {
+ continue;
+ }
+
+ keys = keys.concat(stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
+ }
+
+ return keys.join(delimiter);
+};
+
+},{"./utils":4}],4:[function(require,module,exports){
+'use strict';
+
+var hexTable = (function () {
+ var array = new Array(256);
+ for (var i = 0; i < 256; ++i) {
+ array[i] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();
+ }
+
+ return array;
+}());
+
+exports.arrayToObject = function (source, options) {
+ var obj = options.plainObjects ? Object.create(null) : {};
+ for (var i = 0; i < source.length; ++i) {
+ if (typeof source[i] !== 'undefined') {
+ obj[i] = source[i];
+ }
+ }
+
+ return obj;
+};
+
+exports.merge = function (target, source, options) {
+ if (!source) {
+ return target;
+ }
+
+ if (typeof source !== 'object') {
+ if (Array.isArray(target)) {
+ target.push(source);
+ } else if (typeof target === 'object') {
+ target[source] = true;
+ } else {
+ return [target, source];
+ }
+
+ return target;
+ }
+
+ if (typeof target !== 'object') {
+ return [target].concat(source);
+ }
+
+ var mergeTarget = target;
+ if (Array.isArray(target) && !Array.isArray(source)) {
+ mergeTarget = exports.arrayToObject(target, options);
+ }
+
+ return Object.keys(source).reduce(function (acc, key) {
+ var value = source[key];
+
+ if (Object.prototype.hasOwnProperty.call(acc, key)) {
+ acc[key] = exports.merge(acc[key], value, options);
+ } else {
+ acc[key] = value;
+ }
+ return acc;
+ }, mergeTarget);
+};
+
+exports.decode = function (str) {
+ try {
+ return decodeURIComponent(str.replace(/\+/g, ' '));
+ } catch (e) {
+ return str;
+ }
+};
+
+exports.encode = function (str) {
+ // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
+ // It has been adapted here for stricter adherence to RFC 3986
+ if (str.length === 0) {
+ return str;
+ }
+
+ var string = typeof str === 'string' ? str : String(str);
+
+ var out = '';
+ for (var i = 0; i < string.length; ++i) {
+ var c = string.charCodeAt(i);
+
+ if (
+ c === 0x2D || // -
+ c === 0x2E || // .
+ c === 0x5F || // _
+ c === 0x7E || // ~
+ (c >= 0x30 && c <= 0x39) || // 0-9
+ (c >= 0x41 && c <= 0x5A) || // a-z
+ (c >= 0x61 && c <= 0x7A) // A-Z
+ ) {
+ out += string.charAt(i);
+ continue;
+ }
+
+ if (c < 0x80) {
+ out = out + hexTable[c];
+ continue;
+ }
+
+ if (c < 0x800) {
+ out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
+ continue;
+ }
+
+ if (c < 0xD800 || c >= 0xE000) {
+ out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
+ continue;
+ }
+
+ i += 1;
+ c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
+ out += hexTable[0xF0 | (c >> 18)] + hexTable[0x80 | ((c >> 12) & 0x3F)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)];
+ }
+
+ return out;
+};
+
+exports.compact = function (obj, references) {
+ if (typeof obj !== 'object' || obj === null) {
+ return obj;
+ }
+
+ var refs = references || [];
+ var lookup = refs.indexOf(obj);
+ if (lookup !== -1) {
+ return refs[lookup];
+ }
+
+ refs.push(obj);
+
+ if (Array.isArray(obj)) {
+ var compacted = [];
+
+ for (var i = 0; i < obj.length; ++i) {
+ if (obj[i] && typeof obj[i] === 'object') {
+ compacted.push(exports.compact(obj[i], refs));
+ } else if (typeof obj[i] !== 'undefined') {
+ compacted.push(obj[i]);
+ }
+ }
+
+ return compacted;
+ }
+
+ var keys = Object.keys(obj);
+ for (var j = 0; j < keys.length; ++j) {
+ var key = keys[j];
+ obj[key] = exports.compact(obj[key], refs);
+ }
+
+ return obj;
+};
+
+exports.isRegExp = function (obj) {
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
+};
+
+exports.isBuffer = function (obj) {
+ if (obj === null || typeof obj === 'undefined') {
+ return false;
+ }
+
+ return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
+};
+
+},{}]},{},[1])(1)
+});
\ No newline at end of file
diff --git a/server/node_modules/express/node_modules/qs/lib/index.js b/server/node_modules/express/node_modules/qs/lib/index.js
new file mode 100755
index 0000000..1901959
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/lib/index.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var Stringify = require('./stringify');
+var Parse = require('./parse');
+
+module.exports = {
+ stringify: Stringify,
+ parse: Parse
+};
diff --git a/server/node_modules/express/node_modules/qs/lib/parse.js b/server/node_modules/express/node_modules/qs/lib/parse.js
new file mode 100755
index 0000000..bf70fd8
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/lib/parse.js
@@ -0,0 +1,167 @@
+'use strict';
+
+var Utils = require('./utils');
+
+var defaults = {
+ delimiter: '&',
+ depth: 5,
+ arrayLimit: 20,
+ parameterLimit: 1000,
+ strictNullHandling: false,
+ plainObjects: false,
+ allowPrototypes: false,
+ allowDots: false,
+ decoder: Utils.decode
+};
+
+var parseValues = function parseValues(str, options) {
+ var obj = {};
+ var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);
+
+ for (var i = 0; i < parts.length; ++i) {
+ var part = parts[i];
+ var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;
+
+ if (pos === -1) {
+ obj[options.decoder(part)] = '';
+
+ if (options.strictNullHandling) {
+ obj[options.decoder(part)] = null;
+ }
+ } else {
+ var key = options.decoder(part.slice(0, pos));
+ var val = options.decoder(part.slice(pos + 1));
+
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ obj[key] = [].concat(obj[key]).concat(val);
+ } else {
+ obj[key] = val;
+ }
+ }
+ }
+
+ return obj;
+};
+
+var parseObject = function parseObject(chain, val, options) {
+ if (!chain.length) {
+ return val;
+ }
+
+ var root = chain.shift();
+
+ var obj;
+ if (root === '[]') {
+ obj = [];
+ obj = obj.concat(parseObject(chain, val, options));
+ } else {
+ obj = options.plainObjects ? Object.create(null) : {};
+ var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root;
+ var index = parseInt(cleanRoot, 10);
+ if (
+ !isNaN(index) &&
+ root !== cleanRoot &&
+ String(index) === cleanRoot &&
+ index >= 0 &&
+ (options.parseArrays && index <= options.arrayLimit)
+ ) {
+ obj = [];
+ obj[index] = parseObject(chain, val, options);
+ } else {
+ obj[cleanRoot] = parseObject(chain, val, options);
+ }
+ }
+
+ return obj;
+};
+
+var parseKeys = function parseKeys(givenKey, val, options) {
+ if (!givenKey) {
+ return;
+ }
+
+ // Transform dot notation to bracket notation
+ var key = options.allowDots ? givenKey.replace(/\.([^\.\[]+)/g, '[$1]') : givenKey;
+
+ // The regex chunks
+
+ var parent = /^([^\[\]]*)/;
+ var child = /(\[[^\[\]]*\])/g;
+
+ // Get the parent
+
+ var segment = parent.exec(key);
+
+ // Stash the parent if it exists
+
+ var keys = [];
+ if (segment[1]) {
+ // If we aren't using plain objects, optionally prefix keys
+ // that would overwrite object prototype properties
+ if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1])) {
+ if (!options.allowPrototypes) {
+ return;
+ }
+ }
+
+ keys.push(segment[1]);
+ }
+
+ // Loop through children appending to the array until we hit depth
+
+ var i = 0;
+ while ((segment = child.exec(key)) !== null && i < options.depth) {
+ i += 1;
+ if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) {
+ if (!options.allowPrototypes) {
+ continue;
+ }
+ }
+ keys.push(segment[1]);
+ }
+
+ // If there's a remainder, just add whatever is left
+
+ if (segment) {
+ keys.push('[' + key.slice(segment.index) + ']');
+ }
+
+ return parseObject(keys, val, options);
+};
+
+module.exports = function (str, opts) {
+ var options = opts || {};
+
+ if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {
+ throw new TypeError('Decoder has to be a function.');
+ }
+
+ options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;
+ options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;
+ options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;
+ options.parseArrays = options.parseArrays !== false;
+ options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;
+ options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;
+ options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;
+ options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;
+ options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;
+ options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
+
+ if (str === '' || str === null || typeof str === 'undefined') {
+ return options.plainObjects ? Object.create(null) : {};
+ }
+
+ var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
+ var obj = options.plainObjects ? Object.create(null) : {};
+
+ // Iterate over the keys and setup the new object
+
+ var keys = Object.keys(tempObj);
+ for (var i = 0; i < keys.length; ++i) {
+ var key = keys[i];
+ var newObj = parseKeys(key, tempObj[key], options);
+ obj = Utils.merge(obj, newObj, options);
+ }
+
+ return Utils.compact(obj);
+};
diff --git a/server/node_modules/express/node_modules/qs/lib/stringify.js b/server/node_modules/express/node_modules/qs/lib/stringify.js
new file mode 100755
index 0000000..6e1c9a2
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/lib/stringify.js
@@ -0,0 +1,137 @@
+'use strict';
+
+var Utils = require('./utils');
+
+var arrayPrefixGenerators = {
+ brackets: function brackets(prefix) {
+ return prefix + '[]';
+ },
+ indices: function indices(prefix, key) {
+ return prefix + '[' + key + ']';
+ },
+ repeat: function repeat(prefix) {
+ return prefix;
+ }
+};
+
+var defaults = {
+ delimiter: '&',
+ strictNullHandling: false,
+ skipNulls: false,
+ encode: true,
+ encoder: Utils.encode
+};
+
+var stringify = function stringify(object, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots) {
+ var obj = object;
+ if (typeof filter === 'function') {
+ obj = filter(prefix, obj);
+ } else if (obj instanceof Date) {
+ obj = obj.toISOString();
+ } else if (obj === null) {
+ if (strictNullHandling) {
+ return encoder ? encoder(prefix) : prefix;
+ }
+
+ obj = '';
+ }
+
+ if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || Utils.isBuffer(obj)) {
+ if (encoder) {
+ return [encoder(prefix) + '=' + encoder(obj)];
+ }
+ return [prefix + '=' + String(obj)];
+ }
+
+ var values = [];
+
+ if (typeof obj === 'undefined') {
+ return values;
+ }
+
+ var objKeys;
+ if (Array.isArray(filter)) {
+ objKeys = filter;
+ } else {
+ var keys = Object.keys(obj);
+ objKeys = sort ? keys.sort(sort) : keys;
+ }
+
+ for (var i = 0; i < objKeys.length; ++i) {
+ var key = objKeys[i];
+
+ if (skipNulls && obj[key] === null) {
+ continue;
+ }
+
+ if (Array.isArray(obj)) {
+ values = values.concat(stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
+ } else {
+ values = values.concat(stringify(obj[key], prefix + (allowDots ? '.' + key : '[' + key + ']'), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
+ }
+ }
+
+ return values;
+};
+
+module.exports = function (object, opts) {
+ var obj = object;
+ var options = opts || {};
+ var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;
+ var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
+ var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;
+ var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;
+ var encoder = encode ? (typeof options.encoder === 'function' ? options.encoder : defaults.encoder) : null;
+ var sort = typeof options.sort === 'function' ? options.sort : null;
+ var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
+ var objKeys;
+ var filter;
+
+ if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
+ throw new TypeError('Encoder has to be a function.');
+ }
+
+ if (typeof options.filter === 'function') {
+ filter = options.filter;
+ obj = filter('', obj);
+ } else if (Array.isArray(options.filter)) {
+ objKeys = filter = options.filter;
+ }
+
+ var keys = [];
+
+ if (typeof obj !== 'object' || obj === null) {
+ return '';
+ }
+
+ var arrayFormat;
+ if (options.arrayFormat in arrayPrefixGenerators) {
+ arrayFormat = options.arrayFormat;
+ } else if ('indices' in options) {
+ arrayFormat = options.indices ? 'indices' : 'repeat';
+ } else {
+ arrayFormat = 'indices';
+ }
+
+ var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
+
+ if (!objKeys) {
+ objKeys = Object.keys(obj);
+ }
+
+ if (sort) {
+ objKeys.sort(sort);
+ }
+
+ for (var i = 0; i < objKeys.length; ++i) {
+ var key = objKeys[i];
+
+ if (skipNulls && obj[key] === null) {
+ continue;
+ }
+
+ keys = keys.concat(stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
+ }
+
+ return keys.join(delimiter);
+};
diff --git a/server/node_modules/express/node_modules/qs/lib/utils.js b/server/node_modules/express/node_modules/qs/lib/utils.js
new file mode 100755
index 0000000..2c5c8ee
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/lib/utils.js
@@ -0,0 +1,164 @@
+'use strict';
+
+var hexTable = (function () {
+ var array = new Array(256);
+ for (var i = 0; i < 256; ++i) {
+ array[i] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();
+ }
+
+ return array;
+}());
+
+exports.arrayToObject = function (source, options) {
+ var obj = options.plainObjects ? Object.create(null) : {};
+ for (var i = 0; i < source.length; ++i) {
+ if (typeof source[i] !== 'undefined') {
+ obj[i] = source[i];
+ }
+ }
+
+ return obj;
+};
+
+exports.merge = function (target, source, options) {
+ if (!source) {
+ return target;
+ }
+
+ if (typeof source !== 'object') {
+ if (Array.isArray(target)) {
+ target.push(source);
+ } else if (typeof target === 'object') {
+ target[source] = true;
+ } else {
+ return [target, source];
+ }
+
+ return target;
+ }
+
+ if (typeof target !== 'object') {
+ return [target].concat(source);
+ }
+
+ var mergeTarget = target;
+ if (Array.isArray(target) && !Array.isArray(source)) {
+ mergeTarget = exports.arrayToObject(target, options);
+ }
+
+ return Object.keys(source).reduce(function (acc, key) {
+ var value = source[key];
+
+ if (Object.prototype.hasOwnProperty.call(acc, key)) {
+ acc[key] = exports.merge(acc[key], value, options);
+ } else {
+ acc[key] = value;
+ }
+ return acc;
+ }, mergeTarget);
+};
+
+exports.decode = function (str) {
+ try {
+ return decodeURIComponent(str.replace(/\+/g, ' '));
+ } catch (e) {
+ return str;
+ }
+};
+
+exports.encode = function (str) {
+ // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
+ // It has been adapted here for stricter adherence to RFC 3986
+ if (str.length === 0) {
+ return str;
+ }
+
+ var string = typeof str === 'string' ? str : String(str);
+
+ var out = '';
+ for (var i = 0; i < string.length; ++i) {
+ var c = string.charCodeAt(i);
+
+ if (
+ c === 0x2D || // -
+ c === 0x2E || // .
+ c === 0x5F || // _
+ c === 0x7E || // ~
+ (c >= 0x30 && c <= 0x39) || // 0-9
+ (c >= 0x41 && c <= 0x5A) || // a-z
+ (c >= 0x61 && c <= 0x7A) // A-Z
+ ) {
+ out += string.charAt(i);
+ continue;
+ }
+
+ if (c < 0x80) {
+ out = out + hexTable[c];
+ continue;
+ }
+
+ if (c < 0x800) {
+ out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
+ continue;
+ }
+
+ if (c < 0xD800 || c >= 0xE000) {
+ out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
+ continue;
+ }
+
+ i += 1;
+ c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
+ out += hexTable[0xF0 | (c >> 18)] + hexTable[0x80 | ((c >> 12) & 0x3F)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)];
+ }
+
+ return out;
+};
+
+exports.compact = function (obj, references) {
+ if (typeof obj !== 'object' || obj === null) {
+ return obj;
+ }
+
+ var refs = references || [];
+ var lookup = refs.indexOf(obj);
+ if (lookup !== -1) {
+ return refs[lookup];
+ }
+
+ refs.push(obj);
+
+ if (Array.isArray(obj)) {
+ var compacted = [];
+
+ for (var i = 0; i < obj.length; ++i) {
+ if (obj[i] && typeof obj[i] === 'object') {
+ compacted.push(exports.compact(obj[i], refs));
+ } else if (typeof obj[i] !== 'undefined') {
+ compacted.push(obj[i]);
+ }
+ }
+
+ return compacted;
+ }
+
+ var keys = Object.keys(obj);
+ for (var j = 0; j < keys.length; ++j) {
+ var key = keys[j];
+ obj[key] = exports.compact(obj[key], refs);
+ }
+
+ return obj;
+};
+
+exports.isRegExp = function (obj) {
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
+};
+
+exports.isBuffer = function (obj) {
+ if (obj === null || typeof obj === 'undefined') {
+ return false;
+ }
+
+ return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
+};
diff --git a/server/node_modules/express/node_modules/qs/package.json b/server/node_modules/express/node_modules/qs/package.json
new file mode 100755
index 0000000..776e1ed
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/package.json
@@ -0,0 +1,85 @@
+{
+ "name": "qs",
+ "description": "A querystring parser that supports nesting and arrays, with a depth limit",
+ "homepage": "https://github.com/ljharb/qs",
+ "version": "6.2.0",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/qs.git"
+ },
+ "main": "lib/index.js",
+ "contributors": [
+ {
+ "name": "Jordan Harband",
+ "email": "ljharb@gmail.com",
+ "url": "http://ljharb.codes"
+ }
+ ],
+ "keywords": [
+ "querystring",
+ "qs"
+ ],
+ "engines": {
+ "node": ">=0.6"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "browserify": "^13.0.1",
+ "tape": "^4.5.1",
+ "covert": "^1.1.0",
+ "mkdirp": "^0.5.1",
+ "eslint": "^2.9.0",
+ "@ljharb/eslint-config": "^4.0.0",
+ "parallelshell": "^2.0.0",
+ "iconv-lite": "^0.4.13",
+ "evalmd": "^0.0.17"
+ },
+ "scripts": {
+ "pretest": "parallelshell 'npm run --silent readme' 'npm run --silent lint'",
+ "test": "npm run --silent coverage",
+ "tests-only": "node test",
+ "readme": "evalmd README.md",
+ "lint": "eslint lib/*.js text/*.js",
+ "coverage": "covert test",
+ "dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js",
+ "prepublish": "npm run dist"
+ },
+ "license": "BSD-3-Clause",
+ "gitHead": "d67d315b606c6bb809fedcbeebbbdb7f863852aa",
+ "bugs": {
+ "url": "https://github.com/ljharb/qs/issues"
+ },
+ "_id": "qs@6.2.0",
+ "_shasum": "3b7848c03c2dece69a9522b0fae8c4126d745f3b",
+ "_from": "qs@6.2.0",
+ "_npmVersion": "3.8.6",
+ "_nodeVersion": "6.1.0",
+ "_npmUser": {
+ "name": "ljharb",
+ "email": "ljharb@gmail.com"
+ },
+ "dist": {
+ "shasum": "3b7848c03c2dece69a9522b0fae8c4126d745f3b",
+ "tarball": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "hueniverse",
+ "email": "eran@hammer.io"
+ },
+ {
+ "name": "ljharb",
+ "email": "ljharb@gmail.com"
+ },
+ {
+ "name": "nlf",
+ "email": "quitlahok@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/qs-6.2.0.tgz_1462749349998_0.03372702235355973"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/qs/test/index.js b/server/node_modules/express/node_modules/qs/test/index.js
new file mode 100755
index 0000000..b6a7d95
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/test/index.js
@@ -0,0 +1,5 @@
+require('./parse');
+
+require('./stringify');
+
+require('./utils');
diff --git a/server/node_modules/express/node_modules/qs/test/parse.js b/server/node_modules/express/node_modules/qs/test/parse.js
new file mode 100755
index 0000000..1b79daf
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/test/parse.js
@@ -0,0 +1,423 @@
+'use strict';
+
+var test = require('tape');
+var qs = require('../');
+var iconv = require('iconv-lite');
+
+test('parse()', function (t) {
+ t.test('parses a simple string', function (st) {
+ st.deepEqual(qs.parse('0=foo'), { '0': 'foo' });
+ st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' });
+ st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } });
+ st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } });
+ st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } });
+ st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null });
+ st.deepEqual(qs.parse('foo'), { foo: '' });
+ st.deepEqual(qs.parse('foo='), { foo: '' });
+ st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' });
+ st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' });
+ st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' });
+ st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' });
+ st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' });
+ st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null });
+ st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' });
+ st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), {
+ cht: 'p3',
+ chd: 't:60,40',
+ chs: '250x100',
+ chl: 'Hello|World'
+ });
+ st.end();
+ });
+
+ t.test('allows enabling dot notation', function (st) {
+ st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' });
+ st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } });
+ st.end();
+ });
+
+ t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string');
+ t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string');
+ t.deepEqual(
+ qs.parse('a[b][c][d][e][f][g][h]=i'),
+ { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } },
+ 'defaults to a depth of 5'
+ );
+
+ t.test('only parses one level when depth = 1', function (st) {
+ st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } });
+ st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } });
+ st.end();
+ });
+
+ t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array');
+
+ t.test('parses an explicit array', function (st) {
+ st.deepEqual(qs.parse('a[]=b'), { a: ['b'] });
+ st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] });
+ st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] });
+ st.end();
+ });
+
+ t.test('parses a mix of simple and explicit arrays', function (st) {
+ st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
+ st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
+ st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] });
+ st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] });
+ st.deepEqual(qs.parse('a[1]=b&a=c'), { a: ['b', 'c'] });
+ st.deepEqual(qs.parse('a=b&a[1]=c'), { a: ['b', 'c'] });
+ st.end();
+ });
+
+ t.test('parses a nested array', function (st) {
+ st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } });
+ st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } });
+ st.end();
+ });
+
+ t.test('allows to specify array indices', function (st) {
+ st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] });
+ st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] });
+ st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] });
+ st.end();
+ });
+
+ t.test('limits specific array indices to 20', function (st) {
+ st.deepEqual(qs.parse('a[20]=a'), { a: ['a'] });
+ st.deepEqual(qs.parse('a[21]=a'), { a: { '21': 'a' } });
+ st.end();
+ });
+
+ t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number');
+
+ t.test('supports encoded = signs', function (st) {
+ st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' });
+ st.end();
+ });
+
+ t.test('is ok with url encoded strings', function (st) {
+ st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } });
+ st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } });
+ st.end();
+ });
+
+ t.test('allows brackets in the value', function (st) {
+ st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' });
+ st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' });
+ st.end();
+ });
+
+ t.test('allows empty values', function (st) {
+ st.deepEqual(qs.parse(''), {});
+ st.deepEqual(qs.parse(null), {});
+ st.deepEqual(qs.parse(undefined), {});
+ st.end();
+ });
+
+ t.test('transforms arrays to objects', function (st) {
+ st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { '0': 'bar', bad: 'baz' } });
+ st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', '0': 'bar' } });
+ st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', '0': 'bar' } });
+ st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { '0': 'bar', bad: 'baz' } });
+ st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', '0': 'bar', '1': 'foo' } });
+ st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
+ st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c'), { a: { '0': 'b', t: 'u', c: true } });
+ st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y'), { a: { '0': 'b', '1': 'c', x: 'y' } });
+ st.end();
+ });
+
+ t.test('transforms arrays to objects (dot notation)', function (st) {
+ st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } });
+ st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } });
+ st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } });
+ st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] });
+ st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] });
+ st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', '0': 'bar' } });
+ st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', '0': 'bar' } });
+ st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { '0': 'bar', bad: 'baz' } });
+ st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', '0': 'bar', '1': 'foo' } });
+ st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
+ st.end();
+ });
+
+ t.deepEqual(qs.parse('a[b]=c&a=d'), { a: { b: 'c', d: true } }, 'can add keys to objects');
+
+ t.test('correctly prunes undefined values when converting an array to an object', function (st) {
+ st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { '2': 'b', '99999999': 'c' } });
+ st.end();
+ });
+
+ t.test('supports malformed uri characters', function (st) {
+ st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null });
+ st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' });
+ st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' });
+ st.end();
+ });
+
+ t.test('doesn\'t produce empty keys', function (st) {
+ st.deepEqual(qs.parse('_r=1&'), { '_r': '1' });
+ st.end();
+ });
+
+ t.test('cannot access Object prototype', function (st) {
+ qs.parse('constructor[prototype][bad]=bad');
+ qs.parse('bad[constructor][prototype][bad]=bad');
+ st.equal(typeof Object.prototype.bad, 'undefined');
+ st.end();
+ });
+
+ t.test('parses arrays of objects', function (st) {
+ st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
+ st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] });
+ st.end();
+ });
+
+ t.test('allows for empty strings in arrays', function (st) {
+ st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] });
+ st.deepEqual(qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true }), { a: ['b', null, 'c', ''] });
+ st.deepEqual(qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true }), { a: ['b', '', 'c', null] });
+ st.deepEqual(qs.parse('a[]=&a[]=b&a[]=c'), { a: ['', 'b', 'c'] });
+ st.end();
+ });
+
+ t.test('compacts sparse arrays', function (st) {
+ st.deepEqual(qs.parse('a[10]=1&a[2]=2'), { a: ['2', '1'] });
+ st.deepEqual(qs.parse('a[1][b][2][c]=1'), { a: [{ b: [{ c: '1' }] }] });
+ st.deepEqual(qs.parse('a[1][2][3][c]=1'), { a: [[[{ c: '1' }]]] });
+ st.deepEqual(qs.parse('a[1][2][3][c][1]=1'), { a: [[[{ c: ['1'] }]]] });
+ st.end();
+ });
+
+ t.test('parses semi-parsed strings', function (st) {
+ st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } });
+ st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } });
+ st.end();
+ });
+
+ t.test('parses buffers correctly', function (st) {
+ var b = new Buffer('test');
+ st.deepEqual(qs.parse({ a: b }), { a: b });
+ st.end();
+ });
+
+ t.test('continues parsing when no parent is found', function (st) {
+ st.deepEqual(qs.parse('[]=&a=b'), { '0': '', a: 'b' });
+ st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { '0': null, a: 'b' });
+ st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' });
+ st.end();
+ });
+
+ t.test('does not error when parsing a very long array', function (st) {
+ var str = 'a[]=a';
+ while (Buffer.byteLength(str) < 128 * 1024) {
+ str = str + '&' + str;
+ }
+
+ st.doesNotThrow(function () { qs.parse(str); });
+
+ st.end();
+ });
+
+ t.test('should not throw when a native prototype has an enumerable property', { parallel: false }, function (st) {
+ Object.prototype.crash = '';
+ Array.prototype.crash = '';
+ st.doesNotThrow(qs.parse.bind(null, 'a=b'));
+ st.deepEqual(qs.parse('a=b'), { a: 'b' });
+ st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c'));
+ st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
+ delete Object.prototype.crash;
+ delete Array.prototype.crash;
+ st.end();
+ });
+
+ t.test('parses a string with an alternative string delimiter', function (st) {
+ st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' });
+ st.end();
+ });
+
+ t.test('parses a string with an alternative RegExp delimiter', function (st) {
+ st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' });
+ st.end();
+ });
+
+ t.test('does not use non-splittable objects as delimiters', function (st) {
+ st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' });
+ st.end();
+ });
+
+ t.test('allows overriding parameter limit', function (st) {
+ st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' });
+ st.end();
+ });
+
+ t.test('allows setting the parameter limit to Infinity', function (st) {
+ st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' });
+ st.end();
+ });
+
+ t.test('allows overriding array limit', function (st) {
+ st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { '0': 'b' } });
+ st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } });
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { '0': 'b', '1': 'c' } });
+ st.end();
+ });
+
+ t.test('allows disabling array parsing', function (st) {
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { parseArrays: false }), { a: { '0': 'b', '1': 'c' } });
+ st.end();
+ });
+
+ t.test('parses an object', function (st) {
+ var input = {
+ 'user[name]': { 'pop[bob]': 3 },
+ 'user[email]': null
+ };
+
+ var expected = {
+ user: {
+ name: { 'pop[bob]': 3 },
+ email: null
+ }
+ };
+
+ var result = qs.parse(input);
+
+ st.deepEqual(result, expected);
+ st.end();
+ });
+
+ t.test('parses an object in dot notation', function (st) {
+ var input = {
+ 'user.name': { 'pop[bob]': 3 },
+ 'user.email.': null
+ };
+
+ var expected = {
+ user: {
+ name: { 'pop[bob]': 3 },
+ email: null
+ }
+ };
+
+ var result = qs.parse(input, { allowDots: true });
+
+ st.deepEqual(result, expected);
+ st.end();
+ });
+
+ t.test('parses an object and not child values', function (st) {
+ var input = {
+ 'user[name]': { 'pop[bob]': { 'test': 3 } },
+ 'user[email]': null
+ };
+
+ var expected = {
+ user: {
+ name: { 'pop[bob]': { 'test': 3 } },
+ email: null
+ }
+ };
+
+ var result = qs.parse(input);
+
+ st.deepEqual(result, expected);
+ st.end();
+ });
+
+ t.test('does not blow up when Buffer global is missing', function (st) {
+ var tempBuffer = global.Buffer;
+ delete global.Buffer;
+ var result = qs.parse('a=b&c=d');
+ global.Buffer = tempBuffer;
+ st.deepEqual(result, { a: 'b', c: 'd' });
+ st.end();
+ });
+
+ t.test('does not crash when parsing circular references', function (st) {
+ var a = {};
+ a.b = a;
+
+ var parsed;
+
+ st.doesNotThrow(function () {
+ parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a });
+ });
+
+ st.equal('foo' in parsed, true, 'parsed has "foo" property');
+ st.equal('bar' in parsed.foo, true);
+ st.equal('baz' in parsed.foo, true);
+ st.equal(parsed.foo.bar, 'baz');
+ st.deepEqual(parsed.foo.baz, a);
+ st.end();
+ });
+
+ t.test('parses plain objects correctly', function (st) {
+ var a = Object.create(null);
+ a.b = 'c';
+
+ st.deepEqual(qs.parse(a), { b: 'c' });
+ var result = qs.parse({ a: a });
+ st.equal('a' in result, true, 'result has "a" property');
+ st.deepEqual(result.a, a);
+ st.end();
+ });
+
+ t.test('parses dates correctly', function (st) {
+ var now = new Date();
+ st.deepEqual(qs.parse({ a: now }), { a: now });
+ st.end();
+ });
+
+ t.test('parses regular expressions correctly', function (st) {
+ var re = /^test$/;
+ st.deepEqual(qs.parse({ a: re }), { a: re });
+ st.end();
+ });
+
+ t.test('can allow overwriting prototype properties', function (st) {
+ st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } }, { prototype: false });
+ st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' }, { prototype: false });
+ st.end();
+ });
+
+ t.test('can return plain objects', function (st) {
+ var expected = Object.create(null);
+ expected.a = Object.create(null);
+ expected.a.b = 'c';
+ expected.a.hasOwnProperty = 'd';
+ st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected);
+ st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null));
+ var expectedArray = Object.create(null);
+ expectedArray.a = Object.create(null);
+ expectedArray.a['0'] = 'b';
+ expectedArray.a.c = 'd';
+ st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray);
+ st.end();
+ });
+
+ t.test('can parse with custom encoding', function (st) {
+ st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', {
+ decoder: function (str) {
+ var reg = /\%([0-9A-F]{2})/ig;
+ var result = [];
+ var parts;
+ var last = 0;
+ while (parts = reg.exec(str)) {
+ result.push(parseInt(parts[1], 16));
+ last = parts.index + parts[0].length;
+ }
+ return iconv.decode(new Buffer(result), 'shift_jis').toString();
+ }
+ }), { 県: '大阪府' });
+ st.end();
+ });
+
+ t.test('throws error with wrong decoder', function (st) {
+ st.throws(function () {
+ qs.parse({}, {
+ decoder: 'string'
+ });
+ }, new TypeError('Decoder has to be a function.'));
+ st.end();
+ });
+});
diff --git a/server/node_modules/express/node_modules/qs/test/stringify.js b/server/node_modules/express/node_modules/qs/test/stringify.js
new file mode 100755
index 0000000..699397e
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/test/stringify.js
@@ -0,0 +1,305 @@
+'use strict';
+
+var test = require('tape');
+var qs = require('../');
+var iconv = require('iconv-lite');
+
+test('stringify()', function (t) {
+ t.test('stringifies a querystring object', function (st) {
+ st.equal(qs.stringify({ a: 'b' }), 'a=b');
+ st.equal(qs.stringify({ a: 1 }), 'a=1');
+ st.equal(qs.stringify({ a: 1, b: 2 }), 'a=1&b=2');
+ st.equal(qs.stringify({ a: 'A_Z' }), 'a=A_Z');
+ st.equal(qs.stringify({ a: '€' }), 'a=%E2%82%AC');
+ st.equal(qs.stringify({ a: '' }), 'a=%EE%80%80');
+ st.equal(qs.stringify({ a: 'א' }), 'a=%D7%90');
+ st.equal(qs.stringify({ a: '𐐷' }), 'a=%F0%90%90%B7');
+ st.end();
+ });
+
+ t.test('stringifies a nested object', function (st) {
+ st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c');
+ st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }), 'a%5Bb%5D%5Bc%5D%5Bd%5D=e');
+ st.end();
+ });
+
+ t.test('stringifies a nested object with dots notation', function (st) {
+ st.equal(qs.stringify({ a: { b: 'c' } }, { allowDots: true }), 'a.b=c');
+ st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }, { allowDots: true }), 'a.b.c.d=e');
+ st.end();
+ });
+
+ t.test('stringifies an array value', function (st) {
+ st.equal(qs.stringify({ a: ['b', 'c', 'd'] }), 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d');
+ st.end();
+ });
+
+ t.test('omits nulls when asked', function (st) {
+ st.equal(qs.stringify({ a: 'b', c: null }, { skipNulls: true }), 'a=b');
+ st.end();
+ });
+
+
+ t.test('omits nested nulls when asked', function (st) {
+ st.equal(qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), 'a%5Bb%5D=c');
+ st.end();
+ });
+
+ t.test('omits array indices when asked', function (st) {
+ st.equal(qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }), 'a=b&a=c&a=d');
+ st.end();
+ });
+
+ t.test('stringifies a nested array value', function (st) {
+ st.equal(qs.stringify({ a: { b: ['c', 'd'] } }), 'a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d');
+ st.end();
+ });
+
+ t.test('stringifies a nested array value with dots notation', function (st) {
+ st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { allowDots: true, encode: false }), 'a.b[0]=c&a.b[1]=d');
+ st.end();
+ });
+
+ t.test('stringifies an object inside an array', function (st) {
+ st.equal(qs.stringify({ a: [{ b: 'c' }] }), 'a%5B0%5D%5Bb%5D=c');
+ st.equal(qs.stringify({ a: [{ b: { c: [1] } }] }), 'a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1');
+ st.end();
+ });
+
+ t.test('stringifies an array with mixed objects and primitives', function (st) {
+ st.equal(qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encode: false }), 'a[0][b]=1&a[1]=2&a[2]=3');
+ st.end();
+ });
+
+ t.test('stringifies an object inside an array with dots notation', function (st) {
+ st.equal(qs.stringify({ a: [{ b: 'c' }] }, { allowDots: true, encode: false }), 'a[0].b=c');
+ st.equal(qs.stringify({ a: [{ b: { c: [1] } }] }, { allowDots: true, encode: false }), 'a[0].b.c[0]=1');
+ st.end();
+ });
+
+ t.test('does not omit object keys when indices = false', function (st) {
+ st.equal(qs.stringify({ a: [{ b: 'c' }] }, { indices: false }), 'a%5Bb%5D=c');
+ st.end();
+ });
+
+ t.test('uses indices notation for arrays when indices=true', function (st) {
+ st.equal(qs.stringify({ a: ['b', 'c'] }, { indices: true }), 'a%5B0%5D=b&a%5B1%5D=c');
+ st.end();
+ });
+
+ t.test('uses indices notation for arrays when no arrayFormat is specified', function (st) {
+ st.equal(qs.stringify({ a: ['b', 'c'] }), 'a%5B0%5D=b&a%5B1%5D=c');
+ st.end();
+ });
+
+ t.test('uses indices notation for arrays when no arrayFormat=indices', function (st) {
+ st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }), 'a%5B0%5D=b&a%5B1%5D=c');
+ st.end();
+ });
+
+ t.test('uses repeat notation for arrays when no arrayFormat=repeat', function (st) {
+ st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }), 'a=b&a=c');
+ st.end();
+ });
+
+ t.test('uses brackets notation for arrays when no arrayFormat=brackets', function (st) {
+ st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }), 'a%5B%5D=b&a%5B%5D=c');
+ st.end();
+ });
+
+ t.test('stringifies a complicated object', function (st) {
+ st.equal(qs.stringify({ a: { b: 'c', d: 'e' } }), 'a%5Bb%5D=c&a%5Bd%5D=e');
+ st.end();
+ });
+
+ t.test('stringifies an empty value', function (st) {
+ st.equal(qs.stringify({ a: '' }), 'a=');
+ st.equal(qs.stringify({ a: null }, { strictNullHandling: true }), 'a');
+
+ st.equal(qs.stringify({ a: '', b: '' }), 'a=&b=');
+ st.equal(qs.stringify({ a: null, b: '' }, { strictNullHandling: true }), 'a&b=');
+
+ st.equal(qs.stringify({ a: { b: '' } }), 'a%5Bb%5D=');
+ st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: true }), 'a%5Bb%5D');
+ st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: false }), 'a%5Bb%5D=');
+
+ st.end();
+ });
+
+ t.test('stringifies an empty object', function (st) {
+ var obj = Object.create(null);
+ obj.a = 'b';
+ st.equal(qs.stringify(obj), 'a=b');
+ st.end();
+ });
+
+ t.test('returns an empty string for invalid input', function (st) {
+ st.equal(qs.stringify(undefined), '');
+ st.equal(qs.stringify(false), '');
+ st.equal(qs.stringify(null), '');
+ st.equal(qs.stringify(''), '');
+ st.end();
+ });
+
+ t.test('stringifies an object with an empty object as a child', function (st) {
+ var obj = {
+ a: Object.create(null)
+ };
+
+ obj.a.b = 'c';
+ st.equal(qs.stringify(obj), 'a%5Bb%5D=c');
+ st.end();
+ });
+
+ t.test('drops keys with a value of undefined', function (st) {
+ st.equal(qs.stringify({ a: undefined }), '');
+
+ st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true }), 'a%5Bc%5D');
+ st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false }), 'a%5Bc%5D=');
+ st.equal(qs.stringify({ a: { b: undefined, c: '' } }), 'a%5Bc%5D=');
+ st.end();
+ });
+
+ t.test('url encodes values', function (st) {
+ st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c');
+ st.end();
+ });
+
+ t.test('stringifies a date', function (st) {
+ var now = new Date();
+ var str = 'a=' + encodeURIComponent(now.toISOString());
+ st.equal(qs.stringify({ a: now }), str);
+ st.end();
+ });
+
+ t.test('stringifies the weird object from qs', function (st) {
+ st.equal(qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' }), 'my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F');
+ st.end();
+ });
+
+ t.test('skips properties that are part of the object prototype', function (st) {
+ Object.prototype.crash = 'test';
+ st.equal(qs.stringify({ a: 'b' }), 'a=b');
+ st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c');
+ delete Object.prototype.crash;
+ st.end();
+ });
+
+ t.test('stringifies boolean values', function (st) {
+ st.equal(qs.stringify({ a: true }), 'a=true');
+ st.equal(qs.stringify({ a: { b: true } }), 'a%5Bb%5D=true');
+ st.equal(qs.stringify({ b: false }), 'b=false');
+ st.equal(qs.stringify({ b: { c: false } }), 'b%5Bc%5D=false');
+ st.end();
+ });
+
+ t.test('stringifies buffer values', function (st) {
+ st.equal(qs.stringify({ a: new Buffer('test') }), 'a=test');
+ st.equal(qs.stringify({ a: { b: new Buffer('test') } }), 'a%5Bb%5D=test');
+ st.end();
+ });
+
+ t.test('stringifies an object using an alternative delimiter', function (st) {
+ st.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d');
+ st.end();
+ });
+
+ t.test('doesn\'t blow up when Buffer global is missing', function (st) {
+ var tempBuffer = global.Buffer;
+ delete global.Buffer;
+ var result = qs.stringify({ a: 'b', c: 'd' });
+ global.Buffer = tempBuffer;
+ st.equal(result, 'a=b&c=d');
+ st.end();
+ });
+
+ t.test('selects properties when filter=array', function (st) {
+ st.equal(qs.stringify({ a: 'b' }, { filter: ['a'] }), 'a=b');
+ st.equal(qs.stringify({ a: 1 }, { filter: [] }), '');
+ st.equal(qs.stringify({ a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, { filter: ['a', 'b', 0, 2] }), 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3');
+ st.end();
+ });
+
+ t.test('supports custom representations when filter=function', function (st) {
+ var calls = 0;
+ var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } };
+ var filterFunc = function (prefix, value) {
+ calls++;
+ if (calls === 1) {
+ st.equal(prefix, '', 'prefix is empty');
+ st.equal(value, obj);
+ } else if (prefix === 'c') {
+ return;
+ } else if (value instanceof Date) {
+ st.equal(prefix, 'e[f]');
+ return value.getTime();
+ }
+ return value;
+ };
+
+ st.equal(qs.stringify(obj, { filter: filterFunc }), 'a=b&e%5Bf%5D=1257894000000');
+ st.equal(calls, 5);
+ st.end();
+ });
+
+ t.test('can disable uri encoding', function (st) {
+ st.equal(qs.stringify({ a: 'b' }, { encode: false }), 'a=b');
+ st.equal(qs.stringify({ a: { b: 'c' } }, { encode: false }), 'a[b]=c');
+ st.equal(qs.stringify({ a: 'b', c: null }, { strictNullHandling: true, encode: false }), 'a=b&c');
+ st.end();
+ });
+
+ t.test('can sort the keys', function (st) {
+ var sort = function (a, b) { return a.localeCompare(b); };
+ st.equal(qs.stringify({ a: 'c', z: 'y', b: 'f' }, { sort: sort }), 'a=c&b=f&z=y');
+ st.equal(qs.stringify({ a: 'c', z: { j: 'a', i: 'b' }, b: 'f' }, { sort: sort }), 'a=c&b=f&z%5Bi%5D=b&z%5Bj%5D=a');
+ st.end();
+ });
+
+ t.test('can sort the keys at depth 3 or more too', function (st) {
+ var sort = function (a, b) { return a.localeCompare(b); };
+ st.equal(qs.stringify({ a: 'a', z: { zj: {zjb: 'zjb', zja: 'zja'}, zi: {zib: 'zib', zia: 'zia'} }, b: 'b' }, { sort: sort, encode: false }), 'a=a&b=b&z[zi][zia]=zia&z[zi][zib]=zib&z[zj][zja]=zja&z[zj][zjb]=zjb');
+ st.equal(qs.stringify({ a: 'a', z: { zj: {zjb: 'zjb', zja: 'zja'}, zi: {zib: 'zib', zia: 'zia'} }, b: 'b' }, { sort: null, encode: false }), 'a=a&z[zj][zjb]=zjb&z[zj][zja]=zja&z[zi][zib]=zib&z[zi][zia]=zia&b=b');
+ st.end();
+ });
+
+ t.test('can stringify with custom encoding', function (st) {
+ st.equal(qs.stringify({ 県: '大阪府', '': ''}, {
+ encoder: function (str) {
+ if (str.length === 0) {
+ return '';
+ }
+ var buf = iconv.encode(str, 'shiftjis');
+ var result = [];
+ for (var i=0; i < buf.length; ++i) {
+ result.push(buf.readUInt8(i).toString(16));
+ }
+ return '%' + result.join('%');
+ }
+ }), '%8c%a7=%91%e5%8d%e3%95%7b&=');
+ st.end();
+ });
+
+ t.test('throws error with wrong encoder', function (st) {
+ st.throws(function () {
+ qs.stringify({}, {
+ encoder: 'string'
+ });
+ }, new TypeError('Encoder has to be a function.'));
+ st.end();
+ });
+
+ t.test('can use custom encoder for a buffer object', {
+ skip: typeof Buffer === 'undefined'
+ }, function (st) {
+ st.equal(qs.stringify({ a: new Buffer([1]) }, {
+ encoder: function (buffer) {
+ if (typeof buffer === 'string') {
+ return buffer;
+ }
+ return String.fromCharCode(buffer.readUInt8(0) + 97);
+ }
+ }), 'a=b');
+ st.end();
+ });
+});
diff --git a/server/node_modules/express/node_modules/qs/test/utils.js b/server/node_modules/express/node_modules/qs/test/utils.js
new file mode 100755
index 0000000..4a8d824
--- /dev/null
+++ b/server/node_modules/express/node_modules/qs/test/utils.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var test = require('tape');
+var utils = require('../lib/utils');
+
+test('merge()', function (t) {
+ t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key');
+ t.end();
+});
diff --git a/server/node_modules/express/node_modules/range-parser/HISTORY.md b/server/node_modules/express/node_modules/range-parser/HISTORY.md
new file mode 100755
index 0000000..5e01eef
--- /dev/null
+++ b/server/node_modules/express/node_modules/range-parser/HISTORY.md
@@ -0,0 +1,51 @@
+1.2.0 / 2016-06-01
+==================
+
+ * Add `combine` option to combine overlapping ranges
+
+1.1.0 / 2016-05-13
+==================
+
+ * Fix incorrectly returning -1 when there is at least one valid range
+ * perf: remove internal function
+
+1.0.3 / 2015-10-29
+==================
+
+ * perf: enable strict mode
+
+1.0.2 / 2014-09-08
+==================
+
+ * Support Node.js 0.6
+
+1.0.1 / 2014-09-07
+==================
+
+ * Move repository to jshttp
+
+1.0.0 / 2013-12-11
+==================
+
+ * Add repository to package.json
+ * Add MIT license
+
+0.0.4 / 2012-06-17
+==================
+
+ * Change ret -1 for unsatisfiable and -2 when invalid
+
+0.0.3 / 2012-06-17
+==================
+
+ * Fix last-byte-pos default to len - 1
+
+0.0.2 / 2012-06-14
+==================
+
+ * Add `.type`
+
+0.0.1 / 2012-06-11
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/range-parser/LICENSE b/server/node_modules/express/node_modules/range-parser/LICENSE
new file mode 100755
index 0000000..3599954
--- /dev/null
+++ b/server/node_modules/express/node_modules/range-parser/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2012-2014 TJ Holowaychuk
+Copyright (c) 2015-2016 Douglas Christopher Wilson [
+// { start: 0, end: 10 },
+// { start: 50, end: 60 }
+// ]
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/range-parser.svg
+[npm-url]: https://npmjs.org/package/range-parser
+[node-version-image]: https://img.shields.io/node/v/range-parser.svg
+[node-version-url]: https://nodejs.org/endownload
+[travis-image]: https://img.shields.io/travis/jshttp/range-parser.svg
+[travis-url]: https://travis-ci.org/jshttp/range-parser
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/range-parser.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/range-parser
+[downloads-image]: https://img.shields.io/npm/dm/range-parser.svg
+[downloads-url]: https://npmjs.org/package/range-parser
diff --git a/server/node_modules/express/node_modules/range-parser/index.js b/server/node_modules/express/node_modules/range-parser/index.js
new file mode 100755
index 0000000..83b2eb6
--- /dev/null
+++ b/server/node_modules/express/node_modules/range-parser/index.js
@@ -0,0 +1,158 @@
+/*!
+ * range-parser
+ * Copyright(c) 2012-2014 TJ Holowaychuk
+ * Copyright(c) 2015-2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = rangeParser
+
+/**
+ * Parse "Range" header `str` relative to the given file `size`.
+ *
+ * @param {Number} size
+ * @param {String} str
+ * @param {Object} [options]
+ * @return {Array}
+ * @public
+ */
+
+function rangeParser (size, str, options) {
+ var index = str.indexOf('=')
+
+ if (index === -1) {
+ return -2
+ }
+
+ // split the range string
+ var arr = str.slice(index + 1).split(',')
+ var ranges = []
+
+ // add ranges type
+ ranges.type = str.slice(0, index)
+
+ // parse all ranges
+ for (var i = 0; i < arr.length; i++) {
+ var range = arr[i].split('-')
+ var start = parseInt(range[0], 10)
+ var end = parseInt(range[1], 10)
+
+ // -nnn
+ if (isNaN(start)) {
+ start = size - end
+ end = size - 1
+ // nnn-
+ } else if (isNaN(end)) {
+ end = size - 1
+ }
+
+ // limit last-byte-pos to current length
+ if (end > size - 1) {
+ end = size - 1
+ }
+
+ // invalid or unsatisifiable
+ if (isNaN(start) || isNaN(end) || start > end || start < 0) {
+ continue
+ }
+
+ // add range
+ ranges.push({
+ start: start,
+ end: end
+ })
+ }
+
+ if (ranges.length < 1) {
+ // unsatisifiable
+ return -1
+ }
+
+ return options && options.combine
+ ? combineRanges(ranges)
+ : ranges
+}
+
+/**
+ * Combine overlapping & adjacent ranges.
+ * @private
+ */
+
+function combineRanges (ranges) {
+ var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart)
+
+ for (var j = 0, i = 1; i < ordered.length; i++) {
+ var range = ordered[i]
+ var current = ordered[j]
+
+ if (range.start > current.end + 1) {
+ // next range
+ ordered[++j] = range
+ } else if (range.end > current.end) {
+ // extend range
+ current.end = range.end
+ current.index = Math.min(current.index, range.index)
+ }
+ }
+
+ // trim ordered array
+ ordered.length = j + 1
+
+ // generate combined range
+ var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex)
+
+ // copy ranges type
+ combined.type = ranges.type
+
+ return combined
+}
+
+/**
+ * Map function to add index value to ranges.
+ * @private
+ */
+
+function mapWithIndex (range, index) {
+ return {
+ start: range.start,
+ end: range.end,
+ index: index
+ }
+}
+
+/**
+ * Map function to remove index value from ranges.
+ * @private
+ */
+
+function mapWithoutIndex (range) {
+ return {
+ start: range.start,
+ end: range.end
+ }
+}
+
+/**
+ * Sort function to sort ranges by index.
+ * @private
+ */
+
+function sortByRangeIndex (a, b) {
+ return a.index - b.index
+}
+
+/**
+ * Sort function to sort ranges by start position.
+ * @private
+ */
+
+function sortByRangeStart (a, b) {
+ return a.start - b.start
+}
diff --git a/server/node_modules/express/node_modules/range-parser/package.json b/server/node_modules/express/node_modules/range-parser/package.json
new file mode 100755
index 0000000..d7e8dea
--- /dev/null
+++ b/server/node_modules/express/node_modules/range-parser/package.json
@@ -0,0 +1,98 @@
+{
+ "name": "range-parser",
+ "author": {
+ "name": "TJ Holowaychuk",
+ "email": "tj@vision-media.ca",
+ "url": "http://tjholowaychuk.com"
+ },
+ "description": "Range header field string parser",
+ "version": "1.2.0",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "James Wyatt Cready",
+ "email": "wyatt.cready@lanetix.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "range",
+ "parser",
+ "http"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jshttp/range-parser"
+ },
+ "devDependencies": {
+ "eslint": "2.11.1",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.1.0",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "lint": "eslint **/*.js",
+ "test": "mocha --reporter spec",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
+ },
+ "gitHead": "0665aca31639d799dee1d35fb10970799559ec48",
+ "bugs": {
+ "url": "https://github.com/jshttp/range-parser/issues"
+ },
+ "homepage": "https://github.com/jshttp/range-parser",
+ "_id": "range-parser@1.2.0",
+ "_shasum": "f49be6b487894ddc40dcc94a322f611092e00d5e",
+ "_from": "range-parser@>=1.2.0 <1.3.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jonathanong",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ }
+ ],
+ "dist": {
+ "shasum": "f49be6b487894ddc40dcc94a322f611092e00d5e",
+ "tarball": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/range-parser-1.2.0.tgz_1464803293097_0.6830497414339334"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/send/HISTORY.md b/server/node_modules/express/node_modules/send/HISTORY.md
new file mode 100755
index 0000000..f30e345
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/HISTORY.md
@@ -0,0 +1,346 @@
+0.14.1 / 2016-06-09
+===================
+
+ * Fix redirect error when `path` contains raw non-URL characters
+ * Fix redirect when `path` starts with multiple forward slashes
+
+0.14.0 / 2016-06-06
+===================
+
+ * Add `acceptRanges` option
+ * Add `cacheControl` option
+ * Attempt to combine multiple ranges into single range
+ * Correctly inherit from `Stream` class
+ * Fix `Content-Range` header in 416 responses when using `start`/`end` options
+ * Fix `Content-Range` header missing from default 416 responses
+ * Ignore non-byte `Range` headers
+ * deps: http-errors@~1.5.0
+ - Add `HttpError` export, for `err instanceof createError.HttpError`
+ - Support new code `421 Misdirected Request`
+ - Use `setprototypeof` module to replace `__proto__` setting
+ - deps: inherits@2.0.1
+ - deps: statuses@'>= 1.3.0 < 2'
+ - perf: enable strict mode
+ * deps: range-parser@~1.2.0
+ - Fix incorrectly returning -1 when there is at least one valid range
+ - perf: remove internal function
+ * deps: statuses@~1.3.0
+ - Add `421 Misdirected Request`
+ - perf: enable strict mode
+ * perf: remove argument reassignment
+
+0.13.2 / 2016-03-05
+===================
+
+ * Fix invalid `Content-Type` header when `send.mime.default_type` unset
+
+0.13.1 / 2016-01-16
+===================
+
+ * deps: depd@~1.1.0
+ - Support web browser loading
+ - perf: enable strict mode
+ * deps: destroy@~1.0.4
+ - perf: enable strict mode
+ * deps: escape-html@~1.0.3
+ - perf: enable strict mode
+ - perf: optimize string replacement
+ - perf: use faster string coercion
+ * deps: range-parser@~1.0.3
+ - perf: enable strict mode
+
+0.13.0 / 2015-06-16
+===================
+
+ * Allow Node.js HTTP server to set `Date` response header
+ * Fix incorrectly removing `Content-Location` on 304 response
+ * Improve the default redirect response headers
+ * Send appropriate headers on default error response
+ * Use `http-errors` for standard emitted errors
+ * Use `statuses` instead of `http` module for status messages
+ * deps: escape-html@1.0.2
+ * deps: etag@~1.7.0
+ - Improve stat performance by removing hashing
+ * deps: fresh@0.3.0
+ - Add weak `ETag` matching support
+ * deps: on-finished@~2.3.0
+ - Add defined behavior for HTTP `CONNECT` requests
+ - Add defined behavior for HTTP `Upgrade` requests
+ - deps: ee-first@1.1.1
+ * perf: enable strict mode
+ * perf: remove unnecessary array allocations
+
+0.12.3 / 2015-05-13
+===================
+
+ * deps: debug@~2.2.0
+ - deps: ms@0.7.1
+ * deps: depd@~1.0.1
+ * deps: etag@~1.6.0
+ - Improve support for JXcore
+ - Support "fake" stats objects in environments without `fs`
+ * deps: ms@0.7.1
+ - Prevent extraordinarily long inputs
+ * deps: on-finished@~2.2.1
+
+0.12.2 / 2015-03-13
+===================
+
+ * Throw errors early for invalid `extensions` or `index` options
+ * deps: debug@~2.1.3
+ - Fix high intensity foreground color for bold
+ - deps: ms@0.7.0
+
+0.12.1 / 2015-02-17
+===================
+
+ * Fix regression sending zero-length files
+
+0.12.0 / 2015-02-16
+===================
+
+ * Always read the stat size from the file
+ * Fix mutating passed-in `options`
+ * deps: mime@1.3.4
+
+0.11.1 / 2015-01-20
+===================
+
+ * Fix `root` path disclosure
+
+0.11.0 / 2015-01-05
+===================
+
+ * deps: debug@~2.1.1
+ * deps: etag@~1.5.1
+ - deps: crc@3.2.1
+ * deps: ms@0.7.0
+ - Add `milliseconds`
+ - Add `msecs`
+ - Add `secs`
+ - Add `mins`
+ - Add `hrs`
+ - Add `yrs`
+ * deps: on-finished@~2.2.0
+
+0.10.1 / 2014-10-22
+===================
+
+ * deps: on-finished@~2.1.1
+ - Fix handling of pipelined requests
+
+0.10.0 / 2014-10-15
+===================
+
+ * deps: debug@~2.1.0
+ - Implement `DEBUG_FD` env variable support
+ * deps: depd@~1.0.0
+ * deps: etag@~1.5.0
+ - Improve string performance
+ - Slightly improve speed for weak ETags over 1KB
+
+0.9.3 / 2014-09-24
+==================
+
+ * deps: etag@~1.4.0
+ - Support "fake" stats objects
+
+0.9.2 / 2014-09-15
+==================
+
+ * deps: depd@0.4.5
+ * deps: etag@~1.3.1
+ * deps: range-parser@~1.0.2
+
+0.9.1 / 2014-09-07
+==================
+
+ * deps: fresh@0.2.4
+
+0.9.0 / 2014-09-07
+==================
+
+ * Add `lastModified` option
+ * Use `etag` to generate `ETag` header
+ * deps: debug@~2.0.0
+
+0.8.5 / 2014-09-04
+==================
+
+ * Fix malicious path detection for empty string path
+
+0.8.4 / 2014-09-04
+==================
+
+ * Fix a path traversal issue when using `root`
+
+0.8.3 / 2014-08-16
+==================
+
+ * deps: destroy@1.0.3
+ - renamed from dethroy
+ * deps: on-finished@2.1.0
+
+0.8.2 / 2014-08-14
+==================
+
+ * Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
+ * deps: dethroy@1.0.2
+
+0.8.1 / 2014-08-05
+==================
+
+ * Fix `extensions` behavior when file already has extension
+
+0.8.0 / 2014-08-05
+==================
+
+ * Add `extensions` option
+
+0.7.4 / 2014-08-04
+==================
+
+ * Fix serving index files without root dir
+
+0.7.3 / 2014-07-29
+==================
+
+ * Fix incorrect 403 on Windows and Node.js 0.11
+
+0.7.2 / 2014-07-27
+==================
+
+ * deps: depd@0.4.4
+ - Work-around v8 generating empty stack traces
+
+0.7.1 / 2014-07-26
+==================
+
+ * deps: depd@0.4.3
+ - Fix exception when global `Error.stackTraceLimit` is too low
+
+0.7.0 / 2014-07-20
+==================
+
+ * Deprecate `hidden` option; use `dotfiles` option
+ * Add `dotfiles` option
+ * deps: debug@1.0.4
+ * deps: depd@0.4.2
+ - Add `TRACE_DEPRECATION` environment variable
+ - Remove non-standard grey color from color output
+ - Support `--no-deprecation` argument
+ - Support `--trace-deprecation` argument
+
+0.6.0 / 2014-07-11
+==================
+
+ * Deprecate `from` option; use `root` option
+ * Deprecate `send.etag()` -- use `etag` in `options`
+ * Deprecate `send.hidden()` -- use `hidden` in `options`
+ * Deprecate `send.index()` -- use `index` in `options`
+ * Deprecate `send.maxage()` -- use `maxAge` in `options`
+ * Deprecate `send.root()` -- use `root` in `options`
+ * Cap `maxAge` value to 1 year
+ * deps: debug@1.0.3
+ - Add support for multiple wildcards in namespaces
+
+0.5.0 / 2014-06-28
+==================
+
+ * Accept string for `maxAge` (converted by `ms`)
+ * Add `headers` event
+ * Include link in default redirect response
+ * Use `EventEmitter.listenerCount` to count listeners
+
+0.4.3 / 2014-06-11
+==================
+
+ * Do not throw un-catchable error on file open race condition
+ * Use `escape-html` for HTML escaping
+ * deps: debug@1.0.2
+ - fix some debugging output colors on node.js 0.8
+ * deps: finished@1.2.2
+ * deps: fresh@0.2.2
+
+0.4.2 / 2014-06-09
+==================
+
+ * fix "event emitter leak" warnings
+ * deps: debug@1.0.1
+ * deps: finished@1.2.1
+
+0.4.1 / 2014-06-02
+==================
+
+ * Send `max-age` in `Cache-Control` in correct format
+
+0.4.0 / 2014-05-27
+==================
+
+ * Calculate ETag with md5 for reduced collisions
+ * Fix wrong behavior when index file matches directory
+ * Ignore stream errors after request ends
+ - Goodbye `EBADF, read`
+ * Skip directories in index file search
+ * deps: debug@0.8.1
+
+0.3.0 / 2014-04-24
+==================
+
+ * Fix sending files with dots without root set
+ * Coerce option types
+ * Accept API options in options object
+ * Set etags to "weak"
+ * Include file path in etag
+ * Make "Can't set headers after they are sent." catchable
+ * Send full entity-body for multi range requests
+ * Default directory access to 403 when index disabled
+ * Support multiple index paths
+ * Support "If-Range" header
+ * Control whether to generate etags
+ * deps: mime@1.2.11
+
+0.2.0 / 2014-01-29
+==================
+
+ * update range-parser and fresh
+
+0.1.4 / 2013-08-11
+==================
+
+ * update fresh
+
+0.1.3 / 2013-07-08
+==================
+
+ * Revert "Fix fd leak"
+
+0.1.2 / 2013-07-03
+==================
+
+ * Fix fd leak
+
+0.1.0 / 2012-08-25
+==================
+
+ * add options parameter to send() that is passed to fs.createReadStream() [kanongil]
+
+0.0.4 / 2012-08-16
+==================
+
+ * allow custom "Accept-Ranges" definition
+
+0.0.3 / 2012-07-16
+==================
+
+ * fix normalization of the root directory. Closes #3
+
+0.0.2 / 2012-07-09
+==================
+
+ * add passing of req explicitly for now (YUCK)
+
+0.0.1 / 2010-01-03
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/send/LICENSE b/server/node_modules/express/node_modules/send/LICENSE
new file mode 100755
index 0000000..4aa69e8
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2012 TJ Holowaychuk
+Copyright (c) 2014-2016 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/send/README.md b/server/node_modules/express/node_modules/send/README.md
new file mode 100755
index 0000000..4167926
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/README.md
@@ -0,0 +1,247 @@
+# send
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Linux Build][travis-image]][travis-url]
+[![Windows Build][appveyor-image]][appveyor-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+[![Gratipay][gratipay-image]][gratipay-url]
+
+Send is a library for streaming files from the file system as a http response
+supporting partial responses (Ranges), conditional-GET negotiation, high test
+coverage, and granular events which may be leveraged to take appropriate actions
+in your application or framework.
+
+Looking to serve up entire folders mapped to URLs? Try [serve-static](https://www.npmjs.org/package/serve-static).
+
+## Installation
+
+```bash
+$ npm install send
+```
+
+## API
+
+```js
+var send = require('send')
+```
+
+### send(req, path, [options])
+
+Create a new `SendStream` for the given path to send to a `res`. The `req` is
+the Node.js HTTP request and the `path` is a urlencoded path to send (urlencoded,
+not the actual file-system path).
+
+#### Options
+
+##### acceptRanges
+
+Enable or disable accepting ranged requests, defaults to true.
+Disabling this will not send `Accept-Ranges` and ignore the contents
+of the `Range` request header.
+
+##### cacheControl
+
+Enable or disable setting `Cache-Control` response header, defaults to
+true. Disabling this will ignore the `maxAge` option.
+
+##### dotfiles
+
+Set how "dotfiles" are treated when encountered. A dotfile is a file
+or directory that begins with a dot ("."). Note this check is done on
+the path itself without checking if the path actually exists on the
+disk. If `root` is specified, only the dotfiles above the root are
+checked (i.e. the root itself can be within a dotfile when when set
+to "deny").
+
+ - `'allow'` No special treatment for dotfiles.
+ - `'deny'` Send a 403 for any request for a dotfile.
+ - `'ignore'` Pretend like the dotfile does not exist and 404.
+
+The default value is _similar_ to `'ignore'`, with the exception that
+this default will not ignore the files within a directory that begins
+with a dot, for backward-compatibility.
+
+##### end
+
+Byte offset at which the stream ends, defaults to the length of the file
+minus 1. The end is inclusive in the stream, meaning `end: 3` will include
+the 4th byte in the stream.
+
+##### etag
+
+Enable or disable etag generation, defaults to true.
+
+##### extensions
+
+If a given file doesn't exist, try appending one of the given extensions,
+in the given order. By default, this is disabled (set to `false`). An
+example value that will serve extension-less HTML files: `['html', 'htm']`.
+This is skipped if the requested file already has an extension.
+
+##### index
+
+By default send supports "index.html" files, to disable this
+set `false` or to supply a new index pass a string or an array
+in preferred order.
+
+##### lastModified
+
+Enable or disable `Last-Modified` header, defaults to true. Uses the file
+system's last modified value.
+
+##### maxAge
+
+Provide a max-age in milliseconds for http caching, defaults to 0.
+This can also be a string accepted by the
+[ms](https://www.npmjs.org/package/ms#readme) module.
+
+##### root
+
+Serve files relative to `path`.
+
+##### start
+
+Byte offset at which the stream starts, defaults to 0. The start is inclusive,
+meaning `start: 2` will include the 3rd byte in the stream.
+
+#### Events
+
+The `SendStream` is an event emitter and will emit the following events:
+
+ - `error` an error occurred `(err)`
+ - `directory` a directory was requested
+ - `file` a file was requested `(path, stat)`
+ - `headers` the headers are about to be set on a file `(res, path, stat)`
+ - `stream` file streaming has started `(stream)`
+ - `end` streaming has completed
+
+#### .pipe
+
+The `pipe` method is used to pipe the response into the Node.js HTTP response
+object, typically `send(req, path, options).pipe(res)`.
+
+### .mime
+
+The `mime` export is the global instance of of the
+[`mime` npm module](https://www.npmjs.com/package/mime).
+
+This is used to configure the MIME types that are associated with file extensions
+as well as other options for how to resolve the MIME type of a file (like the
+default type to use for an unknown file extension).
+
+## Error-handling
+
+By default when no `error` listeners are present an automatic response will be
+made, otherwise you have full control over the response, aka you may show a 5xx
+page etc.
+
+## Caching
+
+It does _not_ perform internal caching, you should use a reverse proxy cache
+such as Varnish for this, or those fancy things called CDNs. If your
+application is small enough that it would benefit from single-node memory
+caching, it's small enough that it does not need caching at all ;).
+
+## Debugging
+
+To enable `debug()` instrumentation output export __DEBUG__:
+
+```
+$ DEBUG=send node app
+```
+
+## Running tests
+
+```
+$ npm install
+$ npm test
+```
+
+## Examples
+
+### Small example
+
+```js
+var http = require('http')
+var parseUrl = require('parseurl')
+var send = require('send')
+
+var app = http.createServer(function onRequest (req, res) {
+ send(req, parseUrl(req).pathname).pipe(res)
+}).listen(3000)
+```
+
+### Custom file types
+
+```js
+var http = require('http')
+var parseUrl = require('parseurl')
+var send = require('send')
+
+// Default unknown types to text/plain
+send.mime.default_type = 'text/plain'
+
+// Add a custom type
+send.mime.define({
+ 'application/x-my-type': ['x-mt', 'x-mtt']
+})
+
+var app = http.createServer(function onRequest (req, res) {
+ send(req, parseUrl(req).pathname).pipe(res)
+}).listen(3000)
+```
+
+### Serving from a root directory with custom error-handling
+
+```js
+var http = require('http')
+var parseUrl = require('parseurl')
+var send = require('send')
+
+var app = http.createServer(function onRequest (req, res) {
+ // your custom error-handling logic:
+ function error (err) {
+ res.statusCode = err.status || 500
+ res.end(err.message)
+ }
+
+ // your custom headers
+ function headers (res, path, stat) {
+ // serve all files for download
+ res.setHeader('Content-Disposition', 'attachment')
+ }
+
+ // your custom directory handling logic:
+ function redirect () {
+ res.statusCode = 301
+ res.setHeader('Location', req.url + '/')
+ res.end('Redirecting to ' + req.url + '/')
+ }
+
+ // transfer arbitrary files from within
+ // /www/example.com/public/*
+ send(req, parseUrl(req).pathname, {root: '/www/example.com/public'})
+ .on('error', error)
+ .on('directory', redirect)
+ .on('headers', headers)
+ .pipe(res);
+}).listen(3000)
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/send.svg
+[npm-url]: https://npmjs.org/package/send
+[travis-image]: https://img.shields.io/travis/pillarjs/send/master.svg?label=linux
+[travis-url]: https://travis-ci.org/pillarjs/send
+[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/send/master.svg?label=windows
+[appveyor-url]: https://ci.appveyor.com/project/dougwilson/send
+[coveralls-image]: https://img.shields.io/coveralls/pillarjs/send/master.svg
+[coveralls-url]: https://coveralls.io/r/pillarjs/send?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/send.svg
+[downloads-url]: https://npmjs.org/package/send
+[gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg
+[gratipay-url]: https://www.gratipay.com/dougwilson/
diff --git a/server/node_modules/express/node_modules/send/index.js b/server/node_modules/express/node_modules/send/index.js
new file mode 100755
index 0000000..81ec0b3
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/index.js
@@ -0,0 +1,948 @@
+/*!
+ * send
+ * Copyright(c) 2012 TJ Holowaychuk
+ * Copyright(c) 2014-2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var createError = require('http-errors')
+var debug = require('debug')('send')
+var deprecate = require('depd')('send')
+var destroy = require('destroy')
+var encodeUrl = require('encodeurl')
+var escapeHtml = require('escape-html')
+var etag = require('etag')
+var EventEmitter = require('events').EventEmitter
+var fresh = require('fresh')
+var fs = require('fs')
+var mime = require('mime')
+var ms = require('ms')
+var onFinished = require('on-finished')
+var parseRange = require('range-parser')
+var path = require('path')
+var statuses = require('statuses')
+var Stream = require('stream')
+var util = require('util')
+
+/**
+ * Path function references.
+ * @private
+ */
+
+var extname = path.extname
+var join = path.join
+var normalize = path.normalize
+var resolve = path.resolve
+var sep = path.sep
+
+/**
+ * Regular expression for identifying a bytes Range header.
+ * @private
+ */
+
+var BYTES_RANGE_REGEXP = /^ *bytes=/
+
+/**
+ * Maximum value allowed for the max age.
+ * @private
+ */
+
+var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year
+
+/**
+ * Regular expression to match a path with a directory up component.
+ * @private
+ */
+
+var UP_PATH_REGEXP = /(?:^|[\\\/])\.\.(?:[\\\/]|$)/
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = send
+module.exports.mime = mime
+
+/**
+ * Shim EventEmitter.listenerCount for node.js < 0.10
+ */
+
+/* istanbul ignore next */
+var listenerCount = EventEmitter.listenerCount ||
+ function (emitter, type) { return emitter.listeners(type).length }
+
+/**
+ * Return a `SendStream` for `req` and `path`.
+ *
+ * @param {object} req
+ * @param {string} path
+ * @param {object} [options]
+ * @return {SendStream}
+ * @public
+ */
+
+function send (req, path, options) {
+ return new SendStream(req, path, options)
+}
+
+/**
+ * Initialize a `SendStream` with the given `path`.
+ *
+ * @param {Request} req
+ * @param {String} path
+ * @param {object} [options]
+ * @private
+ */
+
+function SendStream (req, path, options) {
+ Stream.call(this)
+
+ var opts = options || {}
+
+ this.options = opts
+ this.path = path
+ this.req = req
+
+ this._acceptRanges = opts.acceptRanges !== undefined
+ ? Boolean(opts.acceptRanges)
+ : true
+
+ this._cacheControl = opts.cacheControl !== undefined
+ ? Boolean(opts.cacheControl)
+ : true
+
+ this._etag = opts.etag !== undefined
+ ? Boolean(opts.etag)
+ : true
+
+ this._dotfiles = opts.dotfiles !== undefined
+ ? opts.dotfiles
+ : 'ignore'
+
+ if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') {
+ throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"')
+ }
+
+ this._hidden = Boolean(opts.hidden)
+
+ if (opts.hidden !== undefined) {
+ deprecate('hidden: use dotfiles: \'' + (this._hidden ? 'allow' : 'ignore') + '\' instead')
+ }
+
+ // legacy support
+ if (opts.dotfiles === undefined) {
+ this._dotfiles = undefined
+ }
+
+ this._extensions = opts.extensions !== undefined
+ ? normalizeList(opts.extensions, 'extensions option')
+ : []
+
+ this._index = opts.index !== undefined
+ ? normalizeList(opts.index, 'index option')
+ : ['index.html']
+
+ this._lastModified = opts.lastModified !== undefined
+ ? Boolean(opts.lastModified)
+ : true
+
+ this._maxage = opts.maxAge || opts.maxage
+ this._maxage = typeof this._maxage === 'string'
+ ? ms(this._maxage)
+ : Number(this._maxage)
+ this._maxage = !isNaN(this._maxage)
+ ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)
+ : 0
+
+ this._root = opts.root
+ ? resolve(opts.root)
+ : null
+
+ if (!this._root && opts.from) {
+ this.from(opts.from)
+ }
+}
+
+/**
+ * Inherits from `Stream`.
+ */
+
+util.inherits(SendStream, Stream)
+
+/**
+ * Enable or disable etag generation.
+ *
+ * @param {Boolean} val
+ * @return {SendStream}
+ * @api public
+ */
+
+SendStream.prototype.etag = deprecate.function(function etag (val) {
+ this._etag = Boolean(val)
+ debug('etag %s', this._etag)
+ return this
+}, 'send.etag: pass etag as option')
+
+/**
+ * Enable or disable "hidden" (dot) files.
+ *
+ * @param {Boolean} path
+ * @return {SendStream}
+ * @api public
+ */
+
+SendStream.prototype.hidden = deprecate.function(function hidden (val) {
+ this._hidden = Boolean(val)
+ this._dotfiles = undefined
+ debug('hidden %s', this._hidden)
+ return this
+}, 'send.hidden: use dotfiles option')
+
+/**
+ * Set index `paths`, set to a falsy
+ * value to disable index support.
+ *
+ * @param {String|Boolean|Array} paths
+ * @return {SendStream}
+ * @api public
+ */
+
+SendStream.prototype.index = deprecate.function(function index (paths) {
+ var index = !paths ? [] : normalizeList(paths, 'paths argument')
+ debug('index %o', paths)
+ this._index = index
+ return this
+}, 'send.index: pass index as option')
+
+/**
+ * Set root `path`.
+ *
+ * @param {String} path
+ * @return {SendStream}
+ * @api public
+ */
+
+SendStream.prototype.root = function root (path) {
+ this._root = resolve(String(path))
+ debug('root %s', this._root)
+ return this
+}
+
+SendStream.prototype.from = deprecate.function(SendStream.prototype.root,
+ 'send.from: pass root as option')
+
+SendStream.prototype.root = deprecate.function(SendStream.prototype.root,
+ 'send.root: pass root as option')
+
+/**
+ * Set max-age to `maxAge`.
+ *
+ * @param {Number} maxAge
+ * @return {SendStream}
+ * @api public
+ */
+
+SendStream.prototype.maxage = deprecate.function(function maxage (maxAge) {
+ this._maxage = typeof maxAge === 'string'
+ ? ms(maxAge)
+ : Number(maxAge)
+ this._maxage = !isNaN(this._maxage)
+ ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)
+ : 0
+ debug('max-age %d', this._maxage)
+ return this
+}, 'send.maxage: pass maxAge as option')
+
+/**
+ * Emit error with `status`.
+ *
+ * @param {number} status
+ * @param {Error} [error]
+ * @private
+ */
+
+SendStream.prototype.error = function error (status, error) {
+ // emit if listeners instead of responding
+ if (listenerCount(this, 'error') !== 0) {
+ return this.emit('error', createError(error, status, {
+ expose: false
+ }))
+ }
+
+ var res = this.res
+ var msg = statuses[status]
+
+ // clear existing headers
+ clearHeaders(res)
+
+ // add error headers
+ if (error && error.headers) {
+ setHeaders(res, error.headers)
+ }
+
+ // send basic response
+ res.statusCode = status
+ res.setHeader('Content-Type', 'text/plain; charset=UTF-8')
+ res.setHeader('Content-Length', Buffer.byteLength(msg))
+ res.setHeader('X-Content-Type-Options', 'nosniff')
+ res.end(msg)
+}
+
+/**
+ * Check if the pathname ends with "/".
+ *
+ * @return {Boolean}
+ * @api private
+ */
+
+SendStream.prototype.hasTrailingSlash = function hasTrailingSlash () {
+ return this.path[this.path.length - 1] === '/'
+}
+
+/**
+ * Check if this is a conditional GET request.
+ *
+ * @return {Boolean}
+ * @api private
+ */
+
+SendStream.prototype.isConditionalGET = function isConditionalGET () {
+ return this.req.headers['if-none-match'] ||
+ this.req.headers['if-modified-since']
+}
+
+/**
+ * Strip content-* header fields.
+ *
+ * @private
+ */
+
+SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () {
+ var res = this.res
+ var headers = Object.keys(res._headers || {})
+
+ for (var i = 0; i < headers.length; i++) {
+ var header = headers[i]
+ if (header.substr(0, 8) === 'content-' && header !== 'content-location') {
+ res.removeHeader(header)
+ }
+ }
+}
+
+/**
+ * Respond with 304 not modified.
+ *
+ * @api private
+ */
+
+SendStream.prototype.notModified = function notModified () {
+ var res = this.res
+ debug('not modified')
+ this.removeContentHeaderFields()
+ res.statusCode = 304
+ res.end()
+}
+
+/**
+ * Raise error that headers already sent.
+ *
+ * @api private
+ */
+
+SendStream.prototype.headersAlreadySent = function headersAlreadySent () {
+ var err = new Error('Can\'t set headers after they are sent.')
+ debug('headers already sent')
+ this.error(500, err)
+}
+
+/**
+ * Check if the request is cacheable, aka
+ * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}).
+ *
+ * @return {Boolean}
+ * @api private
+ */
+
+SendStream.prototype.isCachable = function isCachable () {
+ var statusCode = this.res.statusCode
+ return (statusCode >= 200 && statusCode < 300) ||
+ statusCode === 304
+}
+
+/**
+ * Handle stat() error.
+ *
+ * @param {Error} error
+ * @private
+ */
+
+SendStream.prototype.onStatError = function onStatError (error) {
+ switch (error.code) {
+ case 'ENAMETOOLONG':
+ case 'ENOENT':
+ case 'ENOTDIR':
+ this.error(404, error)
+ break
+ default:
+ this.error(500, error)
+ break
+ }
+}
+
+/**
+ * Check if the cache is fresh.
+ *
+ * @return {Boolean}
+ * @api private
+ */
+
+SendStream.prototype.isFresh = function isFresh () {
+ return fresh(this.req.headers, this.res._headers)
+}
+
+/**
+ * Check if the range is fresh.
+ *
+ * @return {Boolean}
+ * @api private
+ */
+
+SendStream.prototype.isRangeFresh = function isRangeFresh () {
+ var ifRange = this.req.headers['if-range']
+
+ if (!ifRange) {
+ return true
+ }
+
+ return ~ifRange.indexOf('"')
+ ? ~ifRange.indexOf(this.res._headers['etag'])
+ : Date.parse(this.res._headers['last-modified']) <= Date.parse(ifRange)
+}
+
+/**
+ * Redirect to path.
+ *
+ * @param {string} path
+ * @private
+ */
+
+SendStream.prototype.redirect = function redirect (path) {
+ if (listenerCount(this, 'directory') !== 0) {
+ this.emit('directory')
+ return
+ }
+
+ if (this.hasTrailingSlash()) {
+ this.error(403)
+ return
+ }
+
+ var loc = encodeUrl(collapseLeadingSlashes(path + '/'))
+ var msg = 'Redirecting to ' + escapeHtml(loc) + ' \n'
+ var res = this.res
+
+ // redirect
+ res.statusCode = 301
+ res.setHeader('Content-Type', 'text/html; charset=UTF-8')
+ res.setHeader('Content-Length', Buffer.byteLength(msg))
+ res.setHeader('X-Content-Type-Options', 'nosniff')
+ res.setHeader('Location', loc)
+ res.end(msg)
+}
+
+/**
+ * Pipe to `res.
+ *
+ * @param {Stream} res
+ * @return {Stream} res
+ * @api public
+ */
+
+SendStream.prototype.pipe = function pipe (res) {
+ // root path
+ var root = this._root
+
+ // references
+ this.res = res
+
+ // decode the path
+ var path = decode(this.path)
+ if (path === -1) {
+ this.error(400)
+ return res
+ }
+
+ // null byte(s)
+ if (~path.indexOf('\0')) {
+ this.error(400)
+ return res
+ }
+
+ var parts
+ if (root !== null) {
+ // malicious path
+ if (UP_PATH_REGEXP.test(normalize('.' + sep + path))) {
+ debug('malicious path "%s"', path)
+ this.error(403)
+ return res
+ }
+
+ // join / normalize from optional root dir
+ path = normalize(join(root, path))
+ root = normalize(root + sep)
+
+ // explode path parts
+ parts = path.substr(root.length).split(sep)
+ } else {
+ // ".." is malicious without "root"
+ if (UP_PATH_REGEXP.test(path)) {
+ debug('malicious path "%s"', path)
+ this.error(403)
+ return res
+ }
+
+ // explode path parts
+ parts = normalize(path).split(sep)
+
+ // resolve the path
+ path = resolve(path)
+ }
+
+ // dotfile handling
+ if (containsDotFile(parts)) {
+ var access = this._dotfiles
+
+ // legacy support
+ if (access === undefined) {
+ access = parts[parts.length - 1][0] === '.'
+ ? (this._hidden ? 'allow' : 'ignore')
+ : 'allow'
+ }
+
+ debug('%s dotfile "%s"', access, path)
+ switch (access) {
+ case 'allow':
+ break
+ case 'deny':
+ this.error(403)
+ return res
+ case 'ignore':
+ default:
+ this.error(404)
+ return res
+ }
+ }
+
+ // index file support
+ if (this._index.length && this.path[this.path.length - 1] === '/') {
+ this.sendIndex(path)
+ return res
+ }
+
+ this.sendFile(path)
+ return res
+}
+
+/**
+ * Transfer `path`.
+ *
+ * @param {String} path
+ * @api public
+ */
+
+SendStream.prototype.send = function send (path, stat) {
+ var len = stat.size
+ var options = this.options
+ var opts = {}
+ var res = this.res
+ var req = this.req
+ var ranges = req.headers.range
+ var offset = options.start || 0
+
+ if (res._header) {
+ // impossible to send now
+ this.headersAlreadySent()
+ return
+ }
+
+ debug('pipe "%s"', path)
+
+ // set header fields
+ this.setHeader(path, stat)
+
+ // set content-type
+ this.type(path)
+
+ // conditional GET support
+ if (this.isConditionalGET() && this.isCachable() && this.isFresh()) {
+ this.notModified()
+ return
+ }
+
+ // adjust len to start/end options
+ len = Math.max(0, len - offset)
+ if (options.end !== undefined) {
+ var bytes = options.end - offset + 1
+ if (len > bytes) len = bytes
+ }
+
+ // Range support
+ if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) {
+ // parse
+ ranges = parseRange(len, ranges, {
+ combine: true
+ })
+
+ // If-Range support
+ if (!this.isRangeFresh()) {
+ debug('range stale')
+ ranges = -2
+ }
+
+ // unsatisfiable
+ if (ranges === -1) {
+ debug('range unsatisfiable')
+
+ // Content-Range
+ res.setHeader('Content-Range', contentRange('bytes', len))
+
+ // 416 Requested Range Not Satisfiable
+ return this.error(416, {
+ headers: {'Content-Range': res.getHeader('Content-Range')}
+ })
+ }
+
+ // valid (syntactically invalid/multiple ranges are treated as a regular response)
+ if (ranges !== -2 && ranges.length === 1) {
+ debug('range %j', ranges)
+
+ // Content-Range
+ res.statusCode = 206
+ res.setHeader('Content-Range', contentRange('bytes', len, ranges[0]))
+
+ // adjust for requested range
+ offset += ranges[0].start
+ len = ranges[0].end - ranges[0].start + 1
+ }
+ }
+
+ // clone options
+ for (var prop in options) {
+ opts[prop] = options[prop]
+ }
+
+ // set read options
+ opts.start = offset
+ opts.end = Math.max(offset, offset + len - 1)
+
+ // content-length
+ res.setHeader('Content-Length', len)
+
+ // HEAD support
+ if (req.method === 'HEAD') {
+ res.end()
+ return
+ }
+
+ this.stream(path, opts)
+}
+
+/**
+ * Transfer file for `path`.
+ *
+ * @param {String} path
+ * @api private
+ */
+SendStream.prototype.sendFile = function sendFile (path) {
+ var i = 0
+ var self = this
+
+ debug('stat "%s"', path)
+ fs.stat(path, function onstat (err, stat) {
+ if (err && err.code === 'ENOENT' && !extname(path) && path[path.length - 1] !== sep) {
+ // not found, check extensions
+ return next(err)
+ }
+ if (err) return self.onStatError(err)
+ if (stat.isDirectory()) return self.redirect(self.path)
+ self.emit('file', path, stat)
+ self.send(path, stat)
+ })
+
+ function next (err) {
+ if (self._extensions.length <= i) {
+ return err
+ ? self.onStatError(err)
+ : self.error(404)
+ }
+
+ var p = path + '.' + self._extensions[i++]
+
+ debug('stat "%s"', p)
+ fs.stat(p, function (err, stat) {
+ if (err) return next(err)
+ if (stat.isDirectory()) return next()
+ self.emit('file', p, stat)
+ self.send(p, stat)
+ })
+ }
+}
+
+/**
+ * Transfer index for `path`.
+ *
+ * @param {String} path
+ * @api private
+ */
+SendStream.prototype.sendIndex = function sendIndex (path) {
+ var i = -1
+ var self = this
+
+ function next (err) {
+ if (++i >= self._index.length) {
+ if (err) return self.onStatError(err)
+ return self.error(404)
+ }
+
+ var p = join(path, self._index[i])
+
+ debug('stat "%s"', p)
+ fs.stat(p, function (err, stat) {
+ if (err) return next(err)
+ if (stat.isDirectory()) return next()
+ self.emit('file', p, stat)
+ self.send(p, stat)
+ })
+ }
+
+ next()
+}
+
+/**
+ * Stream `path` to the response.
+ *
+ * @param {String} path
+ * @param {Object} options
+ * @api private
+ */
+
+SendStream.prototype.stream = function stream (path, options) {
+ // TODO: this is all lame, refactor meeee
+ var finished = false
+ var self = this
+ var res = this.res
+
+ // pipe
+ var stream = fs.createReadStream(path, options)
+ this.emit('stream', stream)
+ stream.pipe(res)
+
+ // response finished, done with the fd
+ onFinished(res, function onfinished () {
+ finished = true
+ destroy(stream)
+ })
+
+ // error handling code-smell
+ stream.on('error', function onerror (err) {
+ // request already finished
+ if (finished) return
+
+ // clean up stream
+ finished = true
+ destroy(stream)
+
+ // error
+ self.onStatError(err)
+ })
+
+ // end
+ stream.on('end', function onend () {
+ self.emit('end')
+ })
+}
+
+/**
+ * Set content-type based on `path`
+ * if it hasn't been explicitly set.
+ *
+ * @param {String} path
+ * @api private
+ */
+
+SendStream.prototype.type = function type (path) {
+ var res = this.res
+
+ if (res.getHeader('Content-Type')) return
+
+ var type = mime.lookup(path)
+
+ if (!type) {
+ debug('no content-type')
+ return
+ }
+
+ var charset = mime.charsets.lookup(type)
+
+ debug('content-type %s', type)
+ res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : ''))
+}
+
+/**
+ * Set response header fields, most
+ * fields may be pre-defined.
+ *
+ * @param {String} path
+ * @param {Object} stat
+ * @api private
+ */
+
+SendStream.prototype.setHeader = function setHeader (path, stat) {
+ var res = this.res
+
+ this.emit('headers', res, path, stat)
+
+ if (this._acceptRanges && !res.getHeader('Accept-Ranges')) {
+ debug('accept ranges')
+ res.setHeader('Accept-Ranges', 'bytes')
+ }
+
+ if (this._cacheControl && !res.getHeader('Cache-Control')) {
+ var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000)
+ debug('cache-control %s', cacheControl)
+ res.setHeader('Cache-Control', cacheControl)
+ }
+
+ if (this._lastModified && !res.getHeader('Last-Modified')) {
+ var modified = stat.mtime.toUTCString()
+ debug('modified %s', modified)
+ res.setHeader('Last-Modified', modified)
+ }
+
+ if (this._etag && !res.getHeader('ETag')) {
+ var val = etag(stat)
+ debug('etag %s', val)
+ res.setHeader('ETag', val)
+ }
+}
+
+/**
+ * Clear all headers from a response.
+ *
+ * @param {object} res
+ * @private
+ */
+
+function clearHeaders (res) {
+ res._headers = {}
+ res._headerNames = {}
+}
+
+/**
+ * Collapse all leading slashes into a single slash
+ *
+ * @param {string} str
+ * @private
+ */
+function collapseLeadingSlashes (str) {
+ for (var i = 0; i < str.length; i++) {
+ if (str[i] !== '/') {
+ break
+ }
+ }
+
+ return i > 1
+ ? '/' + str.substr(i)
+ : str
+}
+
+/**
+ * Determine if path parts contain a dotfile.
+ *
+ * @api private
+ */
+
+function containsDotFile (parts) {
+ for (var i = 0; i < parts.length; i++) {
+ if (parts[i][0] === '.') {
+ return true
+ }
+ }
+
+ return false
+}
+
+/**
+ * Create a Content-Range header.
+ *
+ * @param {string} type
+ * @param {number} size
+ * @param {array} [range]
+ */
+
+function contentRange (type, size, range) {
+ return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size
+}
+
+/**
+ * decodeURIComponent.
+ *
+ * Allows V8 to only deoptimize this fn instead of all
+ * of send().
+ *
+ * @param {String} path
+ * @api private
+ */
+
+function decode (path) {
+ try {
+ return decodeURIComponent(path)
+ } catch (err) {
+ return -1
+ }
+}
+
+/**
+ * Normalize the index option into an array.
+ *
+ * @param {boolean|string|array} val
+ * @param {string} name
+ * @private
+ */
+
+function normalizeList (val, name) {
+ var list = [].concat(val || [])
+
+ for (var i = 0; i < list.length; i++) {
+ if (typeof list[i] !== 'string') {
+ throw new TypeError(name + ' must be array of strings or false')
+ }
+ }
+
+ return list
+}
+
+/**
+ * Set an object of headers on a response.
+ *
+ * @param {object} res
+ * @param {object} headers
+ * @private
+ */
+
+function setHeaders (res, headers) {
+ var keys = Object.keys(headers)
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i]
+ res.setHeader(key, headers[key])
+ }
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/.bin/mime b/server/node_modules/express/node_modules/send/node_modules/.bin/mime
new file mode 100755
index 0000000..0dbddf0
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/.bin/mime
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../mime/cli.js" "$@"
+ ret=$?
+else
+ node "$basedir/../mime/cli.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/server/node_modules/express/node_modules/send/node_modules/.bin/mime.cmd b/server/node_modules/express/node_modules/send/node_modules/.bin/mime.cmd
new file mode 100755
index 0000000..546cb59
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/.bin/mime.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\mime\cli.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\mime\cli.js" %*
+)
\ No newline at end of file
diff --git a/server/node_modules/express/node_modules/send/node_modules/destroy/LICENSE b/server/node_modules/express/node_modules/send/node_modules/destroy/LICENSE
new file mode 100755
index 0000000..a7ae8ee
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/destroy/LICENSE
@@ -0,0 +1,22 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/send/node_modules/destroy/README.md b/server/node_modules/express/node_modules/send/node_modules/destroy/README.md
new file mode 100755
index 0000000..6474bc3
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/destroy/README.md
@@ -0,0 +1,60 @@
+# Destroy
+
+[![NPM version][npm-image]][npm-url]
+[![Build status][travis-image]][travis-url]
+[![Test coverage][coveralls-image]][coveralls-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+[![Gittip][gittip-image]][gittip-url]
+
+Destroy a stream.
+
+This module is meant to ensure a stream gets destroyed, handling different APIs
+and Node.js bugs.
+
+## API
+
+```js
+var destroy = require('destroy')
+```
+
+### destroy(stream)
+
+Destroy the given stream. In most cases, this is identical to a simple
+`stream.destroy()` call. The rules are as follows for a given stream:
+
+ 1. If the `stream` is an instance of `ReadStream`, then call `stream.destroy()`
+ and add a listener to the `open` event to call `stream.close()` if it is
+ fired. This is for a Node.js bug that will leak a file descriptor if
+ `.destroy()` is called before `open`.
+ 2. If the `stream` is not an instance of `Stream`, then nothing happens.
+ 3. If the `stream` has a `.destroy()` method, then call it.
+
+The function returns the `stream` passed in as the argument.
+
+## Example
+
+```js
+var destroy = require('destroy')
+
+var fs = require('fs')
+var stream = fs.createReadStream('package.json')
+
+// ... and later
+destroy(stream)
+```
+
+[npm-image]: https://img.shields.io/npm/v/destroy.svg?style=flat-square
+[npm-url]: https://npmjs.org/package/destroy
+[github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square
+[github-url]: https://github.com/stream-utils/destroy/tags
+[travis-image]: https://img.shields.io/travis/stream-utils/destroy.svg?style=flat-square
+[travis-url]: https://travis-ci.org/stream-utils/destroy
+[coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square
+[coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master
+[license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square
+[license-url]: LICENSE.md
+[downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square
+[downloads-url]: https://npmjs.org/package/destroy
+[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square
+[gittip-url]: https://www.gittip.com/jonathanong/
diff --git a/server/node_modules/express/node_modules/send/node_modules/destroy/index.js b/server/node_modules/express/node_modules/send/node_modules/destroy/index.js
new file mode 100755
index 0000000..6da2d26
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/destroy/index.js
@@ -0,0 +1,75 @@
+/*!
+ * destroy
+ * Copyright(c) 2014 Jonathan Ong
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var ReadStream = require('fs').ReadStream
+var Stream = require('stream')
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = destroy
+
+/**
+ * Destroy a stream.
+ *
+ * @param {object} stream
+ * @public
+ */
+
+function destroy(stream) {
+ if (stream instanceof ReadStream) {
+ return destroyReadStream(stream)
+ }
+
+ if (!(stream instanceof Stream)) {
+ return stream
+ }
+
+ if (typeof stream.destroy === 'function') {
+ stream.destroy()
+ }
+
+ return stream
+}
+
+/**
+ * Destroy a ReadStream.
+ *
+ * @param {object} stream
+ * @private
+ */
+
+function destroyReadStream(stream) {
+ stream.destroy()
+
+ if (typeof stream.close === 'function') {
+ // node.js core bug work-around
+ stream.on('open', onOpenClose)
+ }
+
+ return stream
+}
+
+/**
+ * On open handler to close stream.
+ * @private
+ */
+
+function onOpenClose() {
+ if (typeof this.fd === 'number') {
+ // actually close down the fd
+ this.close()
+ }
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/destroy/package.json b/server/node_modules/express/node_modules/send/node_modules/destroy/package.json
new file mode 100755
index 0000000..ec1ed98
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/destroy/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "destroy",
+ "description": "destroy a stream if possible",
+ "version": "1.0.4",
+ "author": {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/stream-utils/destroy.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.2",
+ "mocha": "2.3.4"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
+ },
+ "files": [
+ "index.js",
+ "LICENSE"
+ ],
+ "keywords": [
+ "stream",
+ "streams",
+ "destroy",
+ "cleanup",
+ "leak",
+ "fd"
+ ],
+ "gitHead": "86edea01456f5fa1027f6a47250c34c713cbcc3b",
+ "bugs": {
+ "url": "https://github.com/stream-utils/destroy/issues"
+ },
+ "homepage": "https://github.com/stream-utils/destroy",
+ "_id": "destroy@1.0.4",
+ "_shasum": "978857442c44749e4206613e37946205826abd80",
+ "_from": "destroy@>=1.0.4 <1.1.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "978857442c44749e4206613e37946205826abd80",
+ "tarball": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/HISTORY.md b/server/node_modules/express/node_modules/send/node_modules/http-errors/HISTORY.md
new file mode 100755
index 0000000..0dfb7ac
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/HISTORY.md
@@ -0,0 +1,95 @@
+2016-05-18 / 1.5.0
+==================
+
+ * Support new code `421 Misdirected Request`
+ * Use `setprototypeof` module to replace `__proto__` setting
+ * deps: statuses@'>= 1.3.0 < 2'
+ - Add `421 Misdirected Request`
+ - perf: enable strict mode
+ * perf: enable strict mode
+
+2016-01-28 / 1.4.0
+==================
+
+ * Add `HttpError` export, for `err instanceof createError.HttpError`
+ * deps: inherits@2.0.1
+ * deps: statuses@'>= 1.2.1 < 2'
+ - Fix message for status 451
+ - Remove incorrect nginx status code
+
+2015-02-02 / 1.3.1
+==================
+
+ * Fix regression where status can be overwritten in `createError` `props`
+
+2015-02-01 / 1.3.0
+==================
+
+ * Construct errors using defined constructors from `createError`
+ * Fix error names that are not identifiers
+ - `createError["I'mateapot"]` is now `createError.ImATeapot`
+ * Set a meaningful `name` property on constructed errors
+
+2014-12-09 / 1.2.8
+==================
+
+ * Fix stack trace from exported function
+ * Remove `arguments.callee` usage
+
+2014-10-14 / 1.2.7
+==================
+
+ * Remove duplicate line
+
+2014-10-02 / 1.2.6
+==================
+
+ * Fix `expose` to be `true` for `ClientError` constructor
+
+2014-09-28 / 1.2.5
+==================
+
+ * deps: statuses@1
+
+2014-09-21 / 1.2.4
+==================
+
+ * Fix dependency version to work with old `npm`s
+
+2014-09-21 / 1.2.3
+==================
+
+ * deps: statuses@~1.1.0
+
+2014-09-21 / 1.2.2
+==================
+
+ * Fix publish error
+
+2014-09-21 / 1.2.1
+==================
+
+ * Support Node.js 0.6
+ * Use `inherits` instead of `util`
+
+2014-09-09 / 1.2.0
+==================
+
+ * Fix the way inheriting functions
+ * Support `expose` being provided in properties argument
+
+2014-09-08 / 1.1.0
+==================
+
+ * Default status to 500
+ * Support provided `error` to extend
+
+2014-09-08 / 1.0.1
+==================
+
+ * Fix accepting string message
+
+2014-09-08 / 1.0.0
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/LICENSE b/server/node_modules/express/node_modules/send/node_modules/http-errors/LICENSE
new file mode 100755
index 0000000..82af4df
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/LICENSE
@@ -0,0 +1,23 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/README.md b/server/node_modules/express/node_modules/send/node_modules/http-errors/README.md
new file mode 100755
index 0000000..be80f9b
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/README.md
@@ -0,0 +1,112 @@
+# http-errors
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Create HTTP errors for Express, Koa, Connect, etc. with ease.
+
+## Example
+
+```js
+var createError = require('http-errors');
+
+app.use(function (req, res, next) {
+ if (!req.user) return next(createError(401, 'Please login to view this page.'));
+ next();
+})
+```
+
+## API
+
+This is the current API, currently extracted from Koa and subject to change.
+
+All errors inherit from JavaScript `Error` and the exported `createError.HttpError`.
+
+### Error Properties
+
+- `expose` - can be used to signal if `message` should be sent to the client, defaulting to `false` when `status` >= 500
+- `message`
+- `status` and `statusCode` - the status code of the error, defaulting to `500`
+
+### createError([status], [message], [properties])
+
+```js
+var err = createError(404, 'This video does not exist!');
+```
+
+- `status: 500` - the status code as a number
+- `message` - the message of the error, defaulting to node's text for that status code.
+- `properties` - custom properties to attach to the object
+
+### new createError\[code || name\](\[msg]\))
+
+```js
+var err = new createError.NotFound();
+```
+
+- `code` - the status code as a number
+- `name` - the name of the error as a "bumpy case", i.e. `NotFound` or `InternalServerError`.
+
+#### List of all constructors
+
+|Status Code|Constructor Name |
+|-----------|-----------------------------|
+|400 |BadRequest |
+|401 |Unauthorized |
+|402 |PaymentRequired |
+|403 |Forbidden |
+|404 |NotFound |
+|405 |MethodNotAllowed |
+|406 |NotAcceptable |
+|407 |ProxyAuthenticationRequired |
+|408 |RequestTimeout |
+|409 |Conflict |
+|410 |Gone |
+|411 |LengthRequired |
+|412 |PreconditionFailed |
+|413 |PayloadTooLarge |
+|414 |URITooLong |
+|415 |UnsupportedMediaType |
+|416 |RangeNotSatisfiable |
+|417 |ExpectationFailed |
+|418 |ImATeapot |
+|421 |MisdirectedRequest |
+|422 |UnprocessableEntity |
+|423 |Locked |
+|424 |FailedDependency |
+|425 |UnorderedCollection |
+|426 |UpgradeRequired |
+|428 |PreconditionRequired |
+|429 |TooManyRequests |
+|431 |RequestHeaderFieldsTooLarge |
+|451 |UnavailableForLegalReasons |
+|500 |InternalServerError |
+|501 |NotImplemented |
+|502 |BadGateway |
+|503 |ServiceUnavailable |
+|504 |GatewayTimeout |
+|505 |HTTPVersionNotSupported |
+|506 |VariantAlsoNegotiates |
+|507 |InsufficientStorage |
+|508 |LoopDetected |
+|509 |BandwidthLimitExceeded |
+|510 |NotExtended |
+|511 |NetworkAuthenticationRequired|
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/http-errors.svg?style=flat
+[npm-url]: https://npmjs.org/package/http-errors
+[node-version-image]: https://img.shields.io/node/v/http-errors.svg?style=flat
+[node-version-url]: https://nodejs.org/en/download/
+[travis-image]: https://img.shields.io/travis/jshttp/http-errors.svg?style=flat
+[travis-url]: https://travis-ci.org/jshttp/http-errors
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/http-errors.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/jshttp/http-errors
+[downloads-image]: https://img.shields.io/npm/dm/http-errors.svg?style=flat
+[downloads-url]: https://npmjs.org/package/http-errors
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/index.js b/server/node_modules/express/node_modules/send/node_modules/http-errors/index.js
new file mode 100755
index 0000000..6130db8
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/index.js
@@ -0,0 +1,223 @@
+/*!
+ * http-errors
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var setPrototypeOf = require('setprototypeof')
+var statuses = require('statuses')
+var inherits = require('inherits')
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = createError
+module.exports.HttpError = createHttpErrorConstructor()
+
+// Populate exports for all constructors
+populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)
+
+/**
+ * Create a new HTTP Error.
+ *
+ * @returns {Error}
+ * @public
+ */
+
+function createError () {
+ // so much arity going on ~_~
+ var err
+ var msg
+ var status = 500
+ var props = {}
+ for (var i = 0; i < arguments.length; i++) {
+ var arg = arguments[i]
+ if (arg instanceof Error) {
+ err = arg
+ status = err.status || err.statusCode || status
+ continue
+ }
+ switch (typeof arg) {
+ case 'string':
+ msg = arg
+ break
+ case 'number':
+ status = arg
+ break
+ case 'object':
+ props = arg
+ break
+ }
+ }
+
+ if (typeof status !== 'number' || !statuses[status]) {
+ status = 500
+ }
+
+ // constructor
+ var HttpError = createError[status]
+
+ if (!err) {
+ // create error
+ err = HttpError
+ ? new HttpError(msg)
+ : new Error(msg || statuses[status])
+ Error.captureStackTrace(err, createError)
+ }
+
+ if (!HttpError || !(err instanceof HttpError)) {
+ // add properties to generic error
+ err.expose = status < 500
+ err.status = err.statusCode = status
+ }
+
+ for (var key in props) {
+ if (key !== 'status' && key !== 'statusCode') {
+ err[key] = props[key]
+ }
+ }
+
+ return err
+}
+
+/**
+ * Create HTTP error abstract base class.
+ * @private
+ */
+
+function createHttpErrorConstructor () {
+ function HttpError () {
+ throw new TypeError('cannot construct abstract class')
+ }
+
+ inherits(HttpError, Error)
+
+ return HttpError
+}
+
+/**
+ * Create a constructor for a client error.
+ * @private
+ */
+
+function createClientErrorConstructor (HttpError, name, code) {
+ var className = name.match(/Error$/) ? name : name + 'Error'
+
+ function ClientError (message) {
+ // create the error object
+ var err = new Error(message != null ? message : statuses[code])
+
+ // capture a stack trace to the construction point
+ Error.captureStackTrace(err, ClientError)
+
+ // adjust the [[Prototype]]
+ setPrototypeOf(err, ClientError.prototype)
+
+ // redefine the error name
+ Object.defineProperty(err, 'name', {
+ enumerable: false,
+ configurable: true,
+ value: className,
+ writable: true
+ })
+
+ return err
+ }
+
+ inherits(ClientError, HttpError)
+
+ ClientError.prototype.status = code
+ ClientError.prototype.statusCode = code
+ ClientError.prototype.expose = true
+
+ return ClientError
+}
+
+/**
+ * Create a constructor for a server error.
+ * @private
+ */
+
+function createServerErrorConstructor (HttpError, name, code) {
+ var className = name.match(/Error$/) ? name : name + 'Error'
+
+ function ServerError (message) {
+ // create the error object
+ var err = new Error(message != null ? message : statuses[code])
+
+ // capture a stack trace to the construction point
+ Error.captureStackTrace(err, ServerError)
+
+ // adjust the [[Prototype]]
+ setPrototypeOf(err, ServerError.prototype)
+
+ // redefine the error name
+ Object.defineProperty(err, 'name', {
+ enumerable: false,
+ configurable: true,
+ value: className,
+ writable: true
+ })
+
+ return err
+ }
+
+ inherits(ServerError, HttpError)
+
+ ServerError.prototype.status = code
+ ServerError.prototype.statusCode = code
+ ServerError.prototype.expose = false
+
+ return ServerError
+}
+
+/**
+ * Populate the exports object with constructors for every error class.
+ * @private
+ */
+
+function populateConstructorExports (exports, codes, HttpError) {
+ codes.forEach(function forEachCode (code) {
+ var CodeError
+ var name = toIdentifier(statuses[code])
+
+ switch (String(code).charAt(0)) {
+ case '4':
+ CodeError = createClientErrorConstructor(HttpError, name, code)
+ break
+ case '5':
+ CodeError = createServerErrorConstructor(HttpError, name, code)
+ break
+ }
+
+ if (CodeError) {
+ // export the constructor
+ exports[code] = CodeError
+ exports[name] = CodeError
+ }
+ })
+
+ // backwards-compatibility
+ exports["I'mateapot"] = exports.ImATeapot
+}
+
+/**
+ * Convert a string of words to a JavaScript identifier.
+ * @private
+ */
+
+function toIdentifier (str) {
+ return str.split(' ').map(function (token) {
+ return token.slice(0, 1).toUpperCase() + token.slice(1)
+ }).join('').replace(/[^ _0-9a-z]/gi, '')
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/LICENSE b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/LICENSE
new file mode 100755
index 0000000..dea3013
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/LICENSE
@@ -0,0 +1,16 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/README.md b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/README.md
new file mode 100755
index 0000000..b1c5665
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/README.md
@@ -0,0 +1,42 @@
+Browser-friendly inheritance fully compatible with standard node.js
+[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
+
+This package exports standard `inherits` from node.js `util` module in
+node environment, but also provides alternative browser-friendly
+implementation through [browser
+field](https://gist.github.com/shtylman/4339901). Alternative
+implementation is a literal copy of standard one located in standalone
+module to avoid requiring of `util`. It also has a shim for old
+browsers with no `Object.create` support.
+
+While keeping you sure you are using standard `inherits`
+implementation in node.js environment, it allows bundlers such as
+[browserify](https://github.com/substack/node-browserify) to not
+include full `util` package to your client code if all you need is
+just `inherits` function. It worth, because browser shim for `util`
+package is large and `inherits` is often the single function you need
+from it.
+
+It's recommended to use this package instead of
+`require('util').inherits` for any code that has chances to be used
+not only in node.js but in browser too.
+
+## usage
+
+```js
+var inherits = require('inherits');
+// then use exactly as the standard one
+```
+
+## note on version ~1.0
+
+Version ~1.0 had completely different motivation and is not compatible
+neither with 2.0 nor with standard node.js `inherits`.
+
+If you are using version ~1.0 and planning to switch to ~2.0, be
+careful:
+
+* new version uses `super_` instead of `super` for referencing
+ superclass
+* new version overwrites current prototype while old one preserves any
+ existing fields on it
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/inherits.js b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/inherits.js
new file mode 100755
index 0000000..29f5e24
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/inherits.js
@@ -0,0 +1 @@
+module.exports = require('util').inherits
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/inherits_browser.js b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/inherits_browser.js
new file mode 100755
index 0000000..c1e78a7
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/inherits_browser.js
@@ -0,0 +1,23 @@
+if (typeof Object.create === 'function') {
+ // implementation from standard node.js 'util' module
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ };
+} else {
+ // old school shim for old browsers
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ var TempCtor = function () {}
+ TempCtor.prototype = superCtor.prototype
+ ctor.prototype = new TempCtor()
+ ctor.prototype.constructor = ctor
+ }
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/package.json b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/package.json
new file mode 100755
index 0000000..b7b5b01
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "inherits",
+ "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
+ "version": "2.0.1",
+ "keywords": [
+ "inheritance",
+ "class",
+ "klass",
+ "oop",
+ "object-oriented",
+ "inherits",
+ "browser",
+ "browserify"
+ ],
+ "main": "./inherits.js",
+ "browser": "./inherits_browser.js",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/inherits.git"
+ },
+ "license": "ISC",
+ "scripts": {
+ "test": "node test"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/inherits/issues"
+ },
+ "_id": "inherits@2.0.1",
+ "dist": {
+ "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
+ "tarball": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
+ },
+ "_from": "inherits@2.0.1",
+ "_npmVersion": "1.3.8",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "directories": {},
+ "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
+ "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "readme": "ERROR: No README data found!",
+ "homepage": "https://github.com/isaacs/inherits#readme"
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/test.js b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/test.js
new file mode 100755
index 0000000..fc53012
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/inherits/test.js
@@ -0,0 +1,25 @@
+var inherits = require('./inherits.js')
+var assert = require('assert')
+
+function test(c) {
+ assert(c.constructor === Child)
+ assert(c.constructor.super_ === Parent)
+ assert(Object.getPrototypeOf(c) === Child.prototype)
+ assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
+ assert(c instanceof Child)
+ assert(c instanceof Parent)
+}
+
+function Child() {
+ Parent.call(this)
+ test(this)
+}
+
+function Parent() {}
+
+inherits(Child, Parent)
+
+var c = new Child
+test(c)
+
+console.log('ok')
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/LICENSE b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/LICENSE
new file mode 100755
index 0000000..61afa2f
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/LICENSE
@@ -0,0 +1,13 @@
+Copyright (c) 2015, Wes Todd
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/README.md b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/README.md
new file mode 100755
index 0000000..01d7947
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/README.md
@@ -0,0 +1,21 @@
+# Polyfill for `Object.setPrototypeOf`
+
+A simple cross platform implementation to set the prototype of an instianted object. Supports all modern browsers and at least back to IE8.
+
+## Usage:
+
+```
+$ npm install --save setprototypeof
+```
+
+```javascript
+var setPrototypeOf = require('setprototypeof');
+
+var obj = {};
+setPrototypeOf(obj, {
+ foo: function() {
+ return 'bar';
+ }
+});
+obj.foo(); // bar
+```
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/index.js b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/index.js
new file mode 100755
index 0000000..086a879
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/index.js
@@ -0,0 +1,11 @@
+module.exports = Object.setPrototypeOf || ({__proto__:[]} instanceof Array ? setProtoOf : mixinProperties);
+
+function setProtoOf(obj, proto) {
+ obj.__proto__ = proto;
+}
+
+function mixinProperties(obj, proto) {
+ for (var prop in proto) {
+ obj[prop] = proto[prop];
+ }
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/package.json b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/package.json
new file mode 100755
index 0000000..b4133b9
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/node_modules/setprototypeof/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "setprototypeof",
+ "version": "1.0.1",
+ "description": "A small polyfill for Object.setprototypeof",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/wesleytodd/setprototypeof.git"
+ },
+ "keywords": [
+ "polyfill",
+ "object",
+ "setprototypeof"
+ ],
+ "author": {
+ "name": "Wes Todd"
+ },
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/wesleytodd/setprototypeof/issues"
+ },
+ "homepage": "https://github.com/wesleytodd/setprototypeof",
+ "gitHead": "1e3d0cde6b7f4a9fba10cd28e62b200c9d8f899f",
+ "_id": "setprototypeof@1.0.1",
+ "_shasum": "52009b27888c4dc48f591949c0a8275834c1ca7e",
+ "_from": "setprototypeof@1.0.1",
+ "_npmVersion": "3.3.6",
+ "_nodeVersion": "5.0.0",
+ "_npmUser": {
+ "name": "wesleytodd",
+ "email": "wes@wesleytodd.com"
+ },
+ "dist": {
+ "shasum": "52009b27888c4dc48f591949c0a8275834c1ca7e",
+ "tarball": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "wesleytodd",
+ "email": "wes@wesleytodd.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/setprototypeof-1.0.1.tgz_1454803015119_0.7522649802267551"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz"
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/http-errors/package.json b/server/node_modules/express/node_modules/send/node_modules/http-errors/package.json
new file mode 100755
index 0000000..245ddac
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/http-errors/package.json
@@ -0,0 +1,96 @@
+{
+ "name": "http-errors",
+ "description": "Create HTTP error objects",
+ "version": "1.5.0",
+ "author": {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ "contributors": [
+ {
+ "name": "Alan Plum",
+ "email": "me@pluma.io"
+ },
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/http-errors.git"
+ },
+ "dependencies": {
+ "inherits": "2.0.1",
+ "setprototypeof": "1.0.1",
+ "statuses": ">= 1.3.0 < 2"
+ },
+ "devDependencies": {
+ "eslint": "2.10.2",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.1.0",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "lint": "eslint **/*.js",
+ "test": "mocha --reporter spec --bail",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
+ },
+ "keywords": [
+ "http",
+ "error"
+ ],
+ "files": [
+ "index.js",
+ "HISTORY.md",
+ "LICENSE",
+ "README.md"
+ ],
+ "gitHead": "1a826d7ac31dde16931b9c566041697939ebd0e0",
+ "bugs": {
+ "url": "https://github.com/jshttp/http-errors/issues"
+ },
+ "homepage": "https://github.com/jshttp/http-errors#readme",
+ "_id": "http-errors@1.5.0",
+ "_shasum": "b1cb3d8260fd8e2386cad3189045943372d48211",
+ "_from": "http-errors@>=1.5.0 <1.6.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "b1cb3d8260fd8e2386cad3189045943372d48211",
+ "tarball": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "egeste",
+ "email": "npm@egeste.net"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/http-errors-1.5.0.tgz_1463621678183_0.44013352948240936"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/.npmignore b/server/node_modules/express/node_modules/send/node_modules/mime/.npmignore
new file mode 100755
index 0000000..e69de29
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/LICENSE b/server/node_modules/express/node_modules/send/node_modules/mime/LICENSE
new file mode 100755
index 0000000..451fc45
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/mime/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2010 Benjamin Thomas, Robert Kieffer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/README.md b/server/node_modules/express/node_modules/send/node_modules/mime/README.md
new file mode 100755
index 0000000..506fbe5
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/mime/README.md
@@ -0,0 +1,90 @@
+# mime
+
+Comprehensive MIME type mapping API based on mime-db module.
+
+## Install
+
+Install with [npm](http://github.com/isaacs/npm):
+
+ npm install mime
+
+## Contributing / Testing
+
+ npm run test
+
+## Command Line
+
+ mime [path_string]
+
+E.g.
+
+ > mime scripts/jquery.js
+ application/javascript
+
+## API - Queries
+
+### mime.lookup(path)
+Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.
+
+```js
+var mime = require('mime');
+
+mime.lookup('/path/to/file.txt'); // => 'text/plain'
+mime.lookup('file.txt'); // => 'text/plain'
+mime.lookup('.TXT'); // => 'text/plain'
+mime.lookup('htm'); // => 'text/html'
+```
+
+### mime.default_type
+Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)
+
+### mime.extension(type)
+Get the default extension for `type`
+
+```js
+mime.extension('text/html'); // => 'html'
+mime.extension('application/octet-stream'); // => 'bin'
+```
+
+### mime.charsets.lookup()
+
+Map mime-type to charset
+
+```js
+mime.charsets.lookup('text/plain'); // => 'UTF-8'
+```
+
+(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)
+
+## API - Defining Custom Types
+
+Custom type mappings can be added on a per-project basis via the following APIs.
+
+### mime.define()
+
+Add custom mime/extension mappings
+
+```js
+mime.define({
+ 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],
+ 'application/x-my-type': ['x-mt', 'x-mtt'],
+ // etc ...
+});
+
+mime.lookup('x-sft'); // => 'text/x-some-format'
+```
+
+The first entry in the extensions array is returned by `mime.extension()`. E.g.
+
+```js
+mime.extension('text/x-some-format'); // => 'x-sf'
+```
+
+### mime.load(filepath)
+
+Load mappings from an Apache ".types" format file
+
+```js
+mime.load('./my_project.types');
+```
+The .types file format is simple - See the `types` dir for examples.
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/build/build.js b/server/node_modules/express/node_modules/send/node_modules/mime/build/build.js
new file mode 100755
index 0000000..ed5313e
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/mime/build/build.js
@@ -0,0 +1,11 @@
+var db = require('mime-db');
+
+var mapByType = {};
+Object.keys(db).forEach(function(key) {
+ var extensions = db[key].extensions;
+ if (extensions) {
+ mapByType[key] = extensions;
+ }
+});
+
+console.log(JSON.stringify(mapByType));
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/build/test.js b/server/node_modules/express/node_modules/send/node_modules/mime/build/test.js
new file mode 100755
index 0000000..58b9ba7
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/mime/build/test.js
@@ -0,0 +1,57 @@
+/**
+ * Usage: node test.js
+ */
+
+var mime = require('../mime');
+var assert = require('assert');
+var path = require('path');
+
+//
+// Test mime lookups
+//
+
+assert.equal('text/plain', mime.lookup('text.txt')); // normal file
+assert.equal('text/plain', mime.lookup('TEXT.TXT')); // uppercase
+assert.equal('text/plain', mime.lookup('dir/text.txt')); // dir + file
+assert.equal('text/plain', mime.lookup('.text.txt')); // hidden file
+assert.equal('text/plain', mime.lookup('.txt')); // nameless
+assert.equal('text/plain', mime.lookup('txt')); // extension-only
+assert.equal('text/plain', mime.lookup('/txt')); // extension-less ()
+assert.equal('text/plain', mime.lookup('\\txt')); // Windows, extension-less
+assert.equal('application/octet-stream', mime.lookup('text.nope')); // unrecognized
+assert.equal('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default
+
+//
+// Test extensions
+//
+
+assert.equal('txt', mime.extension(mime.types.text));
+assert.equal('html', mime.extension(mime.types.htm));
+assert.equal('bin', mime.extension('application/octet-stream'));
+assert.equal('bin', mime.extension('application/octet-stream '));
+assert.equal('html', mime.extension(' text/html; charset=UTF-8'));
+assert.equal('html', mime.extension('text/html; charset=UTF-8 '));
+assert.equal('html', mime.extension('text/html; charset=UTF-8'));
+assert.equal('html', mime.extension('text/html ; charset=UTF-8'));
+assert.equal('html', mime.extension('text/html;charset=UTF-8'));
+assert.equal('html', mime.extension('text/Html;charset=UTF-8'));
+assert.equal(undefined, mime.extension('unrecognized'));
+
+//
+// Test node.types lookups
+//
+
+assert.equal('application/font-woff', mime.lookup('file.woff'));
+assert.equal('application/octet-stream', mime.lookup('file.buffer'));
+assert.equal('audio/mp4', mime.lookup('file.m4a'));
+assert.equal('font/opentype', mime.lookup('file.otf'));
+
+//
+// Test charsets
+//
+
+assert.equal('UTF-8', mime.charsets.lookup('text/plain'));
+assert.equal(undefined, mime.charsets.lookup(mime.types.js));
+assert.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback'));
+
+console.log('\nAll tests passed');
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/cli.js b/server/node_modules/express/node_modules/send/node_modules/mime/cli.js
new file mode 100755
index 0000000..20b1ffe
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/mime/cli.js
@@ -0,0 +1,8 @@
+#!/usr/bin/env node
+
+var mime = require('./mime.js');
+var file = process.argv[2];
+var type = mime.lookup(file);
+
+process.stdout.write(type + '\n');
+
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/mime.js b/server/node_modules/express/node_modules/send/node_modules/mime/mime.js
new file mode 100755
index 0000000..341b6a5
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/mime/mime.js
@@ -0,0 +1,108 @@
+var path = require('path');
+var fs = require('fs');
+
+function Mime() {
+ // Map of extension -> mime type
+ this.types = Object.create(null);
+
+ // Map of mime type -> extension
+ this.extensions = Object.create(null);
+}
+
+/**
+ * Define mimetype -> extension mappings. Each key is a mime-type that maps
+ * to an array of extensions associated with the type. The first extension is
+ * used as the default extension for the type.
+ *
+ * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
+ *
+ * @param map (Object) type definitions
+ */
+Mime.prototype.define = function (map) {
+ for (var type in map) {
+ var exts = map[type];
+ for (var i = 0; i < exts.length; i++) {
+ if (process.env.DEBUG_MIME && this.types[exts]) {
+ console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' +
+ this.types[exts] + ' to ' + type);
+ }
+
+ this.types[exts[i]] = type;
+ }
+
+ // Default extension is the first one we encounter
+ if (!this.extensions[type]) {
+ this.extensions[type] = exts[0];
+ }
+ }
+};
+
+/**
+ * Load an Apache2-style ".types" file
+ *
+ * This may be called multiple times (it's expected). Where files declare
+ * overlapping types/extensions, the last file wins.
+ *
+ * @param file (String) path of file to load.
+ */
+Mime.prototype.load = function(file) {
+ this._loading = file;
+ // Read file and split into lines
+ var map = {},
+ content = fs.readFileSync(file, 'ascii'),
+ lines = content.split(/[\r\n]+/);
+
+ lines.forEach(function(line) {
+ // Clean up whitespace/comments, and split into fields
+ var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/);
+ map[fields.shift()] = fields;
+ });
+
+ this.define(map);
+
+ this._loading = null;
+};
+
+/**
+ * Lookup a mime type based on extension
+ */
+Mime.prototype.lookup = function(path, fallback) {
+ var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase();
+
+ return this.types[ext] || fallback || this.default_type;
+};
+
+/**
+ * Return file extension associated with a mime type
+ */
+Mime.prototype.extension = function(mimeType) {
+ var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase();
+ return this.extensions[type];
+};
+
+// Default instance
+var mime = new Mime();
+
+// Define built-in types
+mime.define(require('./types.json'));
+
+// Default type
+mime.default_type = mime.lookup('bin');
+
+//
+// Additional API specific to the default instance
+//
+
+mime.Mime = Mime;
+
+/**
+ * Lookup a charset based on mime type.
+ */
+mime.charsets = {
+ lookup: function(mimeType, fallback) {
+ // Assume text types are utf8
+ return (/^text\//).test(mimeType) ? 'UTF-8' : fallback;
+ }
+};
+
+module.exports = mime;
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/package.json b/server/node_modules/express/node_modules/send/node_modules/mime/package.json
new file mode 100755
index 0000000..0679a71
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/mime/package.json
@@ -0,0 +1,72 @@
+{
+ "author": {
+ "name": "Robert Kieffer",
+ "email": "robert@broofa.com",
+ "url": "http://github.com/broofa"
+ },
+ "scripts": {
+ "prepublish": "node build/build.js > types.json",
+ "test": "node build/test.js"
+ },
+ "bin": {
+ "mime": "cli.js"
+ },
+ "contributors": [
+ {
+ "name": "Benjamin Thomas",
+ "email": "benjamin@benjaminthomas.org",
+ "url": "http://github.com/bentomas"
+ }
+ ],
+ "description": "A comprehensive library for mime-type mapping",
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://raw.github.com/broofa/node-mime/master/LICENSE"
+ }
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "mime-db": "^1.2.0"
+ },
+ "keywords": [
+ "util",
+ "mime"
+ ],
+ "main": "mime.js",
+ "name": "mime",
+ "repository": {
+ "url": "https://github.com/broofa/node-mime",
+ "type": "git"
+ },
+ "version": "1.3.4",
+ "gitHead": "1628f6e0187095009dcef4805c3a49706f137974",
+ "bugs": {
+ "url": "https://github.com/broofa/node-mime/issues"
+ },
+ "homepage": "https://github.com/broofa/node-mime",
+ "_id": "mime@1.3.4",
+ "_shasum": "115f9e3b6b3daf2959983cb38f149a2d40eb5d53",
+ "_from": "mime@1.3.4",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "broofa",
+ "email": "robert@broofa.com"
+ },
+ "maintainers": [
+ {
+ "name": "broofa",
+ "email": "robert@broofa.com"
+ },
+ {
+ "name": "bentomas",
+ "email": "benjamin@benjaminthomas.org"
+ }
+ ],
+ "dist": {
+ "shasum": "115f9e3b6b3daf2959983cb38f149a2d40eb5d53",
+ "tarball": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/mime/types.json b/server/node_modules/express/node_modules/send/node_modules/mime/types.json
new file mode 100755
index 0000000..c674b1c
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/mime/types.json
@@ -0,0 +1 @@
+{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mdp"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/font-woff2":["woff2"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["dmg"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-otf":["otf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-ttf":["ttf","ttc"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["iso"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdownload":["exe","dll","com","bat","msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","wmz","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-nzb":["nzb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-research-info-systems":["ris"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp4":["mp4a","m4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-wav":["wav"],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/opentype":["otf"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jpeg":["jpeg","jpg","jpe"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-mrsid-image":["sid"],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/sgml":["sgml","sgm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["markdown","md","mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-pascal":["p","pas"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}
diff --git a/server/node_modules/express/node_modules/send/node_modules/ms/.npmignore b/server/node_modules/express/node_modules/send/node_modules/ms/.npmignore
new file mode 100755
index 0000000..d1aa0ce
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/ms/.npmignore
@@ -0,0 +1,5 @@
+node_modules
+test
+History.md
+Makefile
+component.json
diff --git a/server/node_modules/express/node_modules/send/node_modules/ms/History.md b/server/node_modules/express/node_modules/send/node_modules/ms/History.md
new file mode 100755
index 0000000..32fdfc1
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/ms/History.md
@@ -0,0 +1,66 @@
+
+0.7.1 / 2015-04-20
+==================
+
+ * prevent extraordinary long inputs (@evilpacket)
+ * Fixed broken readme link
+
+0.7.0 / 2014-11-24
+==================
+
+ * add time abbreviations, updated tests and readme for the new units
+ * fix example in the readme.
+ * add LICENSE file
+
+0.6.2 / 2013-12-05
+==================
+
+ * Adding repository section to package.json to suppress warning from NPM.
+
+0.6.1 / 2013-05-10
+==================
+
+ * fix singularization [visionmedia]
+
+0.6.0 / 2013-03-15
+==================
+
+ * fix minutes
+
+0.5.1 / 2013-02-24
+==================
+
+ * add component namespace
+
+0.5.0 / 2012-11-09
+==================
+
+ * add short formatting as default and .long option
+ * add .license property to component.json
+ * add version to component.json
+
+0.4.0 / 2012-10-22
+==================
+
+ * add rounding to fix crazy decimals
+
+0.3.0 / 2012-09-07
+==================
+
+ * fix `ms()` [visionmedia]
+
+0.2.0 / 2012-09-03
+==================
+
+ * add component.json [visionmedia]
+ * add days support [visionmedia]
+ * add hours support [visionmedia]
+ * add minutes support [visionmedia]
+ * add seconds support [visionmedia]
+ * add ms string support [visionmedia]
+ * refactor tests to facilitate ms(number) [visionmedia]
+
+0.1.0 / 2012-03-07
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/send/node_modules/ms/LICENSE b/server/node_modules/express/node_modules/send/node_modules/ms/LICENSE
new file mode 100755
index 0000000..6c07561
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/ms/LICENSE
@@ -0,0 +1,20 @@
+(The MIT License)
+
+Copyright (c) 2014 Guillermo Rauch
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/send/node_modules/ms/README.md b/server/node_modules/express/node_modules/send/node_modules/ms/README.md
new file mode 100755
index 0000000..9b4fd03
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/ms/README.md
@@ -0,0 +1,35 @@
+# ms.js: miliseconds conversion utility
+
+```js
+ms('2 days') // 172800000
+ms('1d') // 86400000
+ms('10h') // 36000000
+ms('2.5 hrs') // 9000000
+ms('2h') // 7200000
+ms('1m') // 60000
+ms('5s') // 5000
+ms('100') // 100
+```
+
+```js
+ms(60000) // "1m"
+ms(2 * 60000) // "2m"
+ms(ms('10 hours')) // "10h"
+```
+
+```js
+ms(60000, { long: true }) // "1 minute"
+ms(2 * 60000, { long: true }) // "2 minutes"
+ms(ms('10 hours'), { long: true }) // "10 hours"
+```
+
+- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](http://nodejs.org/download).
+- If a number is supplied to `ms`, a string with a unit is returned.
+- If a string that contains the number is supplied, it returns it as
+a number (e.g: it returns `100` for `'100'`).
+- If you pass a string with a number and a valid unit, the number of
+equivalent ms is returned.
+
+## License
+
+MIT
diff --git a/server/node_modules/express/node_modules/send/node_modules/ms/index.js b/server/node_modules/express/node_modules/send/node_modules/ms/index.js
new file mode 100755
index 0000000..4f92771
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/ms/index.js
@@ -0,0 +1,125 @@
+/**
+ * Helpers.
+ */
+
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var y = d * 365.25;
+
+/**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} options
+ * @return {String|Number}
+ * @api public
+ */
+
+module.exports = function(val, options){
+ options = options || {};
+ if ('string' == typeof val) return parse(val);
+ return options.long
+ ? long(val)
+ : short(val);
+};
+
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+function parse(str) {
+ str = '' + str;
+ if (str.length > 10000) return;
+ var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);
+ if (!match) return;
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s;
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n;
+ }
+}
+
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function short(ms) {
+ if (ms >= d) return Math.round(ms / d) + 'd';
+ if (ms >= h) return Math.round(ms / h) + 'h';
+ if (ms >= m) return Math.round(ms / m) + 'm';
+ if (ms >= s) return Math.round(ms / s) + 's';
+ return ms + 'ms';
+}
+
+/**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function long(ms) {
+ return plural(ms, d, 'day')
+ || plural(ms, h, 'hour')
+ || plural(ms, m, 'minute')
+ || plural(ms, s, 'second')
+ || ms + ' ms';
+}
+
+/**
+ * Pluralization helper.
+ */
+
+function plural(ms, n, name) {
+ if (ms < n) return;
+ if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
+ return Math.ceil(ms / n) + ' ' + name + 's';
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/ms/package.json b/server/node_modules/express/node_modules/send/node_modules/ms/package.json
new file mode 100755
index 0000000..e36489e
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/ms/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "ms",
+ "version": "0.7.1",
+ "description": "Tiny ms conversion utility",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/guille/ms.js.git"
+ },
+ "main": "./index",
+ "devDependencies": {
+ "mocha": "*",
+ "expect.js": "*",
+ "serve": "*"
+ },
+ "component": {
+ "scripts": {
+ "ms/index.js": "index.js"
+ }
+ },
+ "gitHead": "713dcf26d9e6fd9dbc95affe7eff9783b7f1b909",
+ "bugs": {
+ "url": "https://github.com/guille/ms.js/issues"
+ },
+ "homepage": "https://github.com/guille/ms.js",
+ "_id": "ms@0.7.1",
+ "scripts": {},
+ "_shasum": "9cd13c03adbff25b65effde7ce864ee952017098",
+ "_from": "ms@0.7.1",
+ "_npmVersion": "2.7.5",
+ "_nodeVersion": "0.12.2",
+ "_npmUser": {
+ "name": "rauchg",
+ "email": "rauchg@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "rauchg",
+ "email": "rauchg@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "9cd13c03adbff25b65effde7ce864ee952017098",
+ "tarball": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/statuses/HISTORY.md b/server/node_modules/express/node_modules/send/node_modules/statuses/HISTORY.md
new file mode 100755
index 0000000..b175575
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/statuses/HISTORY.md
@@ -0,0 +1,50 @@
+1.3.0 / 2016-05-17
+==================
+
+ * Add `421 Misdirected Request`
+ * perf: enable strict mode
+
+1.2.1 / 2015-02-01
+==================
+
+ * Fix message for status 451
+ - `451 Unavailable For Legal Reasons`
+
+1.2.0 / 2014-09-28
+==================
+
+ * Add `208 Already Repored`
+ * Add `226 IM Used`
+ * Add `306 (Unused)`
+ * Add `415 Unable For Legal Reasons`
+ * Add `508 Loop Detected`
+
+1.1.1 / 2014-09-24
+==================
+
+ * Add missing 308 to `codes.json`
+
+1.1.0 / 2014-09-21
+==================
+
+ * Add `codes.json` for universal support
+
+1.0.4 / 2014-08-20
+==================
+
+ * Package cleanup
+
+1.0.3 / 2014-06-08
+==================
+
+ * Add 308 to `.redirect` category
+
+1.0.2 / 2014-03-13
+==================
+
+ * Add `.retry` category
+
+1.0.1 / 2014-03-12
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/send/node_modules/statuses/LICENSE b/server/node_modules/express/node_modules/send/node_modules/statuses/LICENSE
new file mode 100755
index 0000000..82af4df
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/statuses/LICENSE
@@ -0,0 +1,23 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/send/node_modules/statuses/README.md b/server/node_modules/express/node_modules/send/node_modules/statuses/README.md
new file mode 100755
index 0000000..1a699da
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/statuses/README.md
@@ -0,0 +1,114 @@
+# Statuses
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+HTTP status utility for node.
+
+## API
+
+```js
+var status = require('statuses')
+```
+
+### var code = status(Integer || String)
+
+If `Integer` or `String` is a valid HTTP code or status message, then the appropriate `code` will be returned. Otherwise, an error will be thrown.
+
+```js
+status(403) // => 403
+status('403') // => 403
+status('forbidden') // => 403
+status('Forbidden') // => 403
+status(306) // throws, as it's not supported by node.js
+```
+
+### status.codes
+
+Returns an array of all the status codes as `Integer`s.
+
+### var msg = status[code]
+
+Map of `code` to `status message`. `undefined` for invalid `code`s.
+
+```js
+status[404] // => 'Not Found'
+```
+
+### var code = status[msg]
+
+Map of `status message` to `code`. `msg` can either be title-cased or lower-cased. `undefined` for invalid `status message`s.
+
+```js
+status['not found'] // => 404
+status['Not Found'] // => 404
+```
+
+### status.redirect[code]
+
+Returns `true` if a status code is a valid redirect status.
+
+```js
+status.redirect[200] // => undefined
+status.redirect[301] // => true
+```
+
+### status.empty[code]
+
+Returns `true` if a status code expects an empty body.
+
+```js
+status.empty[200] // => undefined
+status.empty[204] // => true
+status.empty[304] // => true
+```
+
+### status.retry[code]
+
+Returns `true` if you should retry the rest.
+
+```js
+status.retry[501] // => undefined
+status.retry[503] // => true
+```
+
+### statuses/codes.json
+
+```js
+var codes = require('statuses/codes.json')
+```
+
+This is a JSON file of the status codes
+taken from `require('http').STATUS_CODES`.
+This is saved so that codes are consistent even in older node.js versions.
+For example, `308` will be added in v0.12.
+
+## Adding Status Codes
+
+The status codes are primarily sourced from http://www.iana.org/assignments/http-status-codes/http-status-codes-1.csv.
+Additionally, custom codes are added from http://en.wikipedia.org/wiki/List_of_HTTP_status_codes.
+These are added manually in the `lib/*.json` files.
+If you would like to add a status code, add it to the appropriate JSON file.
+
+To rebuild `codes.json`, run the following:
+
+```bash
+# update src/iana.json
+npm run fetch
+# build codes.json
+npm run build
+```
+
+[npm-image]: https://img.shields.io/npm/v/statuses.svg
+[npm-url]: https://npmjs.org/package/statuses
+[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg
+[node-version-url]: https://nodejs.org/en/download
+[travis-image]: https://img.shields.io/travis/jshttp/statuses.svg
+[travis-url]: https://travis-ci.org/jshttp/statuses
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/statuses.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/statuses?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/statuses.svg
+[downloads-url]: https://npmjs.org/package/statuses
diff --git a/server/node_modules/express/node_modules/send/node_modules/statuses/codes.json b/server/node_modules/express/node_modules/send/node_modules/statuses/codes.json
new file mode 100755
index 0000000..e765123
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/statuses/codes.json
@@ -0,0 +1,65 @@
+{
+ "100": "Continue",
+ "101": "Switching Protocols",
+ "102": "Processing",
+ "200": "OK",
+ "201": "Created",
+ "202": "Accepted",
+ "203": "Non-Authoritative Information",
+ "204": "No Content",
+ "205": "Reset Content",
+ "206": "Partial Content",
+ "207": "Multi-Status",
+ "208": "Already Reported",
+ "226": "IM Used",
+ "300": "Multiple Choices",
+ "301": "Moved Permanently",
+ "302": "Found",
+ "303": "See Other",
+ "304": "Not Modified",
+ "305": "Use Proxy",
+ "306": "(Unused)",
+ "307": "Temporary Redirect",
+ "308": "Permanent Redirect",
+ "400": "Bad Request",
+ "401": "Unauthorized",
+ "402": "Payment Required",
+ "403": "Forbidden",
+ "404": "Not Found",
+ "405": "Method Not Allowed",
+ "406": "Not Acceptable",
+ "407": "Proxy Authentication Required",
+ "408": "Request Timeout",
+ "409": "Conflict",
+ "410": "Gone",
+ "411": "Length Required",
+ "412": "Precondition Failed",
+ "413": "Payload Too Large",
+ "414": "URI Too Long",
+ "415": "Unsupported Media Type",
+ "416": "Range Not Satisfiable",
+ "417": "Expectation Failed",
+ "418": "I'm a teapot",
+ "421": "Misdirected Request",
+ "422": "Unprocessable Entity",
+ "423": "Locked",
+ "424": "Failed Dependency",
+ "425": "Unordered Collection",
+ "426": "Upgrade Required",
+ "428": "Precondition Required",
+ "429": "Too Many Requests",
+ "431": "Request Header Fields Too Large",
+ "451": "Unavailable For Legal Reasons",
+ "500": "Internal Server Error",
+ "501": "Not Implemented",
+ "502": "Bad Gateway",
+ "503": "Service Unavailable",
+ "504": "Gateway Timeout",
+ "505": "HTTP Version Not Supported",
+ "506": "Variant Also Negotiates",
+ "507": "Insufficient Storage",
+ "508": "Loop Detected",
+ "509": "Bandwidth Limit Exceeded",
+ "510": "Not Extended",
+ "511": "Network Authentication Required"
+}
\ No newline at end of file
diff --git a/server/node_modules/express/node_modules/send/node_modules/statuses/index.js b/server/node_modules/express/node_modules/send/node_modules/statuses/index.js
new file mode 100755
index 0000000..c2b555a
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/statuses/index.js
@@ -0,0 +1,110 @@
+/*!
+ * statuses
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var codes = require('./codes.json')
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = status
+
+// array of status codes
+status.codes = populateStatusesMap(status, codes)
+
+// status codes for redirects
+status.redirect = {
+ 300: true,
+ 301: true,
+ 302: true,
+ 303: true,
+ 305: true,
+ 307: true,
+ 308: true
+}
+
+// status codes for empty bodies
+status.empty = {
+ 204: true,
+ 205: true,
+ 304: true
+}
+
+// status codes for when you should retry the request
+status.retry = {
+ 502: true,
+ 503: true,
+ 504: true
+}
+
+/**
+ * Populate the statuses map for given codes.
+ * @private
+ */
+
+function populateStatusesMap (statuses, codes) {
+ var arr = []
+
+ Object.keys(codes).forEach(function forEachCode (code) {
+ var message = codes[code]
+ var status = Number(code)
+
+ // Populate properties
+ statuses[status] = message
+ statuses[message] = status
+ statuses[message.toLowerCase()] = status
+
+ // Add to array
+ arr.push(status)
+ })
+
+ return arr
+}
+
+/**
+ * Get the status code.
+ *
+ * Given a number, this will throw if it is not a known status
+ * code, otherwise the code will be returned. Given a string,
+ * the string will be parsed for a number and return the code
+ * if valid, otherwise will lookup the code assuming this is
+ * the status message.
+ *
+ * @param {string|number} code
+ * @returns {string}
+ * @public
+ */
+
+function status (code) {
+ if (typeof code === 'number') {
+ if (!status[code]) throw new Error('invalid status code: ' + code)
+ return code
+ }
+
+ if (typeof code !== 'string') {
+ throw new TypeError('code must be a number or string')
+ }
+
+ // '403'
+ var n = parseInt(code, 10)
+ if (!isNaN(n)) {
+ if (!status[n]) throw new Error('invalid status code: ' + n)
+ return n
+ }
+
+ n = status[code.toLowerCase()]
+ if (!n) throw new Error('invalid status message: "' + code + '"')
+ return n
+}
diff --git a/server/node_modules/express/node_modules/send/node_modules/statuses/package.json b/server/node_modules/express/node_modules/send/node_modules/statuses/package.json
new file mode 100755
index 0000000..c4608eb
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/node_modules/statuses/package.json
@@ -0,0 +1,103 @@
+{
+ "name": "statuses",
+ "description": "HTTP status utility",
+ "version": "1.3.0",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jshttp/statuses"
+ },
+ "license": "MIT",
+ "keywords": [
+ "http",
+ "status",
+ "code"
+ ],
+ "files": [
+ "HISTORY.md",
+ "index.js",
+ "codes.json",
+ "LICENSE"
+ ],
+ "devDependencies": {
+ "csv-parse": "1.0.1",
+ "eslint": "2.10.2",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.1.0",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5",
+ "stream-to-array": "2.2.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "build": "node scripts/build.js",
+ "fetch": "node scripts/fetch.js",
+ "lint": "eslint **/*.js",
+ "test": "mocha --reporter spec --check-leaks --bail test/",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "update": "npm run fetch && npm run build"
+ },
+ "gitHead": "b3e31e8c32dd8107e898b44b8c0b2dfff3cba495",
+ "bugs": {
+ "url": "https://github.com/jshttp/statuses/issues"
+ },
+ "homepage": "https://github.com/jshttp/statuses",
+ "_id": "statuses@1.3.0",
+ "_shasum": "8e55758cb20e7682c1f4fce8dcab30bf01d1e07a",
+ "_from": "statuses@>=1.3.0 <1.4.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "defunctzombie",
+ "email": "shtylman@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "fishrock123",
+ "email": "fishrock123@rocketmail.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "mscdex",
+ "email": "mscdex@mscdex.net"
+ },
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ }
+ ],
+ "dist": {
+ "shasum": "8e55758cb20e7682c1f4fce8dcab30bf01d1e07a",
+ "tarball": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/statuses-1.3.0.tgz_1463517875633_0.19560232176445425"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/send/package.json b/server/node_modules/express/node_modules/send/package.json
new file mode 100755
index 0000000..43ba56b
--- /dev/null
+++ b/server/node_modules/express/node_modules/send/package.json
@@ -0,0 +1,95 @@
+{
+ "name": "send",
+ "description": "Better streaming static file server with Range and conditional-GET support",
+ "version": "0.14.1",
+ "author": {
+ "name": "TJ Holowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/pillarjs/send.git"
+ },
+ "keywords": [
+ "static",
+ "file",
+ "server"
+ ],
+ "dependencies": {
+ "debug": "~2.2.0",
+ "depd": "~1.1.0",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.1",
+ "escape-html": "~1.0.3",
+ "etag": "~1.7.0",
+ "fresh": "0.3.0",
+ "http-errors": "~1.5.0",
+ "mime": "1.3.4",
+ "ms": "0.7.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.3.0"
+ },
+ "devDependencies": {
+ "after": "0.8.1",
+ "eslint": "2.11.1",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.3.1",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "2.5.3",
+ "supertest": "1.1.0"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "scripts": {
+ "lint": "eslint **/*.js",
+ "test": "mocha --check-leaks --reporter spec --bail",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot"
+ },
+ "gitHead": "d6dd3b91bbb73ad89f1398fa227b200db9bff037",
+ "bugs": {
+ "url": "https://github.com/pillarjs/send/issues"
+ },
+ "homepage": "https://github.com/pillarjs/send#readme",
+ "_id": "send@0.14.1",
+ "_shasum": "a954984325392f51532a7760760e459598c89f7a",
+ "_from": "send@0.14.1",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "a954984325392f51532a7760760e459598c89f7a",
+ "tarball": "https://registry.npmjs.org/send/-/send-0.14.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/send-0.14.1.tgz_1465535036412_0.3431496580597013"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/send/-/send-0.14.1.tgz"
+}
diff --git a/server/node_modules/express/node_modules/serve-static/HISTORY.md b/server/node_modules/express/node_modules/serve-static/HISTORY.md
new file mode 100755
index 0000000..0256dbb
--- /dev/null
+++ b/server/node_modules/express/node_modules/serve-static/HISTORY.md
@@ -0,0 +1,332 @@
+1.11.1 / 2016-06-10
+===================
+
+ * Fix redirect error when `req.url` contains raw non-URL characters
+ * deps: send@0.14.1
+
+1.11.0 / 2016-06-07
+===================
+
+ * Use status code 301 for redirects
+ * deps: send@0.14.0
+ - Add `acceptRanges` option
+ - Add `cacheControl` option
+ - Attempt to combine multiple ranges into single range
+ - Correctly inherit from `Stream` class
+ - Fix `Content-Range` header in 416 responses when using `start`/`end` options
+ - Fix `Content-Range` header missing from default 416 responses
+ - Ignore non-byte `Range` headers
+ - deps: http-errors@~1.5.0
+ - deps: range-parser@~1.2.0
+ - deps: statuses@~1.3.0
+ - perf: remove argument reassignment
+
+1.10.3 / 2016-05-30
+===================
+
+ * deps: send@0.13.2
+ - Fix invalid `Content-Type` header when `send.mime.default_type` unset
+
+1.10.2 / 2016-01-19
+===================
+
+ * deps: parseurl@~1.3.1
+ - perf: enable strict mode
+
+1.10.1 / 2016-01-16
+===================
+
+ * deps: escape-html@~1.0.3
+ - perf: enable strict mode
+ - perf: optimize string replacement
+ - perf: use faster string coercion
+ * deps: send@0.13.1
+ - deps: depd@~1.1.0
+ - deps: destroy@~1.0.4
+ - deps: escape-html@~1.0.3
+ - deps: range-parser@~1.0.3
+
+1.10.0 / 2015-06-17
+===================
+
+ * Add `fallthrough` option
+ - Allows declaring this middleware is the final destination
+ - Provides better integration with Express patterns
+ * Fix reading options from options prototype
+ * Improve the default redirect response headers
+ * deps: escape-html@1.0.2
+ * deps: send@0.13.0
+ - Allow Node.js HTTP server to set `Date` response header
+ - Fix incorrectly removing `Content-Location` on 304 response
+ - Improve the default redirect response headers
+ - Send appropriate headers on default error response
+ - Use `http-errors` for standard emitted errors
+ - Use `statuses` instead of `http` module for status messages
+ - deps: escape-html@1.0.2
+ - deps: etag@~1.7.0
+ - deps: fresh@0.3.0
+ - deps: on-finished@~2.3.0
+ - perf: enable strict mode
+ - perf: remove unnecessary array allocations
+ * perf: enable strict mode
+ * perf: remove argument reassignment
+
+1.9.3 / 2015-05-14
+==================
+
+ * deps: send@0.12.3
+ - deps: debug@~2.2.0
+ - deps: depd@~1.0.1
+ - deps: etag@~1.6.0
+ - deps: ms@0.7.1
+ - deps: on-finished@~2.2.1
+
+1.9.2 / 2015-03-14
+==================
+
+ * deps: send@0.12.2
+ - Throw errors early for invalid `extensions` or `index` options
+ - deps: debug@~2.1.3
+
+1.9.1 / 2015-02-17
+==================
+
+ * deps: send@0.12.1
+ - Fix regression sending zero-length files
+
+1.9.0 / 2015-02-16
+==================
+
+ * deps: send@0.12.0
+ - Always read the stat size from the file
+ - Fix mutating passed-in `options`
+ - deps: mime@1.3.4
+
+1.8.1 / 2015-01-20
+==================
+
+ * Fix redirect loop in Node.js 0.11.14
+ * deps: send@0.11.1
+ - Fix root path disclosure
+
+1.8.0 / 2015-01-05
+==================
+
+ * deps: send@0.11.0
+ - deps: debug@~2.1.1
+ - deps: etag@~1.5.1
+ - deps: ms@0.7.0
+ - deps: on-finished@~2.2.0
+
+1.7.2 / 2015-01-02
+==================
+
+ * Fix potential open redirect when mounted at root
+
+1.7.1 / 2014-10-22
+==================
+
+ * deps: send@0.10.1
+ - deps: on-finished@~2.1.1
+
+1.7.0 / 2014-10-15
+==================
+
+ * deps: send@0.10.0
+ - deps: debug@~2.1.0
+ - deps: depd@~1.0.0
+ - deps: etag@~1.5.0
+
+1.6.5 / 2015-02-04
+==================
+
+ * Fix potential open redirect when mounted at root
+ - Back-ported from v1.7.2
+
+1.6.4 / 2014-10-08
+==================
+
+ * Fix redirect loop when index file serving disabled
+
+1.6.3 / 2014-09-24
+==================
+
+ * deps: send@0.9.3
+ - deps: etag@~1.4.0
+
+1.6.2 / 2014-09-15
+==================
+
+ * deps: send@0.9.2
+ - deps: depd@0.4.5
+ - deps: etag@~1.3.1
+ - deps: range-parser@~1.0.2
+
+1.6.1 / 2014-09-07
+==================
+
+ * deps: send@0.9.1
+ - deps: fresh@0.2.4
+
+1.6.0 / 2014-09-07
+==================
+
+ * deps: send@0.9.0
+ - Add `lastModified` option
+ - Use `etag` to generate `ETag` header
+ - deps: debug@~2.0.0
+
+1.5.4 / 2014-09-04
+==================
+
+ * deps: send@0.8.5
+ - Fix a path traversal issue when using `root`
+ - Fix malicious path detection for empty string path
+
+1.5.3 / 2014-08-17
+==================
+
+ * deps: send@0.8.3
+
+1.5.2 / 2014-08-14
+==================
+
+ * deps: send@0.8.2
+ - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
+
+1.5.1 / 2014-08-09
+==================
+
+ * Fix parsing of weird `req.originalUrl` values
+ * deps: parseurl@~1.3.0
+ * deps: utils-merge@1.0.0
+
+1.5.0 / 2014-08-05
+==================
+
+ * deps: send@0.8.1
+ - Add `extensions` option
+
+1.4.4 / 2014-08-04
+==================
+
+ * deps: send@0.7.4
+ - Fix serving index files without root dir
+
+1.4.3 / 2014-07-29
+==================
+
+ * deps: send@0.7.3
+ - Fix incorrect 403 on Windows and Node.js 0.11
+
+1.4.2 / 2014-07-27
+==================
+
+ * deps: send@0.7.2
+ - deps: depd@0.4.4
+
+1.4.1 / 2014-07-26
+==================
+
+ * deps: send@0.7.1
+ - deps: depd@0.4.3
+
+1.4.0 / 2014-07-21
+==================
+
+ * deps: parseurl@~1.2.0
+ - Cache URLs based on original value
+ - Remove no-longer-needed URL mis-parse work-around
+ - Simplify the "fast-path" `RegExp`
+ * deps: send@0.7.0
+ - Add `dotfiles` option
+ - deps: debug@1.0.4
+ - deps: depd@0.4.2
+
+1.3.2 / 2014-07-11
+==================
+
+ * deps: send@0.6.0
+ - Cap `maxAge` value to 1 year
+ - deps: debug@1.0.3
+
+1.3.1 / 2014-07-09
+==================
+
+ * deps: parseurl@~1.1.3
+ - faster parsing of href-only URLs
+
+1.3.0 / 2014-06-28
+==================
+
+ * Add `setHeaders` option
+ * Include HTML link in redirect response
+ * deps: send@0.5.0
+ - Accept string for `maxAge` (converted by `ms`)
+
+1.2.3 / 2014-06-11
+==================
+
+ * deps: send@0.4.3
+ - Do not throw un-catchable error on file open race condition
+ - Use `escape-html` for HTML escaping
+ - deps: debug@1.0.2
+ - deps: finished@1.2.2
+ - deps: fresh@0.2.2
+
+1.2.2 / 2014-06-09
+==================
+
+ * deps: send@0.4.2
+ - fix "event emitter leak" warnings
+ - deps: debug@1.0.1
+ - deps: finished@1.2.1
+
+1.2.1 / 2014-06-02
+==================
+
+ * use `escape-html` for escaping
+ * deps: send@0.4.1
+ - Send `max-age` in `Cache-Control` in correct format
+
+1.2.0 / 2014-05-29
+==================
+
+ * deps: send@0.4.0
+ - Calculate ETag with md5 for reduced collisions
+ - Fix wrong behavior when index file matches directory
+ - Ignore stream errors after request ends
+ - Skip directories in index file search
+ - deps: debug@0.8.1
+
+1.1.0 / 2014-04-24
+==================
+
+ * Accept options directly to `send` module
+ * deps: send@0.3.0
+
+1.0.4 / 2014-04-07
+==================
+
+ * Resolve relative paths at middleware setup
+ * Use parseurl to parse the URL from request
+
+1.0.3 / 2014-03-20
+==================
+
+ * Do not rely on connect-like environments
+
+1.0.2 / 2014-03-06
+==================
+
+ * deps: send@0.2.0
+
+1.0.1 / 2014-03-05
+==================
+
+ * Add mime export for back-compat
+
+1.0.0 / 2014-03-05
+==================
+
+ * Genesis from `connect`
diff --git a/server/node_modules/express/node_modules/serve-static/LICENSE b/server/node_modules/express/node_modules/serve-static/LICENSE
new file mode 100755
index 0000000..cbe62e8
--- /dev/null
+++ b/server/node_modules/express/node_modules/serve-static/LICENSE
@@ -0,0 +1,25 @@
+(The MIT License)
+
+Copyright (c) 2010 Sencha Inc.
+Copyright (c) 2011 LearnBoost
+Copyright (c) 2011 TJ Holowaychuk
+Copyright (c) 2014-2016 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/serve-static/README.md b/server/node_modules/express/node_modules/serve-static/README.md
new file mode 100755
index 0000000..3bd75f3
--- /dev/null
+++ b/server/node_modules/express/node_modules/serve-static/README.md
@@ -0,0 +1,245 @@
+# serve-static
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Linux Build][travis-image]][travis-url]
+[![Windows Build][appveyor-image]][appveyor-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+[![Gratipay][gratipay-image]][gratipay-url]
+
+## Install
+
+```sh
+$ npm install serve-static
+```
+
+## API
+
+```js
+var serveStatic = require('serve-static')
+```
+
+### serveStatic(root, options)
+
+Create a new middleware function to serve files from within a given root
+directory. The file to serve will be determined by combining `req.url`
+with the provided root directory. When a file is not found, instead of
+sending a 404 response, this module will instead call `next()` to move on
+to the next middleware, allowing for stacking and fall-backs.
+
+#### Options
+
+##### acceptRanges
+
+Enable or disable accepting ranged requests, defaults to true.
+Disabling this will not send `Accept-Ranges` and ignore the contents
+of the `Range` request header.
+
+##### cacheControl
+
+Enable or disable setting `Cache-Control` response header, defaults to
+true. Disabling this will ignore the `maxAge` option.
+
+##### dotfiles
+
+ Set how "dotfiles" are treated when encountered. A dotfile is a file
+or directory that begins with a dot ("."). Note this check is done on
+the path itself without checking if the path actually exists on the
+disk. If `root` is specified, only the dotfiles above the root are
+checked (i.e. the root itself can be within a dotfile when set
+to "deny").
+
+ - `'allow'` No special treatment for dotfiles.
+ - `'deny'` Deny a request for a dotfile and 403/`next()`.
+ - `'ignore'` Pretend like the dotfile does not exist and 404/`next()`.
+
+The default value is similar to `'ignore'`, with the exception that this
+default will not ignore the files within a directory that begins with a dot.
+
+##### etag
+
+Enable or disable etag generation, defaults to true.
+
+##### extensions
+
+Set file extension fallbacks. When set, if a file is not found, the given
+extensions will be added to the file name and search for. The first that
+exists will be served. Example: `['html', 'htm']`.
+
+The default value is `false`.
+
+##### fallthrough
+
+Set the middleware to have client errors fall-through as just unhandled
+requests, otherwise forward a client error. The difference is that client
+errors like a bad request or a request to a non-existent file will cause
+this middleware to simply `next()` to your next middleware when this value
+is `true`. When this value is `false`, these errors (even 404s), will invoke
+`next(err)`.
+
+Typically `true` is desired such that multiple physical directories can be
+mapped to the same web address or for routes to fill in non-existent files.
+
+The value `false` can be used if this middleware is mounted at a path that
+is designed to be strictly a single file system directory, which allows for
+short-circuiting 404s for less overhead. This middleware will also reply to
+all methods.
+
+The default value is `true`.
+
+##### index
+
+By default this module will send "index.html" files in response to a request
+on a directory. To disable this set `false` or to supply a new index pass a
+string or an array in preferred order.
+
+##### lastModified
+
+Enable or disable `Last-Modified` header, defaults to true. Uses the file
+system's last modified value.
+
+##### maxAge
+
+Provide a max-age in milliseconds for http caching, defaults to 0. This
+can also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme)
+module.
+
+##### redirect
+
+Redirect to trailing "/" when the pathname is a dir. Defaults to `true`.
+
+##### setHeaders
+
+Function to set custom headers on response. Alterations to the headers need to
+occur synchronously. The function is called as `fn(res, path, stat)`, where
+the arguments are:
+
+ - `res` the response object
+ - `path` the file path that is being sent
+ - `stat` the stat object of the file that is being sent
+
+## Examples
+
+### Serve files with vanilla node.js http server
+
+```js
+var finalhandler = require('finalhandler')
+var http = require('http')
+var serveStatic = require('serve-static')
+
+// Serve up public/ftp folder
+var serve = serveStatic('public/ftp', {'index': ['index.html', 'index.htm']})
+
+// Create server
+var server = http.createServer(function onRequest (req, res) {
+ serve(req, res, finalhandler(req, res))
+})
+
+// Listen
+server.listen(3000)
+```
+
+### Serve all files as downloads
+
+```js
+var contentDisposition = require('content-disposition')
+var finalhandler = require('finalhandler')
+var http = require('http')
+var serveStatic = require('serve-static')
+
+// Serve up public/ftp folder
+var serve = serveStatic('public/ftp', {
+ 'index': false,
+ 'setHeaders': setHeaders
+})
+
+// Set header to force download
+function setHeaders(res, path) {
+ res.setHeader('Content-Disposition', contentDisposition(path))
+}
+
+// Create server
+var server = http.createServer(function onRequest (req, res) {
+ serve(req, res, finalhandler(req, res))
+})
+
+// Listen
+server.listen(3000)
+```
+
+### Serving using express
+
+#### Simple
+
+This is a simple example of using Express.
+
+```js
+var express = require('express')
+var serveStatic = require('serve-static')
+
+var app = express()
+
+app.use(serveStatic('public/ftp', {'index': ['default.html', 'default.htm']}))
+app.listen(3000)
+```
+
+#### Multiple roots
+
+This example shows a simple way to search through multiple directories.
+Files are look for in `public-optimized/` first, then `public/` second as
+a fallback.
+
+```js
+var express = require('express')
+var serveStatic = require('serve-static')
+
+var app = express()
+
+app.use(serveStatic(__dirname + '/public-optimized'))
+app.use(serveStatic(__dirname + '/public'))
+app.listen(3000)
+```
+
+#### Different settings for paths
+
+This example shows how to set a different max age depending on the served
+file type. In this example, HTML files are not cached, while everything else
+is for 1 day.
+
+```js
+var express = require('express')
+var serveStatic = require('serve-static')
+
+var app = express()
+
+app.use(serveStatic(__dirname + '/public', {
+ maxAge: '1d',
+ setHeaders: setCustomCacheControl
+}))
+
+app.listen(3000)
+
+function setCustomCacheControl (res, path) {
+ if (serveStatic.mime.lookup(path) === 'text/html') {
+ // Custom Cache-Control for HTML files
+ res.setHeader('Cache-Control', 'public, max-age=0')
+ }
+}
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/serve-static.svg
+[npm-url]: https://npmjs.org/package/serve-static
+[travis-image]: https://img.shields.io/travis/expressjs/serve-static/master.svg?label=linux
+[travis-url]: https://travis-ci.org/expressjs/serve-static
+[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/serve-static/master.svg?label=windows
+[appveyor-url]: https://ci.appveyor.com/project/dougwilson/serve-static
+[coveralls-image]: https://img.shields.io/coveralls/expressjs/serve-static/master.svg
+[coveralls-url]: https://coveralls.io/r/expressjs/serve-static
+[downloads-image]: https://img.shields.io/npm/dm/serve-static.svg
+[downloads-url]: https://npmjs.org/package/serve-static
+[gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg
+[gratipay-url]: https://gratipay.com/dougwilson/
diff --git a/server/node_modules/express/node_modules/serve-static/index.js b/server/node_modules/express/node_modules/serve-static/index.js
new file mode 100755
index 0000000..83c5e4f
--- /dev/null
+++ b/server/node_modules/express/node_modules/serve-static/index.js
@@ -0,0 +1,188 @@
+/*!
+ * serve-static
+ * Copyright(c) 2010 Sencha Inc.
+ * Copyright(c) 2011 TJ Holowaychuk
+ * Copyright(c) 2014-2016 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var encodeUrl = require('encodeurl')
+var escapeHtml = require('escape-html')
+var parseUrl = require('parseurl')
+var resolve = require('path').resolve
+var send = require('send')
+var url = require('url')
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = serveStatic
+module.exports.mime = send.mime
+
+/**
+ * @param {string} root
+ * @param {object} [options]
+ * @return {function}
+ * @public
+ */
+
+function serveStatic (root, options) {
+ if (!root) {
+ throw new TypeError('root path required')
+ }
+
+ if (typeof root !== 'string') {
+ throw new TypeError('root path must be a string')
+ }
+
+ // copy options object
+ var opts = Object.create(options || null)
+
+ // fall-though
+ var fallthrough = opts.fallthrough !== false
+
+ // default redirect
+ var redirect = opts.redirect !== false
+
+ // headers listener
+ var setHeaders = opts.setHeaders
+
+ if (setHeaders && typeof setHeaders !== 'function') {
+ throw new TypeError('option setHeaders must be function')
+ }
+
+ // setup options for send
+ opts.maxage = opts.maxage || opts.maxAge || 0
+ opts.root = resolve(root)
+
+ // construct directory listener
+ var onDirectory = redirect
+ ? createRedirectDirectoryListener()
+ : createNotFoundDirectoryListener()
+
+ return function serveStatic (req, res, next) {
+ if (req.method !== 'GET' && req.method !== 'HEAD') {
+ if (fallthrough) {
+ return next()
+ }
+
+ // method not allowed
+ res.statusCode = 405
+ res.setHeader('Allow', 'GET, HEAD')
+ res.setHeader('Content-Length', '0')
+ res.end()
+ return
+ }
+
+ var forwardError = !fallthrough
+ var originalUrl = parseUrl.original(req)
+ var path = parseUrl(req).pathname
+
+ // make sure redirect occurs at mount
+ if (path === '/' && originalUrl.pathname.substr(-1) !== '/') {
+ path = ''
+ }
+
+ // create send stream
+ var stream = send(req, path, opts)
+
+ // add directory handler
+ stream.on('directory', onDirectory)
+
+ // add headers listener
+ if (setHeaders) {
+ stream.on('headers', setHeaders)
+ }
+
+ // add file listener for fallthrough
+ if (fallthrough) {
+ stream.on('file', function onFile () {
+ // once file is determined, always forward error
+ forwardError = true
+ })
+ }
+
+ // forward errors
+ stream.on('error', function error (err) {
+ if (forwardError || !(err.statusCode < 500)) {
+ next(err)
+ return
+ }
+
+ next()
+ })
+
+ // pipe
+ stream.pipe(res)
+ }
+}
+
+/**
+ * Collapse all leading slashes into a single slash
+ * @private
+ */
+function collapseLeadingSlashes (str) {
+ for (var i = 0; i < str.length; i++) {
+ if (str[i] !== '/') {
+ break
+ }
+ }
+
+ return i > 1
+ ? '/' + str.substr(i)
+ : str
+}
+
+/**
+ * Create a directory listener that just 404s.
+ * @private
+ */
+
+function createNotFoundDirectoryListener () {
+ return function notFound () {
+ this.error(404)
+ }
+}
+
+/**
+ * Create a directory listener that performs a redirect.
+ * @private
+ */
+
+function createRedirectDirectoryListener () {
+ return function redirect () {
+ if (this.hasTrailingSlash()) {
+ this.error(404)
+ return
+ }
+
+ // get original URL
+ var originalUrl = parseUrl.original(this.req)
+
+ // append trailing slash
+ originalUrl.path = null
+ originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + '/')
+
+ // reformat the URL
+ var loc = encodeUrl(url.format(originalUrl))
+ var msg = 'Redirecting to ' + escapeHtml(loc) + ' \n'
+ var res = this.res
+
+ // send redirect response
+ res.statusCode = 301
+ res.setHeader('Content-Type', 'text/html; charset=UTF-8')
+ res.setHeader('Content-Length', Buffer.byteLength(msg))
+ res.setHeader('X-Content-Type-Options', 'nosniff')
+ res.setHeader('Location', loc)
+ res.end(msg)
+ }
+}
diff --git a/server/node_modules/express/node_modules/serve-static/package.json b/server/node_modules/express/node_modules/serve-static/package.json
new file mode 100755
index 0000000..aa1c2e4
--- /dev/null
+++ b/server/node_modules/express/node_modules/serve-static/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "serve-static",
+ "description": "Serve static files",
+ "version": "1.11.1",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/expressjs/serve-static.git"
+ },
+ "dependencies": {
+ "encodeurl": "~1.0.1",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.1",
+ "send": "0.14.1"
+ },
+ "devDependencies": {
+ "eslint": "2.11.1",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.3.2",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "2.5.3",
+ "supertest": "1.1.0"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "scripts": {
+ "lint": "eslint **/*.js",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
+ },
+ "gitHead": "b3a24df138ea2f2c43afcbee0dcce5badf4c78ae",
+ "bugs": {
+ "url": "https://github.com/expressjs/serve-static/issues"
+ },
+ "homepage": "https://github.com/expressjs/serve-static#readme",
+ "_id": "serve-static@1.11.1",
+ "_shasum": "d6cce7693505f733c759de57befc1af76c0f0805",
+ "_from": "serve-static@>=1.11.1 <1.12.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "d6cce7693505f733c759de57befc1af76c0f0805",
+ "tarball": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/serve-static-1.11.1.tgz_1465608601758_0.0030737747438251972"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.1.tgz"
+}
diff --git a/server/node_modules/express/node_modules/type-is/HISTORY.md b/server/node_modules/express/node_modules/type-is/HISTORY.md
new file mode 100755
index 0000000..5ec118c
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/HISTORY.md
@@ -0,0 +1,206 @@
+1.6.13 / 2016-05-18
+===================
+
+ * deps: mime-types@~2.1.11
+ - Add new mime types
+
+1.6.12 / 2016-02-28
+===================
+
+ * deps: mime-types@~2.1.10
+ - Add new mime types
+ - Fix extension of `application/dash+xml`
+ - Update primary extension for `audio/mp4`
+
+1.6.11 / 2016-01-29
+===================
+
+ * deps: mime-types@~2.1.9
+ - Add new mime types
+
+1.6.10 / 2015-12-01
+===================
+
+ * deps: mime-types@~2.1.8
+ - Add new mime types
+
+1.6.9 / 2015-09-27
+==================
+
+ * deps: mime-types@~2.1.7
+ - Add new mime types
+
+1.6.8 / 2015-09-04
+==================
+
+ * deps: mime-types@~2.1.6
+ - Add new mime types
+
+1.6.7 / 2015-08-20
+==================
+
+ * Fix type error when given invalid type to match against
+ * deps: mime-types@~2.1.5
+ - Add new mime types
+
+1.6.6 / 2015-07-31
+==================
+
+ * deps: mime-types@~2.1.4
+ - Add new mime types
+
+1.6.5 / 2015-07-16
+==================
+
+ * deps: mime-types@~2.1.3
+ - Add new mime types
+
+1.6.4 / 2015-07-01
+==================
+
+ * deps: mime-types@~2.1.2
+ - Add new mime types
+ * perf: enable strict mode
+ * perf: remove argument reassignment
+
+1.6.3 / 2015-06-08
+==================
+
+ * deps: mime-types@~2.1.1
+ - Add new mime types
+ * perf: reduce try block size
+ * perf: remove bitwise operations
+
+1.6.2 / 2015-05-10
+==================
+
+ * deps: mime-types@~2.0.11
+ - Add new mime types
+
+1.6.1 / 2015-03-13
+==================
+
+ * deps: mime-types@~2.0.10
+ - Add new mime types
+
+1.6.0 / 2015-02-12
+==================
+
+ * fix false-positives in `hasBody` `Transfer-Encoding` check
+ * support wildcard for both type and subtype (`*/*`)
+
+1.5.7 / 2015-02-09
+==================
+
+ * fix argument reassignment
+ * deps: mime-types@~2.0.9
+ - Add new mime types
+
+1.5.6 / 2015-01-29
+==================
+
+ * deps: mime-types@~2.0.8
+ - Add new mime types
+
+1.5.5 / 2014-12-30
+==================
+
+ * deps: mime-types@~2.0.7
+ - Add new mime types
+ - Fix missing extensions
+ - Fix various invalid MIME type entries
+ - Remove example template MIME types
+ - deps: mime-db@~1.5.0
+
+1.5.4 / 2014-12-10
+==================
+
+ * deps: mime-types@~2.0.4
+ - Add new mime types
+ - deps: mime-db@~1.3.0
+
+1.5.3 / 2014-11-09
+==================
+
+ * deps: mime-types@~2.0.3
+ - Add new mime types
+ - deps: mime-db@~1.2.0
+
+1.5.2 / 2014-09-28
+==================
+
+ * deps: mime-types@~2.0.2
+ - Add new mime types
+ - deps: mime-db@~1.1.0
+
+1.5.1 / 2014-09-07
+==================
+
+ * Support Node.js 0.6
+ * deps: media-typer@0.3.0
+ * deps: mime-types@~2.0.1
+ - Support Node.js 0.6
+
+1.5.0 / 2014-09-05
+==================
+
+ * fix `hasbody` to be true for `content-length: 0`
+
+1.4.0 / 2014-09-02
+==================
+
+ * update mime-types
+
+1.3.2 / 2014-06-24
+==================
+
+ * use `~` range on mime-types
+
+1.3.1 / 2014-06-19
+==================
+
+ * fix global variable leak
+
+1.3.0 / 2014-06-19
+==================
+
+ * improve type parsing
+
+ - invalid media type never matches
+ - media type not case-sensitive
+ - extra LWS does not affect results
+
+1.2.2 / 2014-06-19
+==================
+
+ * fix behavior on unknown type argument
+
+1.2.1 / 2014-06-03
+==================
+
+ * switch dependency from `mime` to `mime-types@1.0.0`
+
+1.2.0 / 2014-05-11
+==================
+
+ * support suffix matching:
+
+ - `+json` matches `application/vnd+json`
+ - `*/vnd+json` matches `application/vnd+json`
+ - `application/*+json` matches `application/vnd+json`
+
+1.1.0 / 2014-04-12
+==================
+
+ * add non-array values support
+ * expose internal utilities:
+
+ - `.is()`
+ - `.hasBody()`
+ - `.normalize()`
+ - `.match()`
+
+1.0.1 / 2014-03-30
+==================
+
+ * add `multipart` as a shorthand
diff --git a/server/node_modules/express/node_modules/type-is/LICENSE b/server/node_modules/express/node_modules/type-is/LICENSE
new file mode 100755
index 0000000..386b7b6
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2014 Jonathan Ong
+Copyright (c) 2014-2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/type-is/README.md b/server/node_modules/express/node_modules/type-is/README.md
new file mode 100755
index 0000000..008a7af
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/README.md
@@ -0,0 +1,136 @@
+# type-is
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Infer the content-type of a request.
+
+### Install
+
+```sh
+$ npm install type-is
+```
+
+## API
+
+```js
+var http = require('http')
+var is = require('type-is')
+
+http.createServer(function (req, res) {
+ var istext = is(req, ['text/*'])
+ res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text')
+})
+```
+
+### type = is(request, types)
+
+`request` is the node HTTP request. `types` is an array of types.
+
+```js
+// req.headers.content-type = 'application/json'
+
+is(req, ['json']) // 'json'
+is(req, ['html', 'json']) // 'json'
+is(req, ['application/*']) // 'application/json'
+is(req, ['application/json']) // 'application/json'
+
+is(req, ['html']) // false
+```
+
+### is.hasBody(request)
+
+Returns a Boolean if the given `request` has a body, regardless of the
+`Content-Type` header.
+
+Having a body has no relation to how large the body is (it may be 0 bytes).
+This is similar to how file existence works. If a body does exist, then this
+indicates that there is data to read from the Node.js request stream.
+
+```js
+if (is.hasBody(req)) {
+ // read the body, since there is one
+
+ req.on('data', function (chunk) {
+ // ...
+ })
+}
+```
+
+### type = is.is(mediaType, types)
+
+`mediaType` is the [media type](https://tools.ietf.org/html/rfc6838) string. `types` is an array of types.
+
+```js
+var mediaType = 'application/json'
+
+is.is(mediaType, ['json']) // 'json'
+is.is(mediaType, ['html', 'json']) // 'json'
+is.is(mediaType, ['application/*']) // 'application/json'
+is.is(mediaType, ['application/json']) // 'application/json'
+
+is.is(mediaType, ['html']) // false
+```
+
+### Each type can be:
+
+- An extension name such as `json`. This name will be returned if matched.
+- A mime type such as `application/json`.
+- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. The full mime type will be returned if matched.
+- A suffix such as `+json`. This can be combined with a wildcard such as `*/vnd+json` or `application/*+json`. The full mime type will be returned if matched.
+
+`false` will be returned if no type matches or the content type is invalid.
+
+`null` will be returned if the request does not have a body.
+
+## Examples
+
+#### Example body parser
+
+```js
+var is = require('type-is');
+
+function bodyParser(req, res, next) {
+ if (!is.hasBody(req)) {
+ return next()
+ }
+
+ switch (is(req, ['urlencoded', 'json', 'multipart'])) {
+ case 'urlencoded':
+ // parse urlencoded body
+ throw new Error('implement urlencoded body parsing')
+ break
+ case 'json':
+ // parse json body
+ throw new Error('implement json body parsing')
+ break
+ case 'multipart':
+ // parse multipart body
+ throw new Error('implement multipart body parsing')
+ break
+ default:
+ // 415 error code
+ res.statusCode = 415
+ res.end()
+ return
+ }
+}
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/type-is.svg
+[npm-url]: https://npmjs.org/package/type-is
+[node-version-image]: https://img.shields.io/node/v/type-is.svg
+[node-version-url]: https://nodejs.org/en/download/
+[travis-image]: https://img.shields.io/travis/jshttp/type-is/master.svg
+[travis-url]: https://travis-ci.org/jshttp/type-is
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/type-is/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/type-is?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/type-is.svg
+[downloads-url]: https://npmjs.org/package/type-is
diff --git a/server/node_modules/express/node_modules/type-is/index.js b/server/node_modules/express/node_modules/type-is/index.js
new file mode 100755
index 0000000..4da7301
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/index.js
@@ -0,0 +1,262 @@
+/*!
+ * type-is
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var typer = require('media-typer')
+var mime = require('mime-types')
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = typeofrequest
+module.exports.is = typeis
+module.exports.hasBody = hasbody
+module.exports.normalize = normalize
+module.exports.match = mimeMatch
+
+/**
+ * Compare a `value` content-type with `types`.
+ * Each `type` can be an extension like `html`,
+ * a special shortcut like `multipart` or `urlencoded`,
+ * or a mime type.
+ *
+ * If no types match, `false` is returned.
+ * Otherwise, the first `type` that matches is returned.
+ *
+ * @param {String} value
+ * @param {Array} types
+ * @public
+ */
+
+function typeis (value, types_) {
+ var i
+ var types = types_
+
+ // remove parameters and normalize
+ var val = tryNormalizeType(value)
+
+ // no type or invalid
+ if (!val) {
+ return false
+ }
+
+ // support flattened arguments
+ if (types && !Array.isArray(types)) {
+ types = new Array(arguments.length - 1)
+ for (i = 0; i < types.length; i++) {
+ types[i] = arguments[i + 1]
+ }
+ }
+
+ // no types, return the content type
+ if (!types || !types.length) {
+ return val
+ }
+
+ var type
+ for (i = 0; i < types.length; i++) {
+ if (mimeMatch(normalize(type = types[i]), val)) {
+ return type[0] === '+' || type.indexOf('*') !== -1
+ ? val
+ : type
+ }
+ }
+
+ // no matches
+ return false
+}
+
+/**
+ * Check if a request has a request body.
+ * A request with a body __must__ either have `transfer-encoding`
+ * or `content-length` headers set.
+ * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3
+ *
+ * @param {Object} request
+ * @return {Boolean}
+ * @public
+ */
+
+function hasbody (req) {
+ return req.headers['transfer-encoding'] !== undefined ||
+ !isNaN(req.headers['content-length'])
+}
+
+/**
+ * Check if the incoming request contains the "Content-Type"
+ * header field, and it contains any of the give mime `type`s.
+ * If there is no request body, `null` is returned.
+ * If there is no content type, `false` is returned.
+ * Otherwise, it returns the first `type` that matches.
+ *
+ * Examples:
+ *
+ * // With Content-Type: text/html; charset=utf-8
+ * this.is('html'); // => 'html'
+ * this.is('text/html'); // => 'text/html'
+ * this.is('text/*', 'application/json'); // => 'text/html'
+ *
+ * // When Content-Type is application/json
+ * this.is('json', 'urlencoded'); // => 'json'
+ * this.is('application/json'); // => 'application/json'
+ * this.is('html', 'application/*'); // => 'application/json'
+ *
+ * this.is('html'); // => false
+ *
+ * @param {String|Array} types...
+ * @return {String|false|null}
+ * @public
+ */
+
+function typeofrequest (req, types_) {
+ var types = types_
+
+ // no body
+ if (!hasbody(req)) {
+ return null
+ }
+
+ // support flattened arguments
+ if (arguments.length > 2) {
+ types = new Array(arguments.length - 1)
+ for (var i = 0; i < types.length; i++) {
+ types[i] = arguments[i + 1]
+ }
+ }
+
+ // request content type
+ var value = req.headers['content-type']
+
+ return typeis(value, types)
+}
+
+/**
+ * Normalize a mime type.
+ * If it's a shorthand, expand it to a valid mime type.
+ *
+ * In general, you probably want:
+ *
+ * var type = is(req, ['urlencoded', 'json', 'multipart']);
+ *
+ * Then use the appropriate body parsers.
+ * These three are the most common request body types
+ * and are thus ensured to work.
+ *
+ * @param {String} type
+ * @private
+ */
+
+function normalize (type) {
+ if (typeof type !== 'string') {
+ // invalid type
+ return false
+ }
+
+ switch (type) {
+ case 'urlencoded':
+ return 'application/x-www-form-urlencoded'
+ case 'multipart':
+ return 'multipart/*'
+ }
+
+ if (type[0] === '+') {
+ // "+json" -> "*/*+json" expando
+ return '*/*' + type
+ }
+
+ return type.indexOf('/') === -1
+ ? mime.lookup(type)
+ : type
+}
+
+/**
+ * Check if `expected` mime type
+ * matches `actual` mime type with
+ * wildcard and +suffix support.
+ *
+ * @param {String} expected
+ * @param {String} actual
+ * @return {Boolean}
+ * @private
+ */
+
+function mimeMatch (expected, actual) {
+ // invalid type
+ if (expected === false) {
+ return false
+ }
+
+ // split types
+ var actualParts = actual.split('/')
+ var expectedParts = expected.split('/')
+
+ // invalid format
+ if (actualParts.length !== 2 || expectedParts.length !== 2) {
+ return false
+ }
+
+ // validate type
+ if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {
+ return false
+ }
+
+ // validate suffix wildcard
+ if (expectedParts[1].substr(0, 2) === '*+') {
+ return expectedParts[1].length <= actualParts[1].length + 1 &&
+ expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length)
+ }
+
+ // validate subtype
+ if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {
+ return false
+ }
+
+ return true
+}
+
+/**
+ * Normalize a type and remove parameters.
+ *
+ * @param {string} value
+ * @return {string}
+ * @private
+ */
+
+function normalizeType (value) {
+ // parse the type
+ var type = typer.parse(value)
+
+ // remove the parameters
+ type.parameters = undefined
+
+ // reformat it
+ return typer.format(type)
+}
+
+/**
+ * Try to normalize a type and remove parameters.
+ *
+ * @param {string} value
+ * @return {string}
+ * @private
+ */
+
+function tryNormalizeType (value) {
+ try {
+ return normalizeType(value)
+ } catch (err) {
+ return null
+ }
+}
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/media-typer/HISTORY.md b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/HISTORY.md
new file mode 100755
index 0000000..62c2003
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/HISTORY.md
@@ -0,0 +1,22 @@
+0.3.0 / 2014-09-07
+==================
+
+ * Support Node.js 0.6
+ * Throw error when parameter format invalid on parse
+
+0.2.0 / 2014-06-18
+==================
+
+ * Add `typer.format()` to format media types
+
+0.1.0 / 2014-06-17
+==================
+
+ * Accept `req` as argument to `parse`
+ * Accept `res` as argument to `parse`
+ * Parse media type with extra LWS between type and first parameter
+
+0.0.0 / 2014-06-13
+==================
+
+ * Initial implementation
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/media-typer/LICENSE b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/LICENSE
new file mode 100755
index 0000000..b7dce6c
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/media-typer/README.md b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/README.md
new file mode 100755
index 0000000..d8df623
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/README.md
@@ -0,0 +1,81 @@
+# media-typer
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Simple RFC 6838 media type parser
+
+## Installation
+
+```sh
+$ npm install media-typer
+```
+
+## API
+
+```js
+var typer = require('media-typer')
+```
+
+### typer.parse(string)
+
+```js
+var obj = typer.parse('image/svg+xml; charset=utf-8')
+```
+
+Parse a media type string. This will return an object with the following
+properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`):
+
+ - `type`: The type of the media type (always lower case). Example: `'image'`
+
+ - `subtype`: The subtype of the media type (always lower case). Example: `'svg'`
+
+ - `suffix`: The suffix of the media type (always lower case). Example: `'xml'`
+
+ - `parameters`: An object of the parameters in the media type (name of parameter always lower case). Example: `{charset: 'utf-8'}`
+
+### typer.parse(req)
+
+```js
+var obj = typer.parse(req)
+```
+
+Parse the `content-type` header from the given `req`. Short-cut for
+`typer.parse(req.headers['content-type'])`.
+
+### typer.parse(res)
+
+```js
+var obj = typer.parse(res)
+```
+
+Parse the `content-type` header set on the given `res`. Short-cut for
+`typer.parse(res.getHeader('content-type'))`.
+
+### typer.format(obj)
+
+```js
+var obj = typer.format({type: 'image', subtype: 'svg', suffix: 'xml'})
+```
+
+Format an object into a media type string. This will return a string of the
+mime type for the given object. For the properties of the object, see the
+documentation for `typer.parse(string)`.
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/media-typer.svg?style=flat
+[npm-url]: https://npmjs.org/package/media-typer
+[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/media-typer.svg?style=flat
+[travis-url]: https://travis-ci.org/jshttp/media-typer
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/media-typer.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/jshttp/media-typer
+[downloads-image]: https://img.shields.io/npm/dm/media-typer.svg?style=flat
+[downloads-url]: https://npmjs.org/package/media-typer
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/media-typer/index.js b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/index.js
new file mode 100755
index 0000000..07f7295
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/index.js
@@ -0,0 +1,270 @@
+/*!
+ * media-typer
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+/**
+ * RegExp to match *( ";" parameter ) in RFC 2616 sec 3.7
+ *
+ * parameter = token "=" ( token | quoted-string )
+ * token = 1*
+ * separators = "(" | ")" | "<" | ">" | "@"
+ * | "," | ";" | ":" | "\" | <">
+ * | "/" | "[" | "]" | "?" | "="
+ * | "{" | "}" | SP | HT
+ * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
+ * qdtext = >
+ * quoted-pair = "\" CHAR
+ * CHAR =
+ * TEXT =
+ * LWS = [CRLF] 1*( SP | HT )
+ * CRLF = CR LF
+ * CR =
+ * LF =
+ * SP =
+ * SHT =
+ * CTL =
+ * OCTET =
+ */
+var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g;
+var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/
+var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/
+
+/**
+ * RegExp to match quoted-pair in RFC 2616
+ *
+ * quoted-pair = "\" CHAR
+ * CHAR =
+ */
+var qescRegExp = /\\([\u0000-\u007f])/g;
+
+/**
+ * RegExp to match chars that must be quoted-pair in RFC 2616
+ */
+var quoteRegExp = /([\\"])/g;
+
+/**
+ * RegExp to match type in RFC 6838
+ *
+ * type-name = restricted-name
+ * subtype-name = restricted-name
+ * restricted-name = restricted-name-first *126restricted-name-chars
+ * restricted-name-first = ALPHA / DIGIT
+ * restricted-name-chars = ALPHA / DIGIT / "!" / "#" /
+ * "$" / "&" / "-" / "^" / "_"
+ * restricted-name-chars =/ "." ; Characters before first dot always
+ * ; specify a facet name
+ * restricted-name-chars =/ "+" ; Characters after last plus always
+ * ; specify a structured syntax suffix
+ * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
+ * DIGIT = %x30-39 ; 0-9
+ */
+var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/
+var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/
+var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;
+
+/**
+ * Module exports.
+ */
+
+exports.format = format
+exports.parse = parse
+
+/**
+ * Format object to media type.
+ *
+ * @param {object} obj
+ * @return {string}
+ * @api public
+ */
+
+function format(obj) {
+ if (!obj || typeof obj !== 'object') {
+ throw new TypeError('argument obj is required')
+ }
+
+ var parameters = obj.parameters
+ var subtype = obj.subtype
+ var suffix = obj.suffix
+ var type = obj.type
+
+ if (!type || !typeNameRegExp.test(type)) {
+ throw new TypeError('invalid type')
+ }
+
+ if (!subtype || !subtypeNameRegExp.test(subtype)) {
+ throw new TypeError('invalid subtype')
+ }
+
+ // format as type/subtype
+ var string = type + '/' + subtype
+
+ // append +suffix
+ if (suffix) {
+ if (!typeNameRegExp.test(suffix)) {
+ throw new TypeError('invalid suffix')
+ }
+
+ string += '+' + suffix
+ }
+
+ // append parameters
+ if (parameters && typeof parameters === 'object') {
+ var param
+ var params = Object.keys(parameters).sort()
+
+ for (var i = 0; i < params.length; i++) {
+ param = params[i]
+
+ if (!tokenRegExp.test(param)) {
+ throw new TypeError('invalid parameter name')
+ }
+
+ string += '; ' + param + '=' + qstring(parameters[param])
+ }
+ }
+
+ return string
+}
+
+/**
+ * Parse media type to object.
+ *
+ * @param {string|object} string
+ * @return {Object}
+ * @api public
+ */
+
+function parse(string) {
+ if (!string) {
+ throw new TypeError('argument string is required')
+ }
+
+ // support req/res-like objects as argument
+ if (typeof string === 'object') {
+ string = getcontenttype(string)
+ }
+
+ if (typeof string !== 'string') {
+ throw new TypeError('argument string is required to be a string')
+ }
+
+ var index = string.indexOf(';')
+ var type = index !== -1
+ ? string.substr(0, index)
+ : string
+
+ var key
+ var match
+ var obj = splitType(type)
+ var params = {}
+ var value
+
+ paramRegExp.lastIndex = index
+
+ while (match = paramRegExp.exec(string)) {
+ if (match.index !== index) {
+ throw new TypeError('invalid parameter format')
+ }
+
+ index += match[0].length
+ key = match[1].toLowerCase()
+ value = match[2]
+
+ if (value[0] === '"') {
+ // remove quotes and escapes
+ value = value
+ .substr(1, value.length - 2)
+ .replace(qescRegExp, '$1')
+ }
+
+ params[key] = value
+ }
+
+ if (index !== -1 && index !== string.length) {
+ throw new TypeError('invalid parameter format')
+ }
+
+ obj.parameters = params
+
+ return obj
+}
+
+/**
+ * Get content-type from req/res objects.
+ *
+ * @param {object}
+ * @return {Object}
+ * @api private
+ */
+
+function getcontenttype(obj) {
+ if (typeof obj.getHeader === 'function') {
+ // res-like
+ return obj.getHeader('content-type')
+ }
+
+ if (typeof obj.headers === 'object') {
+ // req-like
+ return obj.headers && obj.headers['content-type']
+ }
+}
+
+/**
+ * Quote a string if necessary.
+ *
+ * @param {string} val
+ * @return {string}
+ * @api private
+ */
+
+function qstring(val) {
+ var str = String(val)
+
+ // no need to quote tokens
+ if (tokenRegExp.test(str)) {
+ return str
+ }
+
+ if (str.length > 0 && !textRegExp.test(str)) {
+ throw new TypeError('invalid parameter value')
+ }
+
+ return '"' + str.replace(quoteRegExp, '\\$1') + '"'
+}
+
+/**
+ * Simply "type/subtype+siffx" into parts.
+ *
+ * @param {string} string
+ * @return {Object}
+ * @api private
+ */
+
+function splitType(string) {
+ var match = typeRegExp.exec(string.toLowerCase())
+
+ if (!match) {
+ throw new TypeError('invalid media type')
+ }
+
+ var type = match[1]
+ var subtype = match[2]
+ var suffix
+
+ // suffix after last +
+ var index = subtype.lastIndexOf('+')
+ if (index !== -1) {
+ suffix = subtype.substr(index + 1)
+ subtype = subtype.substr(0, index)
+ }
+
+ var obj = {
+ type: type,
+ subtype: subtype,
+ suffix: suffix
+ }
+
+ return obj
+}
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/media-typer/package.json b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/package.json
new file mode 100755
index 0000000..f6d6712
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/media-typer/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "media-typer",
+ "description": "Simple RFC 6838 media type parser and formatter",
+ "version": "0.3.0",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/media-typer.git"
+ },
+ "devDependencies": {
+ "istanbul": "0.3.2",
+ "mocha": "~1.21.4",
+ "should": "~4.0.4"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --check-leaks --bail test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "d49d41ffd0bb5a0655fa44a59df2ec0bfc835b16",
+ "bugs": {
+ "url": "https://github.com/jshttp/media-typer/issues"
+ },
+ "homepage": "https://github.com/jshttp/media-typer",
+ "_id": "media-typer@0.3.0",
+ "_shasum": "8710d7af0aa626f8fffa1ce00168545263255748",
+ "_from": "media-typer@0.3.0",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "8710d7af0aa626f8fffa1ce00168545263255748",
+ "tarball": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md
new file mode 100755
index 0000000..63bd4ea
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md
@@ -0,0 +1,197 @@
+2.1.11 / 2016-05-01
+===================
+
+ * deps: mime-db@~1.23.0
+ - Add new mime types
+
+2.1.10 / 2016-02-15
+===================
+
+ * deps: mime-db@~1.22.0
+ - Add new mime types
+ - Fix extension of `application/dash+xml`
+ - Update primary extension for `audio/mp4`
+
+2.1.9 / 2016-01-06
+==================
+
+ * deps: mime-db@~1.21.0
+ - Add new mime types
+
+2.1.8 / 2015-11-30
+==================
+
+ * deps: mime-db@~1.20.0
+ - Add new mime types
+
+2.1.7 / 2015-09-20
+==================
+
+ * deps: mime-db@~1.19.0
+ - Add new mime types
+
+2.1.6 / 2015-09-03
+==================
+
+ * deps: mime-db@~1.18.0
+ - Add new mime types
+
+2.1.5 / 2015-08-20
+==================
+
+ * deps: mime-db@~1.17.0
+ - Add new mime types
+
+2.1.4 / 2015-07-30
+==================
+
+ * deps: mime-db@~1.16.0
+ - Add new mime types
+
+2.1.3 / 2015-07-13
+==================
+
+ * deps: mime-db@~1.15.0
+ - Add new mime types
+
+2.1.2 / 2015-06-25
+==================
+
+ * deps: mime-db@~1.14.0
+ - Add new mime types
+
+2.1.1 / 2015-06-08
+==================
+
+ * perf: fix deopt during mapping
+
+2.1.0 / 2015-06-07
+==================
+
+ * Fix incorrectly treating extension-less file name as extension
+ - i.e. `'path/to/json'` will no longer return `application/json`
+ * Fix `.charset(type)` to accept parameters
+ * Fix `.charset(type)` to match case-insensitive
+ * Improve generation of extension to MIME mapping
+ * Refactor internals for readability and no argument reassignment
+ * Prefer `application/*` MIME types from the same source
+ * Prefer any type over `application/octet-stream`
+ * deps: mime-db@~1.13.0
+ - Add nginx as a source
+ - Add new mime types
+
+2.0.14 / 2015-06-06
+===================
+
+ * deps: mime-db@~1.12.0
+ - Add new mime types
+
+2.0.13 / 2015-05-31
+===================
+
+ * deps: mime-db@~1.11.0
+ - Add new mime types
+
+2.0.12 / 2015-05-19
+===================
+
+ * deps: mime-db@~1.10.0
+ - Add new mime types
+
+2.0.11 / 2015-05-05
+===================
+
+ * deps: mime-db@~1.9.1
+ - Add new mime types
+
+2.0.10 / 2015-03-13
+===================
+
+ * deps: mime-db@~1.8.0
+ - Add new mime types
+
+2.0.9 / 2015-02-09
+==================
+
+ * deps: mime-db@~1.7.0
+ - Add new mime types
+ - Community extensions ownership transferred from `node-mime`
+
+2.0.8 / 2015-01-29
+==================
+
+ * deps: mime-db@~1.6.0
+ - Add new mime types
+
+2.0.7 / 2014-12-30
+==================
+
+ * deps: mime-db@~1.5.0
+ - Add new mime types
+ - Fix various invalid MIME type entries
+
+2.0.6 / 2014-12-30
+==================
+
+ * deps: mime-db@~1.4.0
+ - Add new mime types
+ - Fix various invalid MIME type entries
+ - Remove example template MIME types
+
+2.0.5 / 2014-12-29
+==================
+
+ * deps: mime-db@~1.3.1
+ - Fix missing extensions
+
+2.0.4 / 2014-12-10
+==================
+
+ * deps: mime-db@~1.3.0
+ - Add new mime types
+
+2.0.3 / 2014-11-09
+==================
+
+ * deps: mime-db@~1.2.0
+ - Add new mime types
+
+2.0.2 / 2014-09-28
+==================
+
+ * deps: mime-db@~1.1.0
+ - Add new mime types
+ - Add additional compressible
+ - Update charsets
+
+2.0.1 / 2014-09-07
+==================
+
+ * Support Node.js 0.6
+
+2.0.0 / 2014-09-02
+==================
+
+ * Use `mime-db`
+ * Remove `.define()`
+
+1.0.2 / 2014-08-04
+==================
+
+ * Set charset=utf-8 for `text/javascript`
+
+1.0.1 / 2014-06-24
+==================
+
+ * Add `text/jsx` type
+
+1.0.0 / 2014-05-12
+==================
+
+ * Return `false` for unknown types
+ * Set charset=utf-8 for `application/json`
+
+0.1.0 / 2014-05-02
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE
new file mode 100755
index 0000000..0616607
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2014 Jonathan Ong
+Copyright (c) 2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md
new file mode 100755
index 0000000..e77d615
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md
@@ -0,0 +1,103 @@
+# mime-types
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+The ultimate javascript content-type utility.
+
+Similar to [node-mime](https://github.com/broofa/node-mime), except:
+
+- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`,
+ so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.
+- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.
+- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db)
+- No `.define()` functionality
+
+Otherwise, the API is compatible.
+
+## Install
+
+```sh
+$ npm install mime-types
+```
+
+## Adding Types
+
+All mime types are based on [mime-db](https://github.com/jshttp/mime-db),
+so open a PR there if you'd like to add mime types.
+
+## API
+
+```js
+var mime = require('mime-types')
+```
+
+All functions return `false` if input is invalid or not found.
+
+### mime.lookup(path)
+
+Lookup the content-type associated with a file.
+
+```js
+mime.lookup('json') // 'application/json'
+mime.lookup('.md') // 'text/x-markdown'
+mime.lookup('file.html') // 'text/html'
+mime.lookup('folder/file.js') // 'application/javascript'
+mime.lookup('folder/.htaccess') // false
+
+mime.lookup('cats') // false
+```
+
+### mime.contentType(type)
+
+Create a full content-type header given a content-type or extension.
+
+```js
+mime.contentType('markdown') // 'text/x-markdown; charset=utf-8'
+mime.contentType('file.json') // 'application/json; charset=utf-8'
+
+// from a full path
+mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'
+```
+
+### mime.extension(type)
+
+Get the default extension for a content-type.
+
+```js
+mime.extension('application/octet-stream') // 'bin'
+```
+
+### mime.charset(type)
+
+Lookup the implied default charset of a content-type.
+
+```js
+mime.charset('text/x-markdown') // 'UTF-8'
+```
+
+### var type = mime.types[extension]
+
+A map of content-types by extension.
+
+### [extensions...] = mime.extensions[type]
+
+A map of extensions by content-type.
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/mime-types.svg
+[npm-url]: https://npmjs.org/package/mime-types
+[node-version-image]: https://img.shields.io/node/v/mime-types.svg
+[node-version-url]: https://nodejs.org/en/download/
+[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg
+[travis-url]: https://travis-ci.org/jshttp/mime-types
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/mime-types
+[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg
+[downloads-url]: https://npmjs.org/package/mime-types
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js
new file mode 100755
index 0000000..f7008b2
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js
@@ -0,0 +1,188 @@
+/*!
+ * mime-types
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var db = require('mime-db')
+var extname = require('path').extname
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/
+var textTypeRegExp = /^text\//i
+
+/**
+ * Module exports.
+ * @public
+ */
+
+exports.charset = charset
+exports.charsets = { lookup: charset }
+exports.contentType = contentType
+exports.extension = extension
+exports.extensions = Object.create(null)
+exports.lookup = lookup
+exports.types = Object.create(null)
+
+// Populate the extensions/types maps
+populateMaps(exports.extensions, exports.types)
+
+/**
+ * Get the default charset for a MIME type.
+ *
+ * @param {string} type
+ * @return {boolean|string}
+ */
+
+function charset(type) {
+ if (!type || typeof type !== 'string') {
+ return false
+ }
+
+ // TODO: use media-typer
+ var match = extractTypeRegExp.exec(type)
+ var mime = match && db[match[1].toLowerCase()]
+
+ if (mime && mime.charset) {
+ return mime.charset
+ }
+
+ // default text/* to utf-8
+ if (match && textTypeRegExp.test(match[1])) {
+ return 'UTF-8'
+ }
+
+ return false
+}
+
+/**
+ * Create a full Content-Type header given a MIME type or extension.
+ *
+ * @param {string} str
+ * @return {boolean|string}
+ */
+
+function contentType(str) {
+ // TODO: should this even be in this module?
+ if (!str || typeof str !== 'string') {
+ return false
+ }
+
+ var mime = str.indexOf('/') === -1
+ ? exports.lookup(str)
+ : str
+
+ if (!mime) {
+ return false
+ }
+
+ // TODO: use content-type or other module
+ if (mime.indexOf('charset') === -1) {
+ var charset = exports.charset(mime)
+ if (charset) mime += '; charset=' + charset.toLowerCase()
+ }
+
+ return mime
+}
+
+/**
+ * Get the default extension for a MIME type.
+ *
+ * @param {string} type
+ * @return {boolean|string}
+ */
+
+function extension(type) {
+ if (!type || typeof type !== 'string') {
+ return false
+ }
+
+ // TODO: use media-typer
+ var match = extractTypeRegExp.exec(type)
+
+ // get extensions
+ var exts = match && exports.extensions[match[1].toLowerCase()]
+
+ if (!exts || !exts.length) {
+ return false
+ }
+
+ return exts[0]
+}
+
+/**
+ * Lookup the MIME type for a file path/extension.
+ *
+ * @param {string} path
+ * @return {boolean|string}
+ */
+
+function lookup(path) {
+ if (!path || typeof path !== 'string') {
+ return false
+ }
+
+ // get the extension ("ext" or ".ext" or full path)
+ var extension = extname('x.' + path)
+ .toLowerCase()
+ .substr(1)
+
+ if (!extension) {
+ return false
+ }
+
+ return exports.types[extension] || false
+}
+
+/**
+ * Populate the extensions and types maps.
+ * @private
+ */
+
+function populateMaps(extensions, types) {
+ // source preference (least -> most)
+ var preference = ['nginx', 'apache', undefined, 'iana']
+
+ Object.keys(db).forEach(function forEachMimeType(type) {
+ var mime = db[type]
+ var exts = mime.extensions
+
+ if (!exts || !exts.length) {
+ return
+ }
+
+ // mime -> extensions
+ extensions[type] = exts
+
+ // extension -> mime
+ for (var i = 0; i < exts.length; i++) {
+ var extension = exts[i]
+
+ if (types[extension]) {
+ var from = preference.indexOf(db[types[extension]].source)
+ var to = preference.indexOf(mime.source)
+
+ if (types[extension] !== 'application/octet-stream'
+ && from > to || (from === to && types[extension].substr(0, 12) === 'application/')) {
+ // skip the remapping
+ continue
+ }
+ }
+
+ // set the extension -> mime
+ types[extension] = type
+ }
+ })
+}
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/HISTORY.md
new file mode 100755
index 0000000..d6705ac
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/HISTORY.md
@@ -0,0 +1,341 @@
+1.23.0 / 2016-05-01
+===================
+
+ * Add `application/efi`
+ * Add `application/vnd.3gpp.sms+xml`
+ * Add `application/vnd.3lightssoftware.imagescal`
+ * Add `application/vnd.coreos.ignition+json`
+ * Add `application/vnd.desmume.movie`
+ * Add `application/vnd.onepager`
+ * Add `application/vnd.vel+json`
+ * Add `text/prs.prop.logic`
+ * Add `video/encaprtp`
+ * Add `video/h265`
+ * Add `video/iso.segment`
+ * Add `video/raptorfec`
+ * Add `video/rtploopback`
+ * Add `video/vnd.radgamettools.bink`
+ * Add `video/vnd.radgamettools.smacker`
+ * Add `video/vp8`
+ * Add extension `.3gpp` to `audio/3gpp`
+
+1.22.0 / 2016-02-15
+===================
+
+ * Add `application/ppsp-tracker+json`
+ * Add `application/problem+json`
+ * Add `application/problem+xml`
+ * Add `application/vnd.hdt`
+ * Add `application/vnd.ms-printschematicket+xml`
+ * Add `model/vnd.rosette.annotated-data-model`
+ * Add `text/slim`
+ * Add extension `.rng` to `application/xml`
+ * Fix extension of `application/dash+xml` to be `.mpd`
+ * Update primary extension to `.m4a` for `audio/mp4`
+
+1.21.0 / 2016-01-06
+===================
+
+ * Add `application/emergencycalldata.comment+xml`
+ * Add `application/emergencycalldata.deviceinfo+xml`
+ * Add `application/emergencycalldata.providerinfo+xml`
+ * Add `application/emergencycalldata.serviceinfo+xml`
+ * Add `application/emergencycalldata.subscriberinfo+xml`
+ * Add `application/vnd.filmit.zfc`
+ * Add `application/vnd.google-apps.document`
+ * Add `application/vnd.google-apps.presentation`
+ * Add `application/vnd.google-apps.spreadsheet`
+ * Add `application/vnd.mapbox-vector-tile`
+ * Add `application/vnd.ms-printdevicecapabilities+xml`
+ * Add `application/vnd.ms-windows.devicepairing`
+ * Add `application/vnd.ms-windows.nwprinting.oob`
+ * Add `application/vnd.tml`
+ * Add `audio/evs`
+
+1.20.0 / 2015-11-10
+===================
+
+ * Add `application/cdni`
+ * Add `application/csvm+json`
+ * Add `application/rfc+xml`
+ * Add `application/vnd.3gpp.access-transfer-events+xml`
+ * Add `application/vnd.3gpp.srvcc-ext+xml`
+ * Add `application/vnd.ms-windows.wsd.oob`
+ * Add `application/vnd.oxli.countgraph`
+ * Add `application/vnd.pagerduty+json`
+ * Add `text/x-suse-ymp`
+
+1.19.0 / 2015-09-17
+===================
+
+ * Add `application/vnd.3gpp-prose-pc3ch+xml`
+ * Add `application/vnd.3gpp.srvcc-info+xml`
+ * Add `application/vnd.apple.pkpass`
+ * Add `application/vnd.drive+json`
+
+1.18.0 / 2015-09-03
+===================
+
+ * Add `application/pkcs12`
+ * Add `application/vnd.3gpp-prose+xml`
+ * Add `application/vnd.3gpp.mid-call+xml`
+ * Add `application/vnd.3gpp.state-and-event-info+xml`
+ * Add `application/vnd.anki`
+ * Add `application/vnd.firemonkeys.cloudcell`
+ * Add `application/vnd.openblox.game+xml`
+ * Add `application/vnd.openblox.game-binary`
+
+1.17.0 / 2015-08-13
+===================
+
+ * Add `application/x-msdos-program`
+ * Add `audio/g711-0`
+ * Add `image/vnd.mozilla.apng`
+ * Add extension `.exe` to `application/x-msdos-program`
+
+1.16.0 / 2015-07-29
+===================
+
+ * Add `application/vnd.uri-map`
+
+1.15.0 / 2015-07-13
+===================
+
+ * Add `application/x-httpd-php`
+
+1.14.0 / 2015-06-25
+===================
+
+ * Add `application/scim+json`
+ * Add `application/vnd.3gpp.ussd+xml`
+ * Add `application/vnd.biopax.rdf+xml`
+ * Add `text/x-processing`
+
+1.13.0 / 2015-06-07
+===================
+
+ * Add nginx as a source
+ * Add `application/x-cocoa`
+ * Add `application/x-java-archive-diff`
+ * Add `application/x-makeself`
+ * Add `application/x-perl`
+ * Add `application/x-pilot`
+ * Add `application/x-redhat-package-manager`
+ * Add `application/x-sea`
+ * Add `audio/x-m4a`
+ * Add `audio/x-realaudio`
+ * Add `image/x-jng`
+ * Add `text/mathml`
+
+1.12.0 / 2015-06-05
+===================
+
+ * Add `application/bdoc`
+ * Add `application/vnd.hyperdrive+json`
+ * Add `application/x-bdoc`
+ * Add extension `.rtf` to `text/rtf`
+
+1.11.0 / 2015-05-31
+===================
+
+ * Add `audio/wav`
+ * Add `audio/wave`
+ * Add extension `.litcoffee` to `text/coffeescript`
+ * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data`
+ * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install`
+
+1.10.0 / 2015-05-19
+===================
+
+ * Add `application/vnd.balsamiq.bmpr`
+ * Add `application/vnd.microsoft.portable-executable`
+ * Add `application/x-ns-proxy-autoconfig`
+
+1.9.1 / 2015-04-19
+==================
+
+ * Remove `.json` extension from `application/manifest+json`
+ - This is causing bugs downstream
+
+1.9.0 / 2015-04-19
+==================
+
+ * Add `application/manifest+json`
+ * Add `application/vnd.micro+json`
+ * Add `image/vnd.zbrush.pcx`
+ * Add `image/x-ms-bmp`
+
+1.8.0 / 2015-03-13
+==================
+
+ * Add `application/vnd.citationstyles.style+xml`
+ * Add `application/vnd.fastcopy-disk-image`
+ * Add `application/vnd.gov.sk.xmldatacontainer+xml`
+ * Add extension `.jsonld` to `application/ld+json`
+
+1.7.0 / 2015-02-08
+==================
+
+ * Add `application/vnd.gerber`
+ * Add `application/vnd.msa-disk-image`
+
+1.6.1 / 2015-02-05
+==================
+
+ * Community extensions ownership transferred from `node-mime`
+
+1.6.0 / 2015-01-29
+==================
+
+ * Add `application/jose`
+ * Add `application/jose+json`
+ * Add `application/json-seq`
+ * Add `application/jwk+json`
+ * Add `application/jwk-set+json`
+ * Add `application/jwt`
+ * Add `application/rdap+json`
+ * Add `application/vnd.gov.sk.e-form+xml`
+ * Add `application/vnd.ims.imsccv1p3`
+
+1.5.0 / 2014-12-30
+==================
+
+ * Add `application/vnd.oracle.resource+json`
+ * Fix various invalid MIME type entries
+ - `application/mbox+xml`
+ - `application/oscp-response`
+ - `application/vwg-multiplexed`
+ - `audio/g721`
+
+1.4.0 / 2014-12-21
+==================
+
+ * Add `application/vnd.ims.imsccv1p2`
+ * Fix various invalid MIME type entries
+ - `application/vnd-acucobol`
+ - `application/vnd-curl`
+ - `application/vnd-dart`
+ - `application/vnd-dxr`
+ - `application/vnd-fdf`
+ - `application/vnd-mif`
+ - `application/vnd-sema`
+ - `application/vnd-wap-wmlc`
+ - `application/vnd.adobe.flash-movie`
+ - `application/vnd.dece-zip`
+ - `application/vnd.dvb_service`
+ - `application/vnd.micrografx-igx`
+ - `application/vnd.sealed-doc`
+ - `application/vnd.sealed-eml`
+ - `application/vnd.sealed-mht`
+ - `application/vnd.sealed-ppt`
+ - `application/vnd.sealed-tiff`
+ - `application/vnd.sealed-xls`
+ - `application/vnd.sealedmedia.softseal-html`
+ - `application/vnd.sealedmedia.softseal-pdf`
+ - `application/vnd.wap-slc`
+ - `application/vnd.wap-wbxml`
+ - `audio/vnd.sealedmedia.softseal-mpeg`
+ - `image/vnd-djvu`
+ - `image/vnd-svf`
+ - `image/vnd-wap-wbmp`
+ - `image/vnd.sealed-png`
+ - `image/vnd.sealedmedia.softseal-gif`
+ - `image/vnd.sealedmedia.softseal-jpg`
+ - `model/vnd-dwf`
+ - `model/vnd.parasolid.transmit-binary`
+ - `model/vnd.parasolid.transmit-text`
+ - `text/vnd-a`
+ - `text/vnd-curl`
+ - `text/vnd.wap-wml`
+ * Remove example template MIME types
+ - `application/example`
+ - `audio/example`
+ - `image/example`
+ - `message/example`
+ - `model/example`
+ - `multipart/example`
+ - `text/example`
+ - `video/example`
+
+1.3.1 / 2014-12-16
+==================
+
+ * Fix missing extensions
+ - `application/json5`
+ - `text/hjson`
+
+1.3.0 / 2014-12-07
+==================
+
+ * Add `application/a2l`
+ * Add `application/aml`
+ * Add `application/atfx`
+ * Add `application/atxml`
+ * Add `application/cdfx+xml`
+ * Add `application/dii`
+ * Add `application/json5`
+ * Add `application/lxf`
+ * Add `application/mf4`
+ * Add `application/vnd.apache.thrift.compact`
+ * Add `application/vnd.apache.thrift.json`
+ * Add `application/vnd.coffeescript`
+ * Add `application/vnd.enphase.envoy`
+ * Add `application/vnd.ims.imsccv1p1`
+ * Add `text/csv-schema`
+ * Add `text/hjson`
+ * Add `text/markdown`
+ * Add `text/yaml`
+
+1.2.0 / 2014-11-09
+==================
+
+ * Add `application/cea`
+ * Add `application/dit`
+ * Add `application/vnd.gov.sk.e-form+zip`
+ * Add `application/vnd.tmd.mediaflex.api+xml`
+ * Type `application/epub+zip` is now IANA-registered
+
+1.1.2 / 2014-10-23
+==================
+
+ * Rebuild database for `application/x-www-form-urlencoded` change
+
+1.1.1 / 2014-10-20
+==================
+
+ * Mark `application/x-www-form-urlencoded` as compressible.
+
+1.1.0 / 2014-09-28
+==================
+
+ * Add `application/font-woff2`
+
+1.0.3 / 2014-09-25
+==================
+
+ * Fix engine requirement in package
+
+1.0.2 / 2014-09-25
+==================
+
+ * Add `application/coap-group+json`
+ * Add `application/dcd`
+ * Add `application/vnd.apache.thrift.binary`
+ * Add `image/vnd.tencent.tap`
+ * Mark all JSON-derived types as compressible
+ * Update `text/vtt` data
+
+1.0.1 / 2014-08-30
+==================
+
+ * Fix extension ordering
+
+1.0.0 / 2014-08-30
+==================
+
+ * Add `application/atf`
+ * Add `application/merge-patch+json`
+ * Add `multipart/x-mixed-replace`
+ * Add `source: 'apache'` metadata
+ * Add `source: 'iana'` metadata
+ * Remove badly-assumed charset data
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE
new file mode 100755
index 0000000..a7ae8ee
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE
@@ -0,0 +1,22 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md
new file mode 100755
index 0000000..7662440
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md
@@ -0,0 +1,82 @@
+# mime-db
+
+[![NPM Version][npm-version-image]][npm-url]
+[![NPM Downloads][npm-downloads-image]][npm-url]
+[![Node.js Version][node-image]][node-url]
+[![Build Status][travis-image]][travis-url]
+[![Coverage Status][coveralls-image]][coveralls-url]
+
+This is a database of all mime types.
+It consists of a single, public JSON file and does not include any logic,
+allowing it to remain as un-opinionated as possible with an API.
+It aggregates data from the following sources:
+
+- http://www.iana.org/assignments/media-types/media-types.xhtml
+- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types
+
+## Installation
+
+```bash
+npm install mime-db
+```
+
+### Database Download
+
+If you're crazy enough to use this in the browser, you can just grab the
+JSON file using [RawGit](https://rawgit.com/). It is recommended to replace
+`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the
+JSON format may change in the future.
+
+```
+https://cdn.rawgit.com/jshttp/mime-db/master/db.json
+```
+
+## Usage
+
+```js
+var db = require('mime-db');
+
+// grab data on .js files
+var data = db['application/javascript'];
+```
+
+## Data Structure
+
+The JSON file is a map lookup for lowercased mime types.
+Each mime type has the following properties:
+
+- `.source` - where the mime type is defined.
+ If not set, it's probably a custom media type.
+ - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)
+ - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)
+ - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)
+- `.extensions[]` - known extensions associated with this mime type.
+- `.compressible` - whether a file of this type can be gzipped.
+- `.charset` - the default charset associated with this type, if any.
+
+If unknown, every property could be `undefined`.
+
+## Contributing
+
+To edit the database, only make PRs against `src/custom.json` or
+`src/custom-suffix.json`.
+
+To update the build, run `npm run build`.
+
+## Adding Custom Media Types
+
+The best way to get new media types included in this library is to register
+them with the IANA. The community registration procedure is outlined in
+[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types
+registered with the IANA are automatically pulled into this library.
+
+[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg
+[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg
+[npm-url]: https://npmjs.org/package/mime-db
+[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg
+[travis-url]: https://travis-ci.org/jshttp/mime-db
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master
+[node-image]: https://img.shields.io/node/v/mime-db.svg
+[node-url]: http://nodejs.org/download/
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json
new file mode 100755
index 0000000..0a5a8a7
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json
@@ -0,0 +1,6627 @@
+{
+ "application/1d-interleaved-parityfec": {
+ "source": "iana"
+ },
+ "application/3gpdash-qoe-report+xml": {
+ "source": "iana"
+ },
+ "application/3gpp-ims+xml": {
+ "source": "iana"
+ },
+ "application/a2l": {
+ "source": "iana"
+ },
+ "application/activemessage": {
+ "source": "iana"
+ },
+ "application/alto-costmap+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-costmapfilter+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-directory+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-endpointcost+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-endpointcostparams+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-endpointprop+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-endpointpropparams+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-error+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-networkmap+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/alto-networkmapfilter+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/aml": {
+ "source": "iana"
+ },
+ "application/andrew-inset": {
+ "source": "iana",
+ "extensions": ["ez"]
+ },
+ "application/applefile": {
+ "source": "iana"
+ },
+ "application/applixware": {
+ "source": "apache",
+ "extensions": ["aw"]
+ },
+ "application/atf": {
+ "source": "iana"
+ },
+ "application/atfx": {
+ "source": "iana"
+ },
+ "application/atom+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["atom"]
+ },
+ "application/atomcat+xml": {
+ "source": "iana",
+ "extensions": ["atomcat"]
+ },
+ "application/atomdeleted+xml": {
+ "source": "iana"
+ },
+ "application/atomicmail": {
+ "source": "iana"
+ },
+ "application/atomsvc+xml": {
+ "source": "iana",
+ "extensions": ["atomsvc"]
+ },
+ "application/atxml": {
+ "source": "iana"
+ },
+ "application/auth-policy+xml": {
+ "source": "iana"
+ },
+ "application/bacnet-xdd+zip": {
+ "source": "iana"
+ },
+ "application/batch-smtp": {
+ "source": "iana"
+ },
+ "application/bdoc": {
+ "compressible": false,
+ "extensions": ["bdoc"]
+ },
+ "application/beep+xml": {
+ "source": "iana"
+ },
+ "application/calendar+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/calendar+xml": {
+ "source": "iana"
+ },
+ "application/call-completion": {
+ "source": "iana"
+ },
+ "application/cals-1840": {
+ "source": "iana"
+ },
+ "application/cbor": {
+ "source": "iana"
+ },
+ "application/ccmp+xml": {
+ "source": "iana"
+ },
+ "application/ccxml+xml": {
+ "source": "iana",
+ "extensions": ["ccxml"]
+ },
+ "application/cdfx+xml": {
+ "source": "iana"
+ },
+ "application/cdmi-capability": {
+ "source": "iana",
+ "extensions": ["cdmia"]
+ },
+ "application/cdmi-container": {
+ "source": "iana",
+ "extensions": ["cdmic"]
+ },
+ "application/cdmi-domain": {
+ "source": "iana",
+ "extensions": ["cdmid"]
+ },
+ "application/cdmi-object": {
+ "source": "iana",
+ "extensions": ["cdmio"]
+ },
+ "application/cdmi-queue": {
+ "source": "iana",
+ "extensions": ["cdmiq"]
+ },
+ "application/cdni": {
+ "source": "iana"
+ },
+ "application/cea": {
+ "source": "iana"
+ },
+ "application/cea-2018+xml": {
+ "source": "iana"
+ },
+ "application/cellml+xml": {
+ "source": "iana"
+ },
+ "application/cfw": {
+ "source": "iana"
+ },
+ "application/cms": {
+ "source": "iana"
+ },
+ "application/cnrp+xml": {
+ "source": "iana"
+ },
+ "application/coap-group+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/commonground": {
+ "source": "iana"
+ },
+ "application/conference-info+xml": {
+ "source": "iana"
+ },
+ "application/cpl+xml": {
+ "source": "iana"
+ },
+ "application/csrattrs": {
+ "source": "iana"
+ },
+ "application/csta+xml": {
+ "source": "iana"
+ },
+ "application/cstadata+xml": {
+ "source": "iana"
+ },
+ "application/csvm+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/cu-seeme": {
+ "source": "apache",
+ "extensions": ["cu"]
+ },
+ "application/cybercash": {
+ "source": "iana"
+ },
+ "application/dart": {
+ "compressible": true
+ },
+ "application/dash+xml": {
+ "source": "iana",
+ "extensions": ["mpd"]
+ },
+ "application/dashdelta": {
+ "source": "iana"
+ },
+ "application/davmount+xml": {
+ "source": "iana",
+ "extensions": ["davmount"]
+ },
+ "application/dca-rft": {
+ "source": "iana"
+ },
+ "application/dcd": {
+ "source": "iana"
+ },
+ "application/dec-dx": {
+ "source": "iana"
+ },
+ "application/dialog-info+xml": {
+ "source": "iana"
+ },
+ "application/dicom": {
+ "source": "iana"
+ },
+ "application/dii": {
+ "source": "iana"
+ },
+ "application/dit": {
+ "source": "iana"
+ },
+ "application/dns": {
+ "source": "iana"
+ },
+ "application/docbook+xml": {
+ "source": "apache",
+ "extensions": ["dbk"]
+ },
+ "application/dskpp+xml": {
+ "source": "iana"
+ },
+ "application/dssc+der": {
+ "source": "iana",
+ "extensions": ["dssc"]
+ },
+ "application/dssc+xml": {
+ "source": "iana",
+ "extensions": ["xdssc"]
+ },
+ "application/dvcs": {
+ "source": "iana"
+ },
+ "application/ecmascript": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["ecma"]
+ },
+ "application/edi-consent": {
+ "source": "iana"
+ },
+ "application/edi-x12": {
+ "source": "iana",
+ "compressible": false
+ },
+ "application/edifact": {
+ "source": "iana",
+ "compressible": false
+ },
+ "application/efi": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.comment+xml": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.deviceinfo+xml": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.providerinfo+xml": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.serviceinfo+xml": {
+ "source": "iana"
+ },
+ "application/emergencycalldata.subscriberinfo+xml": {
+ "source": "iana"
+ },
+ "application/emma+xml": {
+ "source": "iana",
+ "extensions": ["emma"]
+ },
+ "application/emotionml+xml": {
+ "source": "iana"
+ },
+ "application/encaprtp": {
+ "source": "iana"
+ },
+ "application/epp+xml": {
+ "source": "iana"
+ },
+ "application/epub+zip": {
+ "source": "iana",
+ "extensions": ["epub"]
+ },
+ "application/eshop": {
+ "source": "iana"
+ },
+ "application/exi": {
+ "source": "iana",
+ "extensions": ["exi"]
+ },
+ "application/fastinfoset": {
+ "source": "iana"
+ },
+ "application/fastsoap": {
+ "source": "iana"
+ },
+ "application/fdt+xml": {
+ "source": "iana"
+ },
+ "application/fits": {
+ "source": "iana"
+ },
+ "application/font-sfnt": {
+ "source": "iana"
+ },
+ "application/font-tdpfr": {
+ "source": "iana",
+ "extensions": ["pfr"]
+ },
+ "application/font-woff": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["woff"]
+ },
+ "application/font-woff2": {
+ "compressible": false,
+ "extensions": ["woff2"]
+ },
+ "application/framework-attributes+xml": {
+ "source": "iana"
+ },
+ "application/gml+xml": {
+ "source": "apache",
+ "extensions": ["gml"]
+ },
+ "application/gpx+xml": {
+ "source": "apache",
+ "extensions": ["gpx"]
+ },
+ "application/gxf": {
+ "source": "apache",
+ "extensions": ["gxf"]
+ },
+ "application/gzip": {
+ "source": "iana",
+ "compressible": false
+ },
+ "application/h224": {
+ "source": "iana"
+ },
+ "application/held+xml": {
+ "source": "iana"
+ },
+ "application/http": {
+ "source": "iana"
+ },
+ "application/hyperstudio": {
+ "source": "iana",
+ "extensions": ["stk"]
+ },
+ "application/ibe-key-request+xml": {
+ "source": "iana"
+ },
+ "application/ibe-pkg-reply+xml": {
+ "source": "iana"
+ },
+ "application/ibe-pp-data": {
+ "source": "iana"
+ },
+ "application/iges": {
+ "source": "iana"
+ },
+ "application/im-iscomposing+xml": {
+ "source": "iana"
+ },
+ "application/index": {
+ "source": "iana"
+ },
+ "application/index.cmd": {
+ "source": "iana"
+ },
+ "application/index.obj": {
+ "source": "iana"
+ },
+ "application/index.response": {
+ "source": "iana"
+ },
+ "application/index.vnd": {
+ "source": "iana"
+ },
+ "application/inkml+xml": {
+ "source": "iana",
+ "extensions": ["ink","inkml"]
+ },
+ "application/iotp": {
+ "source": "iana"
+ },
+ "application/ipfix": {
+ "source": "iana",
+ "extensions": ["ipfix"]
+ },
+ "application/ipp": {
+ "source": "iana"
+ },
+ "application/isup": {
+ "source": "iana"
+ },
+ "application/its+xml": {
+ "source": "iana"
+ },
+ "application/java-archive": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["jar","war","ear"]
+ },
+ "application/java-serialized-object": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["ser"]
+ },
+ "application/java-vm": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["class"]
+ },
+ "application/javascript": {
+ "source": "iana",
+ "charset": "UTF-8",
+ "compressible": true,
+ "extensions": ["js"]
+ },
+ "application/jose": {
+ "source": "iana"
+ },
+ "application/jose+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/jrd+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/json": {
+ "source": "iana",
+ "charset": "UTF-8",
+ "compressible": true,
+ "extensions": ["json","map"]
+ },
+ "application/json-patch+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/json-seq": {
+ "source": "iana"
+ },
+ "application/json5": {
+ "extensions": ["json5"]
+ },
+ "application/jsonml+json": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["jsonml"]
+ },
+ "application/jwk+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/jwk-set+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/jwt": {
+ "source": "iana"
+ },
+ "application/kpml-request+xml": {
+ "source": "iana"
+ },
+ "application/kpml-response+xml": {
+ "source": "iana"
+ },
+ "application/ld+json": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["jsonld"]
+ },
+ "application/link-format": {
+ "source": "iana"
+ },
+ "application/load-control+xml": {
+ "source": "iana"
+ },
+ "application/lost+xml": {
+ "source": "iana",
+ "extensions": ["lostxml"]
+ },
+ "application/lostsync+xml": {
+ "source": "iana"
+ },
+ "application/lxf": {
+ "source": "iana"
+ },
+ "application/mac-binhex40": {
+ "source": "iana",
+ "extensions": ["hqx"]
+ },
+ "application/mac-compactpro": {
+ "source": "apache",
+ "extensions": ["cpt"]
+ },
+ "application/macwriteii": {
+ "source": "iana"
+ },
+ "application/mads+xml": {
+ "source": "iana",
+ "extensions": ["mads"]
+ },
+ "application/manifest+json": {
+ "charset": "UTF-8",
+ "compressible": true,
+ "extensions": ["webmanifest"]
+ },
+ "application/marc": {
+ "source": "iana",
+ "extensions": ["mrc"]
+ },
+ "application/marcxml+xml": {
+ "source": "iana",
+ "extensions": ["mrcx"]
+ },
+ "application/mathematica": {
+ "source": "iana",
+ "extensions": ["ma","nb","mb"]
+ },
+ "application/mathml+xml": {
+ "source": "iana",
+ "extensions": ["mathml"]
+ },
+ "application/mathml-content+xml": {
+ "source": "iana"
+ },
+ "application/mathml-presentation+xml": {
+ "source": "iana"
+ },
+ "application/mbms-associated-procedure-description+xml": {
+ "source": "iana"
+ },
+ "application/mbms-deregister+xml": {
+ "source": "iana"
+ },
+ "application/mbms-envelope+xml": {
+ "source": "iana"
+ },
+ "application/mbms-msk+xml": {
+ "source": "iana"
+ },
+ "application/mbms-msk-response+xml": {
+ "source": "iana"
+ },
+ "application/mbms-protection-description+xml": {
+ "source": "iana"
+ },
+ "application/mbms-reception-report+xml": {
+ "source": "iana"
+ },
+ "application/mbms-register+xml": {
+ "source": "iana"
+ },
+ "application/mbms-register-response+xml": {
+ "source": "iana"
+ },
+ "application/mbms-schedule+xml": {
+ "source": "iana"
+ },
+ "application/mbms-user-service-description+xml": {
+ "source": "iana"
+ },
+ "application/mbox": {
+ "source": "iana",
+ "extensions": ["mbox"]
+ },
+ "application/media-policy-dataset+xml": {
+ "source": "iana"
+ },
+ "application/media_control+xml": {
+ "source": "iana"
+ },
+ "application/mediaservercontrol+xml": {
+ "source": "iana",
+ "extensions": ["mscml"]
+ },
+ "application/merge-patch+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/metalink+xml": {
+ "source": "apache",
+ "extensions": ["metalink"]
+ },
+ "application/metalink4+xml": {
+ "source": "iana",
+ "extensions": ["meta4"]
+ },
+ "application/mets+xml": {
+ "source": "iana",
+ "extensions": ["mets"]
+ },
+ "application/mf4": {
+ "source": "iana"
+ },
+ "application/mikey": {
+ "source": "iana"
+ },
+ "application/mods+xml": {
+ "source": "iana",
+ "extensions": ["mods"]
+ },
+ "application/moss-keys": {
+ "source": "iana"
+ },
+ "application/moss-signature": {
+ "source": "iana"
+ },
+ "application/mosskey-data": {
+ "source": "iana"
+ },
+ "application/mosskey-request": {
+ "source": "iana"
+ },
+ "application/mp21": {
+ "source": "iana",
+ "extensions": ["m21","mp21"]
+ },
+ "application/mp4": {
+ "source": "iana",
+ "extensions": ["mp4s","m4p"]
+ },
+ "application/mpeg4-generic": {
+ "source": "iana"
+ },
+ "application/mpeg4-iod": {
+ "source": "iana"
+ },
+ "application/mpeg4-iod-xmt": {
+ "source": "iana"
+ },
+ "application/mrb-consumer+xml": {
+ "source": "iana"
+ },
+ "application/mrb-publish+xml": {
+ "source": "iana"
+ },
+ "application/msc-ivr+xml": {
+ "source": "iana"
+ },
+ "application/msc-mixer+xml": {
+ "source": "iana"
+ },
+ "application/msword": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["doc","dot"]
+ },
+ "application/mxf": {
+ "source": "iana",
+ "extensions": ["mxf"]
+ },
+ "application/nasdata": {
+ "source": "iana"
+ },
+ "application/news-checkgroups": {
+ "source": "iana"
+ },
+ "application/news-groupinfo": {
+ "source": "iana"
+ },
+ "application/news-transmission": {
+ "source": "iana"
+ },
+ "application/nlsml+xml": {
+ "source": "iana"
+ },
+ "application/nss": {
+ "source": "iana"
+ },
+ "application/ocsp-request": {
+ "source": "iana"
+ },
+ "application/ocsp-response": {
+ "source": "iana"
+ },
+ "application/octet-stream": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]
+ },
+ "application/oda": {
+ "source": "iana",
+ "extensions": ["oda"]
+ },
+ "application/odx": {
+ "source": "iana"
+ },
+ "application/oebps-package+xml": {
+ "source": "iana",
+ "extensions": ["opf"]
+ },
+ "application/ogg": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["ogx"]
+ },
+ "application/omdoc+xml": {
+ "source": "apache",
+ "extensions": ["omdoc"]
+ },
+ "application/onenote": {
+ "source": "apache",
+ "extensions": ["onetoc","onetoc2","onetmp","onepkg"]
+ },
+ "application/oxps": {
+ "source": "iana",
+ "extensions": ["oxps"]
+ },
+ "application/p2p-overlay+xml": {
+ "source": "iana"
+ },
+ "application/parityfec": {
+ "source": "iana"
+ },
+ "application/patch-ops-error+xml": {
+ "source": "iana",
+ "extensions": ["xer"]
+ },
+ "application/pdf": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["pdf"]
+ },
+ "application/pdx": {
+ "source": "iana"
+ },
+ "application/pgp-encrypted": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["pgp"]
+ },
+ "application/pgp-keys": {
+ "source": "iana"
+ },
+ "application/pgp-signature": {
+ "source": "iana",
+ "extensions": ["asc","sig"]
+ },
+ "application/pics-rules": {
+ "source": "apache",
+ "extensions": ["prf"]
+ },
+ "application/pidf+xml": {
+ "source": "iana"
+ },
+ "application/pidf-diff+xml": {
+ "source": "iana"
+ },
+ "application/pkcs10": {
+ "source": "iana",
+ "extensions": ["p10"]
+ },
+ "application/pkcs12": {
+ "source": "iana"
+ },
+ "application/pkcs7-mime": {
+ "source": "iana",
+ "extensions": ["p7m","p7c"]
+ },
+ "application/pkcs7-signature": {
+ "source": "iana",
+ "extensions": ["p7s"]
+ },
+ "application/pkcs8": {
+ "source": "iana",
+ "extensions": ["p8"]
+ },
+ "application/pkix-attr-cert": {
+ "source": "iana",
+ "extensions": ["ac"]
+ },
+ "application/pkix-cert": {
+ "source": "iana",
+ "extensions": ["cer"]
+ },
+ "application/pkix-crl": {
+ "source": "iana",
+ "extensions": ["crl"]
+ },
+ "application/pkix-pkipath": {
+ "source": "iana",
+ "extensions": ["pkipath"]
+ },
+ "application/pkixcmp": {
+ "source": "iana",
+ "extensions": ["pki"]
+ },
+ "application/pls+xml": {
+ "source": "iana",
+ "extensions": ["pls"]
+ },
+ "application/poc-settings+xml": {
+ "source": "iana"
+ },
+ "application/postscript": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["ai","eps","ps"]
+ },
+ "application/ppsp-tracker+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/problem+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/problem+xml": {
+ "source": "iana"
+ },
+ "application/provenance+xml": {
+ "source": "iana"
+ },
+ "application/prs.alvestrand.titrax-sheet": {
+ "source": "iana"
+ },
+ "application/prs.cww": {
+ "source": "iana",
+ "extensions": ["cww"]
+ },
+ "application/prs.hpub+zip": {
+ "source": "iana"
+ },
+ "application/prs.nprend": {
+ "source": "iana"
+ },
+ "application/prs.plucker": {
+ "source": "iana"
+ },
+ "application/prs.rdf-xml-crypt": {
+ "source": "iana"
+ },
+ "application/prs.xsf+xml": {
+ "source": "iana"
+ },
+ "application/pskc+xml": {
+ "source": "iana",
+ "extensions": ["pskcxml"]
+ },
+ "application/qsig": {
+ "source": "iana"
+ },
+ "application/raptorfec": {
+ "source": "iana"
+ },
+ "application/rdap+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/rdf+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["rdf"]
+ },
+ "application/reginfo+xml": {
+ "source": "iana",
+ "extensions": ["rif"]
+ },
+ "application/relax-ng-compact-syntax": {
+ "source": "iana",
+ "extensions": ["rnc"]
+ },
+ "application/remote-printing": {
+ "source": "iana"
+ },
+ "application/reputon+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/resource-lists+xml": {
+ "source": "iana",
+ "extensions": ["rl"]
+ },
+ "application/resource-lists-diff+xml": {
+ "source": "iana",
+ "extensions": ["rld"]
+ },
+ "application/rfc+xml": {
+ "source": "iana"
+ },
+ "application/riscos": {
+ "source": "iana"
+ },
+ "application/rlmi+xml": {
+ "source": "iana"
+ },
+ "application/rls-services+xml": {
+ "source": "iana",
+ "extensions": ["rs"]
+ },
+ "application/rpki-ghostbusters": {
+ "source": "iana",
+ "extensions": ["gbr"]
+ },
+ "application/rpki-manifest": {
+ "source": "iana",
+ "extensions": ["mft"]
+ },
+ "application/rpki-roa": {
+ "source": "iana",
+ "extensions": ["roa"]
+ },
+ "application/rpki-updown": {
+ "source": "iana"
+ },
+ "application/rsd+xml": {
+ "source": "apache",
+ "extensions": ["rsd"]
+ },
+ "application/rss+xml": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["rss"]
+ },
+ "application/rtf": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["rtf"]
+ },
+ "application/rtploopback": {
+ "source": "iana"
+ },
+ "application/rtx": {
+ "source": "iana"
+ },
+ "application/samlassertion+xml": {
+ "source": "iana"
+ },
+ "application/samlmetadata+xml": {
+ "source": "iana"
+ },
+ "application/sbml+xml": {
+ "source": "iana",
+ "extensions": ["sbml"]
+ },
+ "application/scaip+xml": {
+ "source": "iana"
+ },
+ "application/scim+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/scvp-cv-request": {
+ "source": "iana",
+ "extensions": ["scq"]
+ },
+ "application/scvp-cv-response": {
+ "source": "iana",
+ "extensions": ["scs"]
+ },
+ "application/scvp-vp-request": {
+ "source": "iana",
+ "extensions": ["spq"]
+ },
+ "application/scvp-vp-response": {
+ "source": "iana",
+ "extensions": ["spp"]
+ },
+ "application/sdp": {
+ "source": "iana",
+ "extensions": ["sdp"]
+ },
+ "application/sep+xml": {
+ "source": "iana"
+ },
+ "application/sep-exi": {
+ "source": "iana"
+ },
+ "application/session-info": {
+ "source": "iana"
+ },
+ "application/set-payment": {
+ "source": "iana"
+ },
+ "application/set-payment-initiation": {
+ "source": "iana",
+ "extensions": ["setpay"]
+ },
+ "application/set-registration": {
+ "source": "iana"
+ },
+ "application/set-registration-initiation": {
+ "source": "iana",
+ "extensions": ["setreg"]
+ },
+ "application/sgml": {
+ "source": "iana"
+ },
+ "application/sgml-open-catalog": {
+ "source": "iana"
+ },
+ "application/shf+xml": {
+ "source": "iana",
+ "extensions": ["shf"]
+ },
+ "application/sieve": {
+ "source": "iana"
+ },
+ "application/simple-filter+xml": {
+ "source": "iana"
+ },
+ "application/simple-message-summary": {
+ "source": "iana"
+ },
+ "application/simplesymbolcontainer": {
+ "source": "iana"
+ },
+ "application/slate": {
+ "source": "iana"
+ },
+ "application/smil": {
+ "source": "iana"
+ },
+ "application/smil+xml": {
+ "source": "iana",
+ "extensions": ["smi","smil"]
+ },
+ "application/smpte336m": {
+ "source": "iana"
+ },
+ "application/soap+fastinfoset": {
+ "source": "iana"
+ },
+ "application/soap+xml": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/sparql-query": {
+ "source": "iana",
+ "extensions": ["rq"]
+ },
+ "application/sparql-results+xml": {
+ "source": "iana",
+ "extensions": ["srx"]
+ },
+ "application/spirits-event+xml": {
+ "source": "iana"
+ },
+ "application/sql": {
+ "source": "iana"
+ },
+ "application/srgs": {
+ "source": "iana",
+ "extensions": ["gram"]
+ },
+ "application/srgs+xml": {
+ "source": "iana",
+ "extensions": ["grxml"]
+ },
+ "application/sru+xml": {
+ "source": "iana",
+ "extensions": ["sru"]
+ },
+ "application/ssdl+xml": {
+ "source": "apache",
+ "extensions": ["ssdl"]
+ },
+ "application/ssml+xml": {
+ "source": "iana",
+ "extensions": ["ssml"]
+ },
+ "application/tamp-apex-update": {
+ "source": "iana"
+ },
+ "application/tamp-apex-update-confirm": {
+ "source": "iana"
+ },
+ "application/tamp-community-update": {
+ "source": "iana"
+ },
+ "application/tamp-community-update-confirm": {
+ "source": "iana"
+ },
+ "application/tamp-error": {
+ "source": "iana"
+ },
+ "application/tamp-sequence-adjust": {
+ "source": "iana"
+ },
+ "application/tamp-sequence-adjust-confirm": {
+ "source": "iana"
+ },
+ "application/tamp-status-query": {
+ "source": "iana"
+ },
+ "application/tamp-status-response": {
+ "source": "iana"
+ },
+ "application/tamp-update": {
+ "source": "iana"
+ },
+ "application/tamp-update-confirm": {
+ "source": "iana"
+ },
+ "application/tar": {
+ "compressible": true
+ },
+ "application/tei+xml": {
+ "source": "iana",
+ "extensions": ["tei","teicorpus"]
+ },
+ "application/thraud+xml": {
+ "source": "iana",
+ "extensions": ["tfi"]
+ },
+ "application/timestamp-query": {
+ "source": "iana"
+ },
+ "application/timestamp-reply": {
+ "source": "iana"
+ },
+ "application/timestamped-data": {
+ "source": "iana",
+ "extensions": ["tsd"]
+ },
+ "application/ttml+xml": {
+ "source": "iana"
+ },
+ "application/tve-trigger": {
+ "source": "iana"
+ },
+ "application/ulpfec": {
+ "source": "iana"
+ },
+ "application/urc-grpsheet+xml": {
+ "source": "iana"
+ },
+ "application/urc-ressheet+xml": {
+ "source": "iana"
+ },
+ "application/urc-targetdesc+xml": {
+ "source": "iana"
+ },
+ "application/urc-uisocketdesc+xml": {
+ "source": "iana"
+ },
+ "application/vcard+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vcard+xml": {
+ "source": "iana"
+ },
+ "application/vemmi": {
+ "source": "iana"
+ },
+ "application/vividence.scriptfile": {
+ "source": "apache"
+ },
+ "application/vnd.3gpp-prose+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp-prose-pc3ch+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.access-transfer-events+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.bsf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.mid-call+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.pic-bw-large": {
+ "source": "iana",
+ "extensions": ["plb"]
+ },
+ "application/vnd.3gpp.pic-bw-small": {
+ "source": "iana",
+ "extensions": ["psb"]
+ },
+ "application/vnd.3gpp.pic-bw-var": {
+ "source": "iana",
+ "extensions": ["pvb"]
+ },
+ "application/vnd.3gpp.sms": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.sms+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.srvcc-ext+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.srvcc-info+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.state-and-event-info+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp.ussd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp2.bcmcsinfo+xml": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp2.sms": {
+ "source": "iana"
+ },
+ "application/vnd.3gpp2.tcap": {
+ "source": "iana",
+ "extensions": ["tcap"]
+ },
+ "application/vnd.3lightssoftware.imagescal": {
+ "source": "iana"
+ },
+ "application/vnd.3m.post-it-notes": {
+ "source": "iana",
+ "extensions": ["pwn"]
+ },
+ "application/vnd.accpac.simply.aso": {
+ "source": "iana",
+ "extensions": ["aso"]
+ },
+ "application/vnd.accpac.simply.imp": {
+ "source": "iana",
+ "extensions": ["imp"]
+ },
+ "application/vnd.acucobol": {
+ "source": "iana",
+ "extensions": ["acu"]
+ },
+ "application/vnd.acucorp": {
+ "source": "iana",
+ "extensions": ["atc","acutc"]
+ },
+ "application/vnd.adobe.air-application-installer-package+zip": {
+ "source": "apache",
+ "extensions": ["air"]
+ },
+ "application/vnd.adobe.flash.movie": {
+ "source": "iana"
+ },
+ "application/vnd.adobe.formscentral.fcdt": {
+ "source": "iana",
+ "extensions": ["fcdt"]
+ },
+ "application/vnd.adobe.fxp": {
+ "source": "iana",
+ "extensions": ["fxp","fxpl"]
+ },
+ "application/vnd.adobe.partial-upload": {
+ "source": "iana"
+ },
+ "application/vnd.adobe.xdp+xml": {
+ "source": "iana",
+ "extensions": ["xdp"]
+ },
+ "application/vnd.adobe.xfdf": {
+ "source": "iana",
+ "extensions": ["xfdf"]
+ },
+ "application/vnd.aether.imp": {
+ "source": "iana"
+ },
+ "application/vnd.ah-barcode": {
+ "source": "iana"
+ },
+ "application/vnd.ahead.space": {
+ "source": "iana",
+ "extensions": ["ahead"]
+ },
+ "application/vnd.airzip.filesecure.azf": {
+ "source": "iana",
+ "extensions": ["azf"]
+ },
+ "application/vnd.airzip.filesecure.azs": {
+ "source": "iana",
+ "extensions": ["azs"]
+ },
+ "application/vnd.amazon.ebook": {
+ "source": "apache",
+ "extensions": ["azw"]
+ },
+ "application/vnd.americandynamics.acc": {
+ "source": "iana",
+ "extensions": ["acc"]
+ },
+ "application/vnd.amiga.ami": {
+ "source": "iana",
+ "extensions": ["ami"]
+ },
+ "application/vnd.amundsen.maze+xml": {
+ "source": "iana"
+ },
+ "application/vnd.android.package-archive": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["apk"]
+ },
+ "application/vnd.anki": {
+ "source": "iana"
+ },
+ "application/vnd.anser-web-certificate-issue-initiation": {
+ "source": "iana",
+ "extensions": ["cii"]
+ },
+ "application/vnd.anser-web-funds-transfer-initiation": {
+ "source": "apache",
+ "extensions": ["fti"]
+ },
+ "application/vnd.antix.game-component": {
+ "source": "iana",
+ "extensions": ["atx"]
+ },
+ "application/vnd.apache.thrift.binary": {
+ "source": "iana"
+ },
+ "application/vnd.apache.thrift.compact": {
+ "source": "iana"
+ },
+ "application/vnd.apache.thrift.json": {
+ "source": "iana"
+ },
+ "application/vnd.api+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.apple.installer+xml": {
+ "source": "iana",
+ "extensions": ["mpkg"]
+ },
+ "application/vnd.apple.mpegurl": {
+ "source": "iana",
+ "extensions": ["m3u8"]
+ },
+ "application/vnd.apple.pkpass": {
+ "compressible": false,
+ "extensions": ["pkpass"]
+ },
+ "application/vnd.arastra.swi": {
+ "source": "iana"
+ },
+ "application/vnd.aristanetworks.swi": {
+ "source": "iana",
+ "extensions": ["swi"]
+ },
+ "application/vnd.artsquare": {
+ "source": "iana"
+ },
+ "application/vnd.astraea-software.iota": {
+ "source": "iana",
+ "extensions": ["iota"]
+ },
+ "application/vnd.audiograph": {
+ "source": "iana",
+ "extensions": ["aep"]
+ },
+ "application/vnd.autopackage": {
+ "source": "iana"
+ },
+ "application/vnd.avistar+xml": {
+ "source": "iana"
+ },
+ "application/vnd.balsamiq.bmml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.balsamiq.bmpr": {
+ "source": "iana"
+ },
+ "application/vnd.bekitzur-stech+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.biopax.rdf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.blueice.multipass": {
+ "source": "iana",
+ "extensions": ["mpm"]
+ },
+ "application/vnd.bluetooth.ep.oob": {
+ "source": "iana"
+ },
+ "application/vnd.bluetooth.le.oob": {
+ "source": "iana"
+ },
+ "application/vnd.bmi": {
+ "source": "iana",
+ "extensions": ["bmi"]
+ },
+ "application/vnd.businessobjects": {
+ "source": "iana",
+ "extensions": ["rep"]
+ },
+ "application/vnd.cab-jscript": {
+ "source": "iana"
+ },
+ "application/vnd.canon-cpdl": {
+ "source": "iana"
+ },
+ "application/vnd.canon-lips": {
+ "source": "iana"
+ },
+ "application/vnd.cendio.thinlinc.clientconf": {
+ "source": "iana"
+ },
+ "application/vnd.century-systems.tcp_stream": {
+ "source": "iana"
+ },
+ "application/vnd.chemdraw+xml": {
+ "source": "iana",
+ "extensions": ["cdxml"]
+ },
+ "application/vnd.chipnuts.karaoke-mmd": {
+ "source": "iana",
+ "extensions": ["mmd"]
+ },
+ "application/vnd.cinderella": {
+ "source": "iana",
+ "extensions": ["cdy"]
+ },
+ "application/vnd.cirpack.isdn-ext": {
+ "source": "iana"
+ },
+ "application/vnd.citationstyles.style+xml": {
+ "source": "iana"
+ },
+ "application/vnd.claymore": {
+ "source": "iana",
+ "extensions": ["cla"]
+ },
+ "application/vnd.cloanto.rp9": {
+ "source": "iana",
+ "extensions": ["rp9"]
+ },
+ "application/vnd.clonk.c4group": {
+ "source": "iana",
+ "extensions": ["c4g","c4d","c4f","c4p","c4u"]
+ },
+ "application/vnd.cluetrust.cartomobile-config": {
+ "source": "iana",
+ "extensions": ["c11amc"]
+ },
+ "application/vnd.cluetrust.cartomobile-config-pkg": {
+ "source": "iana",
+ "extensions": ["c11amz"]
+ },
+ "application/vnd.coffeescript": {
+ "source": "iana"
+ },
+ "application/vnd.collection+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.collection.doc+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.collection.next+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.commerce-battelle": {
+ "source": "iana"
+ },
+ "application/vnd.commonspace": {
+ "source": "iana",
+ "extensions": ["csp"]
+ },
+ "application/vnd.contact.cmsg": {
+ "source": "iana",
+ "extensions": ["cdbcmsg"]
+ },
+ "application/vnd.coreos.ignition+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.cosmocaller": {
+ "source": "iana",
+ "extensions": ["cmc"]
+ },
+ "application/vnd.crick.clicker": {
+ "source": "iana",
+ "extensions": ["clkx"]
+ },
+ "application/vnd.crick.clicker.keyboard": {
+ "source": "iana",
+ "extensions": ["clkk"]
+ },
+ "application/vnd.crick.clicker.palette": {
+ "source": "iana",
+ "extensions": ["clkp"]
+ },
+ "application/vnd.crick.clicker.template": {
+ "source": "iana",
+ "extensions": ["clkt"]
+ },
+ "application/vnd.crick.clicker.wordbank": {
+ "source": "iana",
+ "extensions": ["clkw"]
+ },
+ "application/vnd.criticaltools.wbs+xml": {
+ "source": "iana",
+ "extensions": ["wbs"]
+ },
+ "application/vnd.ctc-posml": {
+ "source": "iana",
+ "extensions": ["pml"]
+ },
+ "application/vnd.ctct.ws+xml": {
+ "source": "iana"
+ },
+ "application/vnd.cups-pdf": {
+ "source": "iana"
+ },
+ "application/vnd.cups-postscript": {
+ "source": "iana"
+ },
+ "application/vnd.cups-ppd": {
+ "source": "iana",
+ "extensions": ["ppd"]
+ },
+ "application/vnd.cups-raster": {
+ "source": "iana"
+ },
+ "application/vnd.cups-raw": {
+ "source": "iana"
+ },
+ "application/vnd.curl": {
+ "source": "iana"
+ },
+ "application/vnd.curl.car": {
+ "source": "apache",
+ "extensions": ["car"]
+ },
+ "application/vnd.curl.pcurl": {
+ "source": "apache",
+ "extensions": ["pcurl"]
+ },
+ "application/vnd.cyan.dean.root+xml": {
+ "source": "iana"
+ },
+ "application/vnd.cybank": {
+ "source": "iana"
+ },
+ "application/vnd.dart": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["dart"]
+ },
+ "application/vnd.data-vision.rdz": {
+ "source": "iana",
+ "extensions": ["rdz"]
+ },
+ "application/vnd.debian.binary-package": {
+ "source": "iana"
+ },
+ "application/vnd.dece.data": {
+ "source": "iana",
+ "extensions": ["uvf","uvvf","uvd","uvvd"]
+ },
+ "application/vnd.dece.ttml+xml": {
+ "source": "iana",
+ "extensions": ["uvt","uvvt"]
+ },
+ "application/vnd.dece.unspecified": {
+ "source": "iana",
+ "extensions": ["uvx","uvvx"]
+ },
+ "application/vnd.dece.zip": {
+ "source": "iana",
+ "extensions": ["uvz","uvvz"]
+ },
+ "application/vnd.denovo.fcselayout-link": {
+ "source": "iana",
+ "extensions": ["fe_launch"]
+ },
+ "application/vnd.desmume-movie": {
+ "source": "iana"
+ },
+ "application/vnd.desmume.movie": {
+ "source": "apache"
+ },
+ "application/vnd.dir-bi.plate-dl-nosuffix": {
+ "source": "iana"
+ },
+ "application/vnd.dm.delegation+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dna": {
+ "source": "iana",
+ "extensions": ["dna"]
+ },
+ "application/vnd.document+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.dolby.mlp": {
+ "source": "apache",
+ "extensions": ["mlp"]
+ },
+ "application/vnd.dolby.mobile.1": {
+ "source": "iana"
+ },
+ "application/vnd.dolby.mobile.2": {
+ "source": "iana"
+ },
+ "application/vnd.doremir.scorecloud-binary-document": {
+ "source": "iana"
+ },
+ "application/vnd.dpgraph": {
+ "source": "iana",
+ "extensions": ["dpg"]
+ },
+ "application/vnd.dreamfactory": {
+ "source": "iana",
+ "extensions": ["dfac"]
+ },
+ "application/vnd.drive+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ds-keypoint": {
+ "source": "apache",
+ "extensions": ["kpxx"]
+ },
+ "application/vnd.dtg.local": {
+ "source": "iana"
+ },
+ "application/vnd.dtg.local.flash": {
+ "source": "iana"
+ },
+ "application/vnd.dtg.local.html": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ait": {
+ "source": "iana",
+ "extensions": ["ait"]
+ },
+ "application/vnd.dvb.dvbj": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.esgcontainer": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcdftnotifaccess": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcesgaccess": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcesgaccess2": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcesgpdd": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.ipdcroaming": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.iptv.alfec-base": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.iptv.alfec-enhancement": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-aggregate-root+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-container+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-generic+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-ia-msglist+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-ia-registration-request+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-ia-registration-response+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.notif-init+xml": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.pfr": {
+ "source": "iana"
+ },
+ "application/vnd.dvb.service": {
+ "source": "iana",
+ "extensions": ["svc"]
+ },
+ "application/vnd.dxr": {
+ "source": "iana"
+ },
+ "application/vnd.dynageo": {
+ "source": "iana",
+ "extensions": ["geo"]
+ },
+ "application/vnd.dzr": {
+ "source": "iana"
+ },
+ "application/vnd.easykaraoke.cdgdownload": {
+ "source": "iana"
+ },
+ "application/vnd.ecdis-update": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.chart": {
+ "source": "iana",
+ "extensions": ["mag"]
+ },
+ "application/vnd.ecowin.filerequest": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.fileupdate": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.series": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.seriesrequest": {
+ "source": "iana"
+ },
+ "application/vnd.ecowin.seriesupdate": {
+ "source": "iana"
+ },
+ "application/vnd.emclient.accessrequest+xml": {
+ "source": "iana"
+ },
+ "application/vnd.enliven": {
+ "source": "iana",
+ "extensions": ["nml"]
+ },
+ "application/vnd.enphase.envoy": {
+ "source": "iana"
+ },
+ "application/vnd.eprints.data+xml": {
+ "source": "iana"
+ },
+ "application/vnd.epson.esf": {
+ "source": "iana",
+ "extensions": ["esf"]
+ },
+ "application/vnd.epson.msf": {
+ "source": "iana",
+ "extensions": ["msf"]
+ },
+ "application/vnd.epson.quickanime": {
+ "source": "iana",
+ "extensions": ["qam"]
+ },
+ "application/vnd.epson.salt": {
+ "source": "iana",
+ "extensions": ["slt"]
+ },
+ "application/vnd.epson.ssf": {
+ "source": "iana",
+ "extensions": ["ssf"]
+ },
+ "application/vnd.ericsson.quickcall": {
+ "source": "iana"
+ },
+ "application/vnd.eszigno3+xml": {
+ "source": "iana",
+ "extensions": ["es3","et3"]
+ },
+ "application/vnd.etsi.aoc+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.asic-e+zip": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.asic-s+zip": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.cug+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvcommand+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvdiscovery+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvprofile+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvsad-bc+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvsad-cod+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvsad-npvr+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvservice+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvsync+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.iptvueprofile+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.mcid+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.mheg5": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.overload-control-policy-dataset+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.pstn+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.sci+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.simservs+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.timestamp-token": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.tsl+xml": {
+ "source": "iana"
+ },
+ "application/vnd.etsi.tsl.der": {
+ "source": "iana"
+ },
+ "application/vnd.eudora.data": {
+ "source": "iana"
+ },
+ "application/vnd.ezpix-album": {
+ "source": "iana",
+ "extensions": ["ez2"]
+ },
+ "application/vnd.ezpix-package": {
+ "source": "iana",
+ "extensions": ["ez3"]
+ },
+ "application/vnd.f-secure.mobile": {
+ "source": "iana"
+ },
+ "application/vnd.fastcopy-disk-image": {
+ "source": "iana"
+ },
+ "application/vnd.fdf": {
+ "source": "iana",
+ "extensions": ["fdf"]
+ },
+ "application/vnd.fdsn.mseed": {
+ "source": "iana",
+ "extensions": ["mseed"]
+ },
+ "application/vnd.fdsn.seed": {
+ "source": "iana",
+ "extensions": ["seed","dataless"]
+ },
+ "application/vnd.ffsns": {
+ "source": "iana"
+ },
+ "application/vnd.filmit.zfc": {
+ "source": "iana"
+ },
+ "application/vnd.fints": {
+ "source": "iana"
+ },
+ "application/vnd.firemonkeys.cloudcell": {
+ "source": "iana"
+ },
+ "application/vnd.flographit": {
+ "source": "iana",
+ "extensions": ["gph"]
+ },
+ "application/vnd.fluxtime.clip": {
+ "source": "iana",
+ "extensions": ["ftc"]
+ },
+ "application/vnd.font-fontforge-sfd": {
+ "source": "iana"
+ },
+ "application/vnd.framemaker": {
+ "source": "iana",
+ "extensions": ["fm","frame","maker","book"]
+ },
+ "application/vnd.frogans.fnc": {
+ "source": "iana",
+ "extensions": ["fnc"]
+ },
+ "application/vnd.frogans.ltf": {
+ "source": "iana",
+ "extensions": ["ltf"]
+ },
+ "application/vnd.fsc.weblaunch": {
+ "source": "iana",
+ "extensions": ["fsc"]
+ },
+ "application/vnd.fujitsu.oasys": {
+ "source": "iana",
+ "extensions": ["oas"]
+ },
+ "application/vnd.fujitsu.oasys2": {
+ "source": "iana",
+ "extensions": ["oa2"]
+ },
+ "application/vnd.fujitsu.oasys3": {
+ "source": "iana",
+ "extensions": ["oa3"]
+ },
+ "application/vnd.fujitsu.oasysgp": {
+ "source": "iana",
+ "extensions": ["fg5"]
+ },
+ "application/vnd.fujitsu.oasysprs": {
+ "source": "iana",
+ "extensions": ["bh2"]
+ },
+ "application/vnd.fujixerox.art-ex": {
+ "source": "iana"
+ },
+ "application/vnd.fujixerox.art4": {
+ "source": "iana"
+ },
+ "application/vnd.fujixerox.ddd": {
+ "source": "iana",
+ "extensions": ["ddd"]
+ },
+ "application/vnd.fujixerox.docuworks": {
+ "source": "iana",
+ "extensions": ["xdw"]
+ },
+ "application/vnd.fujixerox.docuworks.binder": {
+ "source": "iana",
+ "extensions": ["xbd"]
+ },
+ "application/vnd.fujixerox.docuworks.container": {
+ "source": "iana"
+ },
+ "application/vnd.fujixerox.hbpl": {
+ "source": "iana"
+ },
+ "application/vnd.fut-misnet": {
+ "source": "iana"
+ },
+ "application/vnd.fuzzysheet": {
+ "source": "iana",
+ "extensions": ["fzs"]
+ },
+ "application/vnd.genomatix.tuxedo": {
+ "source": "iana",
+ "extensions": ["txd"]
+ },
+ "application/vnd.geo+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.geocube+xml": {
+ "source": "iana"
+ },
+ "application/vnd.geogebra.file": {
+ "source": "iana",
+ "extensions": ["ggb"]
+ },
+ "application/vnd.geogebra.tool": {
+ "source": "iana",
+ "extensions": ["ggt"]
+ },
+ "application/vnd.geometry-explorer": {
+ "source": "iana",
+ "extensions": ["gex","gre"]
+ },
+ "application/vnd.geonext": {
+ "source": "iana",
+ "extensions": ["gxt"]
+ },
+ "application/vnd.geoplan": {
+ "source": "iana",
+ "extensions": ["g2w"]
+ },
+ "application/vnd.geospace": {
+ "source": "iana",
+ "extensions": ["g3w"]
+ },
+ "application/vnd.gerber": {
+ "source": "iana"
+ },
+ "application/vnd.globalplatform.card-content-mgt": {
+ "source": "iana"
+ },
+ "application/vnd.globalplatform.card-content-mgt-response": {
+ "source": "iana"
+ },
+ "application/vnd.gmx": {
+ "source": "iana",
+ "extensions": ["gmx"]
+ },
+ "application/vnd.google-apps.document": {
+ "compressible": false,
+ "extensions": ["gdoc"]
+ },
+ "application/vnd.google-apps.presentation": {
+ "compressible": false,
+ "extensions": ["gslides"]
+ },
+ "application/vnd.google-apps.spreadsheet": {
+ "compressible": false,
+ "extensions": ["gsheet"]
+ },
+ "application/vnd.google-earth.kml+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["kml"]
+ },
+ "application/vnd.google-earth.kmz": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["kmz"]
+ },
+ "application/vnd.gov.sk.e-form+xml": {
+ "source": "iana"
+ },
+ "application/vnd.gov.sk.e-form+zip": {
+ "source": "iana"
+ },
+ "application/vnd.gov.sk.xmldatacontainer+xml": {
+ "source": "iana"
+ },
+ "application/vnd.grafeq": {
+ "source": "iana",
+ "extensions": ["gqf","gqs"]
+ },
+ "application/vnd.gridmp": {
+ "source": "iana"
+ },
+ "application/vnd.groove-account": {
+ "source": "iana",
+ "extensions": ["gac"]
+ },
+ "application/vnd.groove-help": {
+ "source": "iana",
+ "extensions": ["ghf"]
+ },
+ "application/vnd.groove-identity-message": {
+ "source": "iana",
+ "extensions": ["gim"]
+ },
+ "application/vnd.groove-injector": {
+ "source": "iana",
+ "extensions": ["grv"]
+ },
+ "application/vnd.groove-tool-message": {
+ "source": "iana",
+ "extensions": ["gtm"]
+ },
+ "application/vnd.groove-tool-template": {
+ "source": "iana",
+ "extensions": ["tpl"]
+ },
+ "application/vnd.groove-vcard": {
+ "source": "iana",
+ "extensions": ["vcg"]
+ },
+ "application/vnd.hal+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.hal+xml": {
+ "source": "iana",
+ "extensions": ["hal"]
+ },
+ "application/vnd.handheld-entertainment+xml": {
+ "source": "iana",
+ "extensions": ["zmm"]
+ },
+ "application/vnd.hbci": {
+ "source": "iana",
+ "extensions": ["hbci"]
+ },
+ "application/vnd.hcl-bireports": {
+ "source": "iana"
+ },
+ "application/vnd.hdt": {
+ "source": "iana"
+ },
+ "application/vnd.heroku+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.hhe.lesson-player": {
+ "source": "iana",
+ "extensions": ["les"]
+ },
+ "application/vnd.hp-hpgl": {
+ "source": "iana",
+ "extensions": ["hpgl"]
+ },
+ "application/vnd.hp-hpid": {
+ "source": "iana",
+ "extensions": ["hpid"]
+ },
+ "application/vnd.hp-hps": {
+ "source": "iana",
+ "extensions": ["hps"]
+ },
+ "application/vnd.hp-jlyt": {
+ "source": "iana",
+ "extensions": ["jlt"]
+ },
+ "application/vnd.hp-pcl": {
+ "source": "iana",
+ "extensions": ["pcl"]
+ },
+ "application/vnd.hp-pclxl": {
+ "source": "iana",
+ "extensions": ["pclxl"]
+ },
+ "application/vnd.httphone": {
+ "source": "iana"
+ },
+ "application/vnd.hydrostatix.sof-data": {
+ "source": "iana",
+ "extensions": ["sfd-hdstx"]
+ },
+ "application/vnd.hyperdrive+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.hzn-3d-crossword": {
+ "source": "iana"
+ },
+ "application/vnd.ibm.afplinedata": {
+ "source": "iana"
+ },
+ "application/vnd.ibm.electronic-media": {
+ "source": "iana"
+ },
+ "application/vnd.ibm.minipay": {
+ "source": "iana",
+ "extensions": ["mpy"]
+ },
+ "application/vnd.ibm.modcap": {
+ "source": "iana",
+ "extensions": ["afp","listafp","list3820"]
+ },
+ "application/vnd.ibm.rights-management": {
+ "source": "iana",
+ "extensions": ["irm"]
+ },
+ "application/vnd.ibm.secure-container": {
+ "source": "iana",
+ "extensions": ["sc"]
+ },
+ "application/vnd.iccprofile": {
+ "source": "iana",
+ "extensions": ["icc","icm"]
+ },
+ "application/vnd.ieee.1905": {
+ "source": "iana"
+ },
+ "application/vnd.igloader": {
+ "source": "iana",
+ "extensions": ["igl"]
+ },
+ "application/vnd.immervision-ivp": {
+ "source": "iana",
+ "extensions": ["ivp"]
+ },
+ "application/vnd.immervision-ivu": {
+ "source": "iana",
+ "extensions": ["ivu"]
+ },
+ "application/vnd.ims.imsccv1p1": {
+ "source": "iana"
+ },
+ "application/vnd.ims.imsccv1p2": {
+ "source": "iana"
+ },
+ "application/vnd.ims.imsccv1p3": {
+ "source": "iana"
+ },
+ "application/vnd.ims.lis.v2.result+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolconsumerprofile+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolproxy+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolproxy.id+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolsettings+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.ims.lti.v2.toolsettings.simple+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.informedcontrol.rms+xml": {
+ "source": "iana"
+ },
+ "application/vnd.informix-visionary": {
+ "source": "iana"
+ },
+ "application/vnd.infotech.project": {
+ "source": "iana"
+ },
+ "application/vnd.infotech.project+xml": {
+ "source": "iana"
+ },
+ "application/vnd.innopath.wamp.notification": {
+ "source": "iana"
+ },
+ "application/vnd.insors.igm": {
+ "source": "iana",
+ "extensions": ["igm"]
+ },
+ "application/vnd.intercon.formnet": {
+ "source": "iana",
+ "extensions": ["xpw","xpx"]
+ },
+ "application/vnd.intergeo": {
+ "source": "iana",
+ "extensions": ["i2g"]
+ },
+ "application/vnd.intertrust.digibox": {
+ "source": "iana"
+ },
+ "application/vnd.intertrust.nncp": {
+ "source": "iana"
+ },
+ "application/vnd.intu.qbo": {
+ "source": "iana",
+ "extensions": ["qbo"]
+ },
+ "application/vnd.intu.qfx": {
+ "source": "iana",
+ "extensions": ["qfx"]
+ },
+ "application/vnd.iptc.g2.catalogitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.conceptitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.knowledgeitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.newsitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.newsmessage+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.packageitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.iptc.g2.planningitem+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ipunplugged.rcprofile": {
+ "source": "iana",
+ "extensions": ["rcprofile"]
+ },
+ "application/vnd.irepository.package+xml": {
+ "source": "iana",
+ "extensions": ["irp"]
+ },
+ "application/vnd.is-xpr": {
+ "source": "iana",
+ "extensions": ["xpr"]
+ },
+ "application/vnd.isac.fcs": {
+ "source": "iana",
+ "extensions": ["fcs"]
+ },
+ "application/vnd.jam": {
+ "source": "iana",
+ "extensions": ["jam"]
+ },
+ "application/vnd.japannet-directory-service": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-jpnstore-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-payment-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-registration": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-registration-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-setstore-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-verification": {
+ "source": "iana"
+ },
+ "application/vnd.japannet-verification-wakeup": {
+ "source": "iana"
+ },
+ "application/vnd.jcp.javame.midlet-rms": {
+ "source": "iana",
+ "extensions": ["rms"]
+ },
+ "application/vnd.jisp": {
+ "source": "iana",
+ "extensions": ["jisp"]
+ },
+ "application/vnd.joost.joda-archive": {
+ "source": "iana",
+ "extensions": ["joda"]
+ },
+ "application/vnd.jsk.isdn-ngn": {
+ "source": "iana"
+ },
+ "application/vnd.kahootz": {
+ "source": "iana",
+ "extensions": ["ktz","ktr"]
+ },
+ "application/vnd.kde.karbon": {
+ "source": "iana",
+ "extensions": ["karbon"]
+ },
+ "application/vnd.kde.kchart": {
+ "source": "iana",
+ "extensions": ["chrt"]
+ },
+ "application/vnd.kde.kformula": {
+ "source": "iana",
+ "extensions": ["kfo"]
+ },
+ "application/vnd.kde.kivio": {
+ "source": "iana",
+ "extensions": ["flw"]
+ },
+ "application/vnd.kde.kontour": {
+ "source": "iana",
+ "extensions": ["kon"]
+ },
+ "application/vnd.kde.kpresenter": {
+ "source": "iana",
+ "extensions": ["kpr","kpt"]
+ },
+ "application/vnd.kde.kspread": {
+ "source": "iana",
+ "extensions": ["ksp"]
+ },
+ "application/vnd.kde.kword": {
+ "source": "iana",
+ "extensions": ["kwd","kwt"]
+ },
+ "application/vnd.kenameaapp": {
+ "source": "iana",
+ "extensions": ["htke"]
+ },
+ "application/vnd.kidspiration": {
+ "source": "iana",
+ "extensions": ["kia"]
+ },
+ "application/vnd.kinar": {
+ "source": "iana",
+ "extensions": ["kne","knp"]
+ },
+ "application/vnd.koan": {
+ "source": "iana",
+ "extensions": ["skp","skd","skt","skm"]
+ },
+ "application/vnd.kodak-descriptor": {
+ "source": "iana",
+ "extensions": ["sse"]
+ },
+ "application/vnd.las.las+xml": {
+ "source": "iana",
+ "extensions": ["lasxml"]
+ },
+ "application/vnd.liberty-request+xml": {
+ "source": "iana"
+ },
+ "application/vnd.llamagraphics.life-balance.desktop": {
+ "source": "iana",
+ "extensions": ["lbd"]
+ },
+ "application/vnd.llamagraphics.life-balance.exchange+xml": {
+ "source": "iana",
+ "extensions": ["lbe"]
+ },
+ "application/vnd.lotus-1-2-3": {
+ "source": "iana",
+ "extensions": ["123"]
+ },
+ "application/vnd.lotus-approach": {
+ "source": "iana",
+ "extensions": ["apr"]
+ },
+ "application/vnd.lotus-freelance": {
+ "source": "iana",
+ "extensions": ["pre"]
+ },
+ "application/vnd.lotus-notes": {
+ "source": "iana",
+ "extensions": ["nsf"]
+ },
+ "application/vnd.lotus-organizer": {
+ "source": "iana",
+ "extensions": ["org"]
+ },
+ "application/vnd.lotus-screencam": {
+ "source": "iana",
+ "extensions": ["scm"]
+ },
+ "application/vnd.lotus-wordpro": {
+ "source": "iana",
+ "extensions": ["lwp"]
+ },
+ "application/vnd.macports.portpkg": {
+ "source": "iana",
+ "extensions": ["portpkg"]
+ },
+ "application/vnd.mapbox-vector-tile": {
+ "source": "iana"
+ },
+ "application/vnd.marlin.drm.actiontoken+xml": {
+ "source": "iana"
+ },
+ "application/vnd.marlin.drm.conftoken+xml": {
+ "source": "iana"
+ },
+ "application/vnd.marlin.drm.license+xml": {
+ "source": "iana"
+ },
+ "application/vnd.marlin.drm.mdcf": {
+ "source": "iana"
+ },
+ "application/vnd.mason+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.maxmind.maxmind-db": {
+ "source": "iana"
+ },
+ "application/vnd.mcd": {
+ "source": "iana",
+ "extensions": ["mcd"]
+ },
+ "application/vnd.medcalcdata": {
+ "source": "iana",
+ "extensions": ["mc1"]
+ },
+ "application/vnd.mediastation.cdkey": {
+ "source": "iana",
+ "extensions": ["cdkey"]
+ },
+ "application/vnd.meridian-slingshot": {
+ "source": "iana"
+ },
+ "application/vnd.mfer": {
+ "source": "iana",
+ "extensions": ["mwf"]
+ },
+ "application/vnd.mfmp": {
+ "source": "iana",
+ "extensions": ["mfm"]
+ },
+ "application/vnd.micro+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.micrografx.flo": {
+ "source": "iana",
+ "extensions": ["flo"]
+ },
+ "application/vnd.micrografx.igx": {
+ "source": "iana",
+ "extensions": ["igx"]
+ },
+ "application/vnd.microsoft.portable-executable": {
+ "source": "iana"
+ },
+ "application/vnd.miele+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.mif": {
+ "source": "iana",
+ "extensions": ["mif"]
+ },
+ "application/vnd.minisoft-hp3000-save": {
+ "source": "iana"
+ },
+ "application/vnd.mitsubishi.misty-guard.trustweb": {
+ "source": "iana"
+ },
+ "application/vnd.mobius.daf": {
+ "source": "iana",
+ "extensions": ["daf"]
+ },
+ "application/vnd.mobius.dis": {
+ "source": "iana",
+ "extensions": ["dis"]
+ },
+ "application/vnd.mobius.mbk": {
+ "source": "iana",
+ "extensions": ["mbk"]
+ },
+ "application/vnd.mobius.mqy": {
+ "source": "iana",
+ "extensions": ["mqy"]
+ },
+ "application/vnd.mobius.msl": {
+ "source": "iana",
+ "extensions": ["msl"]
+ },
+ "application/vnd.mobius.plc": {
+ "source": "iana",
+ "extensions": ["plc"]
+ },
+ "application/vnd.mobius.txf": {
+ "source": "iana",
+ "extensions": ["txf"]
+ },
+ "application/vnd.mophun.application": {
+ "source": "iana",
+ "extensions": ["mpn"]
+ },
+ "application/vnd.mophun.certificate": {
+ "source": "iana",
+ "extensions": ["mpc"]
+ },
+ "application/vnd.motorola.flexsuite": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.adsi": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.fis": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.gotap": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.kmr": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.ttc": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.flexsuite.wem": {
+ "source": "iana"
+ },
+ "application/vnd.motorola.iprm": {
+ "source": "iana"
+ },
+ "application/vnd.mozilla.xul+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xul"]
+ },
+ "application/vnd.ms-3mfdocument": {
+ "source": "iana"
+ },
+ "application/vnd.ms-artgalry": {
+ "source": "iana",
+ "extensions": ["cil"]
+ },
+ "application/vnd.ms-asf": {
+ "source": "iana"
+ },
+ "application/vnd.ms-cab-compressed": {
+ "source": "iana",
+ "extensions": ["cab"]
+ },
+ "application/vnd.ms-color.iccprofile": {
+ "source": "apache"
+ },
+ "application/vnd.ms-excel": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["xls","xlm","xla","xlc","xlt","xlw"]
+ },
+ "application/vnd.ms-excel.addin.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["xlam"]
+ },
+ "application/vnd.ms-excel.sheet.binary.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["xlsb"]
+ },
+ "application/vnd.ms-excel.sheet.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["xlsm"]
+ },
+ "application/vnd.ms-excel.template.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["xltm"]
+ },
+ "application/vnd.ms-fontobject": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["eot"]
+ },
+ "application/vnd.ms-htmlhelp": {
+ "source": "iana",
+ "extensions": ["chm"]
+ },
+ "application/vnd.ms-ims": {
+ "source": "iana",
+ "extensions": ["ims"]
+ },
+ "application/vnd.ms-lrm": {
+ "source": "iana",
+ "extensions": ["lrm"]
+ },
+ "application/vnd.ms-office.activex+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ms-officetheme": {
+ "source": "iana",
+ "extensions": ["thmx"]
+ },
+ "application/vnd.ms-opentype": {
+ "source": "apache",
+ "compressible": true
+ },
+ "application/vnd.ms-package.obfuscated-opentype": {
+ "source": "apache"
+ },
+ "application/vnd.ms-pki.seccat": {
+ "source": "apache",
+ "extensions": ["cat"]
+ },
+ "application/vnd.ms-pki.stl": {
+ "source": "apache",
+ "extensions": ["stl"]
+ },
+ "application/vnd.ms-playready.initiator+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ms-powerpoint": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["ppt","pps","pot"]
+ },
+ "application/vnd.ms-powerpoint.addin.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["ppam"]
+ },
+ "application/vnd.ms-powerpoint.presentation.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["pptm"]
+ },
+ "application/vnd.ms-powerpoint.slide.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["sldm"]
+ },
+ "application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["ppsm"]
+ },
+ "application/vnd.ms-powerpoint.template.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["potm"]
+ },
+ "application/vnd.ms-printdevicecapabilities+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ms-printing.printticket+xml": {
+ "source": "apache"
+ },
+ "application/vnd.ms-printschematicket+xml": {
+ "source": "iana"
+ },
+ "application/vnd.ms-project": {
+ "source": "iana",
+ "extensions": ["mpp","mpt"]
+ },
+ "application/vnd.ms-tnef": {
+ "source": "iana"
+ },
+ "application/vnd.ms-windows.devicepairing": {
+ "source": "iana"
+ },
+ "application/vnd.ms-windows.nwprinting.oob": {
+ "source": "iana"
+ },
+ "application/vnd.ms-windows.printerpairing": {
+ "source": "iana"
+ },
+ "application/vnd.ms-windows.wsd.oob": {
+ "source": "iana"
+ },
+ "application/vnd.ms-wmdrm.lic-chlg-req": {
+ "source": "iana"
+ },
+ "application/vnd.ms-wmdrm.lic-resp": {
+ "source": "iana"
+ },
+ "application/vnd.ms-wmdrm.meter-chlg-req": {
+ "source": "iana"
+ },
+ "application/vnd.ms-wmdrm.meter-resp": {
+ "source": "iana"
+ },
+ "application/vnd.ms-word.document.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["docm"]
+ },
+ "application/vnd.ms-word.template.macroenabled.12": {
+ "source": "iana",
+ "extensions": ["dotm"]
+ },
+ "application/vnd.ms-works": {
+ "source": "iana",
+ "extensions": ["wps","wks","wcm","wdb"]
+ },
+ "application/vnd.ms-wpl": {
+ "source": "iana",
+ "extensions": ["wpl"]
+ },
+ "application/vnd.ms-xpsdocument": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["xps"]
+ },
+ "application/vnd.msa-disk-image": {
+ "source": "iana"
+ },
+ "application/vnd.mseq": {
+ "source": "iana",
+ "extensions": ["mseq"]
+ },
+ "application/vnd.msign": {
+ "source": "iana"
+ },
+ "application/vnd.multiad.creator": {
+ "source": "iana"
+ },
+ "application/vnd.multiad.creator.cif": {
+ "source": "iana"
+ },
+ "application/vnd.music-niff": {
+ "source": "iana"
+ },
+ "application/vnd.musician": {
+ "source": "iana",
+ "extensions": ["mus"]
+ },
+ "application/vnd.muvee.style": {
+ "source": "iana",
+ "extensions": ["msty"]
+ },
+ "application/vnd.mynfc": {
+ "source": "iana",
+ "extensions": ["taglet"]
+ },
+ "application/vnd.ncd.control": {
+ "source": "iana"
+ },
+ "application/vnd.ncd.reference": {
+ "source": "iana"
+ },
+ "application/vnd.nervana": {
+ "source": "iana"
+ },
+ "application/vnd.netfpx": {
+ "source": "iana"
+ },
+ "application/vnd.neurolanguage.nlu": {
+ "source": "iana",
+ "extensions": ["nlu"]
+ },
+ "application/vnd.nintendo.nitro.rom": {
+ "source": "iana"
+ },
+ "application/vnd.nintendo.snes.rom": {
+ "source": "iana"
+ },
+ "application/vnd.nitf": {
+ "source": "iana",
+ "extensions": ["ntf","nitf"]
+ },
+ "application/vnd.noblenet-directory": {
+ "source": "iana",
+ "extensions": ["nnd"]
+ },
+ "application/vnd.noblenet-sealer": {
+ "source": "iana",
+ "extensions": ["nns"]
+ },
+ "application/vnd.noblenet-web": {
+ "source": "iana",
+ "extensions": ["nnw"]
+ },
+ "application/vnd.nokia.catalogs": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.conml+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.conml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.iptv.config+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.isds-radio-presets": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.landmark+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.landmark+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.landmarkcollection+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.n-gage.ac+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.n-gage.data": {
+ "source": "iana",
+ "extensions": ["ngdat"]
+ },
+ "application/vnd.nokia.n-gage.symbian.install": {
+ "source": "iana",
+ "extensions": ["n-gage"]
+ },
+ "application/vnd.nokia.ncd": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.pcd+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.pcd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.nokia.radio-preset": {
+ "source": "iana",
+ "extensions": ["rpst"]
+ },
+ "application/vnd.nokia.radio-presets": {
+ "source": "iana",
+ "extensions": ["rpss"]
+ },
+ "application/vnd.novadigm.edm": {
+ "source": "iana",
+ "extensions": ["edm"]
+ },
+ "application/vnd.novadigm.edx": {
+ "source": "iana",
+ "extensions": ["edx"]
+ },
+ "application/vnd.novadigm.ext": {
+ "source": "iana",
+ "extensions": ["ext"]
+ },
+ "application/vnd.ntt-local.content-share": {
+ "source": "iana"
+ },
+ "application/vnd.ntt-local.file-transfer": {
+ "source": "iana"
+ },
+ "application/vnd.ntt-local.ogw_remote-access": {
+ "source": "iana"
+ },
+ "application/vnd.ntt-local.sip-ta_remote": {
+ "source": "iana"
+ },
+ "application/vnd.ntt-local.sip-ta_tcp_stream": {
+ "source": "iana"
+ },
+ "application/vnd.oasis.opendocument.chart": {
+ "source": "iana",
+ "extensions": ["odc"]
+ },
+ "application/vnd.oasis.opendocument.chart-template": {
+ "source": "iana",
+ "extensions": ["otc"]
+ },
+ "application/vnd.oasis.opendocument.database": {
+ "source": "iana",
+ "extensions": ["odb"]
+ },
+ "application/vnd.oasis.opendocument.formula": {
+ "source": "iana",
+ "extensions": ["odf"]
+ },
+ "application/vnd.oasis.opendocument.formula-template": {
+ "source": "iana",
+ "extensions": ["odft"]
+ },
+ "application/vnd.oasis.opendocument.graphics": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["odg"]
+ },
+ "application/vnd.oasis.opendocument.graphics-template": {
+ "source": "iana",
+ "extensions": ["otg"]
+ },
+ "application/vnd.oasis.opendocument.image": {
+ "source": "iana",
+ "extensions": ["odi"]
+ },
+ "application/vnd.oasis.opendocument.image-template": {
+ "source": "iana",
+ "extensions": ["oti"]
+ },
+ "application/vnd.oasis.opendocument.presentation": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["odp"]
+ },
+ "application/vnd.oasis.opendocument.presentation-template": {
+ "source": "iana",
+ "extensions": ["otp"]
+ },
+ "application/vnd.oasis.opendocument.spreadsheet": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["ods"]
+ },
+ "application/vnd.oasis.opendocument.spreadsheet-template": {
+ "source": "iana",
+ "extensions": ["ots"]
+ },
+ "application/vnd.oasis.opendocument.text": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["odt"]
+ },
+ "application/vnd.oasis.opendocument.text-master": {
+ "source": "iana",
+ "extensions": ["odm"]
+ },
+ "application/vnd.oasis.opendocument.text-template": {
+ "source": "iana",
+ "extensions": ["ott"]
+ },
+ "application/vnd.oasis.opendocument.text-web": {
+ "source": "iana",
+ "extensions": ["oth"]
+ },
+ "application/vnd.obn": {
+ "source": "iana"
+ },
+ "application/vnd.oftn.l10n+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.oipf.contentaccessdownload+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.contentaccessstreaming+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.cspg-hexbinary": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.dae.svg+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.dae.xhtml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.mippvcontrolmessage+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.pae.gem": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.spdiscovery+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.spdlist+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.ueprofile+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oipf.userprofile+xml": {
+ "source": "iana"
+ },
+ "application/vnd.olpc-sugar": {
+ "source": "iana",
+ "extensions": ["xo"]
+ },
+ "application/vnd.oma-scws-config": {
+ "source": "iana"
+ },
+ "application/vnd.oma-scws-http-request": {
+ "source": "iana"
+ },
+ "application/vnd.oma-scws-http-response": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.associated-procedure-parameter+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.drm-trigger+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.imd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.ltkm": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.notification+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.provisioningtrigger": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.sgboot": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.sgdd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.sgdu": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.simple-symbol-container": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.smartcard-trigger+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.sprov+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.bcast.stkm": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-address-book+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-feature-handler+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-pcc+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-subs-invite+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.cab-user-prefs+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.dcd": {
+ "source": "iana"
+ },
+ "application/vnd.oma.dcdc": {
+ "source": "iana"
+ },
+ "application/vnd.oma.dd2+xml": {
+ "source": "iana",
+ "extensions": ["dd2"]
+ },
+ "application/vnd.oma.drm.risd+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.group-usage-list+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.pal+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.detailed-progress-report+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.final-report+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.groups+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.invocation-descriptor+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.poc.optimized-progress-report+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.push": {
+ "source": "iana"
+ },
+ "application/vnd.oma.scidm.messages+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oma.xcap-directory+xml": {
+ "source": "iana"
+ },
+ "application/vnd.omads-email+xml": {
+ "source": "iana"
+ },
+ "application/vnd.omads-file+xml": {
+ "source": "iana"
+ },
+ "application/vnd.omads-folder+xml": {
+ "source": "iana"
+ },
+ "application/vnd.omaloc-supl-init": {
+ "source": "iana"
+ },
+ "application/vnd.onepager": {
+ "source": "iana"
+ },
+ "application/vnd.openblox.game+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openblox.game-binary": {
+ "source": "iana"
+ },
+ "application/vnd.openeye.oeb": {
+ "source": "iana"
+ },
+ "application/vnd.openofficeorg.extension": {
+ "source": "apache",
+ "extensions": ["oxt"]
+ },
+ "application/vnd.openxmlformats-officedocument.custom-properties+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawing+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.extended-properties+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml-template": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["pptx"]
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slide": {
+ "source": "iana",
+ "extensions": ["sldx"]
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
+ "source": "iana",
+ "extensions": ["ppsx"]
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.template": {
+ "source": "apache",
+ "extensions": ["potx"]
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml-template": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["xlsx"]
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
+ "source": "apache",
+ "extensions": ["xltx"]
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.theme+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.themeoverride+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.vmldrawing": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml-template": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["docx"]
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
+ "source": "apache",
+ "extensions": ["dotx"]
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-package.core-properties+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
+ "source": "iana"
+ },
+ "application/vnd.openxmlformats-package.relationships+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oracle.resource+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.orange.indata": {
+ "source": "iana"
+ },
+ "application/vnd.osa.netdeploy": {
+ "source": "iana"
+ },
+ "application/vnd.osgeo.mapguide.package": {
+ "source": "iana",
+ "extensions": ["mgp"]
+ },
+ "application/vnd.osgi.bundle": {
+ "source": "iana"
+ },
+ "application/vnd.osgi.dp": {
+ "source": "iana",
+ "extensions": ["dp"]
+ },
+ "application/vnd.osgi.subsystem": {
+ "source": "iana",
+ "extensions": ["esa"]
+ },
+ "application/vnd.otps.ct-kip+xml": {
+ "source": "iana"
+ },
+ "application/vnd.oxli.countgraph": {
+ "source": "iana"
+ },
+ "application/vnd.pagerduty+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.palm": {
+ "source": "iana",
+ "extensions": ["pdb","pqa","oprc"]
+ },
+ "application/vnd.panoply": {
+ "source": "iana"
+ },
+ "application/vnd.paos+xml": {
+ "source": "iana"
+ },
+ "application/vnd.paos.xml": {
+ "source": "apache"
+ },
+ "application/vnd.pawaafile": {
+ "source": "iana",
+ "extensions": ["paw"]
+ },
+ "application/vnd.pcos": {
+ "source": "iana"
+ },
+ "application/vnd.pg.format": {
+ "source": "iana",
+ "extensions": ["str"]
+ },
+ "application/vnd.pg.osasli": {
+ "source": "iana",
+ "extensions": ["ei6"]
+ },
+ "application/vnd.piaccess.application-licence": {
+ "source": "iana"
+ },
+ "application/vnd.picsel": {
+ "source": "iana",
+ "extensions": ["efif"]
+ },
+ "application/vnd.pmi.widget": {
+ "source": "iana",
+ "extensions": ["wg"]
+ },
+ "application/vnd.poc.group-advertisement+xml": {
+ "source": "iana"
+ },
+ "application/vnd.pocketlearn": {
+ "source": "iana",
+ "extensions": ["plf"]
+ },
+ "application/vnd.powerbuilder6": {
+ "source": "iana",
+ "extensions": ["pbd"]
+ },
+ "application/vnd.powerbuilder6-s": {
+ "source": "iana"
+ },
+ "application/vnd.powerbuilder7": {
+ "source": "iana"
+ },
+ "application/vnd.powerbuilder7-s": {
+ "source": "iana"
+ },
+ "application/vnd.powerbuilder75": {
+ "source": "iana"
+ },
+ "application/vnd.powerbuilder75-s": {
+ "source": "iana"
+ },
+ "application/vnd.preminet": {
+ "source": "iana"
+ },
+ "application/vnd.previewsystems.box": {
+ "source": "iana",
+ "extensions": ["box"]
+ },
+ "application/vnd.proteus.magazine": {
+ "source": "iana",
+ "extensions": ["mgz"]
+ },
+ "application/vnd.publishare-delta-tree": {
+ "source": "iana",
+ "extensions": ["qps"]
+ },
+ "application/vnd.pvi.ptid1": {
+ "source": "iana",
+ "extensions": ["ptid"]
+ },
+ "application/vnd.pwg-multiplexed": {
+ "source": "iana"
+ },
+ "application/vnd.pwg-xhtml-print+xml": {
+ "source": "iana"
+ },
+ "application/vnd.qualcomm.brew-app-res": {
+ "source": "iana"
+ },
+ "application/vnd.quark.quarkxpress": {
+ "source": "iana",
+ "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"]
+ },
+ "application/vnd.quobject-quoxdocument": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.moml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit-conf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit-conn+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit-dialog+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-audit-stream+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-conf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-base+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-fax-detect+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-group+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-speech+xml": {
+ "source": "iana"
+ },
+ "application/vnd.radisys.msml-dialog-transform+xml": {
+ "source": "iana"
+ },
+ "application/vnd.rainstor.data": {
+ "source": "iana"
+ },
+ "application/vnd.rapid": {
+ "source": "iana"
+ },
+ "application/vnd.realvnc.bed": {
+ "source": "iana",
+ "extensions": ["bed"]
+ },
+ "application/vnd.recordare.musicxml": {
+ "source": "iana",
+ "extensions": ["mxl"]
+ },
+ "application/vnd.recordare.musicxml+xml": {
+ "source": "iana",
+ "extensions": ["musicxml"]
+ },
+ "application/vnd.renlearn.rlprint": {
+ "source": "iana"
+ },
+ "application/vnd.rig.cryptonote": {
+ "source": "iana",
+ "extensions": ["cryptonote"]
+ },
+ "application/vnd.rim.cod": {
+ "source": "apache",
+ "extensions": ["cod"]
+ },
+ "application/vnd.rn-realmedia": {
+ "source": "apache",
+ "extensions": ["rm"]
+ },
+ "application/vnd.rn-realmedia-vbr": {
+ "source": "apache",
+ "extensions": ["rmvb"]
+ },
+ "application/vnd.route66.link66+xml": {
+ "source": "iana",
+ "extensions": ["link66"]
+ },
+ "application/vnd.rs-274x": {
+ "source": "iana"
+ },
+ "application/vnd.ruckus.download": {
+ "source": "iana"
+ },
+ "application/vnd.s3sms": {
+ "source": "iana"
+ },
+ "application/vnd.sailingtracker.track": {
+ "source": "iana",
+ "extensions": ["st"]
+ },
+ "application/vnd.sbm.cid": {
+ "source": "iana"
+ },
+ "application/vnd.sbm.mid2": {
+ "source": "iana"
+ },
+ "application/vnd.scribus": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.3df": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.csf": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.doc": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.eml": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.mht": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.net": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.ppt": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.tiff": {
+ "source": "iana"
+ },
+ "application/vnd.sealed.xls": {
+ "source": "iana"
+ },
+ "application/vnd.sealedmedia.softseal.html": {
+ "source": "iana"
+ },
+ "application/vnd.sealedmedia.softseal.pdf": {
+ "source": "iana"
+ },
+ "application/vnd.seemail": {
+ "source": "iana",
+ "extensions": ["see"]
+ },
+ "application/vnd.sema": {
+ "source": "iana",
+ "extensions": ["sema"]
+ },
+ "application/vnd.semd": {
+ "source": "iana",
+ "extensions": ["semd"]
+ },
+ "application/vnd.semf": {
+ "source": "iana",
+ "extensions": ["semf"]
+ },
+ "application/vnd.shana.informed.formdata": {
+ "source": "iana",
+ "extensions": ["ifm"]
+ },
+ "application/vnd.shana.informed.formtemplate": {
+ "source": "iana",
+ "extensions": ["itp"]
+ },
+ "application/vnd.shana.informed.interchange": {
+ "source": "iana",
+ "extensions": ["iif"]
+ },
+ "application/vnd.shana.informed.package": {
+ "source": "iana",
+ "extensions": ["ipk"]
+ },
+ "application/vnd.simtech-mindmapper": {
+ "source": "iana",
+ "extensions": ["twd","twds"]
+ },
+ "application/vnd.siren+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.smaf": {
+ "source": "iana",
+ "extensions": ["mmf"]
+ },
+ "application/vnd.smart.notebook": {
+ "source": "iana"
+ },
+ "application/vnd.smart.teacher": {
+ "source": "iana",
+ "extensions": ["teacher"]
+ },
+ "application/vnd.software602.filler.form+xml": {
+ "source": "iana"
+ },
+ "application/vnd.software602.filler.form-xml-zip": {
+ "source": "iana"
+ },
+ "application/vnd.solent.sdkm+xml": {
+ "source": "iana",
+ "extensions": ["sdkm","sdkd"]
+ },
+ "application/vnd.spotfire.dxp": {
+ "source": "iana",
+ "extensions": ["dxp"]
+ },
+ "application/vnd.spotfire.sfs": {
+ "source": "iana",
+ "extensions": ["sfs"]
+ },
+ "application/vnd.sss-cod": {
+ "source": "iana"
+ },
+ "application/vnd.sss-dtf": {
+ "source": "iana"
+ },
+ "application/vnd.sss-ntf": {
+ "source": "iana"
+ },
+ "application/vnd.stardivision.calc": {
+ "source": "apache",
+ "extensions": ["sdc"]
+ },
+ "application/vnd.stardivision.draw": {
+ "source": "apache",
+ "extensions": ["sda"]
+ },
+ "application/vnd.stardivision.impress": {
+ "source": "apache",
+ "extensions": ["sdd"]
+ },
+ "application/vnd.stardivision.math": {
+ "source": "apache",
+ "extensions": ["smf"]
+ },
+ "application/vnd.stardivision.writer": {
+ "source": "apache",
+ "extensions": ["sdw","vor"]
+ },
+ "application/vnd.stardivision.writer-global": {
+ "source": "apache",
+ "extensions": ["sgl"]
+ },
+ "application/vnd.stepmania.package": {
+ "source": "iana",
+ "extensions": ["smzip"]
+ },
+ "application/vnd.stepmania.stepchart": {
+ "source": "iana",
+ "extensions": ["sm"]
+ },
+ "application/vnd.street-stream": {
+ "source": "iana"
+ },
+ "application/vnd.sun.wadl+xml": {
+ "source": "iana"
+ },
+ "application/vnd.sun.xml.calc": {
+ "source": "apache",
+ "extensions": ["sxc"]
+ },
+ "application/vnd.sun.xml.calc.template": {
+ "source": "apache",
+ "extensions": ["stc"]
+ },
+ "application/vnd.sun.xml.draw": {
+ "source": "apache",
+ "extensions": ["sxd"]
+ },
+ "application/vnd.sun.xml.draw.template": {
+ "source": "apache",
+ "extensions": ["std"]
+ },
+ "application/vnd.sun.xml.impress": {
+ "source": "apache",
+ "extensions": ["sxi"]
+ },
+ "application/vnd.sun.xml.impress.template": {
+ "source": "apache",
+ "extensions": ["sti"]
+ },
+ "application/vnd.sun.xml.math": {
+ "source": "apache",
+ "extensions": ["sxm"]
+ },
+ "application/vnd.sun.xml.writer": {
+ "source": "apache",
+ "extensions": ["sxw"]
+ },
+ "application/vnd.sun.xml.writer.global": {
+ "source": "apache",
+ "extensions": ["sxg"]
+ },
+ "application/vnd.sun.xml.writer.template": {
+ "source": "apache",
+ "extensions": ["stw"]
+ },
+ "application/vnd.sus-calendar": {
+ "source": "iana",
+ "extensions": ["sus","susp"]
+ },
+ "application/vnd.svd": {
+ "source": "iana",
+ "extensions": ["svd"]
+ },
+ "application/vnd.swiftview-ics": {
+ "source": "iana"
+ },
+ "application/vnd.symbian.install": {
+ "source": "apache",
+ "extensions": ["sis","sisx"]
+ },
+ "application/vnd.syncml+xml": {
+ "source": "iana",
+ "extensions": ["xsm"]
+ },
+ "application/vnd.syncml.dm+wbxml": {
+ "source": "iana",
+ "extensions": ["bdm"]
+ },
+ "application/vnd.syncml.dm+xml": {
+ "source": "iana",
+ "extensions": ["xdm"]
+ },
+ "application/vnd.syncml.dm.notification": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.dmddf+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.dmddf+xml": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.dmtnds+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.dmtnds+xml": {
+ "source": "iana"
+ },
+ "application/vnd.syncml.ds.notification": {
+ "source": "iana"
+ },
+ "application/vnd.tao.intent-module-archive": {
+ "source": "iana",
+ "extensions": ["tao"]
+ },
+ "application/vnd.tcpdump.pcap": {
+ "source": "iana",
+ "extensions": ["pcap","cap","dmp"]
+ },
+ "application/vnd.tmd.mediaflex.api+xml": {
+ "source": "iana"
+ },
+ "application/vnd.tml": {
+ "source": "iana"
+ },
+ "application/vnd.tmobile-livetv": {
+ "source": "iana",
+ "extensions": ["tmo"]
+ },
+ "application/vnd.trid.tpt": {
+ "source": "iana",
+ "extensions": ["tpt"]
+ },
+ "application/vnd.triscape.mxs": {
+ "source": "iana",
+ "extensions": ["mxs"]
+ },
+ "application/vnd.trueapp": {
+ "source": "iana",
+ "extensions": ["tra"]
+ },
+ "application/vnd.truedoc": {
+ "source": "iana"
+ },
+ "application/vnd.ubisoft.webplayer": {
+ "source": "iana"
+ },
+ "application/vnd.ufdl": {
+ "source": "iana",
+ "extensions": ["ufd","ufdl"]
+ },
+ "application/vnd.uiq.theme": {
+ "source": "iana",
+ "extensions": ["utz"]
+ },
+ "application/vnd.umajin": {
+ "source": "iana",
+ "extensions": ["umj"]
+ },
+ "application/vnd.unity": {
+ "source": "iana",
+ "extensions": ["unityweb"]
+ },
+ "application/vnd.uoml+xml": {
+ "source": "iana",
+ "extensions": ["uoml"]
+ },
+ "application/vnd.uplanet.alert": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.alert-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.bearer-choice": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.bearer-choice-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.cacheop": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.cacheop-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.channel": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.channel-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.list": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.list-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.listcmd": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.listcmd-wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.uplanet.signal": {
+ "source": "iana"
+ },
+ "application/vnd.uri-map": {
+ "source": "iana"
+ },
+ "application/vnd.valve.source.material": {
+ "source": "iana"
+ },
+ "application/vnd.vcx": {
+ "source": "iana",
+ "extensions": ["vcx"]
+ },
+ "application/vnd.vd-study": {
+ "source": "iana"
+ },
+ "application/vnd.vectorworks": {
+ "source": "iana"
+ },
+ "application/vnd.vel+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.verimatrix.vcas": {
+ "source": "iana"
+ },
+ "application/vnd.vidsoft.vidconference": {
+ "source": "iana"
+ },
+ "application/vnd.visio": {
+ "source": "iana",
+ "extensions": ["vsd","vst","vss","vsw"]
+ },
+ "application/vnd.visionary": {
+ "source": "iana",
+ "extensions": ["vis"]
+ },
+ "application/vnd.vividence.scriptfile": {
+ "source": "iana"
+ },
+ "application/vnd.vsf": {
+ "source": "iana",
+ "extensions": ["vsf"]
+ },
+ "application/vnd.wap.sic": {
+ "source": "iana"
+ },
+ "application/vnd.wap.slc": {
+ "source": "iana"
+ },
+ "application/vnd.wap.wbxml": {
+ "source": "iana",
+ "extensions": ["wbxml"]
+ },
+ "application/vnd.wap.wmlc": {
+ "source": "iana",
+ "extensions": ["wmlc"]
+ },
+ "application/vnd.wap.wmlscriptc": {
+ "source": "iana",
+ "extensions": ["wmlsc"]
+ },
+ "application/vnd.webturbo": {
+ "source": "iana",
+ "extensions": ["wtb"]
+ },
+ "application/vnd.wfa.p2p": {
+ "source": "iana"
+ },
+ "application/vnd.wfa.wsc": {
+ "source": "iana"
+ },
+ "application/vnd.windows.devicepairing": {
+ "source": "iana"
+ },
+ "application/vnd.wmc": {
+ "source": "iana"
+ },
+ "application/vnd.wmf.bootstrap": {
+ "source": "iana"
+ },
+ "application/vnd.wolfram.mathematica": {
+ "source": "iana"
+ },
+ "application/vnd.wolfram.mathematica.package": {
+ "source": "iana"
+ },
+ "application/vnd.wolfram.player": {
+ "source": "iana",
+ "extensions": ["nbp"]
+ },
+ "application/vnd.wordperfect": {
+ "source": "iana",
+ "extensions": ["wpd"]
+ },
+ "application/vnd.wqd": {
+ "source": "iana",
+ "extensions": ["wqd"]
+ },
+ "application/vnd.wrq-hp3000-labelled": {
+ "source": "iana"
+ },
+ "application/vnd.wt.stf": {
+ "source": "iana",
+ "extensions": ["stf"]
+ },
+ "application/vnd.wv.csp+wbxml": {
+ "source": "iana"
+ },
+ "application/vnd.wv.csp+xml": {
+ "source": "iana"
+ },
+ "application/vnd.wv.ssp+xml": {
+ "source": "iana"
+ },
+ "application/vnd.xacml+json": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/vnd.xara": {
+ "source": "iana",
+ "extensions": ["xar"]
+ },
+ "application/vnd.xfdl": {
+ "source": "iana",
+ "extensions": ["xfdl"]
+ },
+ "application/vnd.xfdl.webform": {
+ "source": "iana"
+ },
+ "application/vnd.xmi+xml": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.cpkg": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.dpkg": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.plan": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.ppkg": {
+ "source": "iana"
+ },
+ "application/vnd.xmpie.xlim": {
+ "source": "iana"
+ },
+ "application/vnd.yamaha.hv-dic": {
+ "source": "iana",
+ "extensions": ["hvd"]
+ },
+ "application/vnd.yamaha.hv-script": {
+ "source": "iana",
+ "extensions": ["hvs"]
+ },
+ "application/vnd.yamaha.hv-voice": {
+ "source": "iana",
+ "extensions": ["hvp"]
+ },
+ "application/vnd.yamaha.openscoreformat": {
+ "source": "iana",
+ "extensions": ["osf"]
+ },
+ "application/vnd.yamaha.openscoreformat.osfpvg+xml": {
+ "source": "iana",
+ "extensions": ["osfpvg"]
+ },
+ "application/vnd.yamaha.remote-setup": {
+ "source": "iana"
+ },
+ "application/vnd.yamaha.smaf-audio": {
+ "source": "iana",
+ "extensions": ["saf"]
+ },
+ "application/vnd.yamaha.smaf-phrase": {
+ "source": "iana",
+ "extensions": ["spf"]
+ },
+ "application/vnd.yamaha.through-ngn": {
+ "source": "iana"
+ },
+ "application/vnd.yamaha.tunnel-udpencap": {
+ "source": "iana"
+ },
+ "application/vnd.yaoweme": {
+ "source": "iana"
+ },
+ "application/vnd.yellowriver-custom-menu": {
+ "source": "iana",
+ "extensions": ["cmp"]
+ },
+ "application/vnd.zul": {
+ "source": "iana",
+ "extensions": ["zir","zirz"]
+ },
+ "application/vnd.zzazz.deck+xml": {
+ "source": "iana",
+ "extensions": ["zaz"]
+ },
+ "application/voicexml+xml": {
+ "source": "iana",
+ "extensions": ["vxml"]
+ },
+ "application/vq-rtcpxr": {
+ "source": "iana"
+ },
+ "application/watcherinfo+xml": {
+ "source": "iana"
+ },
+ "application/whoispp-query": {
+ "source": "iana"
+ },
+ "application/whoispp-response": {
+ "source": "iana"
+ },
+ "application/widget": {
+ "source": "iana",
+ "extensions": ["wgt"]
+ },
+ "application/winhlp": {
+ "source": "apache",
+ "extensions": ["hlp"]
+ },
+ "application/wita": {
+ "source": "iana"
+ },
+ "application/wordperfect5.1": {
+ "source": "iana"
+ },
+ "application/wsdl+xml": {
+ "source": "iana",
+ "extensions": ["wsdl"]
+ },
+ "application/wspolicy+xml": {
+ "source": "iana",
+ "extensions": ["wspolicy"]
+ },
+ "application/x-7z-compressed": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["7z"]
+ },
+ "application/x-abiword": {
+ "source": "apache",
+ "extensions": ["abw"]
+ },
+ "application/x-ace-compressed": {
+ "source": "apache",
+ "extensions": ["ace"]
+ },
+ "application/x-amf": {
+ "source": "apache"
+ },
+ "application/x-apple-diskimage": {
+ "source": "apache",
+ "extensions": ["dmg"]
+ },
+ "application/x-authorware-bin": {
+ "source": "apache",
+ "extensions": ["aab","x32","u32","vox"]
+ },
+ "application/x-authorware-map": {
+ "source": "apache",
+ "extensions": ["aam"]
+ },
+ "application/x-authorware-seg": {
+ "source": "apache",
+ "extensions": ["aas"]
+ },
+ "application/x-bcpio": {
+ "source": "apache",
+ "extensions": ["bcpio"]
+ },
+ "application/x-bdoc": {
+ "compressible": false,
+ "extensions": ["bdoc"]
+ },
+ "application/x-bittorrent": {
+ "source": "apache",
+ "extensions": ["torrent"]
+ },
+ "application/x-blorb": {
+ "source": "apache",
+ "extensions": ["blb","blorb"]
+ },
+ "application/x-bzip": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["bz"]
+ },
+ "application/x-bzip2": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["bz2","boz"]
+ },
+ "application/x-cbr": {
+ "source": "apache",
+ "extensions": ["cbr","cba","cbt","cbz","cb7"]
+ },
+ "application/x-cdlink": {
+ "source": "apache",
+ "extensions": ["vcd"]
+ },
+ "application/x-cfs-compressed": {
+ "source": "apache",
+ "extensions": ["cfs"]
+ },
+ "application/x-chat": {
+ "source": "apache",
+ "extensions": ["chat"]
+ },
+ "application/x-chess-pgn": {
+ "source": "apache",
+ "extensions": ["pgn"]
+ },
+ "application/x-chrome-extension": {
+ "extensions": ["crx"]
+ },
+ "application/x-cocoa": {
+ "source": "nginx",
+ "extensions": ["cco"]
+ },
+ "application/x-compress": {
+ "source": "apache"
+ },
+ "application/x-conference": {
+ "source": "apache",
+ "extensions": ["nsc"]
+ },
+ "application/x-cpio": {
+ "source": "apache",
+ "extensions": ["cpio"]
+ },
+ "application/x-csh": {
+ "source": "apache",
+ "extensions": ["csh"]
+ },
+ "application/x-deb": {
+ "compressible": false
+ },
+ "application/x-debian-package": {
+ "source": "apache",
+ "extensions": ["deb","udeb"]
+ },
+ "application/x-dgc-compressed": {
+ "source": "apache",
+ "extensions": ["dgc"]
+ },
+ "application/x-director": {
+ "source": "apache",
+ "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]
+ },
+ "application/x-doom": {
+ "source": "apache",
+ "extensions": ["wad"]
+ },
+ "application/x-dtbncx+xml": {
+ "source": "apache",
+ "extensions": ["ncx"]
+ },
+ "application/x-dtbook+xml": {
+ "source": "apache",
+ "extensions": ["dtb"]
+ },
+ "application/x-dtbresource+xml": {
+ "source": "apache",
+ "extensions": ["res"]
+ },
+ "application/x-dvi": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["dvi"]
+ },
+ "application/x-envoy": {
+ "source": "apache",
+ "extensions": ["evy"]
+ },
+ "application/x-eva": {
+ "source": "apache",
+ "extensions": ["eva"]
+ },
+ "application/x-font-bdf": {
+ "source": "apache",
+ "extensions": ["bdf"]
+ },
+ "application/x-font-dos": {
+ "source": "apache"
+ },
+ "application/x-font-framemaker": {
+ "source": "apache"
+ },
+ "application/x-font-ghostscript": {
+ "source": "apache",
+ "extensions": ["gsf"]
+ },
+ "application/x-font-libgrx": {
+ "source": "apache"
+ },
+ "application/x-font-linux-psf": {
+ "source": "apache",
+ "extensions": ["psf"]
+ },
+ "application/x-font-otf": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["otf"]
+ },
+ "application/x-font-pcf": {
+ "source": "apache",
+ "extensions": ["pcf"]
+ },
+ "application/x-font-snf": {
+ "source": "apache",
+ "extensions": ["snf"]
+ },
+ "application/x-font-speedo": {
+ "source": "apache"
+ },
+ "application/x-font-sunos-news": {
+ "source": "apache"
+ },
+ "application/x-font-ttf": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["ttf","ttc"]
+ },
+ "application/x-font-type1": {
+ "source": "apache",
+ "extensions": ["pfa","pfb","pfm","afm"]
+ },
+ "application/x-font-vfont": {
+ "source": "apache"
+ },
+ "application/x-freearc": {
+ "source": "apache",
+ "extensions": ["arc"]
+ },
+ "application/x-futuresplash": {
+ "source": "apache",
+ "extensions": ["spl"]
+ },
+ "application/x-gca-compressed": {
+ "source": "apache",
+ "extensions": ["gca"]
+ },
+ "application/x-glulx": {
+ "source": "apache",
+ "extensions": ["ulx"]
+ },
+ "application/x-gnumeric": {
+ "source": "apache",
+ "extensions": ["gnumeric"]
+ },
+ "application/x-gramps-xml": {
+ "source": "apache",
+ "extensions": ["gramps"]
+ },
+ "application/x-gtar": {
+ "source": "apache",
+ "extensions": ["gtar"]
+ },
+ "application/x-gzip": {
+ "source": "apache"
+ },
+ "application/x-hdf": {
+ "source": "apache",
+ "extensions": ["hdf"]
+ },
+ "application/x-httpd-php": {
+ "compressible": true,
+ "extensions": ["php"]
+ },
+ "application/x-install-instructions": {
+ "source": "apache",
+ "extensions": ["install"]
+ },
+ "application/x-iso9660-image": {
+ "source": "apache",
+ "extensions": ["iso"]
+ },
+ "application/x-java-archive-diff": {
+ "source": "nginx",
+ "extensions": ["jardiff"]
+ },
+ "application/x-java-jnlp-file": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["jnlp"]
+ },
+ "application/x-javascript": {
+ "compressible": true
+ },
+ "application/x-latex": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["latex"]
+ },
+ "application/x-lua-bytecode": {
+ "extensions": ["luac"]
+ },
+ "application/x-lzh-compressed": {
+ "source": "apache",
+ "extensions": ["lzh","lha"]
+ },
+ "application/x-makeself": {
+ "source": "nginx",
+ "extensions": ["run"]
+ },
+ "application/x-mie": {
+ "source": "apache",
+ "extensions": ["mie"]
+ },
+ "application/x-mobipocket-ebook": {
+ "source": "apache",
+ "extensions": ["prc","mobi"]
+ },
+ "application/x-mpegurl": {
+ "compressible": false
+ },
+ "application/x-ms-application": {
+ "source": "apache",
+ "extensions": ["application"]
+ },
+ "application/x-ms-shortcut": {
+ "source": "apache",
+ "extensions": ["lnk"]
+ },
+ "application/x-ms-wmd": {
+ "source": "apache",
+ "extensions": ["wmd"]
+ },
+ "application/x-ms-wmz": {
+ "source": "apache",
+ "extensions": ["wmz"]
+ },
+ "application/x-ms-xbap": {
+ "source": "apache",
+ "extensions": ["xbap"]
+ },
+ "application/x-msaccess": {
+ "source": "apache",
+ "extensions": ["mdb"]
+ },
+ "application/x-msbinder": {
+ "source": "apache",
+ "extensions": ["obd"]
+ },
+ "application/x-mscardfile": {
+ "source": "apache",
+ "extensions": ["crd"]
+ },
+ "application/x-msclip": {
+ "source": "apache",
+ "extensions": ["clp"]
+ },
+ "application/x-msdos-program": {
+ "extensions": ["exe"]
+ },
+ "application/x-msdownload": {
+ "source": "apache",
+ "extensions": ["exe","dll","com","bat","msi"]
+ },
+ "application/x-msmediaview": {
+ "source": "apache",
+ "extensions": ["mvb","m13","m14"]
+ },
+ "application/x-msmetafile": {
+ "source": "apache",
+ "extensions": ["wmf","wmz","emf","emz"]
+ },
+ "application/x-msmoney": {
+ "source": "apache",
+ "extensions": ["mny"]
+ },
+ "application/x-mspublisher": {
+ "source": "apache",
+ "extensions": ["pub"]
+ },
+ "application/x-msschedule": {
+ "source": "apache",
+ "extensions": ["scd"]
+ },
+ "application/x-msterminal": {
+ "source": "apache",
+ "extensions": ["trm"]
+ },
+ "application/x-mswrite": {
+ "source": "apache",
+ "extensions": ["wri"]
+ },
+ "application/x-netcdf": {
+ "source": "apache",
+ "extensions": ["nc","cdf"]
+ },
+ "application/x-ns-proxy-autoconfig": {
+ "compressible": true,
+ "extensions": ["pac"]
+ },
+ "application/x-nzb": {
+ "source": "apache",
+ "extensions": ["nzb"]
+ },
+ "application/x-perl": {
+ "source": "nginx",
+ "extensions": ["pl","pm"]
+ },
+ "application/x-pilot": {
+ "source": "nginx",
+ "extensions": ["prc","pdb"]
+ },
+ "application/x-pkcs12": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["p12","pfx"]
+ },
+ "application/x-pkcs7-certificates": {
+ "source": "apache",
+ "extensions": ["p7b","spc"]
+ },
+ "application/x-pkcs7-certreqresp": {
+ "source": "apache",
+ "extensions": ["p7r"]
+ },
+ "application/x-rar-compressed": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["rar"]
+ },
+ "application/x-redhat-package-manager": {
+ "source": "nginx",
+ "extensions": ["rpm"]
+ },
+ "application/x-research-info-systems": {
+ "source": "apache",
+ "extensions": ["ris"]
+ },
+ "application/x-sea": {
+ "source": "nginx",
+ "extensions": ["sea"]
+ },
+ "application/x-sh": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["sh"]
+ },
+ "application/x-shar": {
+ "source": "apache",
+ "extensions": ["shar"]
+ },
+ "application/x-shockwave-flash": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["swf"]
+ },
+ "application/x-silverlight-app": {
+ "source": "apache",
+ "extensions": ["xap"]
+ },
+ "application/x-sql": {
+ "source": "apache",
+ "extensions": ["sql"]
+ },
+ "application/x-stuffit": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["sit"]
+ },
+ "application/x-stuffitx": {
+ "source": "apache",
+ "extensions": ["sitx"]
+ },
+ "application/x-subrip": {
+ "source": "apache",
+ "extensions": ["srt"]
+ },
+ "application/x-sv4cpio": {
+ "source": "apache",
+ "extensions": ["sv4cpio"]
+ },
+ "application/x-sv4crc": {
+ "source": "apache",
+ "extensions": ["sv4crc"]
+ },
+ "application/x-t3vm-image": {
+ "source": "apache",
+ "extensions": ["t3"]
+ },
+ "application/x-tads": {
+ "source": "apache",
+ "extensions": ["gam"]
+ },
+ "application/x-tar": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["tar"]
+ },
+ "application/x-tcl": {
+ "source": "apache",
+ "extensions": ["tcl","tk"]
+ },
+ "application/x-tex": {
+ "source": "apache",
+ "extensions": ["tex"]
+ },
+ "application/x-tex-tfm": {
+ "source": "apache",
+ "extensions": ["tfm"]
+ },
+ "application/x-texinfo": {
+ "source": "apache",
+ "extensions": ["texinfo","texi"]
+ },
+ "application/x-tgif": {
+ "source": "apache",
+ "extensions": ["obj"]
+ },
+ "application/x-ustar": {
+ "source": "apache",
+ "extensions": ["ustar"]
+ },
+ "application/x-wais-source": {
+ "source": "apache",
+ "extensions": ["src"]
+ },
+ "application/x-web-app-manifest+json": {
+ "compressible": true,
+ "extensions": ["webapp"]
+ },
+ "application/x-www-form-urlencoded": {
+ "source": "iana",
+ "compressible": true
+ },
+ "application/x-x509-ca-cert": {
+ "source": "apache",
+ "extensions": ["der","crt","pem"]
+ },
+ "application/x-xfig": {
+ "source": "apache",
+ "extensions": ["fig"]
+ },
+ "application/x-xliff+xml": {
+ "source": "apache",
+ "extensions": ["xlf"]
+ },
+ "application/x-xpinstall": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["xpi"]
+ },
+ "application/x-xz": {
+ "source": "apache",
+ "extensions": ["xz"]
+ },
+ "application/x-zmachine": {
+ "source": "apache",
+ "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"]
+ },
+ "application/x400-bp": {
+ "source": "iana"
+ },
+ "application/xacml+xml": {
+ "source": "iana"
+ },
+ "application/xaml+xml": {
+ "source": "apache",
+ "extensions": ["xaml"]
+ },
+ "application/xcap-att+xml": {
+ "source": "iana"
+ },
+ "application/xcap-caps+xml": {
+ "source": "iana"
+ },
+ "application/xcap-diff+xml": {
+ "source": "iana",
+ "extensions": ["xdf"]
+ },
+ "application/xcap-el+xml": {
+ "source": "iana"
+ },
+ "application/xcap-error+xml": {
+ "source": "iana"
+ },
+ "application/xcap-ns+xml": {
+ "source": "iana"
+ },
+ "application/xcon-conference-info+xml": {
+ "source": "iana"
+ },
+ "application/xcon-conference-info-diff+xml": {
+ "source": "iana"
+ },
+ "application/xenc+xml": {
+ "source": "iana",
+ "extensions": ["xenc"]
+ },
+ "application/xhtml+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xhtml","xht"]
+ },
+ "application/xhtml-voice+xml": {
+ "source": "apache"
+ },
+ "application/xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xml","xsl","xsd","rng"]
+ },
+ "application/xml-dtd": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["dtd"]
+ },
+ "application/xml-external-parsed-entity": {
+ "source": "iana"
+ },
+ "application/xml-patch+xml": {
+ "source": "iana"
+ },
+ "application/xmpp+xml": {
+ "source": "iana"
+ },
+ "application/xop+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xop"]
+ },
+ "application/xproc+xml": {
+ "source": "apache",
+ "extensions": ["xpl"]
+ },
+ "application/xslt+xml": {
+ "source": "iana",
+ "extensions": ["xslt"]
+ },
+ "application/xspf+xml": {
+ "source": "apache",
+ "extensions": ["xspf"]
+ },
+ "application/xv+xml": {
+ "source": "iana",
+ "extensions": ["mxml","xhvml","xvml","xvm"]
+ },
+ "application/yang": {
+ "source": "iana",
+ "extensions": ["yang"]
+ },
+ "application/yin+xml": {
+ "source": "iana",
+ "extensions": ["yin"]
+ },
+ "application/zip": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["zip"]
+ },
+ "application/zlib": {
+ "source": "iana"
+ },
+ "audio/1d-interleaved-parityfec": {
+ "source": "iana"
+ },
+ "audio/32kadpcm": {
+ "source": "iana"
+ },
+ "audio/3gpp": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["3gpp"]
+ },
+ "audio/3gpp2": {
+ "source": "iana"
+ },
+ "audio/ac3": {
+ "source": "iana"
+ },
+ "audio/adpcm": {
+ "source": "apache",
+ "extensions": ["adp"]
+ },
+ "audio/amr": {
+ "source": "iana"
+ },
+ "audio/amr-wb": {
+ "source": "iana"
+ },
+ "audio/amr-wb+": {
+ "source": "iana"
+ },
+ "audio/aptx": {
+ "source": "iana"
+ },
+ "audio/asc": {
+ "source": "iana"
+ },
+ "audio/atrac-advanced-lossless": {
+ "source": "iana"
+ },
+ "audio/atrac-x": {
+ "source": "iana"
+ },
+ "audio/atrac3": {
+ "source": "iana"
+ },
+ "audio/basic": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["au","snd"]
+ },
+ "audio/bv16": {
+ "source": "iana"
+ },
+ "audio/bv32": {
+ "source": "iana"
+ },
+ "audio/clearmode": {
+ "source": "iana"
+ },
+ "audio/cn": {
+ "source": "iana"
+ },
+ "audio/dat12": {
+ "source": "iana"
+ },
+ "audio/dls": {
+ "source": "iana"
+ },
+ "audio/dsr-es201108": {
+ "source": "iana"
+ },
+ "audio/dsr-es202050": {
+ "source": "iana"
+ },
+ "audio/dsr-es202211": {
+ "source": "iana"
+ },
+ "audio/dsr-es202212": {
+ "source": "iana"
+ },
+ "audio/dv": {
+ "source": "iana"
+ },
+ "audio/dvi4": {
+ "source": "iana"
+ },
+ "audio/eac3": {
+ "source": "iana"
+ },
+ "audio/encaprtp": {
+ "source": "iana"
+ },
+ "audio/evrc": {
+ "source": "iana"
+ },
+ "audio/evrc-qcp": {
+ "source": "iana"
+ },
+ "audio/evrc0": {
+ "source": "iana"
+ },
+ "audio/evrc1": {
+ "source": "iana"
+ },
+ "audio/evrcb": {
+ "source": "iana"
+ },
+ "audio/evrcb0": {
+ "source": "iana"
+ },
+ "audio/evrcb1": {
+ "source": "iana"
+ },
+ "audio/evrcnw": {
+ "source": "iana"
+ },
+ "audio/evrcnw0": {
+ "source": "iana"
+ },
+ "audio/evrcnw1": {
+ "source": "iana"
+ },
+ "audio/evrcwb": {
+ "source": "iana"
+ },
+ "audio/evrcwb0": {
+ "source": "iana"
+ },
+ "audio/evrcwb1": {
+ "source": "iana"
+ },
+ "audio/evs": {
+ "source": "iana"
+ },
+ "audio/fwdred": {
+ "source": "iana"
+ },
+ "audio/g711-0": {
+ "source": "iana"
+ },
+ "audio/g719": {
+ "source": "iana"
+ },
+ "audio/g722": {
+ "source": "iana"
+ },
+ "audio/g7221": {
+ "source": "iana"
+ },
+ "audio/g723": {
+ "source": "iana"
+ },
+ "audio/g726-16": {
+ "source": "iana"
+ },
+ "audio/g726-24": {
+ "source": "iana"
+ },
+ "audio/g726-32": {
+ "source": "iana"
+ },
+ "audio/g726-40": {
+ "source": "iana"
+ },
+ "audio/g728": {
+ "source": "iana"
+ },
+ "audio/g729": {
+ "source": "iana"
+ },
+ "audio/g7291": {
+ "source": "iana"
+ },
+ "audio/g729d": {
+ "source": "iana"
+ },
+ "audio/g729e": {
+ "source": "iana"
+ },
+ "audio/gsm": {
+ "source": "iana"
+ },
+ "audio/gsm-efr": {
+ "source": "iana"
+ },
+ "audio/gsm-hr-08": {
+ "source": "iana"
+ },
+ "audio/ilbc": {
+ "source": "iana"
+ },
+ "audio/ip-mr_v2.5": {
+ "source": "iana"
+ },
+ "audio/isac": {
+ "source": "apache"
+ },
+ "audio/l16": {
+ "source": "iana"
+ },
+ "audio/l20": {
+ "source": "iana"
+ },
+ "audio/l24": {
+ "source": "iana",
+ "compressible": false
+ },
+ "audio/l8": {
+ "source": "iana"
+ },
+ "audio/lpc": {
+ "source": "iana"
+ },
+ "audio/midi": {
+ "source": "apache",
+ "extensions": ["mid","midi","kar","rmi"]
+ },
+ "audio/mobile-xmf": {
+ "source": "iana"
+ },
+ "audio/mp4": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["m4a","mp4a"]
+ },
+ "audio/mp4a-latm": {
+ "source": "iana"
+ },
+ "audio/mpa": {
+ "source": "iana"
+ },
+ "audio/mpa-robust": {
+ "source": "iana"
+ },
+ "audio/mpeg": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"]
+ },
+ "audio/mpeg4-generic": {
+ "source": "iana"
+ },
+ "audio/musepack": {
+ "source": "apache"
+ },
+ "audio/ogg": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["oga","ogg","spx"]
+ },
+ "audio/opus": {
+ "source": "iana"
+ },
+ "audio/parityfec": {
+ "source": "iana"
+ },
+ "audio/pcma": {
+ "source": "iana"
+ },
+ "audio/pcma-wb": {
+ "source": "iana"
+ },
+ "audio/pcmu": {
+ "source": "iana"
+ },
+ "audio/pcmu-wb": {
+ "source": "iana"
+ },
+ "audio/prs.sid": {
+ "source": "iana"
+ },
+ "audio/qcelp": {
+ "source": "iana"
+ },
+ "audio/raptorfec": {
+ "source": "iana"
+ },
+ "audio/red": {
+ "source": "iana"
+ },
+ "audio/rtp-enc-aescm128": {
+ "source": "iana"
+ },
+ "audio/rtp-midi": {
+ "source": "iana"
+ },
+ "audio/rtploopback": {
+ "source": "iana"
+ },
+ "audio/rtx": {
+ "source": "iana"
+ },
+ "audio/s3m": {
+ "source": "apache",
+ "extensions": ["s3m"]
+ },
+ "audio/silk": {
+ "source": "apache",
+ "extensions": ["sil"]
+ },
+ "audio/smv": {
+ "source": "iana"
+ },
+ "audio/smv-qcp": {
+ "source": "iana"
+ },
+ "audio/smv0": {
+ "source": "iana"
+ },
+ "audio/sp-midi": {
+ "source": "iana"
+ },
+ "audio/speex": {
+ "source": "iana"
+ },
+ "audio/t140c": {
+ "source": "iana"
+ },
+ "audio/t38": {
+ "source": "iana"
+ },
+ "audio/telephone-event": {
+ "source": "iana"
+ },
+ "audio/tone": {
+ "source": "iana"
+ },
+ "audio/uemclip": {
+ "source": "iana"
+ },
+ "audio/ulpfec": {
+ "source": "iana"
+ },
+ "audio/vdvi": {
+ "source": "iana"
+ },
+ "audio/vmr-wb": {
+ "source": "iana"
+ },
+ "audio/vnd.3gpp.iufp": {
+ "source": "iana"
+ },
+ "audio/vnd.4sb": {
+ "source": "iana"
+ },
+ "audio/vnd.audiokoz": {
+ "source": "iana"
+ },
+ "audio/vnd.celp": {
+ "source": "iana"
+ },
+ "audio/vnd.cisco.nse": {
+ "source": "iana"
+ },
+ "audio/vnd.cmles.radio-events": {
+ "source": "iana"
+ },
+ "audio/vnd.cns.anp1": {
+ "source": "iana"
+ },
+ "audio/vnd.cns.inf1": {
+ "source": "iana"
+ },
+ "audio/vnd.dece.audio": {
+ "source": "iana",
+ "extensions": ["uva","uvva"]
+ },
+ "audio/vnd.digital-winds": {
+ "source": "iana",
+ "extensions": ["eol"]
+ },
+ "audio/vnd.dlna.adts": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.heaac.1": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.heaac.2": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.mlp": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.mps": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.pl2": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.pl2x": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.pl2z": {
+ "source": "iana"
+ },
+ "audio/vnd.dolby.pulse.1": {
+ "source": "iana"
+ },
+ "audio/vnd.dra": {
+ "source": "iana",
+ "extensions": ["dra"]
+ },
+ "audio/vnd.dts": {
+ "source": "iana",
+ "extensions": ["dts"]
+ },
+ "audio/vnd.dts.hd": {
+ "source": "iana",
+ "extensions": ["dtshd"]
+ },
+ "audio/vnd.dvb.file": {
+ "source": "iana"
+ },
+ "audio/vnd.everad.plj": {
+ "source": "iana"
+ },
+ "audio/vnd.hns.audio": {
+ "source": "iana"
+ },
+ "audio/vnd.lucent.voice": {
+ "source": "iana",
+ "extensions": ["lvp"]
+ },
+ "audio/vnd.ms-playready.media.pya": {
+ "source": "iana",
+ "extensions": ["pya"]
+ },
+ "audio/vnd.nokia.mobile-xmf": {
+ "source": "iana"
+ },
+ "audio/vnd.nortel.vbk": {
+ "source": "iana"
+ },
+ "audio/vnd.nuera.ecelp4800": {
+ "source": "iana",
+ "extensions": ["ecelp4800"]
+ },
+ "audio/vnd.nuera.ecelp7470": {
+ "source": "iana",
+ "extensions": ["ecelp7470"]
+ },
+ "audio/vnd.nuera.ecelp9600": {
+ "source": "iana",
+ "extensions": ["ecelp9600"]
+ },
+ "audio/vnd.octel.sbc": {
+ "source": "iana"
+ },
+ "audio/vnd.qcelp": {
+ "source": "iana"
+ },
+ "audio/vnd.rhetorex.32kadpcm": {
+ "source": "iana"
+ },
+ "audio/vnd.rip": {
+ "source": "iana",
+ "extensions": ["rip"]
+ },
+ "audio/vnd.rn-realaudio": {
+ "compressible": false
+ },
+ "audio/vnd.sealedmedia.softseal.mpeg": {
+ "source": "iana"
+ },
+ "audio/vnd.vmx.cvsd": {
+ "source": "iana"
+ },
+ "audio/vnd.wave": {
+ "compressible": false
+ },
+ "audio/vorbis": {
+ "source": "iana",
+ "compressible": false
+ },
+ "audio/vorbis-config": {
+ "source": "iana"
+ },
+ "audio/wav": {
+ "compressible": false,
+ "extensions": ["wav"]
+ },
+ "audio/wave": {
+ "compressible": false,
+ "extensions": ["wav"]
+ },
+ "audio/webm": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["weba"]
+ },
+ "audio/x-aac": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["aac"]
+ },
+ "audio/x-aiff": {
+ "source": "apache",
+ "extensions": ["aif","aiff","aifc"]
+ },
+ "audio/x-caf": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["caf"]
+ },
+ "audio/x-flac": {
+ "source": "apache",
+ "extensions": ["flac"]
+ },
+ "audio/x-m4a": {
+ "source": "nginx",
+ "extensions": ["m4a"]
+ },
+ "audio/x-matroska": {
+ "source": "apache",
+ "extensions": ["mka"]
+ },
+ "audio/x-mpegurl": {
+ "source": "apache",
+ "extensions": ["m3u"]
+ },
+ "audio/x-ms-wax": {
+ "source": "apache",
+ "extensions": ["wax"]
+ },
+ "audio/x-ms-wma": {
+ "source": "apache",
+ "extensions": ["wma"]
+ },
+ "audio/x-pn-realaudio": {
+ "source": "apache",
+ "extensions": ["ram","ra"]
+ },
+ "audio/x-pn-realaudio-plugin": {
+ "source": "apache",
+ "extensions": ["rmp"]
+ },
+ "audio/x-realaudio": {
+ "source": "nginx",
+ "extensions": ["ra"]
+ },
+ "audio/x-tta": {
+ "source": "apache"
+ },
+ "audio/x-wav": {
+ "source": "apache",
+ "extensions": ["wav"]
+ },
+ "audio/xm": {
+ "source": "apache",
+ "extensions": ["xm"]
+ },
+ "chemical/x-cdx": {
+ "source": "apache",
+ "extensions": ["cdx"]
+ },
+ "chemical/x-cif": {
+ "source": "apache",
+ "extensions": ["cif"]
+ },
+ "chemical/x-cmdf": {
+ "source": "apache",
+ "extensions": ["cmdf"]
+ },
+ "chemical/x-cml": {
+ "source": "apache",
+ "extensions": ["cml"]
+ },
+ "chemical/x-csml": {
+ "source": "apache",
+ "extensions": ["csml"]
+ },
+ "chemical/x-pdb": {
+ "source": "apache"
+ },
+ "chemical/x-xyz": {
+ "source": "apache",
+ "extensions": ["xyz"]
+ },
+ "font/opentype": {
+ "compressible": true,
+ "extensions": ["otf"]
+ },
+ "image/bmp": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["bmp"]
+ },
+ "image/cgm": {
+ "source": "iana",
+ "extensions": ["cgm"]
+ },
+ "image/fits": {
+ "source": "iana"
+ },
+ "image/g3fax": {
+ "source": "iana",
+ "extensions": ["g3"]
+ },
+ "image/gif": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["gif"]
+ },
+ "image/ief": {
+ "source": "iana",
+ "extensions": ["ief"]
+ },
+ "image/jp2": {
+ "source": "iana"
+ },
+ "image/jpeg": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["jpeg","jpg","jpe"]
+ },
+ "image/jpm": {
+ "source": "iana"
+ },
+ "image/jpx": {
+ "source": "iana"
+ },
+ "image/ktx": {
+ "source": "iana",
+ "extensions": ["ktx"]
+ },
+ "image/naplps": {
+ "source": "iana"
+ },
+ "image/pjpeg": {
+ "compressible": false
+ },
+ "image/png": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["png"]
+ },
+ "image/prs.btif": {
+ "source": "iana",
+ "extensions": ["btif"]
+ },
+ "image/prs.pti": {
+ "source": "iana"
+ },
+ "image/pwg-raster": {
+ "source": "iana"
+ },
+ "image/sgi": {
+ "source": "apache",
+ "extensions": ["sgi"]
+ },
+ "image/svg+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["svg","svgz"]
+ },
+ "image/t38": {
+ "source": "iana"
+ },
+ "image/tiff": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["tiff","tif"]
+ },
+ "image/tiff-fx": {
+ "source": "iana"
+ },
+ "image/vnd.adobe.photoshop": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["psd"]
+ },
+ "image/vnd.airzip.accelerator.azv": {
+ "source": "iana"
+ },
+ "image/vnd.cns.inf2": {
+ "source": "iana"
+ },
+ "image/vnd.dece.graphic": {
+ "source": "iana",
+ "extensions": ["uvi","uvvi","uvg","uvvg"]
+ },
+ "image/vnd.djvu": {
+ "source": "iana",
+ "extensions": ["djvu","djv"]
+ },
+ "image/vnd.dvb.subtitle": {
+ "source": "iana",
+ "extensions": ["sub"]
+ },
+ "image/vnd.dwg": {
+ "source": "iana",
+ "extensions": ["dwg"]
+ },
+ "image/vnd.dxf": {
+ "source": "iana",
+ "extensions": ["dxf"]
+ },
+ "image/vnd.fastbidsheet": {
+ "source": "iana",
+ "extensions": ["fbs"]
+ },
+ "image/vnd.fpx": {
+ "source": "iana",
+ "extensions": ["fpx"]
+ },
+ "image/vnd.fst": {
+ "source": "iana",
+ "extensions": ["fst"]
+ },
+ "image/vnd.fujixerox.edmics-mmr": {
+ "source": "iana",
+ "extensions": ["mmr"]
+ },
+ "image/vnd.fujixerox.edmics-rlc": {
+ "source": "iana",
+ "extensions": ["rlc"]
+ },
+ "image/vnd.globalgraphics.pgb": {
+ "source": "iana"
+ },
+ "image/vnd.microsoft.icon": {
+ "source": "iana"
+ },
+ "image/vnd.mix": {
+ "source": "iana"
+ },
+ "image/vnd.mozilla.apng": {
+ "source": "iana"
+ },
+ "image/vnd.ms-modi": {
+ "source": "iana",
+ "extensions": ["mdi"]
+ },
+ "image/vnd.ms-photo": {
+ "source": "apache",
+ "extensions": ["wdp"]
+ },
+ "image/vnd.net-fpx": {
+ "source": "iana",
+ "extensions": ["npx"]
+ },
+ "image/vnd.radiance": {
+ "source": "iana"
+ },
+ "image/vnd.sealed.png": {
+ "source": "iana"
+ },
+ "image/vnd.sealedmedia.softseal.gif": {
+ "source": "iana"
+ },
+ "image/vnd.sealedmedia.softseal.jpg": {
+ "source": "iana"
+ },
+ "image/vnd.svf": {
+ "source": "iana"
+ },
+ "image/vnd.tencent.tap": {
+ "source": "iana"
+ },
+ "image/vnd.valve.source.texture": {
+ "source": "iana"
+ },
+ "image/vnd.wap.wbmp": {
+ "source": "iana",
+ "extensions": ["wbmp"]
+ },
+ "image/vnd.xiff": {
+ "source": "iana",
+ "extensions": ["xif"]
+ },
+ "image/vnd.zbrush.pcx": {
+ "source": "iana"
+ },
+ "image/webp": {
+ "source": "apache",
+ "extensions": ["webp"]
+ },
+ "image/x-3ds": {
+ "source": "apache",
+ "extensions": ["3ds"]
+ },
+ "image/x-cmu-raster": {
+ "source": "apache",
+ "extensions": ["ras"]
+ },
+ "image/x-cmx": {
+ "source": "apache",
+ "extensions": ["cmx"]
+ },
+ "image/x-freehand": {
+ "source": "apache",
+ "extensions": ["fh","fhc","fh4","fh5","fh7"]
+ },
+ "image/x-icon": {
+ "source": "apache",
+ "compressible": true,
+ "extensions": ["ico"]
+ },
+ "image/x-jng": {
+ "source": "nginx",
+ "extensions": ["jng"]
+ },
+ "image/x-mrsid-image": {
+ "source": "apache",
+ "extensions": ["sid"]
+ },
+ "image/x-ms-bmp": {
+ "source": "nginx",
+ "compressible": true,
+ "extensions": ["bmp"]
+ },
+ "image/x-pcx": {
+ "source": "apache",
+ "extensions": ["pcx"]
+ },
+ "image/x-pict": {
+ "source": "apache",
+ "extensions": ["pic","pct"]
+ },
+ "image/x-portable-anymap": {
+ "source": "apache",
+ "extensions": ["pnm"]
+ },
+ "image/x-portable-bitmap": {
+ "source": "apache",
+ "extensions": ["pbm"]
+ },
+ "image/x-portable-graymap": {
+ "source": "apache",
+ "extensions": ["pgm"]
+ },
+ "image/x-portable-pixmap": {
+ "source": "apache",
+ "extensions": ["ppm"]
+ },
+ "image/x-rgb": {
+ "source": "apache",
+ "extensions": ["rgb"]
+ },
+ "image/x-tga": {
+ "source": "apache",
+ "extensions": ["tga"]
+ },
+ "image/x-xbitmap": {
+ "source": "apache",
+ "extensions": ["xbm"]
+ },
+ "image/x-xcf": {
+ "compressible": false
+ },
+ "image/x-xpixmap": {
+ "source": "apache",
+ "extensions": ["xpm"]
+ },
+ "image/x-xwindowdump": {
+ "source": "apache",
+ "extensions": ["xwd"]
+ },
+ "message/cpim": {
+ "source": "iana"
+ },
+ "message/delivery-status": {
+ "source": "iana"
+ },
+ "message/disposition-notification": {
+ "source": "iana"
+ },
+ "message/external-body": {
+ "source": "iana"
+ },
+ "message/feedback-report": {
+ "source": "iana"
+ },
+ "message/global": {
+ "source": "iana"
+ },
+ "message/global-delivery-status": {
+ "source": "iana"
+ },
+ "message/global-disposition-notification": {
+ "source": "iana"
+ },
+ "message/global-headers": {
+ "source": "iana"
+ },
+ "message/http": {
+ "source": "iana",
+ "compressible": false
+ },
+ "message/imdn+xml": {
+ "source": "iana",
+ "compressible": true
+ },
+ "message/news": {
+ "source": "iana"
+ },
+ "message/partial": {
+ "source": "iana",
+ "compressible": false
+ },
+ "message/rfc822": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["eml","mime"]
+ },
+ "message/s-http": {
+ "source": "iana"
+ },
+ "message/sip": {
+ "source": "iana"
+ },
+ "message/sipfrag": {
+ "source": "iana"
+ },
+ "message/tracking-status": {
+ "source": "iana"
+ },
+ "message/vnd.si.simp": {
+ "source": "iana"
+ },
+ "message/vnd.wfa.wsc": {
+ "source": "iana"
+ },
+ "model/iges": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["igs","iges"]
+ },
+ "model/mesh": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["msh","mesh","silo"]
+ },
+ "model/vnd.collada+xml": {
+ "source": "iana",
+ "extensions": ["dae"]
+ },
+ "model/vnd.dwf": {
+ "source": "iana",
+ "extensions": ["dwf"]
+ },
+ "model/vnd.flatland.3dml": {
+ "source": "iana"
+ },
+ "model/vnd.gdl": {
+ "source": "iana",
+ "extensions": ["gdl"]
+ },
+ "model/vnd.gs-gdl": {
+ "source": "apache"
+ },
+ "model/vnd.gs.gdl": {
+ "source": "iana"
+ },
+ "model/vnd.gtw": {
+ "source": "iana",
+ "extensions": ["gtw"]
+ },
+ "model/vnd.moml+xml": {
+ "source": "iana"
+ },
+ "model/vnd.mts": {
+ "source": "iana",
+ "extensions": ["mts"]
+ },
+ "model/vnd.opengex": {
+ "source": "iana"
+ },
+ "model/vnd.parasolid.transmit.binary": {
+ "source": "iana"
+ },
+ "model/vnd.parasolid.transmit.text": {
+ "source": "iana"
+ },
+ "model/vnd.rosette.annotated-data-model": {
+ "source": "iana"
+ },
+ "model/vnd.valve.source.compiled-map": {
+ "source": "iana"
+ },
+ "model/vnd.vtu": {
+ "source": "iana",
+ "extensions": ["vtu"]
+ },
+ "model/vrml": {
+ "source": "iana",
+ "compressible": false,
+ "extensions": ["wrl","vrml"]
+ },
+ "model/x3d+binary": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["x3db","x3dbz"]
+ },
+ "model/x3d+fastinfoset": {
+ "source": "iana"
+ },
+ "model/x3d+vrml": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["x3dv","x3dvz"]
+ },
+ "model/x3d+xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["x3d","x3dz"]
+ },
+ "model/x3d-vrml": {
+ "source": "iana"
+ },
+ "multipart/alternative": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/appledouble": {
+ "source": "iana"
+ },
+ "multipart/byteranges": {
+ "source": "iana"
+ },
+ "multipart/digest": {
+ "source": "iana"
+ },
+ "multipart/encrypted": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/form-data": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/header-set": {
+ "source": "iana"
+ },
+ "multipart/mixed": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/parallel": {
+ "source": "iana"
+ },
+ "multipart/related": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/report": {
+ "source": "iana"
+ },
+ "multipart/signed": {
+ "source": "iana",
+ "compressible": false
+ },
+ "multipart/voice-message": {
+ "source": "iana"
+ },
+ "multipart/x-mixed-replace": {
+ "source": "iana"
+ },
+ "text/1d-interleaved-parityfec": {
+ "source": "iana"
+ },
+ "text/cache-manifest": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["appcache","manifest"]
+ },
+ "text/calendar": {
+ "source": "iana",
+ "extensions": ["ics","ifb"]
+ },
+ "text/calender": {
+ "compressible": true
+ },
+ "text/cmd": {
+ "compressible": true
+ },
+ "text/coffeescript": {
+ "extensions": ["coffee","litcoffee"]
+ },
+ "text/css": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["css"]
+ },
+ "text/csv": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["csv"]
+ },
+ "text/csv-schema": {
+ "source": "iana"
+ },
+ "text/directory": {
+ "source": "iana"
+ },
+ "text/dns": {
+ "source": "iana"
+ },
+ "text/ecmascript": {
+ "source": "iana"
+ },
+ "text/encaprtp": {
+ "source": "iana"
+ },
+ "text/enriched": {
+ "source": "iana"
+ },
+ "text/fwdred": {
+ "source": "iana"
+ },
+ "text/grammar-ref-list": {
+ "source": "iana"
+ },
+ "text/hjson": {
+ "extensions": ["hjson"]
+ },
+ "text/html": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["html","htm","shtml"]
+ },
+ "text/jade": {
+ "extensions": ["jade"]
+ },
+ "text/javascript": {
+ "source": "iana",
+ "compressible": true
+ },
+ "text/jcr-cnd": {
+ "source": "iana"
+ },
+ "text/jsx": {
+ "compressible": true,
+ "extensions": ["jsx"]
+ },
+ "text/less": {
+ "extensions": ["less"]
+ },
+ "text/markdown": {
+ "source": "iana"
+ },
+ "text/mathml": {
+ "source": "nginx",
+ "extensions": ["mml"]
+ },
+ "text/mizar": {
+ "source": "iana"
+ },
+ "text/n3": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["n3"]
+ },
+ "text/parameters": {
+ "source": "iana"
+ },
+ "text/parityfec": {
+ "source": "iana"
+ },
+ "text/plain": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["txt","text","conf","def","list","log","in","ini"]
+ },
+ "text/provenance-notation": {
+ "source": "iana"
+ },
+ "text/prs.fallenstein.rst": {
+ "source": "iana"
+ },
+ "text/prs.lines.tag": {
+ "source": "iana",
+ "extensions": ["dsc"]
+ },
+ "text/prs.prop.logic": {
+ "source": "iana"
+ },
+ "text/raptorfec": {
+ "source": "iana"
+ },
+ "text/red": {
+ "source": "iana"
+ },
+ "text/rfc822-headers": {
+ "source": "iana"
+ },
+ "text/richtext": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["rtx"]
+ },
+ "text/rtf": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["rtf"]
+ },
+ "text/rtp-enc-aescm128": {
+ "source": "iana"
+ },
+ "text/rtploopback": {
+ "source": "iana"
+ },
+ "text/rtx": {
+ "source": "iana"
+ },
+ "text/sgml": {
+ "source": "iana",
+ "extensions": ["sgml","sgm"]
+ },
+ "text/slim": {
+ "extensions": ["slim","slm"]
+ },
+ "text/stylus": {
+ "extensions": ["stylus","styl"]
+ },
+ "text/t140": {
+ "source": "iana"
+ },
+ "text/tab-separated-values": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["tsv"]
+ },
+ "text/troff": {
+ "source": "iana",
+ "extensions": ["t","tr","roff","man","me","ms"]
+ },
+ "text/turtle": {
+ "source": "iana",
+ "extensions": ["ttl"]
+ },
+ "text/ulpfec": {
+ "source": "iana"
+ },
+ "text/uri-list": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["uri","uris","urls"]
+ },
+ "text/vcard": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["vcard"]
+ },
+ "text/vnd.a": {
+ "source": "iana"
+ },
+ "text/vnd.abc": {
+ "source": "iana"
+ },
+ "text/vnd.curl": {
+ "source": "iana",
+ "extensions": ["curl"]
+ },
+ "text/vnd.curl.dcurl": {
+ "source": "apache",
+ "extensions": ["dcurl"]
+ },
+ "text/vnd.curl.mcurl": {
+ "source": "apache",
+ "extensions": ["mcurl"]
+ },
+ "text/vnd.curl.scurl": {
+ "source": "apache",
+ "extensions": ["scurl"]
+ },
+ "text/vnd.debian.copyright": {
+ "source": "iana"
+ },
+ "text/vnd.dmclientscript": {
+ "source": "iana"
+ },
+ "text/vnd.dvb.subtitle": {
+ "source": "iana",
+ "extensions": ["sub"]
+ },
+ "text/vnd.esmertec.theme-descriptor": {
+ "source": "iana"
+ },
+ "text/vnd.fly": {
+ "source": "iana",
+ "extensions": ["fly"]
+ },
+ "text/vnd.fmi.flexstor": {
+ "source": "iana",
+ "extensions": ["flx"]
+ },
+ "text/vnd.graphviz": {
+ "source": "iana",
+ "extensions": ["gv"]
+ },
+ "text/vnd.in3d.3dml": {
+ "source": "iana",
+ "extensions": ["3dml"]
+ },
+ "text/vnd.in3d.spot": {
+ "source": "iana",
+ "extensions": ["spot"]
+ },
+ "text/vnd.iptc.newsml": {
+ "source": "iana"
+ },
+ "text/vnd.iptc.nitf": {
+ "source": "iana"
+ },
+ "text/vnd.latex-z": {
+ "source": "iana"
+ },
+ "text/vnd.motorola.reflex": {
+ "source": "iana"
+ },
+ "text/vnd.ms-mediapackage": {
+ "source": "iana"
+ },
+ "text/vnd.net2phone.commcenter.command": {
+ "source": "iana"
+ },
+ "text/vnd.radisys.msml-basic-layout": {
+ "source": "iana"
+ },
+ "text/vnd.si.uricatalogue": {
+ "source": "iana"
+ },
+ "text/vnd.sun.j2me.app-descriptor": {
+ "source": "iana",
+ "extensions": ["jad"]
+ },
+ "text/vnd.trolltech.linguist": {
+ "source": "iana"
+ },
+ "text/vnd.wap.si": {
+ "source": "iana"
+ },
+ "text/vnd.wap.sl": {
+ "source": "iana"
+ },
+ "text/vnd.wap.wml": {
+ "source": "iana",
+ "extensions": ["wml"]
+ },
+ "text/vnd.wap.wmlscript": {
+ "source": "iana",
+ "extensions": ["wmls"]
+ },
+ "text/vtt": {
+ "charset": "UTF-8",
+ "compressible": true,
+ "extensions": ["vtt"]
+ },
+ "text/x-asm": {
+ "source": "apache",
+ "extensions": ["s","asm"]
+ },
+ "text/x-c": {
+ "source": "apache",
+ "extensions": ["c","cc","cxx","cpp","h","hh","dic"]
+ },
+ "text/x-component": {
+ "source": "nginx",
+ "extensions": ["htc"]
+ },
+ "text/x-fortran": {
+ "source": "apache",
+ "extensions": ["f","for","f77","f90"]
+ },
+ "text/x-gwt-rpc": {
+ "compressible": true
+ },
+ "text/x-handlebars-template": {
+ "extensions": ["hbs"]
+ },
+ "text/x-java-source": {
+ "source": "apache",
+ "extensions": ["java"]
+ },
+ "text/x-jquery-tmpl": {
+ "compressible": true
+ },
+ "text/x-lua": {
+ "extensions": ["lua"]
+ },
+ "text/x-markdown": {
+ "compressible": true,
+ "extensions": ["markdown","md","mkd"]
+ },
+ "text/x-nfo": {
+ "source": "apache",
+ "extensions": ["nfo"]
+ },
+ "text/x-opml": {
+ "source": "apache",
+ "extensions": ["opml"]
+ },
+ "text/x-pascal": {
+ "source": "apache",
+ "extensions": ["p","pas"]
+ },
+ "text/x-processing": {
+ "compressible": true,
+ "extensions": ["pde"]
+ },
+ "text/x-sass": {
+ "extensions": ["sass"]
+ },
+ "text/x-scss": {
+ "extensions": ["scss"]
+ },
+ "text/x-setext": {
+ "source": "apache",
+ "extensions": ["etx"]
+ },
+ "text/x-sfv": {
+ "source": "apache",
+ "extensions": ["sfv"]
+ },
+ "text/x-suse-ymp": {
+ "compressible": true,
+ "extensions": ["ymp"]
+ },
+ "text/x-uuencode": {
+ "source": "apache",
+ "extensions": ["uu"]
+ },
+ "text/x-vcalendar": {
+ "source": "apache",
+ "extensions": ["vcs"]
+ },
+ "text/x-vcard": {
+ "source": "apache",
+ "extensions": ["vcf"]
+ },
+ "text/xml": {
+ "source": "iana",
+ "compressible": true,
+ "extensions": ["xml"]
+ },
+ "text/xml-external-parsed-entity": {
+ "source": "iana"
+ },
+ "text/yaml": {
+ "extensions": ["yaml","yml"]
+ },
+ "video/1d-interleaved-parityfec": {
+ "source": "apache"
+ },
+ "video/3gpp": {
+ "source": "apache",
+ "extensions": ["3gp","3gpp"]
+ },
+ "video/3gpp-tt": {
+ "source": "apache"
+ },
+ "video/3gpp2": {
+ "source": "apache",
+ "extensions": ["3g2"]
+ },
+ "video/bmpeg": {
+ "source": "apache"
+ },
+ "video/bt656": {
+ "source": "apache"
+ },
+ "video/celb": {
+ "source": "apache"
+ },
+ "video/dv": {
+ "source": "apache"
+ },
+ "video/encaprtp": {
+ "source": "apache"
+ },
+ "video/h261": {
+ "source": "apache",
+ "extensions": ["h261"]
+ },
+ "video/h263": {
+ "source": "apache",
+ "extensions": ["h263"]
+ },
+ "video/h263-1998": {
+ "source": "apache"
+ },
+ "video/h263-2000": {
+ "source": "apache"
+ },
+ "video/h264": {
+ "source": "apache",
+ "extensions": ["h264"]
+ },
+ "video/h264-rcdo": {
+ "source": "apache"
+ },
+ "video/h264-svc": {
+ "source": "apache"
+ },
+ "video/h265": {
+ "source": "apache"
+ },
+ "video/iso.segment": {
+ "source": "apache"
+ },
+ "video/jpeg": {
+ "source": "apache",
+ "extensions": ["jpgv"]
+ },
+ "video/jpeg2000": {
+ "source": "apache"
+ },
+ "video/jpm": {
+ "source": "apache",
+ "extensions": ["jpm","jpgm"]
+ },
+ "video/mj2": {
+ "source": "apache",
+ "extensions": ["mj2","mjp2"]
+ },
+ "video/mp1s": {
+ "source": "apache"
+ },
+ "video/mp2p": {
+ "source": "apache"
+ },
+ "video/mp2t": {
+ "source": "apache",
+ "extensions": ["ts"]
+ },
+ "video/mp4": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["mp4","mp4v","mpg4"]
+ },
+ "video/mp4v-es": {
+ "source": "apache"
+ },
+ "video/mpeg": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["mpeg","mpg","mpe","m1v","m2v"]
+ },
+ "video/mpeg4-generic": {
+ "source": "apache"
+ },
+ "video/mpv": {
+ "source": "apache"
+ },
+ "video/nv": {
+ "source": "apache"
+ },
+ "video/ogg": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["ogv"]
+ },
+ "video/parityfec": {
+ "source": "apache"
+ },
+ "video/pointer": {
+ "source": "apache"
+ },
+ "video/quicktime": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["qt","mov"]
+ },
+ "video/raptorfec": {
+ "source": "apache"
+ },
+ "video/raw": {
+ "source": "apache"
+ },
+ "video/rtp-enc-aescm128": {
+ "source": "apache"
+ },
+ "video/rtploopback": {
+ "source": "apache"
+ },
+ "video/rtx": {
+ "source": "apache"
+ },
+ "video/smpte292m": {
+ "source": "apache"
+ },
+ "video/ulpfec": {
+ "source": "apache"
+ },
+ "video/vc1": {
+ "source": "apache"
+ },
+ "video/vnd.cctv": {
+ "source": "apache"
+ },
+ "video/vnd.dece.hd": {
+ "source": "apache",
+ "extensions": ["uvh","uvvh"]
+ },
+ "video/vnd.dece.mobile": {
+ "source": "apache",
+ "extensions": ["uvm","uvvm"]
+ },
+ "video/vnd.dece.mp4": {
+ "source": "apache"
+ },
+ "video/vnd.dece.pd": {
+ "source": "apache",
+ "extensions": ["uvp","uvvp"]
+ },
+ "video/vnd.dece.sd": {
+ "source": "apache",
+ "extensions": ["uvs","uvvs"]
+ },
+ "video/vnd.dece.video": {
+ "source": "apache",
+ "extensions": ["uvv","uvvv"]
+ },
+ "video/vnd.directv.mpeg": {
+ "source": "apache"
+ },
+ "video/vnd.directv.mpeg-tts": {
+ "source": "apache"
+ },
+ "video/vnd.dlna.mpeg-tts": {
+ "source": "apache"
+ },
+ "video/vnd.dvb.file": {
+ "source": "apache",
+ "extensions": ["dvb"]
+ },
+ "video/vnd.fvt": {
+ "source": "apache",
+ "extensions": ["fvt"]
+ },
+ "video/vnd.hns.video": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.1dparityfec-1010": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.1dparityfec-2005": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.2dparityfec-1010": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.2dparityfec-2005": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.ttsavc": {
+ "source": "apache"
+ },
+ "video/vnd.iptvforum.ttsmpeg2": {
+ "source": "apache"
+ },
+ "video/vnd.motorola.video": {
+ "source": "apache"
+ },
+ "video/vnd.motorola.videop": {
+ "source": "apache"
+ },
+ "video/vnd.mpegurl": {
+ "source": "apache",
+ "extensions": ["mxu","m4u"]
+ },
+ "video/vnd.ms-playready.media.pyv": {
+ "source": "apache",
+ "extensions": ["pyv"]
+ },
+ "video/vnd.nokia.interleaved-multimedia": {
+ "source": "apache"
+ },
+ "video/vnd.nokia.videovoip": {
+ "source": "apache"
+ },
+ "video/vnd.objectvideo": {
+ "source": "apache"
+ },
+ "video/vnd.radgamettools.bink": {
+ "source": "apache"
+ },
+ "video/vnd.radgamettools.smacker": {
+ "source": "apache"
+ },
+ "video/vnd.sealed.mpeg1": {
+ "source": "apache"
+ },
+ "video/vnd.sealed.mpeg4": {
+ "source": "apache"
+ },
+ "video/vnd.sealed.swf": {
+ "source": "apache"
+ },
+ "video/vnd.sealedmedia.softseal.mov": {
+ "source": "apache"
+ },
+ "video/vnd.uvvu.mp4": {
+ "source": "apache",
+ "extensions": ["uvu","uvvu"]
+ },
+ "video/vnd.vivo": {
+ "source": "apache",
+ "extensions": ["viv"]
+ },
+ "video/vp8": {
+ "source": "apache"
+ },
+ "video/webm": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["webm"]
+ },
+ "video/x-f4v": {
+ "source": "apache",
+ "extensions": ["f4v"]
+ },
+ "video/x-fli": {
+ "source": "apache",
+ "extensions": ["fli"]
+ },
+ "video/x-flv": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["flv"]
+ },
+ "video/x-m4v": {
+ "source": "apache",
+ "extensions": ["m4v"]
+ },
+ "video/x-matroska": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["mkv","mk3d","mks"]
+ },
+ "video/x-mng": {
+ "source": "apache",
+ "extensions": ["mng"]
+ },
+ "video/x-ms-asf": {
+ "source": "apache",
+ "extensions": ["asf","asx"]
+ },
+ "video/x-ms-vob": {
+ "source": "apache",
+ "extensions": ["vob"]
+ },
+ "video/x-ms-wm": {
+ "source": "apache",
+ "extensions": ["wm"]
+ },
+ "video/x-ms-wmv": {
+ "source": "apache",
+ "compressible": false,
+ "extensions": ["wmv"]
+ },
+ "video/x-ms-wmx": {
+ "source": "apache",
+ "extensions": ["wmx"]
+ },
+ "video/x-ms-wvx": {
+ "source": "apache",
+ "extensions": ["wvx"]
+ },
+ "video/x-msvideo": {
+ "source": "apache",
+ "extensions": ["avi"]
+ },
+ "video/x-sgi-movie": {
+ "source": "apache",
+ "extensions": ["movie"]
+ },
+ "video/x-smv": {
+ "source": "apache",
+ "extensions": ["smv"]
+ },
+ "x-conference/x-cooltalk": {
+ "source": "apache",
+ "extensions": ["ice"]
+ },
+ "x-shader/x-fragment": {
+ "compressible": true
+ },
+ "x-shader/x-vertex": {
+ "compressible": true
+ }
+}
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js
new file mode 100755
index 0000000..551031f
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js
@@ -0,0 +1,11 @@
+/*!
+ * mime-db
+ * Copyright(c) 2014 Jonathan Ong
+ * MIT Licensed
+ */
+
+/**
+ * Module exports.
+ */
+
+module.exports = require('./db.json')
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json
new file mode 100755
index 0000000..d77d856
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json
@@ -0,0 +1,98 @@
+{
+ "name": "mime-db",
+ "description": "Media Type Database",
+ "version": "1.23.0",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ {
+ "name": "Robert Kieffer",
+ "email": "robert@broofa.com",
+ "url": "http://github.com/broofa"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "mime",
+ "db",
+ "type",
+ "types",
+ "database",
+ "charset",
+ "charsets"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/mime-db.git"
+ },
+ "devDependencies": {
+ "bluebird": "3.3.5",
+ "co": "4.6.0",
+ "cogent": "1.0.1",
+ "csv-parse": "1.1.0",
+ "gnode": "0.1.2",
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5",
+ "raw-body": "2.1.6",
+ "stream-to-array": "2.3.0"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "README.md",
+ "db.json",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "build": "node scripts/build",
+ "fetch": "gnode scripts/fetch-apache && gnode scripts/fetch-iana && gnode scripts/fetch-nginx",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+ "update": "npm run fetch && npm run build"
+ },
+ "gitHead": "ba0d99fd05b3bfdc2ebcd78f858c25cb7db6af41",
+ "bugs": {
+ "url": "https://github.com/jshttp/mime-db/issues"
+ },
+ "homepage": "https://github.com/jshttp/mime-db#readme",
+ "_id": "mime-db@1.23.0",
+ "_shasum": "a31b4070adaea27d732ea333740a64d0ec9a6659",
+ "_from": "mime-db@>=1.23.0 <1.24.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "a31b4070adaea27d732ea333740a64d0ec9a6659",
+ "tarball": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/mime-db-1.23.0.tgz_1462163798086_0.43938886746764183"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz"
+}
diff --git a/server/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json
new file mode 100755
index 0000000..d05c76a
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json
@@ -0,0 +1,88 @@
+{
+ "name": "mime-types",
+ "description": "The ultimate javascript content-type utility.",
+ "version": "2.1.11",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jeremiah Senkpiel",
+ "email": "fishrock123@rocketmail.com",
+ "url": "https://searchbeam.jit.su"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "mime",
+ "types"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/mime-types.git"
+ },
+ "dependencies": {
+ "mime-db": "~1.23.0"
+ },
+ "devDependencies": {
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec test/test.js",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js"
+ },
+ "gitHead": "298ffcf490a5d6e60edea7bf7a69036df04846b1",
+ "bugs": {
+ "url": "https://github.com/jshttp/mime-types/issues"
+ },
+ "homepage": "https://github.com/jshttp/mime-types#readme",
+ "_id": "mime-types@2.1.11",
+ "_shasum": "c259c471bda808a85d6cd193b430a5fae4473b3c",
+ "_from": "mime-types@>=2.1.11 <2.2.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "c259c471bda808a85d6cd193b430a5fae4473b3c",
+ "tarball": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "fishrock123",
+ "email": "fishrock123@rocketmail.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/mime-types-2.1.11.tgz_1462165365027_0.7217204745393246"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz"
+}
diff --git a/server/node_modules/express/node_modules/type-is/package.json b/server/node_modules/express/node_modules/type-is/package.json
new file mode 100755
index 0000000..a215011
--- /dev/null
+++ b/server/node_modules/express/node_modules/type-is/package.json
@@ -0,0 +1,87 @@
+{
+ "name": "type-is",
+ "description": "Infer the content-type of a request.",
+ "version": "1.6.13",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jshttp/type-is.git"
+ },
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.11"
+ },
+ "devDependencies": {
+ "eslint": "2.10.2",
+ "eslint-config-standard": "5.3.1",
+ "eslint-plugin-promise": "1.1.0",
+ "eslint-plugin-standard": "1.3.2",
+ "istanbul": "0.4.3",
+ "mocha": "1.21.5"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "index.js"
+ ],
+ "scripts": {
+ "lint": "eslint **/*.js",
+ "test": "mocha --reporter spec --check-leaks --bail test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "keywords": [
+ "content",
+ "type",
+ "checking"
+ ],
+ "gitHead": "88c47523fff910343b3ca7d4928dad40f21ea6cd",
+ "bugs": {
+ "url": "https://github.com/jshttp/type-is/issues"
+ },
+ "homepage": "https://github.com/jshttp/type-is#readme",
+ "_id": "type-is@1.6.13",
+ "_shasum": "6e83ba7bc30cd33a7bb0b7fb00737a2085bf9d08",
+ "_from": "type-is@>=1.6.13 <1.7.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "dist": {
+ "shasum": "6e83ba7bc30cd33a7bb0b7fb00737a2085bf9d08",
+ "tarball": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/type-is-1.6.13.tgz_1463622049206_0.9134831207338721"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/server/node_modules/express/node_modules/utils-merge/.travis.yml b/server/node_modules/express/node_modules/utils-merge/.travis.yml
new file mode 100755
index 0000000..af92b02
--- /dev/null
+++ b/server/node_modules/express/node_modules/utils-merge/.travis.yml
@@ -0,0 +1,6 @@
+language: "node_js"
+node_js:
+ - "0.4"
+ - "0.6"
+ - "0.8"
+ - "0.10"
diff --git a/server/node_modules/express/node_modules/utils-merge/LICENSE b/server/node_modules/express/node_modules/utils-merge/LICENSE
new file mode 100755
index 0000000..e33bd10
--- /dev/null
+++ b/server/node_modules/express/node_modules/utils-merge/LICENSE
@@ -0,0 +1,20 @@
+(The MIT License)
+
+Copyright (c) 2013 Jared Hanson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/utils-merge/README.md b/server/node_modules/express/node_modules/utils-merge/README.md
new file mode 100755
index 0000000..2f94e9b
--- /dev/null
+++ b/server/node_modules/express/node_modules/utils-merge/README.md
@@ -0,0 +1,34 @@
+# utils-merge
+
+Merges the properties from a source object into a destination object.
+
+## Install
+
+ $ npm install utils-merge
+
+## Usage
+
+```javascript
+var a = { foo: 'bar' }
+ , b = { bar: 'baz' };
+
+merge(a, b);
+// => { foo: 'bar', bar: 'baz' }
+```
+
+## Tests
+
+ $ npm install
+ $ npm test
+
+[![Build Status](https://secure.travis-ci.org/jaredhanson/utils-merge.png)](http://travis-ci.org/jaredhanson/utils-merge)
+
+## Credits
+
+ - [Jared Hanson](http://github.com/jaredhanson)
+
+## License
+
+[The MIT License](http://opensource.org/licenses/MIT)
+
+Copyright (c) 2013 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)>
diff --git a/server/node_modules/express/node_modules/utils-merge/index.js b/server/node_modules/express/node_modules/utils-merge/index.js
new file mode 100755
index 0000000..4265c69
--- /dev/null
+++ b/server/node_modules/express/node_modules/utils-merge/index.js
@@ -0,0 +1,23 @@
+/**
+ * Merge object b with object a.
+ *
+ * var a = { foo: 'bar' }
+ * , b = { bar: 'baz' };
+ *
+ * merge(a, b);
+ * // => { foo: 'bar', bar: 'baz' }
+ *
+ * @param {Object} a
+ * @param {Object} b
+ * @return {Object}
+ * @api public
+ */
+
+exports = module.exports = function(a, b){
+ if (a && b) {
+ for (var key in b) {
+ a[key] = b[key];
+ }
+ }
+ return a;
+};
diff --git a/server/node_modules/express/node_modules/utils-merge/package.json b/server/node_modules/express/node_modules/utils-merge/package.json
new file mode 100755
index 0000000..e86cad0
--- /dev/null
+++ b/server/node_modules/express/node_modules/utils-merge/package.json
@@ -0,0 +1,60 @@
+{
+ "name": "utils-merge",
+ "version": "1.0.0",
+ "description": "merge() utility function",
+ "keywords": [
+ "util"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/jaredhanson/utils-merge.git"
+ },
+ "bugs": {
+ "url": "http://github.com/jaredhanson/utils-merge/issues"
+ },
+ "author": {
+ "name": "Jared Hanson",
+ "email": "jaredhanson@gmail.com",
+ "url": "http://www.jaredhanson.net/"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/MIT"
+ }
+ ],
+ "main": "./index",
+ "dependencies": {},
+ "devDependencies": {
+ "mocha": "1.x.x",
+ "chai": "1.x.x"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --require test/bootstrap/node test/*.test.js"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ },
+ "_id": "utils-merge@1.0.0",
+ "dist": {
+ "shasum": "0294fb922bb9375153541c4f7096231f287c8af8",
+ "tarball": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz"
+ },
+ "_from": "utils-merge@1.0.0",
+ "_npmVersion": "1.2.25",
+ "_npmUser": {
+ "name": "jaredhanson",
+ "email": "jaredhanson@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "jaredhanson",
+ "email": "jaredhanson@gmail.com"
+ }
+ ],
+ "directories": {},
+ "_shasum": "0294fb922bb9375153541c4f7096231f287c8af8",
+ "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+ "readme": "ERROR: No README data found!",
+ "homepage": "https://github.com/jaredhanson/utils-merge#readme"
+}
diff --git a/server/node_modules/express/node_modules/vary/HISTORY.md b/server/node_modules/express/node_modules/vary/HISTORY.md
new file mode 100755
index 0000000..ed68118
--- /dev/null
+++ b/server/node_modules/express/node_modules/vary/HISTORY.md
@@ -0,0 +1,29 @@
+1.1.0 / 2015-09-29
+==================
+
+ * Only accept valid field names in the `field` argument
+ - Ensures the resulting string is a valid HTTP header value
+
+1.0.1 / 2015-07-08
+==================
+
+ * Fix setting empty header from empty `field`
+ * perf: enable strict mode
+ * perf: remove argument reassignments
+
+1.0.0 / 2014-08-10
+==================
+
+ * Accept valid `Vary` header string as `field`
+ * Add `vary.append` for low-level string manipulation
+ * Move to `jshttp` orgainzation
+
+0.1.0 / 2014-06-05
+==================
+
+ * Support array of fields to set
+
+0.0.0 / 2014-06-04
+==================
+
+ * Initial release
diff --git a/server/node_modules/express/node_modules/vary/LICENSE b/server/node_modules/express/node_modules/vary/LICENSE
new file mode 100755
index 0000000..142ede3
--- /dev/null
+++ b/server/node_modules/express/node_modules/vary/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014-2015 Douglas Christopher Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/server/node_modules/express/node_modules/vary/README.md b/server/node_modules/express/node_modules/vary/README.md
new file mode 100755
index 0000000..5966542
--- /dev/null
+++ b/server/node_modules/express/node_modules/vary/README.md
@@ -0,0 +1,91 @@
+# vary
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Manipulate the HTTP Vary header
+
+## Installation
+
+```sh
+$ npm install vary
+```
+
+## API
+
+```js
+var vary = require('vary')
+```
+
+### vary(res, field)
+
+Adds the given header `field` to the `Vary` response header of `res`.
+This can be a string of a single field, a string of a valid `Vary`
+header, or an array of multiple fields.
+
+This will append the header if not already listed, otherwise leaves
+it listed in the current location.
+
+```js
+// Append "Origin" to the Vary header of the response
+vary(res, 'Origin')
+```
+
+### vary.append(header, field)
+
+Adds the given header `field` to the `Vary` response header string `header`.
+This can be a string of a single field, a string of a valid `Vary` header,
+or an array of multiple fields.
+
+This will append the header if not already listed, otherwise leaves
+it listed in the current location. The new header string is returned.
+
+```js
+// Get header string appending "Origin" to "Accept, User-Agent"
+vary.append('Accept, User-Agent', 'Origin')
+```
+
+## Examples
+
+### Updating the Vary header when content is based on it
+
+```js
+var http = require('http')
+var vary = require('vary')
+
+http.createServer(function onRequest(req, res) {
+ // about to user-agent sniff
+ vary(res, 'User-Agent')
+
+ var ua = req.headers['user-agent'] || ''
+ var isMobile = /mobi|android|touch|mini/i.test(ua)
+
+ // serve site, depending on isMobile
+ res.setHeader('Content-Type', 'text/html')
+ res.end('You are (probably) ' + (isMobile ? '' : 'not ') + 'a mobile user')
+})
+```
+
+## Testing
+
+```sh
+$ npm test
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/vary.svg
+[npm-url]: https://npmjs.org/package/vary
+[node-version-image]: https://img.shields.io/node/v/vary.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/vary/master.svg
+[travis-url]: https://travis-ci.org/jshttp/vary
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/vary/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/vary
+[downloads-image]: https://img.shields.io/npm/dm/vary.svg
+[downloads-url]: https://npmjs.org/package/vary
diff --git a/server/node_modules/express/node_modules/vary/index.js b/server/node_modules/express/node_modules/vary/index.js
new file mode 100755
index 0000000..21dbaf1
--- /dev/null
+++ b/server/node_modules/express/node_modules/vary/index.js
@@ -0,0 +1,124 @@
+/*!
+ * vary
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module exports.
+ */
+
+module.exports = vary;
+module.exports.append = append;
+
+/**
+ * RegExp to match field-name in RFC 7230 sec 3.2
+ *
+ * field-name = token
+ * token = 1*tchar
+ * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*"
+ * / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
+ * / DIGIT / ALPHA
+ * ; any VCHAR, except delimiters
+ */
+
+var fieldNameRegExp = /^[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+$/
+
+/**
+ * Append a field to a vary header.
+ *
+ * @param {String} header
+ * @param {String|Array} field
+ * @return {String}
+ * @api public
+ */
+
+function append(header, field) {
+ if (typeof header !== 'string') {
+ throw new TypeError('header argument is required');
+ }
+
+ if (!field) {
+ throw new TypeError('field argument is required');
+ }
+
+ // get fields array
+ var fields = !Array.isArray(field)
+ ? parse(String(field))
+ : field;
+
+ // assert on invalid field names
+ for (var i = 0; i < fields.length; i++) {
+ if (!fieldNameRegExp.test(fields[i])) {
+ throw new TypeError('field argument contains an invalid header name');
+ }
+ }
+
+ // existing, unspecified vary
+ if (header === '*') {
+ return header;
+ }
+
+ // enumerate current values
+ var val = header;
+ var vals = parse(header.toLowerCase());
+
+ // unspecified vary
+ if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) {
+ return '*';
+ }
+
+ for (var i = 0; i < fields.length; i++) {
+ var fld = fields[i].toLowerCase();
+
+ // append value (case-preserving)
+ if (vals.indexOf(fld) === -1) {
+ vals.push(fld);
+ val = val
+ ? val + ', ' + fields[i]
+ : fields[i];
+ }
+ }
+
+ return val;
+}
+
+/**
+ * Parse a vary header into an array.
+ *
+ * @param {String} header
+ * @return {Array}
+ * @api private
+ */
+
+function parse(header) {
+ return header.trim().split(/ *, */);
+}
+
+/**
+ * Mark that a request is varied on a header field.
+ *
+ * @param {Object} res
+ * @param {String|Array} field
+ * @api public
+ */
+
+function vary(res, field) {
+ if (!res || !res.getHeader || !res.setHeader) {
+ // quack quack
+ throw new TypeError('res argument is required');
+ }
+
+ // get existing header
+ var val = res.getHeader('Vary') || ''
+ var header = Array.isArray(val)
+ ? val.join(', ')
+ : String(val);
+
+ // set new header
+ if ((val = append(header, field))) {
+ res.setHeader('Vary', val);
+ }
+}
diff --git a/server/node_modules/express/node_modules/vary/package.json b/server/node_modules/express/node_modules/vary/package.json
new file mode 100755
index 0000000..705d79f
--- /dev/null
+++ b/server/node_modules/express/node_modules/vary/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "vary",
+ "description": "Manipulate the HTTP Vary header",
+ "version": "1.1.0",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "keywords": [
+ "http",
+ "res",
+ "vary"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jshttp/vary"
+ },
+ "devDependencies": {
+ "istanbul": "0.3.21",
+ "mocha": "2.3.3",
+ "supertest": "1.1.0"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "README.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "13b03e9bf97da9d83bfeac84d84144137d84c257",
+ "bugs": {
+ "url": "https://github.com/jshttp/vary/issues"
+ },
+ "homepage": "https://github.com/jshttp/vary",
+ "_id": "vary@1.1.0",
+ "_shasum": "e1e5affbbd16ae768dd2674394b9ad3022653140",
+ "_from": "vary@>=1.1.0 <1.2.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "fishrock123",
+ "email": "fishrock123@rocketmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "e1e5affbbd16ae768dd2674394b9ad3022653140",
+ "tarball": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz"
+}
diff --git a/server/node_modules/express/package.json b/server/node_modules/express/package.json
new file mode 100755
index 0000000..4633a1e
--- /dev/null
+++ b/server/node_modules/express/package.json
@@ -0,0 +1,159 @@
+{
+ "name": "express",
+ "description": "Fast, unopinionated, minimalist web framework",
+ "version": "4.14.0",
+ "author": {
+ "name": "TJ Holowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ "contributors": [
+ {
+ "name": "Aaron Heckmann",
+ "email": "aaron.heckmann+github@gmail.com"
+ },
+ {
+ "name": "Ciaran Jessup",
+ "email": "ciaranj@gmail.com"
+ },
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "Guillermo Rauch",
+ "email": "rauchg@gmail.com"
+ },
+ {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com"
+ },
+ {
+ "name": "Roman Shtylman",
+ "email": "shtylman+expressjs@gmail.com"
+ },
+ {
+ "name": "Young Jae Sim",
+ "email": "hanul@hanul.me"
+ }
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/expressjs/express"
+ },
+ "homepage": "http://expressjs.com/",
+ "keywords": [
+ "express",
+ "framework",
+ "sinatra",
+ "web",
+ "rest",
+ "restful",
+ "router",
+ "app",
+ "api"
+ ],
+ "dependencies": {
+ "accepts": "~1.3.3",
+ "array-flatten": "1.1.1",
+ "content-disposition": "0.5.1",
+ "content-type": "~1.0.2",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "~2.2.0",
+ "depd": "~1.1.0",
+ "encodeurl": "~1.0.1",
+ "escape-html": "~1.0.3",
+ "etag": "~1.7.0",
+ "finalhandler": "0.5.0",
+ "fresh": "0.3.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.1",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~1.1.2",
+ "qs": "6.2.0",
+ "range-parser": "~1.2.0",
+ "send": "0.14.1",
+ "serve-static": "~1.11.1",
+ "type-is": "~1.6.13",
+ "utils-merge": "1.0.0",
+ "vary": "~1.1.0"
+ },
+ "devDependencies": {
+ "after": "0.8.1",
+ "body-parser": "~1.15.1",
+ "cookie-parser": "~1.4.3",
+ "ejs": "2.4.2",
+ "istanbul": "0.4.3",
+ "marked": "0.3.5",
+ "method-override": "~2.3.6",
+ "mocha": "2.5.3",
+ "morgan": "~1.7.0",
+ "should": "9.0.2",
+ "supertest": "1.2.0",
+ "connect-redis": "~2.4.1",
+ "cookie-session": "~1.2.0",
+ "express-session": "~1.13.0",
+ "jade": "~1.11.0",
+ "multiparty": "~4.1.2",
+ "vhost": "~3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ },
+ "files": [
+ "LICENSE",
+ "History.md",
+ "Readme.md",
+ "index.js",
+ "lib/"
+ ],
+ "scripts": {
+ "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
+ "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
+ },
+ "gitHead": "9375a9afa9d7baa814b454c7a6818a7471aaef00",
+ "bugs": {
+ "url": "https://github.com/expressjs/express/issues"
+ },
+ "_id": "express@4.14.0",
+ "_shasum": "c1ee3f42cdc891fb3dc650a8922d51ec847d0d66",
+ "_from": "express@latest",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "hacksparrow",
+ "email": "captain@hacksparrow.com"
+ },
+ {
+ "name": "jasnell",
+ "email": "jasnell@gmail.com"
+ },
+ {
+ "name": "mikeal",
+ "email": "mikeal.rogers@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "c1ee3f42cdc891fb3dc650a8922d51ec847d0d66",
+ "tarball": "https://registry.npmjs.org/express/-/express-4.14.0.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/express-4.14.0.tgz_1466095407850_0.17484632693231106"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/express/-/express-4.14.0.tgz"
+}
diff --git a/server/node_modules/fibers/.npmignore b/server/node_modules/fibers/.npmignore
new file mode 100755
index 0000000..3e2e84b
--- /dev/null
+++ b/server/node_modules/fibers/.npmignore
@@ -0,0 +1,2 @@
+build/
+node_modules/
diff --git a/server/node_modules/fibers/.travis.yml b/server/node_modules/fibers/.travis.yml
new file mode 100755
index 0000000..d53d7aa
--- /dev/null
+++ b/server/node_modules/fibers/.travis.yml
@@ -0,0 +1,32 @@
+sudo: false
+
+language: node_js
+
+node_js:
+ - "4"
+ - "6"
+
+cache:
+ directories:
+ - node_modules
+
+install:
+ - npm install
+
+script:
+ - npm run test
+
+# Necessary to compile native modules for io.js v3 or Node.js v4
+env:
+ - CXX=g++-4.8
+
+# Necessary to compile native modules for io.js v3 or Node.js v4
+addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - g++-4.8
+
+notifications:
+ email: false
diff --git a/server/node_modules/fibers/LICENSE b/server/node_modules/fibers/LICENSE
new file mode 100755
index 0000000..936791c
--- /dev/null
+++ b/server/node_modules/fibers/LICENSE
@@ -0,0 +1,18 @@
+Copyright 2011 Marcel Laverdet
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
diff --git a/server/node_modules/fibers/README.md b/server/node_modules/fibers/README.md
new file mode 100755
index 0000000..932e3d5
--- /dev/null
+++ b/server/node_modules/fibers/README.md
@@ -0,0 +1,592 @@
+fibers(1) -- Fiber support for v8 and Node
+==========================================
+
+INSTALLING
+----------
+
+### via npm
+* `npm install fibers`
+* You're done! (see "supported platforms" below if you run into errors)
+
+### from source
+* `git clone git://github.com/laverdet/node-fibers.git`
+* `cd node-fibers`
+* `npm install`
+
+Note: node-fibers uses [node-gyp](https://github.com/TooTallNate/node-gyp) for
+building. To manually invoke the build process, you can use `node-gyp rebuild`.
+This will put the compiled extension in `build/Release/fibers.node`. However,
+when you do `require('fibers')`, it will expect the module to be in, for
+example, `bin/linux-x64-v8-3.11/fibers.node`. You can manually put the module
+here every time you build, or you can use the included build script. Either
+`npm install` or `node build -f` will do this for you. If you are going to be
+hacking on node-fibers, it may be worthwhile to first do `node-gyp configure`
+and then for subsequent rebuilds you can just do `node-gyp build` which will
+be faster than a full `npm install` or `node-gyp rebuild`.
+
+### meteor users please read this
+If you're trying to get meteor running and you ended up at this page you're
+probably doing something wrong. Please uninstall all versions of NodeJS and
+Meteor, then start over. See
+[meteor#5124](https://github.com/meteor/meteor/issues/5124) for more
+information.
+
+### supported platforms
+If you are running NodeJS version 4.x, 5.x, or 6.x on Linux, OS X, or Windows
+(7 or later) then you should be able to install fibers from npm just fine. If
+you are running an older (or newer) version of node or some other operating
+system you will have to compile fibers on your system.
+
+(special thanks to [Jeroen Janssen](https://github.com/japj) for his work on
+fibers in Windows)
+
+If you do end up needing to compile fibers first make sure you have node-gyp
+installed as a global dependency (`npm install -g node-gyp`), and that you have
+setup your build enviroment by following the instructions at
+[node-gyp](https://github.com/TooTallNate/node-gyp). Ubuntu-flavored Linux users
+may need to run `sudo apt-get install g++` as well.
+
+
+EXAMPLES
+--------
+
+The examples below describe basic use of `Fiber`, but note that it is **not
+recommended** to use `Fiber` without an abstraction in between your code and
+fibers. See "FUTURES" below for additional information.
+
+### Sleep
+This is a quick example of how you can write sleep() with fibers. Note that
+while the sleep() call is blocking inside the fiber, node is able to handle
+other events.
+
+ $ cat sleep.js
+
+```javascript
+var Fiber = require('fibers');
+
+function sleep(ms) {
+ var fiber = Fiber.current;
+ setTimeout(function() {
+ fiber.run();
+ }, ms);
+ Fiber.yield();
+}
+
+Fiber(function() {
+ console.log('wait... ' + new Date);
+ sleep(1000);
+ console.log('ok... ' + new Date);
+}).run();
+console.log('back in main');
+```
+
+ $ node sleep.js
+ wait... Fri Jan 21 2011 22:42:04 GMT+0900 (JST)
+ back in main
+ ok... Fri Jan 21 2011 22:42:05 GMT+0900 (JST)
+
+
+### Incremental Generator
+Yielding execution will resume back in the fiber right where you left off. You
+can also pass values back and forth through yield() and run(). Again, the node
+event loop is never blocked while this script is running.
+
+ $ cat generator.js
+
+```javascript
+var Fiber = require('fibers');
+
+var inc = Fiber(function(start) {
+ var total = start;
+ while (true) {
+ total += Fiber.yield(total);
+ }
+});
+
+for (var ii = inc.run(1); ii <= 10; ii = inc.run(1)) {
+ console.log(ii);
+}
+```
+
+ $ node generator.js
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+
+
+### Fibonacci Generator
+Expanding on the incremental generator above, we can create a generator which
+returns a new Fibonacci number with each invocation. You can compare this with
+the [ECMAScript Harmony
+Generator](http://wiki.ecmascript.org/doku.php?id=harmony:generators) Fibonacci
+example.
+
+ $ cat fibonacci.js
+
+```javascript
+var Fiber = require('fibers');
+
+// Generator function. Returns a function which returns incrementing
+// Fibonacci numbers with each call.
+function Fibonacci() {
+ // Create a new fiber which yields sequential Fibonacci numbers
+ var fiber = Fiber(function() {
+ Fiber.yield(0); // F(0) -> 0
+ var prev = 0, curr = 1;
+ while (true) {
+ Fiber.yield(curr);
+ var tmp = prev + curr;
+ prev = curr;
+ curr = tmp;
+ }
+ });
+ // Return a bound handle to `run` on this fiber
+ return fiber.run.bind(fiber);
+}
+
+// Initialize a new Fibonacci sequence and iterate up to 1597
+var seq = Fibonacci();
+for (var ii = seq(); ii <= 1597; ii = seq()) {
+ console.log(ii);
+}
+```
+
+ $ node fibonacci.js
+ 0
+ 1
+ 1
+ 2
+ 3
+ 5
+ 8
+ 13
+ 21
+ 34
+ 55
+ 89
+ 144
+ 233
+ 377
+ 610
+ 987
+ 1597
+
+
+### Basic Exceptions
+Fibers are exception-safe; exceptions will continue travelling through fiber
+boundaries:
+
+ $ cat error.js
+
+```javascript
+var Fiber = require('fibers');
+
+var fn = Fiber(function() {
+ console.log('async work here...');
+ Fiber.yield();
+ console.log('still working...');
+ Fiber.yield();
+ console.log('just a little bit more...');
+ Fiber.yield();
+ throw new Error('oh crap!');
+});
+
+try {
+ while (true) {
+ fn.run();
+ }
+} catch(e) {
+ console.log('safely caught that error!');
+ console.log(e.stack);
+}
+console.log('done!');
+```
+
+ $ node error.js
+ async work here...
+ still working...
+ just a little bit more...
+ safely caught that error!
+ Error: oh crap!
+ at error.js:11:9
+ done!
+
+
+FUTURES
+-------
+
+Using the `Fiber` class without an abstraction in between your code and the raw
+API is **not recommended**. `Fiber` is meant to implement the smallest amount of
+functionality in order make possible many different programming patterns. This
+makes the `Fiber` class relatively lousy to work with directly, but extremely
+powerful when coupled with a decent abstraction. There is no right answer for
+which abstraction is right for you and your project. Included with `node-fibers`
+is an implementation of "futures" which is fiber-aware. Usage of this library
+is documented below. There are several other externally-maintained options
+which can be found on the [wiki](https://github.com/laverdet/node-fibers/wiki).
+You **should** feel encouraged to be creative with fibers and build a solution
+which works well with your project. For instance, `Future` is not a good
+abstraction to use if you want to build a generator function (see Fibonacci
+example above).
+
+Using `Future` to wrap existing node functions. At no point is the node event
+loop blocked:
+
+ $ cat ls.js
+
+```javascript
+var Future = require('fibers/future');
+var fs = Future.wrap(require('fs'));
+
+Future.task(function() {
+ // Get a list of files in the directory
+ var fileNames = fs.readdirFuture('.').wait();
+ console.log('Found '+ fileNames.length+ ' files');
+
+ // Stat each file
+ var stats = [];
+ for (var ii = 0; ii < fileNames.length; ++ii) {
+ stats.push(fs.statFuture(fileNames[ii]));
+ }
+ stats.map(function(f) {
+ f.wait()
+ });
+
+ // Print file size
+ for (var ii = 0; ii < fileNames.length; ++ii) {
+ console.log(fileNames[ii]+ ': '+ stats[ii].get().size);
+ }
+}).detach();
+```
+
+ $ node ls.js
+ Found 11 files
+ bin: 4096
+ fibers.js: 1708
+ .gitignore: 37
+ README.md: 8664
+ future.js: 5833
+ .git: 4096
+ LICENSE: 1054
+ src: 4096
+ ls.js: 860
+ Makefile: 436
+ package.json: 684
+
+
+The future API is designed to make it easy to move between classic
+callback-style code and fiber-aware waiting code:
+
+ $ cat sleep.js
+
+```javascript
+var Future = require('fibers/future'), wait = Future.wait;
+
+// This function returns a future which resolves after a timeout. This
+// demonstrates manually resolving futures.
+function sleep(ms) {
+ var future = new Future;
+ setTimeout(function() {
+ future.return();
+ }, ms);
+ return future;
+}
+
+// You can create functions which automatically run in their own fiber and
+// return futures that resolve when the fiber returns (this probably sounds
+// confusing.. just play with it to understand).
+var calcTimerDelta = function(ms) {
+ var start = new Date;
+ sleep(ms).wait();
+ return new Date - start;
+}.future(); // <-- important!
+
+// And futures also include node-friendly callbacks if you don't want to use
+// wait()
+calcTimerDelta(2000).resolve(function(err, val) {
+ console.log('Set timer for 2000ms, waited '+ val+ 'ms');
+});
+```
+
+ $ node sleep.js
+ Set timer for 2000ms, waited 2009ms
+
+
+API DOCUMENTATION
+-----------------
+Fiber's definition looks something like this:
+
+```javascript
+/**
+ * Instantiate a new Fiber. You may invoke this either as a function or as
+ * a constructor; the behavior is the same.
+ *
+ * When run() is called on this fiber for the first time, `fn` will be
+ * invoked as the first frame on a new stack. Execution will continue on
+ * this new stack until `fn` returns, or Fiber.yield() is called.
+ *
+ * After the function returns the fiber is reset to original state and
+ * may be restarted with another call to run().
+ */
+function Fiber(fn) {
+ [native code]
+}
+
+/**
+ * `Fiber.current` will contain the currently-running Fiber. It will be
+ * `undefined` if there is no fiber (i.e. the main stack of execution).
+ *
+ * See "Garbage Collection" for more information on responsible use of
+ * `Fiber.current`.
+ */
+Fiber.current = undefined;
+
+/**
+ * `Fiber.yield()` will halt execution of the current fiber and return control
+ * back to original caller of run(). If an argument is supplied to yield(),
+ * run() will return that value.
+ *
+ * When run() is called again, yield() will return.
+ *
+ * Note that this function is a global to allow for correct garbage
+ * collection. This results in no loss of functionality because it is only
+ * valid to yield from the currently running fiber anyway.
+ *
+ * Note also that `yield` is a reserved word in Javascript. This is normally
+ * not an issue, however some code linters may complain. Rest assured that it
+ * will run fine now and in future versions of Javascript.
+ */
+Fiber.yield = function(param) {
+ [native code]
+}
+
+/**
+ * run() will start execution of this Fiber, or if it is currently yielding,
+ * it will resume execution. If an argument is supplied, this argument will
+ * be passed to the fiber, either as the first parameter to the main
+ * function [if the fiber has not been started] or as the return value of
+ * yield() [if the fiber is currently yielding].
+ *
+ * This function will return either the parameter passed to yield(), or the
+ * returned value from the fiber's main function.
+ */
+Fiber.prototype.run = function(param) {
+ [native code]
+}
+
+/**
+ * reset() will terminate a running Fiber and restore it to its original
+ * state, as if it had returned execution.
+ *
+ * This is accomplished by causing yield() to throw an exception, and any
+ * futher calls to yield() will also throw an exception. This continues
+ * until the fiber has completely unwound and returns.
+ *
+ * If the fiber returns a value it will be returned by reset().
+ *
+ * If the fiber is not running, reset() will have no effect.
+ */
+Fiber.prototype.reset = function() {
+ [native code]
+}
+
+/**
+ * throwInto() will cause a currently yielding fiber's yield() call to
+ * throw instead of return gracefully. This can be useful for notifying a
+ * fiber that you are no longer interested in its task, and that it should
+ * give up.
+ *
+ * Note that if the fiber does not handle the exception it will continue to
+ * bubble up and throwInto() will throw the exception right back at you.
+ */
+Fiber.prototype.throwInto = function(exception) {
+ [native code]
+}
+```
+
+
+Future's definition looks something like this:
+
+```javascript
+/**
+ * Returns a future-function which, when run, starts running the target
+ * function and returns a future for the result.
+ *
+ * Example usage:
+ * var funcy = function(arg) {
+ * return arg+1;
+ * }.future();
+ *
+ * funcy(1).wait(); // returns 2
+ */
+Function.prototype.future = function() { ... }
+
+/**
+ * Future object, instantiated with the new operator.
+ */
+function Future() {}
+
+/**
+ * Wrap a node-style async function to return a future in place of using a callback.
+ *
+ * fn - the function or object to wrap
+ * array - indicates that this callback will return more than 1 argument after `err`. For example,
+ * `child_process.exec()` returns [err, stdout, stderr]
+ * suffix - appends a string to every method that was overridden, if you passed an object
+ *
+ * Example usage: Future.wrap(asyncFunction)(arg1).wait()
+ */
+Future.wrap = function(fn, multi, suffix) { ... }
+
+/**
+ * Invoke a function that will be run in its own fiber context and return a future to its return
+ * value.
+ *
+ * Example:
+ * Future.task(function() {
+ * // You can safely `wait` on stuff here
+ * }).detach();
+ */
+Future.task = function(fn) { ... }
+
+/**
+ * Wait on a series of futures and then return. If the futures throw an exception this function
+ * /won't/ throw it back. You can get the value of the future by calling get() on it directly. If
+ * you want to wait on a single future you're better off calling future.wait() on the instance.
+ *
+ * Example usage: Future.wait(aFuture, anotherFuture)
+ */
+Future.wait = function(/* ... */) { ... }
+
+/**
+ * Return the value of this future. If the future hasn't resolved yet this will throw an error.
+ */
+Future.prototype.get = function() { ... }
+
+/**
+ * Mark this future as returned. All pending callbacks will be invoked immediately.
+ *
+ * value - the value to return when get() or wait() is called.
+ *
+ * Example usage: aFuture.return(value)
+ */
+Future.prototype.return = function(value) { ... }
+
+/**
+ * Throw from this future as returned. All pending callbacks will be invoked immediately.
+ * Note that execution will continue normally after running this method,
+ * so make sure you exit appropriately after running throw()
+ *
+ * error - the error to throw when get() or wait() is called.
+ *
+ * Example usage: aFuture.throw(new Error("Something borked"))
+ */
+Future.prototype.throw = function(error) { ... }
+
+/**
+ * "detach" this future. Basically this is useful if you want to run a task in a future, you
+ * aren't interested in its return value, but if it throws you don't want the exception to be
+ * lost. If this fiber throws, an exception will be thrown to the event loop and node will
+ * probably fall down.
+ */
+Future.prototype.detach = function() { ... }
+
+/**
+ * Returns whether or not this future has resolved yet.
+ */
+Future.prototype.isResolved = function() { ... }
+
+/**
+ * Returns a node-style function which will mark this future as resolved when called.
+ *
+ * Example usage:
+ * var errback = aFuture.resolver();
+ * asyncFunction(arg1, arg2, etc, errback)
+ * var result = aFuture.wait();
+ */
+Future.prototype.resolver = function() { ... }
+
+/**
+ * Waits for this future to resolve and then invokes a callback.
+ *
+ * If only one argument is passed it is a standard function(err, val){} errback.
+ *
+ * If two arguments are passed, the first argument is a future which will be thrown to in the case
+ * of error, and the second is a function(val){} callback.
+ */
+Future.prototype.resolve = function(/* errback or future, callback */) { ... }
+
+/**
+ * Propogate results to another future.
+ *
+ * Example usage: future1.proxy(future2) // future2 gets automatically resolved with however future1 resolves
+ */
+Future.prototype.proxy = function(future) { ... }
+
+/**
+ * Differs from its functional counterpart in that it actually resolves the future. Thus if the
+ * future threw, future.wait() will throw.
+ */
+Future.prototype.wait = function() { ... }
+
+/**
+ * Support for converting a Future to and from ES6 Promises.
+ */
+Future.fromPromise = function(promise) { ... }
+Future.prototype.promise = function() { ... }
+```
+
+GARBAGE COLLECTION
+------------------
+
+If you intend to build generators, iterators, or "lazy lists", you should be
+aware that all fibers must eventually unwind. This is implemented by causing
+yield() to throw unconditionally when the library is trying to unwind your
+fiber-- either because reset() was called, or all handles to the fiber were lost
+and v8 wants to delete it.
+
+Something like this will, at some point, cause an infinite loop in your
+application:
+
+```javascript
+var fiber = Fiber(function() {
+ while (true) {
+ try {
+ Fiber.yield();
+ } catch(e) {}
+ }
+});
+fiber.run();
+```
+
+If you either call reset() on this fiber, or the v8 garbage collector decides it
+is no longer in use, the fiber library will attempt to unwind the fiber by
+causing all calls to yield() to throw. However, if you catch these exceptions
+and continue anyway, an infinite loop will occur.
+
+There are other garbage collection issues that occur with misuse of fiber
+handles. If you grab a handle to a fiber from within itself, you should make
+sure that the fiber eventually unwinds. This application will leak memory:
+
+```javascript
+var fiber = Fiber(function() {
+ var that = Fiber.current;
+ Fiber.yield();
+}
+fiber.run();
+fiber = undefined;
+```
+
+There is no way to get back into the fiber that was started, however it's
+impossible for v8's garbage collector to detect this. With a handle to the fiber
+still outstanding, v8 will never garbage collect it and the stack will remain in
+memory until the application exits.
+
+Thus, you should take care when grabbing references to `Fiber.current`.
diff --git a/server/node_modules/fibers/bin/.npmignore b/server/node_modules/fibers/bin/.npmignore
new file mode 100755
index 0000000..e69de29
diff --git a/server/node_modules/fibers/bin/darwin-ia32-46/fibers.node b/server/node_modules/fibers/bin/darwin-ia32-46/fibers.node
new file mode 100755
index 0000000..d090ee2
Binary files /dev/null and b/server/node_modules/fibers/bin/darwin-ia32-46/fibers.node differ
diff --git a/server/node_modules/fibers/bin/darwin-ia32-48/fibers.node b/server/node_modules/fibers/bin/darwin-ia32-48/fibers.node
new file mode 100755
index 0000000..6fb5421
Binary files /dev/null and b/server/node_modules/fibers/bin/darwin-ia32-48/fibers.node differ
diff --git a/server/node_modules/fibers/bin/darwin-x64-46/fibers.node b/server/node_modules/fibers/bin/darwin-x64-46/fibers.node
new file mode 100755
index 0000000..996c0e3
Binary files /dev/null and b/server/node_modules/fibers/bin/darwin-x64-46/fibers.node differ
diff --git a/server/node_modules/fibers/bin/darwin-x64-48/fibers.node b/server/node_modules/fibers/bin/darwin-x64-48/fibers.node
new file mode 100755
index 0000000..1e9efe8
Binary files /dev/null and b/server/node_modules/fibers/bin/darwin-x64-48/fibers.node differ
diff --git a/server/node_modules/fibers/bin/linux-ia32-46/fibers.node b/server/node_modules/fibers/bin/linux-ia32-46/fibers.node
new file mode 100755
index 0000000..ccf209f
Binary files /dev/null and b/server/node_modules/fibers/bin/linux-ia32-46/fibers.node differ
diff --git a/server/node_modules/fibers/bin/linux-ia32-48/fibers.node b/server/node_modules/fibers/bin/linux-ia32-48/fibers.node
new file mode 100755
index 0000000..c48db3a
Binary files /dev/null and b/server/node_modules/fibers/bin/linux-ia32-48/fibers.node differ
diff --git a/server/node_modules/fibers/bin/linux-x64-46/fibers.node b/server/node_modules/fibers/bin/linux-x64-46/fibers.node
new file mode 100755
index 0000000..2c6f8fc
Binary files /dev/null and b/server/node_modules/fibers/bin/linux-x64-46/fibers.node differ
diff --git a/server/node_modules/fibers/bin/linux-x64-48/fibers.node b/server/node_modules/fibers/bin/linux-x64-48/fibers.node
new file mode 100755
index 0000000..20012d7
Binary files /dev/null and b/server/node_modules/fibers/bin/linux-x64-48/fibers.node differ
diff --git a/server/node_modules/fibers/bin/repl b/server/node_modules/fibers/bin/repl
new file mode 100755
index 0000000..f697396
--- /dev/null
+++ b/server/node_modules/fibers/bin/repl
@@ -0,0 +1,49 @@
+#!/usr/bin/env node
+"use strict";
+var fs = require('fs');
+global.Fiber = require('../fibers');
+global.Future = require('../future');
+
+// Start the repl
+var vm = require('vm');
+var domain = require('domain');
+var repl = require('repl').start('node> ', null, fiberEval, true, true);
+function fiberEval(code, context, file, cb) {
+ if (/^\([ \r\n\t+]\)$/.test(code)) {
+ return cb(false, undefined);
+ }
+ // Parses?
+ try {
+ new Function(code);
+ } catch (err) {
+ return cb(err, false);
+ }
+
+ // Run in fiber
+ Future.task(function() {
+ // Save history
+ var last;
+ repl.rli.history = repl.rli.history.slice(0, 50).filter(function(item) {
+ try {
+ return item !== last;
+ } finally {
+ last = item;
+ }
+ });
+ fs.writeFile(process.env.HOME+ '/.node-history', JSON.stringify(repl.rli.history), function(){});
+
+ // Run user code
+ var d = domain.create();
+ d.run(function() {
+ cb(null, vm.runInThisContext(code, file));
+ });
+ d.on('error', function(err) {
+ console.error('\nUnhandled error: '+ err.stack);
+ });
+ }).resolve(cb);
+}
+
+// Load history
+try {
+ repl.rli.history = JSON.parse(fs.readFileSync(process.env.HOME+ '/.node-history', 'utf-8'));
+} catch (err) {}
diff --git a/server/node_modules/fibers/bin/win32-ia32-46/fibers.node b/server/node_modules/fibers/bin/win32-ia32-46/fibers.node
new file mode 100755
index 0000000..1ced401
Binary files /dev/null and b/server/node_modules/fibers/bin/win32-ia32-46/fibers.node differ
diff --git a/server/node_modules/fibers/bin/win32-ia32-48/fibers.node b/server/node_modules/fibers/bin/win32-ia32-48/fibers.node
new file mode 100755
index 0000000..d545460
Binary files /dev/null and b/server/node_modules/fibers/bin/win32-ia32-48/fibers.node differ
diff --git a/server/node_modules/fibers/bin/win32-x64-46/fibers.node b/server/node_modules/fibers/bin/win32-x64-46/fibers.node
new file mode 100755
index 0000000..88ef387
Binary files /dev/null and b/server/node_modules/fibers/bin/win32-x64-46/fibers.node differ
diff --git a/server/node_modules/fibers/bin/win32-x64-48/fibers.node b/server/node_modules/fibers/bin/win32-x64-48/fibers.node
new file mode 100755
index 0000000..27747cf
Binary files /dev/null and b/server/node_modules/fibers/bin/win32-x64-48/fibers.node differ
diff --git a/server/node_modules/fibers/binding.gyp b/server/node_modules/fibers/binding.gyp
new file mode 100755
index 0000000..f25ceb0
--- /dev/null
+++ b/server/node_modules/fibers/binding.gyp
@@ -0,0 +1,67 @@
+{
+ 'target_defaults': {
+ 'default_configuration': 'Release',
+ 'configurations': {
+ 'Release': {
+ 'cflags': [ '-O3' ],
+ 'xcode_settings': {
+ 'GCC_OPTIMIZATION_LEVEL': '3',
+ 'GCC_GENERATE_DEBUGGING_SYMBOLS': 'NO',
+ },
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'Optimization': 3,
+ 'FavorSizeOrSpeed': 1,
+ },
+ },
+ }
+ },
+ },
+ 'targets': [
+ {
+ 'target_name': 'fibers',
+ 'sources': [
+ 'src/fibers.cc',
+ 'src/coroutine.cc',
+ 'src/libcoro/coro.c',
+ # Rebuild on header changes
+ 'src/coroutine.h',
+ 'src/libcoro/coro.h',
+ ],
+ 'cflags!': ['-ansi'],
+ 'conditions': [
+ ['OS == "win"',
+ {'defines': ['CORO_FIBER', 'WINDOWS']},
+ # else
+ {
+ 'defines': ['USE_CORO', 'CORO_GUARDPAGES=1'],
+ 'ldflags': ['-pthread'],
+ }
+ ],
+ ['OS == "linux"',
+ {
+ 'variables': {
+ 'USE_MUSL': '&1 | head -n1 | grep "musl" | wc -l)',
+ },
+ 'conditions': [
+ ['<(USE_MUSL) == 1',
+ {'defines': ['CORO_ASM', 'USE_V8_SYMBOLS']},
+ {'defines': ['CORO_UCONTEXT']}
+ ],
+ ],
+ },
+ ],
+ ['OS == "solaris" or OS == "sunos" or OS == "freebsd" or OS == "aix"', {'defines': ['CORO_UCONTEXT']}],
+ ['OS == "mac"', {'defines': ['CORO_SJLJ']}],
+ ['OS == "openbsd"', {'defines': ['CORO_ASM']}],
+ ['target_arch == "arm" or target_arch == "arm64"',
+ {
+ # There's been problems getting real fibers working on arm
+ 'defines': ['CORO_PTHREAD'],
+ 'defines!': ['CORO_UCONTEXT', 'CORO_SJLJ', 'CORO_ASM'],
+ },
+ ],
+ ],
+ },
+ ],
+}
diff --git a/server/node_modules/fibers/build.js b/server/node_modules/fibers/build.js
new file mode 100755
index 0000000..7ed9922
--- /dev/null
+++ b/server/node_modules/fibers/build.js
@@ -0,0 +1,108 @@
+#!/usr/bin/env node
+var cp = require('child_process'),
+ fs = require('fs'),
+ path = require('path');
+
+// Parse args
+var force = false, debug = false;
+var
+ arch = process.arch,
+ platform = process.platform;
+var args = process.argv.slice(2).filter(function(arg) {
+ if (arg === '-f') {
+ force = true;
+ return false;
+ } else if (arg.substring(0, 13) === '--target_arch') {
+ arch = arg.substring(14);
+ } else if (arg === '--debug') {
+ debug = true;
+ }
+ return true;
+});
+if (!debug) {
+ args.push('--release');
+}
+if (!{ia32: true, x64: true, arm: true, arm64: true, ppc: true, ppc64: true, s390: true, s390x: true}.hasOwnProperty(arch)) {
+ console.error('Unsupported (?) architecture: `'+ arch+ '`');
+ process.exit(1);
+}
+
+// Test for pre-built library
+var modPath = platform+ '-'+ arch+ '-'+ process.versions.modules;
+if (!force) {
+ try {
+ fs.statSync(path.join(__dirname, 'bin', modPath, 'fibers.node'));
+ console.log('`'+ modPath+ '` exists; testing');
+ cp.execFile(process.execPath, ['quick-test'], function(err, stdout, stderr) {
+ if (err || stdout !== 'pass' || stderr) {
+ console.log('Problem with the binary; manual build incoming');
+ build();
+ } else {
+ console.log('Binary is fine; exiting');
+ }
+ });
+ } catch (ex) {
+ // Stat failed
+ build();
+ }
+} else {
+ build();
+}
+
+// Build it
+function build() {
+ if (process.versions.electron) {
+ args.push('--target='+ process.versions.electron, '--dist-url=https://atom.io/download/atom-shell');
+ }
+ cp.spawn(
+ process.platform === 'win32' ? 'node-gyp.cmd' : 'node-gyp',
+ ['rebuild'].concat(args),
+ {stdio: [process.stdin, process.stdout, process.stderr]})
+ .on('exit', function(err) {
+ if (err) {
+ console.error(
+ 'node-gyp exited with code: '+ err+ '\n'+
+ 'Please make sure you are using a supported platform and node version. If you\n'+
+ 'would like to compile fibers on this machine please make sure you have setup your\n'+
+ 'build environment--\n'+
+ 'Windows + OS X instructions here: https://github.com/nodejs/node-gyp\n'+
+ 'Ubuntu users please run: `sudo apt-get install g++ build-essential`\n'+
+ 'Alpine users please run: `sudo apk add python make g++`'
+ );
+ return process.exit(err);
+ }
+ afterBuild();
+ })
+ .on('error', function(err) {
+ console.error(
+ 'node-gyp not found! Please ensure node-gyp is in your PATH--\n'+
+ 'Try running: `sudo npm install -g node-gyp`'
+ );
+ console.log(err.message);
+ process.exit(1);
+ });
+}
+
+// Move it to expected location
+function afterBuild() {
+ var targetPath = path.join(__dirname, 'build', debug ? 'Debug' : 'Release', 'fibers.node');
+ var installPath = path.join(__dirname, 'bin', modPath, 'fibers.node');
+
+ try {
+ fs.mkdirSync(path.join(__dirname, 'bin', modPath));
+ } catch (ex) {}
+
+ try {
+ fs.statSync(targetPath);
+ } catch (ex) {
+ console.error('Build succeeded but target not found');
+ process.exit(1);
+ }
+ fs.renameSync(targetPath, installPath);
+ console.log('Installed in `'+ installPath+ '`');
+ if (process.versions.electron) {
+ process.nextTick(function() {
+ require('electron').app.quit();
+ });
+ }
+}
diff --git a/server/node_modules/fibers/fibers.js b/server/node_modules/fibers/fibers.js
new file mode 100755
index 0000000..24da563
--- /dev/null
+++ b/server/node_modules/fibers/fibers.js
@@ -0,0 +1,24 @@
+if (process.fiberLib) {
+ return module.exports = process.fiberLib;
+}
+var fs = require('fs'), path = require('path');
+
+// Seed random numbers [gh-82]
+Math.random();
+
+// Look for binary for this platform
+var modPath = path.join(__dirname, 'bin', process.platform+ '-'+ process.arch+ '-'+ process.versions.modules, 'fibers');
+try {
+ fs.statSync(modPath+ '.node');
+} catch (ex) {
+ // No binary!
+ console.error(
+ '## There is an issue with `node-fibers` ##\n'+
+ '`'+ modPath+ '.node` is missing.\n\n'+
+ 'Try running this to fix the issue: '+ process.execPath+ ' '+ __dirname.replace(' ', '\\ ')+ '/build'
+ );
+ throw new Error('Missing binary. See message above.');
+}
+
+// Pull in fibers implementation
+process.fiberLib = module.exports = require(modPath).Fiber;
diff --git a/server/node_modules/fibers/future.js b/server/node_modules/fibers/future.js
new file mode 100755
index 0000000..48cf7dd
--- /dev/null
+++ b/server/node_modules/fibers/future.js
@@ -0,0 +1,475 @@
+"use strict";
+var Fiber = require('./fibers');
+var util = require('util');
+module.exports = Future;
+Function.prototype.future = function(detach) {
+ var fn = this;
+ var ret = function() {
+ var future = new FiberFuture(fn, this, arguments);
+ if (detach) {
+ future.detach();
+ }
+ return future;
+ };
+ ret.toString = function() {
+ return '<>';
+ };
+ return ret;
+};
+
+function Future() {}
+
+/**
+ * Run a function(s) in a future context, and return a future to their return value. This is useful
+ * for instances where you want a closure to be able to `.wait()`. This also lets you wait for
+ * mulitple parallel opertions to run.
+ */
+Future.task = function(fn) {
+ if (arguments.length === 1) {
+ return fn.future()();
+ } else {
+ var future = new Future, pending = arguments.length, error, values = new Array(arguments.length);
+ for (var ii = 0; ii < arguments.length; ++ii) {
+ arguments[ii].future()().resolve(function(ii, err, val) {
+ if (err) {
+ error = err;
+ }
+ values[ii] = val;
+ if (--pending === 0) {
+ if (error) {
+ future.throw(error);
+ } else {
+ future.return(values);
+ }
+ }
+ }.bind(null, ii));
+ }
+ return future;
+ }
+};
+
+/**
+ * Wrap node-style async functions to instead return futures. This assumes that the last parameter
+ * of the function is a callback.
+ *
+ * If a single function is passed a future-returning function is created. If an object is passed a
+ * new object is returned with all functions wrapped.
+ *
+ * The value that is returned from the invocation of the underlying function is assigned to the
+ * property `_` on the future. This is useful for functions like `execFile` which take a callback,
+ * but also return meaningful information.
+ *
+ * `multi` indicates that this callback will return more than 1 argument after `err`. For example,
+ * `child_process.exec()`
+ *
+ * `suffix` will append a string to every method that was overridden, if you pass an object to
+ * `Future.wrap()`. Default is 'Future'.
+ *
+ * var readFileFuture = Future.wrap(require('fs').readFile);
+ * var fs = Future.wrap(require('fs'));
+ * fs.readFileFuture('example.txt').wait();
+ */
+Future.wrap = function(fnOrObject, multi, suffix, stop) {
+ if (typeof fnOrObject === 'object') {
+ var wrapped = Object.create(fnOrObject);
+ for (var ii in fnOrObject) {
+ if (wrapped[ii] instanceof Function) {
+ wrapped[suffix === undefined ? ii+ 'Future' : ii+ suffix] = Future.wrap(wrapped[ii], multi, suffix, stop);
+ }
+ }
+ return wrapped;
+ } else if (typeof fnOrObject === 'function') {
+ var fn = function() {
+ var future = new Future;
+ var args = Array.prototype.slice.call(arguments);
+ if (multi) {
+ var cb = future.resolver();
+ args.push(function(err) {
+ cb(err, Array.prototype.slice.call(arguments, 1));
+ });
+ } else {
+ args.push(future.resolver());
+ }
+ future._ = fnOrObject.apply(this, args);
+ return future;
+ }
+ // Modules like `request` return a function that has more functions as properties. Handle this
+ // in some kind of reasonable way.
+ if (!stop) {
+ var proto = Object.create(fnOrObject);
+ for (var ii in fnOrObject) {
+ if (fnOrObject.hasOwnProperty(ii) && fnOrObject[ii] instanceof Function) {
+ proto[ii] = proto[ii];
+ }
+ }
+ fn.__proto__ = Future.wrap(proto, multi, suffix, true);
+ }
+ return fn;
+ }
+};
+
+/**
+ * Wait on a series of futures and then return. If the futures throw an exception this function
+ * /won't/ throw it back. You can get the value of the future by calling get() on it directly. If
+ * you want to wait on a single future you're better off calling future.wait() on the instance.
+ */
+Future.wait = function wait(/* ... */) {
+
+ // Normalize arguments + pull out a FiberFuture for reuse if possible
+ var futures = [], singleFiberFuture;
+ for (var ii = 0; ii < arguments.length; ++ii) {
+ var arg = arguments[ii];
+ if (arg instanceof Future) {
+ // Ignore already resolved fibers
+ if (arg.isResolved()) {
+ continue;
+ }
+ // Look for fiber reuse
+ if (!singleFiberFuture && arg instanceof FiberFuture && !arg.started) {
+ singleFiberFuture = arg;
+ continue;
+ }
+ futures.push(arg);
+ } else if (arg instanceof Array) {
+ for (var jj = 0; jj < arg.length; ++jj) {
+ var aarg = arg[jj];
+ if (aarg instanceof Future) {
+ // Ignore already resolved fibers
+ if (aarg.isResolved()) {
+ continue;
+ }
+ // Look for fiber reuse
+ if (!singleFiberFuture && aarg instanceof FiberFuture && !aarg.started) {
+ singleFiberFuture = aarg;
+ continue;
+ }
+ futures.push(aarg);
+ } else {
+ throw new Error(aarg+ ' is not a future');
+ }
+ }
+ } else {
+ throw new Error(arg+ ' is not a future');
+ }
+ }
+
+ // Resumes current fiber
+ var fiber = Fiber.current;
+ if (!fiber) {
+ throw new Error('Can\'t wait without a fiber');
+ }
+
+ // Resolve all futures
+ var pending = futures.length + (singleFiberFuture ? 1 : 0);
+ function cb() {
+ if (!--pending) {
+ fiber.run();
+ }
+ }
+ for (var ii = 0; ii < futures.length; ++ii) {
+ futures[ii].resolve(cb);
+ }
+
+ // Reusing a fiber?
+ if (singleFiberFuture) {
+ singleFiberFuture.started = true;
+ try {
+ singleFiberFuture.return(
+ singleFiberFuture.fn.apply(singleFiberFuture.context, singleFiberFuture.args));
+ } catch(e) {
+ singleFiberFuture.throw(e);
+ }
+ --pending;
+ }
+
+ // Yield this fiber
+ if (pending) {
+ Fiber.yield();
+ }
+};
+
+/**
+ * Return a Future that waits on an ES6 Promise.
+ */
+Future.fromPromise = function(promise) {
+ var future = new Future;
+ promise.then(function(val) {
+ future.return(val);
+ }, function(err) {
+ future.throw(err);
+ });
+ return future;
+};
+
+Future.prototype = {
+ /**
+ * Return the value of this future. If the future hasn't resolved yet this will throw an error.
+ */
+ get: function() {
+ if (!this.resolved) {
+ throw new Error('Future must resolve before value is ready');
+ } else if (this.error) {
+ // Link the stack traces up
+ var error = this.error;
+ var localStack = {};
+ Error.captureStackTrace(localStack, Future.prototype.get);
+ var futureStack = Object.getOwnPropertyDescriptor(error, 'futureStack');
+ if (!futureStack) {
+ futureStack = Object.getOwnPropertyDescriptor(error, 'stack');
+ if (futureStack) {
+ Object.defineProperty(error, 'futureStack', futureStack);
+ }
+ }
+ if (futureStack && futureStack.get) {
+ Object.defineProperty(error, 'stack', {
+ get: function() {
+ var stack = futureStack.get.apply(error);
+ if (stack) {
+ stack = stack.split('\n');
+ return [stack[0]]
+ .concat(localStack.stack.split('\n').slice(1))
+ .concat(' - - - - -')
+ .concat(stack.slice(1))
+ .join('\n');
+ } else {
+ return localStack.stack;
+ }
+ },
+ set: function(stack) {
+ Object.defineProperty(error, 'stack', {
+ value: stack,
+ configurable: true,
+ enumerable: false,
+ writable: true,
+ });
+ },
+ configurable: true,
+ enumerable: false,
+ });
+ }
+ throw error;
+ } else {
+ return this.value;
+ }
+ },
+
+ /**
+ * Mark this future as returned. All pending callbacks will be invoked immediately.
+ */
+ "return": function(value) {
+ if (this.resolved) {
+ throw new Error('Future resolved more than once');
+ }
+ this.value = value;
+ this.resolved = true;
+
+ var callbacks = this.callbacks;
+ if (callbacks) {
+ delete this.callbacks;
+ for (var ii = 0; ii < callbacks.length; ++ii) {
+ try {
+ var ref = callbacks[ii];
+ if (ref[1]) {
+ ref[1](value);
+ } else {
+ ref[0](undefined, value);
+ }
+ } catch(ex) {
+ // console.log('Resolve cb threw', String(ex.stack || ex.message || ex));
+ process.nextTick(function() {
+ throw(ex);
+ });
+ }
+ }
+ }
+ },
+
+ /**
+ * Throw from this future as returned. All pending callbacks will be invoked immediately.
+ */
+ "throw": function(error) {
+ if (this.resolved) {
+ throw new Error('Future resolved more than once');
+ } else if (!error) {
+ throw new Error('Must throw non-empty error');
+ }
+ this.error = error;
+ this.resolved = true;
+
+ var callbacks = this.callbacks;
+ if (callbacks) {
+ delete this.callbacks;
+ for (var ii = 0; ii < callbacks.length; ++ii) {
+ try {
+ var ref = callbacks[ii];
+ if (ref[1]) {
+ ref[0].throw(error);
+ } else {
+ ref[0](error);
+ }
+ } catch(ex) {
+ // console.log('Resolve cb threw', String(ex.stack || ex.message || ex));
+ process.nextTick(function() {
+ throw(ex);
+ });
+ }
+ }
+ }
+ },
+
+ /**
+ * "detach" this future. Basically this is useful if you want to run a task in a future, you
+ * aren't interested in its return value, but if it throws you don't want the exception to be
+ * lost. If this fiber throws, an exception will be thrown to the event loop and node will
+ * probably fall down.
+ */
+ detach: function() {
+ this.resolve(function(err) {
+ if (err) {
+ throw err;
+ }
+ });
+ },
+
+ /**
+ * Returns whether or not this future has resolved yet.
+ */
+ isResolved: function() {
+ return this.resolved === true;
+ },
+
+ /**
+ * Returns a node-style function which will mark this future as resolved when called.
+ */
+ resolver: function() {
+ return function(err, val) {
+ if (err) {
+ this.throw(err);
+ } else {
+ this.return(val);
+ }
+ }.bind(this);
+ },
+
+ /**
+ * Waits for this future to resolve and then invokes a callback.
+ *
+ * If two arguments are passed, the first argument is a future which will be thrown to in the case
+ * of error, and the second is a function(val){} callback.
+ *
+ * If only one argument is passed it is a standard function(err, val){} callback.
+ */
+ resolve: function(arg1, arg2) {
+ if (this.resolved) {
+ if (arg2) {
+ if (this.error) {
+ arg1.throw(this.error);
+ } else {
+ arg2(this.value);
+ }
+ } else {
+ arg1(this.error, this.value);
+ }
+ } else {
+ (this.callbacks = this.callbacks || []).push([arg1, arg2]);
+ }
+ return this;
+ },
+
+ /**
+ * Resolve only in the case of success
+ */
+ resolveSuccess: function(cb) {
+ this.resolve(function(err, val) {
+ if (err) {
+ return;
+ }
+ cb(val);
+ });
+ return this;
+ },
+
+ /**
+ * Propogate results to another future.
+ */
+ proxy: function(future) {
+ this.resolve(function(err, val) {
+ if (err) {
+ future.throw(err);
+ } else {
+ future.return(val);
+ }
+ });
+ },
+
+ /**
+ * Propogate only errors to an another future or array of futures.
+ */
+ proxyErrors: function(futures) {
+ this.resolve(function(err) {
+ if (!err) {
+ return;
+ }
+ if (futures instanceof Array) {
+ for (var ii = 0; ii < futures.length; ++ii) {
+ futures[ii].throw(err);
+ }
+ } else {
+ futures.throw(err);
+ }
+ });
+ return this;
+ },
+
+ /**
+ * Returns an ES6 Promise
+ */
+ promise: function() {
+ var that = this;
+ return new Promise(function(resolve, reject) {
+ that.resolve(function(err, val) {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(val);
+ }
+ });
+ });
+ },
+
+ /**
+ * Differs from its functional counterpart in that it actually resolves the future. Thus if the
+ * future threw, future.wait() will throw.
+ */
+ wait: function() {
+ if (this.isResolved()) {
+ return this.get();
+ }
+ Future.wait(this);
+ return this.get();
+ },
+};
+
+/**
+ * A function call which loads inside a fiber automatically and returns a future.
+ */
+function FiberFuture(fn, context, args) {
+ this.fn = fn;
+ this.context = context;
+ this.args = args;
+ this.started = false;
+ var that = this;
+ process.nextTick(function() {
+ if (!that.started) {
+ that.started = true;
+ Fiber(function() {
+ try {
+ that.return(fn.apply(context, args));
+ } catch(e) {
+ that.throw(e);
+ }
+ }).run();
+ }
+ });
+}
+util.inherits(FiberFuture, Future);
diff --git a/server/node_modules/fibers/package.json b/server/node_modules/fibers/package.json
new file mode 100755
index 0000000..aec4c34
--- /dev/null
+++ b/server/node_modules/fibers/package.json
@@ -0,0 +1,100 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "fibers",
+ "scope": null,
+ "escapedName": "fibers",
+ "name": "fibers",
+ "rawSpec": "",
+ "spec": "latest",
+ "type": "tag"
+ },
+ "F:\\QQPCmgr\\Desktop\\server"
+ ]
+ ],
+ "_from": "fibers@latest",
+ "_id": "fibers@1.0.15",
+ "_inCache": true,
+ "_location": "/fibers",
+ "_nodeVersion": "6.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/fibers-1.0.15.tgz_1475775502850_0.722931124502793"
+ },
+ "_npmUser": {
+ "name": "laverdet",
+ "email": "marcel.npm@laverdet.com"
+ },
+ "_npmVersion": "3.10.3",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "fibers",
+ "scope": null,
+ "escapedName": "fibers",
+ "name": "fibers",
+ "rawSpec": "",
+ "spec": "latest",
+ "type": "tag"
+ },
+ "_requiredBy": [
+ "#USER"
+ ],
+ "_resolved": "https://registry.npmjs.org/fibers/-/fibers-1.0.15.tgz",
+ "_shasum": "22f039c8f18b856190fbbe4decf056154c1eae9c",
+ "_shrinkwrap": null,
+ "_spec": "fibers",
+ "_where": "F:\\QQPCmgr\\Desktop\\server",
+ "author": {
+ "name": "Marcel Laverdet",
+ "email": "marcel@laverdet.com",
+ "url": "https://github.com/laverdet/"
+ },
+ "bugs": {
+ "url": "https://github.com/laverdet/node-fibers/issues"
+ },
+ "dependencies": {},
+ "description": "Cooperative multi-tasking for Javascript",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "22f039c8f18b856190fbbe4decf056154c1eae9c",
+ "tarball": "https://registry.npmjs.org/fibers/-/fibers-1.0.15.tgz"
+ },
+ "engines": {
+ "node": ">=0.5.2"
+ },
+ "gitHead": "8d7e4ffeb5151ade2ef32455080fbb2ffc226e13",
+ "homepage": "https://github.com/laverdet/node-fibers",
+ "keywords": [
+ "fiber",
+ "fibers",
+ "coroutine",
+ "thread",
+ "async",
+ "parallel",
+ "worker",
+ "future",
+ "promise"
+ ],
+ "license": "MIT",
+ "main": "fibers",
+ "maintainers": [
+ {
+ "name": "laverdet",
+ "email": "marcel.npm@laverdet.com"
+ }
+ ],
+ "name": "fibers",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/laverdet/node-fibers.git"
+ },
+ "scripts": {
+ "install": "node build.js || nodejs build.js",
+ "test": "node test.js || nodejs test.js"
+ },
+ "version": "1.0.15"
+}
diff --git a/server/node_modules/fibers/quick-test.js b/server/node_modules/fibers/quick-test.js
new file mode 100755
index 0000000..39c8bfc
--- /dev/null
+++ b/server/node_modules/fibers/quick-test.js
@@ -0,0 +1,7 @@
+"use strict"
+var Fiber = require('./fibers');
+var fiber = Fiber(function() {
+ process.stdout.write(Fiber.yield());
+});
+fiber.run();
+fiber.run('pass');
diff --git a/server/node_modules/fibers/src/coroutine.cc b/server/node_modules/fibers/src/coroutine.cc
new file mode 100755
index 0000000..5f5b568
--- /dev/null
+++ b/server/node_modules/fibers/src/coroutine.cc
@@ -0,0 +1,312 @@
+#include "coroutine.h"
+#include "v8-version.h"
+#include
+#ifndef WINDOWS
+#include
+#else
+#include
+#include
+// Stub pthreads into Windows approximations
+#define pthread_t HANDLE
+#define pthread_create(thread, attr, fn, arg) !((*thread)=CreateThread(NULL, 0, &(fn), arg, 0, NULL))
+#define pthread_join(thread, arg) WaitForSingleObject((thread), INFINITE)
+#define pthread_key_t DWORD
+#define pthread_key_create(key, dtor) (*key)=TlsAlloc()
+#define pthread_setspecific(key, val) TlsSetValue((key), (val))
+#define pthread_getspecific(key) TlsGetValue((key))
+#endif
+
+#include
+#include
+#include
+using namespace std;
+
+const size_t v8_tls_keys = 3;
+static std::vector fls_data_pool;
+static pthread_key_t coro_thread_key = 0;
+static pthread_key_t isolate_key = 0x7777;
+static pthread_key_t thread_id_key = 0x7777;
+static pthread_key_t thread_data_key = 0x7777;
+
+static size_t stack_size = 0;
+static size_t coroutines_created_ = 0;
+static vector fiber_pool;
+static Coroutine* delete_me = NULL;
+size_t Coroutine::pool_size = 120;
+
+static bool can_poke(void* addr) {
+#ifdef WINDOWS
+ MEMORY_BASIC_INFORMATION mbi;
+ if (!VirtualQueryEx(GetCurrentProcess(), addr, &mbi, sizeof(mbi))) {
+ return false;
+ }
+ if (!(mbi.State & MEM_COMMIT)) {
+ return false;
+ }
+ return true;
+#else
+ // TODO: Check pointer on other OS's? Windows is the only case I've seen so far that has
+ // spooky gaps in the TLS key space
+ return true;
+#endif
+}
+
+#ifdef USE_V8_SYMBOLS
+// Some distributions of node, most notably Ubuntu, strip the v8 internal symbols and so we don't
+// have access to this stuff. In most cases we will use the more complicated `find_thread_id_key`
+// below, since it tends to work on more platforms.
+namespace v8 {
+ namespace base {
+ class Thread {
+ public: typedef int32_t LocalStorageKey;
+ };
+ }
+
+ namespace internal {
+ class Isolate {
+ public:
+ static base::Thread::LocalStorageKey isolate_key_;
+ static base::Thread::LocalStorageKey per_isolate_thread_data_key_;
+ static base::Thread::LocalStorageKey thread_id_key_;
+ };
+ }
+}
+#endif
+
+#ifndef WINDOWS
+static void* find_thread_id_key(void* arg)
+#else
+static DWORD __stdcall find_thread_id_key(LPVOID arg)
+#endif
+{
+ v8::Isolate* isolate = static_cast(arg);
+ assert(isolate != NULL);
+ v8::Locker locker(isolate);
+ isolate->Enter();
+
+ // First pass-- find isolate thread key
+ for (pthread_key_t ii = coro_thread_key; ii > 0; --ii) {
+ void* tls = pthread_getspecific(ii - 1);
+ if (tls == isolate) {
+ isolate_key = ii - 1;
+ break;
+ }
+ }
+ assert(isolate_key != 0x7777);
+
+ // Second pass-- find data key
+ int thread_id = 0;
+ for (pthread_key_t ii = isolate_key + 2; ii < coro_thread_key; ++ii) {
+ void* tls = pthread_getspecific(ii);
+ if (can_poke(tls) && *(void**)tls == isolate) {
+ // First member of per-thread data is the isolate
+ thread_data_key = ii;
+ // Second member is the thread id
+ thread_id = *(int*)((void**)tls + 1);
+ break;
+ }
+ }
+ assert(thread_data_key != 0x7777);
+
+ // Third pass-- find thread id key
+ for (pthread_key_t ii = isolate_key + 1; ii < thread_data_key; ++ii) {
+ int tls = static_cast(reinterpret_cast(pthread_getspecific(ii)));
+ if (tls == thread_id) {
+ thread_id_key = ii;
+ break;
+ }
+ }
+ assert(thread_id_key != 0x7777);
+
+ isolate->Exit();
+ return NULL;
+}
+
+/**
+ * Coroutine class definition
+ */
+void Coroutine::init(v8::Isolate* isolate) {
+ v8::Unlocker unlocker(isolate);
+ pthread_key_create(&coro_thread_key, NULL);
+ pthread_setspecific(coro_thread_key, ¤t());
+#ifdef USE_V8_SYMBOLS
+ isolate_key = v8::internal::Isolate::isolate_key_;
+ thread_data_key = v8::internal::Isolate::per_isolate_thread_data_key_;
+ thread_id_key = v8::internal::Isolate::thread_id_key_;
+#else
+ pthread_t thread;
+ pthread_create(&thread, NULL, find_thread_id_key, isolate);
+ pthread_join(thread, NULL);
+#endif
+}
+
+Coroutine& Coroutine::current() {
+ Coroutine* current = static_cast(pthread_getspecific(coro_thread_key));
+ if (!current) {
+ current = new Coroutine;
+ pthread_setspecific(coro_thread_key, current);
+ }
+ return *current;
+}
+
+void Coroutine::set_stack_size(unsigned int size) {
+ assert(!stack_size);
+ stack_size = size;
+}
+
+size_t Coroutine::coroutines_created() {
+ return coroutines_created_;
+}
+
+void Coroutine::trampoline(void* that) {
+#ifdef CORO_PTHREAD
+ pthread_setspecific(coro_thread_key, that);
+#endif
+#ifdef CORO_FIBER
+ // I can't figure out how to get the precise base of the stack in Windows. Since CreateFiber
+ // creates the stack automatically we don't have access to the base. We can however grab the
+ // current esp position, and use that as an approximation. Padding is added for safety since the
+ // base is slightly different.
+ static_cast(that)->stack_base = (size_t*)_AddressOfReturnAddress() - stack_size + 16;
+#endif
+ if (!fls_data_pool.empty()) {
+ pthread_setspecific(thread_data_key, fls_data_pool.back());
+ pthread_setspecific(thread_id_key, fls_data_pool.at(fls_data_pool.size() - 2));
+ pthread_setspecific(isolate_key, fls_data_pool.at(fls_data_pool.size() - 3));
+ fls_data_pool.resize(fls_data_pool.size() - 3);
+ }
+ while (true) {
+ static_cast(that)->entry(const_cast(static_cast(that)->arg));
+ }
+}
+
+Coroutine::Coroutine() :
+ fls_data(v8_tls_keys),
+ entry(NULL),
+ arg(NULL) {
+ stack.sptr = NULL;
+ coro_create(&context, NULL, NULL, NULL, 0);
+}
+
+Coroutine::Coroutine(entry_t& entry, void* arg) :
+ fls_data(v8_tls_keys),
+ entry(entry),
+ arg(arg) {
+}
+
+Coroutine::~Coroutine() {
+ if (stack.sptr) {
+ coro_stack_free(&stack);
+ }
+#ifdef CORO_FIBER
+ if (context.fiber)
+#endif
+ (void)coro_destroy(&context);
+}
+
+Coroutine* Coroutine::create_fiber(entry_t* entry, void* arg) {
+ if (!fiber_pool.empty()) {
+ Coroutine* fiber = fiber_pool.back();
+ fiber_pool.pop_back();
+ fiber->reset(entry, arg);
+ return fiber;
+ }
+ Coroutine* coro = new Coroutine(*entry, arg);
+ if (!coro_stack_alloc(&coro->stack, stack_size)) {
+ delete coro;
+ return NULL;
+ }
+ coro_create(&coro->context, trampoline, coro, coro->stack.sptr, coro->stack.ssze);
+#ifdef CORO_FIBER
+ // Stupid hack. libcoro's project structure combined with Windows's CreateFiber functions makes
+ // it difficult to catch this error. Sometimes Windows will return `ERROR_NOT_ENOUGH_MEMORY` or
+ // `ERROR_COMMITMENT_LIMIT` if it can't make any more fibers. However, `coro_stack_alloc` returns
+ // success unconditionally on Windows so we have to detect the error here, after the call to
+ // `coro_create`.
+ if (!coro->context.fiber) {
+ delete coro;
+ return NULL;
+ }
+#endif
+ ++coroutines_created_;
+ return coro;
+}
+
+void Coroutine::reset(entry_t* entry, void* arg) {
+ assert(entry != NULL);
+ this->entry = entry;
+ this->arg = arg;
+}
+
+void Coroutine::transfer(Coroutine& next) {
+ assert(this != &next);
+#ifndef CORO_PTHREAD
+ fls_data[0] = pthread_getspecific(isolate_key);
+ fls_data[1] = pthread_getspecific(thread_id_key);
+ fls_data[2] = pthread_getspecific(thread_data_key);
+
+ pthread_setspecific(isolate_key, next.fls_data[0]);
+ pthread_setspecific(thread_id_key, next.fls_data[1]);
+ pthread_setspecific(thread_data_key, next.fls_data[2]);
+
+ pthread_setspecific(coro_thread_key, &next);
+#endif
+ coro_transfer(&context, &next.context);
+#ifndef CORO_PTHREAD
+ pthread_setspecific(coro_thread_key, this);
+#endif
+}
+
+void Coroutine::run() {
+ Coroutine& current = Coroutine::current();
+ assert(!delete_me);
+ assert(¤t != this);
+ current.transfer(*this);
+
+ if (delete_me) {
+ // This means finish() was called on the coroutine and the pool was full so this coroutine needs
+ // to be deleted. We can't delete from inside finish(), because that would deallocate the
+ // current stack. However we CAN delete here, we just have to be very careful.
+ assert(delete_me == this);
+ assert(¤t != this);
+ delete_me = NULL;
+ delete this;
+ }
+}
+
+void Coroutine::finish(Coroutine& next, v8::Isolate* isolate) {
+ {
+ assert(&next != this);
+ assert(¤t() == this);
+ if (fiber_pool.size() < pool_size) {
+ fiber_pool.push_back(this);
+ } else {
+#if V8_MAJOR_VERSION > 4 || (V8_MAJOR_VERSION == 4 && V8_MINOR_VERSION >= 10)
+ // Clean up isolate data
+ isolate->DiscardThreadSpecificMetadata();
+#else
+ // If not supported, then we can mitigate v8's leakage by saving these thread locals.
+ fls_data_pool.reserve(fls_data_pool.size() + 3);
+ fls_data_pool.push_back(pthread_getspecific(isolate_key));
+ fls_data_pool.push_back(pthread_getspecific(thread_id_key));
+ fls_data_pool.push_back(pthread_getspecific(thread_data_key));
+#endif
+ // Can't delete right now because we're currently on this stack!
+ assert(delete_me == NULL);
+ delete_me = this;
+ }
+ }
+ this->transfer(next);
+}
+
+void* Coroutine::bottom() const {
+#ifdef CORO_FIBER
+ return stack_base;
+#else
+ return stack.sptr;
+#endif
+}
+
+size_t Coroutine::size() const {
+ return sizeof(Coroutine) + stack_size * sizeof(void*);
+}
diff --git a/server/node_modules/fibers/src/coroutine.h b/server/node_modules/fibers/src/coroutine.h
new file mode 100755
index 0000000..bc25ed5
--- /dev/null
+++ b/server/node_modules/fibers/src/coroutine.h
@@ -0,0 +1,95 @@
+#include
+#include
+#include
+#include "libcoro/coro.h"
+
+class Coroutine {
+ public:
+ typedef void(entry_t)(void*);
+
+ private:
+#ifdef CORO_FIBER
+ void* stack_base;
+#endif
+ coro_context context;
+ coro_stack stack;
+ std::vector fls_data;
+ entry_t* entry;
+ void* arg;
+
+ ~Coroutine();
+
+ /**
+ * Constructor for currently running "fiber". This is really just original thread, but we
+ * need a way to get back into the main thread after yielding to a fiber. Basically this
+ * shouldn't be called from anywhere.
+ */
+ Coroutine();
+
+ /**
+ * This constructor will actually create a new fiber context. Execution does not begin
+ * until you call run() for the first time.
+ */
+ Coroutine(entry_t& entry, void* arg);
+
+ /**
+ * Resets the context of this coroutine from the start. Used to recyle old coroutines.
+ */
+ void reset(entry_t* entry, void* arg);
+
+ static void trampoline(void* that);
+ void transfer(Coroutine& next);
+
+ public:
+ static size_t pool_size;
+
+ /**
+ * Returns the currently-running fiber.
+ */
+ static Coroutine& current();
+
+ /**
+ * Create a new fiber.
+ */
+ static Coroutine* create_fiber(entry_t* entry, void* arg = NULL);
+
+ /**
+ * Initialize the library.
+ */
+ static void init(v8::Isolate* isolate);
+
+ /**
+ * Set the size of coroutines created by this library. Since coroutines are pooled the stack
+ * size is global instead of per-coroutine. Stack is measured in sizeof(void*), so
+ * set_stack_size(128) -> 512 bytes or 1kb
+ */
+ static void set_stack_size(unsigned int size);
+
+ /**
+ * Get the number of coroutines that have been created.
+ */
+ static size_t coroutines_created();
+
+ /**
+ * Start or resume execution in this fiber. Note there is no explicit yield() function,
+ * you must manually run another fiber.
+ */
+ void run();
+
+ /**
+ * Finish this coroutine.. This will halt execution of this coroutine and resume execution
+ * of `next`. If you do not call this function, and instead just return from `entry` the
+ * application will exit. This function may or may not actually return.
+ */
+ void finish(Coroutine& next, v8::Isolate* isolate);
+
+ /**
+ * Returns address of the lowest usable byte in this Coroutine's stack.
+ */
+ void* bottom() const;
+
+ /**
+ * Returns the size this Coroutine takes up in the heap.
+ */
+ size_t size() const;
+};
diff --git a/server/node_modules/fibers/src/fibers.cc b/server/node_modules/fibers/src/fibers.cc
new file mode 100755
index 0000000..95bb1ea
--- /dev/null
+++ b/server/node_modules/fibers/src/fibers.cc
@@ -0,0 +1,829 @@
+#include "coroutine.h"
+#include "v8-version.h"
+#include
+#include
+#include
+
+#include
+#include
+
+#define THROW(x, m) return uni::Return(uni::ThrowException(Isolate::GetCurrent(), x(uni::NewLatin1String(Isolate::GetCurrent(), m))), args)
+
+// Run GC more often when debugging
+#ifdef DEBUG
+#define GC_ADJUST 100
+#else
+#define GC_ADJUST 1
+#endif
+
+using namespace std;
+using namespace v8;
+
+// Handle legacy V8 API
+namespace uni {
+#if V8_MAJOR_VERSION > 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION >= 2)
+ // Actually 5.2.244
+ template
+ void WeakCallbackShim(const WeakCallbackInfo& data) {
+ F(data.GetParameter());
+ }
+
+ template
+ void MakeWeak(Isolate* isolate, Persistent& handle, P* val) {
+ handle.SetWeak(val, WeakCallbackShim, WeakCallbackType::kFinalizer);
+ }
+#elif V8_MAJOR_VERSION > 3 || (V8_MAJOR_VERSION == 3 && V8_MINOR_VERSION >= 26)
+ template
+ void WeakCallbackShim(const v8::WeakCallbackData& data) {
+ F(data.GetParameter());
+ }
+
+ template
+ void MakeWeak(Isolate* isolate, Persistent& handle, P* val) {
+ handle.SetWeak(val, WeakCallbackShim);
+ }
+#else
+ template
+ void WeakCallbackShim(Persistent value, void* data) {
+ F(data);
+ }
+ template
+ void MakeWeak(Isolate* isolate, Persistent& handle, P* val) {
+ handle.MakeWeak(val, WeakCallbackShim);
+ }
+#endif
+
+
+#if V8_MAJOR_VERSION > 3 || (V8_MAJOR_VERSION == 3 && V8_MINOR_VERSION >= 26)
+ // Node v0.11.13+
+ typedef PropertyCallbackInfo GetterCallbackInfo;
+ typedef PropertyCallbackInfo SetterCallbackInfo;
+ typedef void FunctionType;
+ typedef FunctionCallbackInfo Arguments;
+
+ class HandleScope {
+ v8::HandleScope scope;
+ public: HandleScope(Isolate* isolate) : scope(isolate) {}
+ };
+
+ template
+ void Reset(Isolate* isolate, Persistent& persistent, Handle handle) {
+ persistent.Reset(isolate, handle);
+ }
+ template
+ void Dispose(Isolate* isolate, Persistent& handle) {
+ handle.Reset();
+ }
+ template
+ void ClearWeak(Isolate* isolate, Persistent& handle) {
+ handle.ClearWeak(isolate);
+ }
+
+ template
+ void SetInternalPointer(Handle handle, int index, void* val) {
+ handle->SetAlignedPointerInInternalField(index, val);
+ }
+ template
+ void* GetInternalPointer(Handle handle, int index) {
+ return handle->GetAlignedPointerFromInternalField(index);
+ }
+
+ template
+ Handle Deref(Isolate* isolate, Persistent& handle) {
+ return Local::New(isolate, handle);
+ }
+
+ template
+ void Return(Handle handle, const Arguments& args) {
+ args.GetReturnValue().Set(handle);
+ }
+ template
+ void Return(Handle handle, GetterCallbackInfo info) {
+ info.GetReturnValue().Set(handle);
+ }
+ template
+ void Return(Persistent& handle, GetterCallbackInfo info) {
+ info.GetReturnValue().Set(handle);
+ }
+
+ Handle ThrowException(Isolate* isolate, Handle exception) {
+ return isolate->ThrowException(exception);
+ }
+
+ Handle GetCurrentContext(Isolate* isolate) {
+ return isolate->GetCurrentContext();
+ }
+
+ Handle Undefined(Isolate* isolate) {
+ return v8::Undefined(isolate);
+ }
+
+ Handle NewLatin1String(Isolate* isolate, const char* string) {
+ return String::NewFromOneByte(isolate, (const uint8_t*)string);
+ }
+
+ Handle NewLatin1Symbol(Isolate* isolate, const char* string) {
+ return String::NewFromOneByte(isolate, (const uint8_t*)string);
+ }
+
+ Handle NewBoolean(Isolate* isolate, bool value) {
+ return Boolean::New(isolate, value);
+ }
+
+ Handle NewNumber(Isolate* isolate, double value) {
+ return Number::New(isolate, value);
+ }
+
+ Handle NewFunctionTemplate(
+ Isolate* isolate,
+ FunctionCallback callback,
+ Handle data = Handle(),
+ Handle signature = Handle(),
+ int length = 0
+ ) {
+ return FunctionTemplate::New(isolate, callback, data, signature, length);
+ }
+
+ Handle NewSignature(
+ Isolate* isolate,
+ Handle receiver = Handle()
+ ) {
+ return Signature::New(isolate, receiver);
+ }
+
+ class ReverseIsolateScope {
+ Isolate* isolate;
+ public:
+ explicit inline ReverseIsolateScope(Isolate* isolate) : isolate(isolate) {
+ isolate->Exit();
+ }
+ inline ~ReverseIsolateScope() {
+ isolate->Enter();
+ }
+ };
+
+ void AdjustAmountOfExternalAllocatedMemory(Isolate* isolate, int64_t change_in_bytes) {
+ isolate->AdjustAmountOfExternalAllocatedMemory(change_in_bytes);
+ }
+#else
+ // Node v0.10.x and lower
+ typedef AccessorInfo GetterCallbackInfo;
+ typedef AccessorInfo SetterCallbackInfo;
+ typedef Handle FunctionType;
+ typedef Arguments Arguments;
+
+ class HandleScope {
+ v8::HandleScope scope;
+ public: HandleScope(Isolate* isolate) {}
+ };
+
+ template
+ void Reset(Isolate* isolate, Persistent& persistent, Handle handle) {
+ persistent = Persistent::New(handle);
+ }
+ template
+ void Dispose(Isolate* isolate, Persistent& handle) {
+ handle.Dispose();
+ }
+
+ template
+ void ClearWeak(Isolate* isolate, Persistent& handle) {
+ handle.ClearWeak();
+ }
+
+ template
+ void SetInternalPointer(Handle handle, int index, void* val) {
+ handle->SetPointerInInternalField(index, val);
+ }
+ template
+ void* GetInternalPointer(Handle handle, int index) {
+ return handle->GetPointerFromInternalField(index);
+ }
+
+ template
+ Handle Deref(Isolate* isolate, Persistent& handle) {
+ return Local::New(handle);
+ }
+
+ Handle Return(Handle handle, GetterCallbackInfo info) {
+ return handle;
+ }
+
+ Handle Return(Handle handle, const Arguments& args) {
+ return handle;
+ }
+
+ Handle ThrowException(Isolate* isolate, Handle exception) {
+ return ThrowException(exception);
+ }
+
+ Handle GetCurrentContext(Isolate* isolate) {
+ return Context::GetCurrent();
+ }
+
+ Handle Undefined(Isolate* isolate) {
+ return v8::Undefined();
+ }
+
+ Handle NewLatin1String(Isolate* isolate, const char* string) {
+ return String::New(string);
+ }
+
+ Handle NewLatin1Symbol(Isolate* isolate, const char* string) {
+ return String::NewSymbol(string);
+ }
+
+ Handle NewBoolean(Isolate* isolate, bool value) {
+ return Boolean::New(value);
+ }
+
+ Handle NewNumber(Isolate* isolate, double value) {
+ return Number::New(value);
+ }
+
+ Handle NewFunctionTemplate(
+ Isolate* isolate,
+ InvocationCallback callback,
+ Handle data = Handle(),
+ Handle signature = Handle(),
+ int length = 0
+ ) {
+ return FunctionTemplate::New(callback, data, signature);
+ }
+
+ Handle NewSignature(
+ Isolate* isolate,
+ Handle receiver = Handle(),
+ int argc = 0,
+ Handle argv[] = 0
+ ) {
+ return Signature::New(receiver, argc, argv);
+ }
+
+ class ReverseIsolateScope {
+ public: explicit inline ReverseIsolateScope(Isolate* isolate) {}
+ };
+
+ void AdjustAmountOfExternalAllocatedMemory(Isolate* isolate, int64_t change_in_bytes) {
+ V8::AdjustAmountOfExternalAllocatedMemory(change_in_bytes);
+ }
+#endif
+
+#if V8_MAJOR_VERSION > 3 || (V8_MAJOR_VERSION == 3 && V8_MINOR_VERSION >= 29)
+ // This was actually added in 3.29.67
+ void SetStackGuard(Isolate* isolate, void* guard) {
+ isolate->SetStackLimit(reinterpret_cast(guard));
+ }
+#elif V8_MAJOR_VERSION > 3 || (V8_MAJOR_VERSION == 3 && V8_MINOR_VERSION >= 26)
+ void SetStackGuard(Isolate* isolate, void* guard) {
+ ResourceConstraints constraints;
+ constraints.set_stack_limit(reinterpret_cast(guard));
+ v8::SetResourceConstraints(isolate, &constraints);
+ }
+#else
+ // Extra padding for old versions of v8. Shit's fucked.
+ void SetStackGuard(Isolate* isolate, void* guard) {
+ ResourceConstraints constraints;
+ constraints.set_stack_limit(
+ reinterpret_cast(guard) + 18 * 1024
+ );
+ v8::SetResourceConstraints(&constraints);
+ }
+#endif
+}
+
+class Fiber {
+
+ private:
+ static Locker* global_locker; // Node does not use locks or threads, so we need a global lock
+ static Persistent tmpl;
+ static Persistent fiber_object;
+ static Fiber* current;
+ static vector orphaned_fibers;
+ static Persistent fatal_stack;
+
+ Isolate* isolate;
+ Persistent handle;
+ Persistent cb;
+ Persistent v8_context;
+ Persistent zombie_exception;
+ Persistent yielded;
+ bool yielded_exception;
+ Coroutine* entry_fiber;
+ Coroutine* this_fiber;
+ bool started;
+ bool yielding;
+ bool zombie;
+ bool resetting;
+
+ static Fiber& Unwrap(Handle handle) {
+ assert(!handle.IsEmpty());
+ assert(handle->InternalFieldCount() == 1);
+ return *static_cast(uni::GetInternalPointer(handle, 0));
+ }
+
+ Fiber(Handle handle, Handle cb, Handle v8_context) :
+ isolate(Isolate::GetCurrent()),
+ started(false),
+ yielding(false),
+ zombie(false),
+ resetting(false) {
+ uni::Reset(isolate, this->handle, handle);
+ uni::Reset(isolate, this->cb, cb);
+ uni::Reset(isolate, this->v8_context, v8_context);
+
+ MakeWeak();
+ uni::SetInternalPointer(handle, 0, this);
+ }
+
+ virtual ~Fiber() {
+ assert(!this->started);
+ uni::Dispose(isolate, handle);
+ uni::Dispose(isolate, cb);
+ uni::Dispose(isolate, v8_context);
+ }
+
+ /**
+ * Call MakeWeak if it's ok for v8 to garbage collect this Fiber.
+ * i.e. After fiber completes, while yielded, or before started
+ */
+ void MakeWeak() {
+ uni::MakeWeak(isolate, handle, (void*)this);
+ }
+
+ /**
+ * And call ClearWeak if it's not ok for v8 to garbage collect this Fiber.
+ * i.e. While running.
+ */
+ void ClearWeak() {
+ handle.ClearWeak();
+ }
+
+ /**
+ * Called when there are no more references to this object in Javascript. If this happens and
+ * the fiber is currently suspended we'll unwind the fiber's stack by throwing exceptions in
+ * order to clear all references.
+ */
+ static void WeakCallback(void* data) {
+ Fiber& that = *static_cast(data);
+ assert(that.handle.IsNearDeath());
+ assert(current != &that);
+
+ // We'll unwind running fibers later... doing it from the garbage collector is bad news.
+ if (that.started) {
+ assert(that.yielding);
+ orphaned_fibers.push_back(&that);
+ that.ClearWeak();
+ return;
+ }
+
+ delete &that;
+ }
+
+ /**
+ * When the v8 garbage collector notifies us about dying fibers instead of unwindng their
+ * stack as soon as possible we put them aside to unwind later. Unwinding from the garbage
+ * collector leads to exponential time garbage collections if there are many orphaned Fibers,
+ * there's also the possibility of running out of stack space. It's generally bad news.
+ *
+ * So instead we have this function to clean up all the fibers after the garbage collection
+ * has finished.
+ */
+ static void DestroyOrphans() {
+ if (orphaned_fibers.empty()) {
+ return;
+ }
+ vector orphans(orphaned_fibers);
+ orphaned_fibers.clear();
+
+ for (vector::iterator ii = orphans.begin(); ii != orphans.end(); ++ii) {
+ Fiber& that = **ii;
+ that.UnwindStack();
+
+ if (that.yielded_exception) {
+ // If you throw an exception from a fiber that's being garbage collected there's no way
+ // to bubble that exception up to the application.
+ String::Utf8Value stack(uni::Deref(that.isolate, fatal_stack));
+ cerr <<
+ "An exception was thrown from a Fiber which was being garbage collected. This error "
+ "can not be gracefully recovered from. The only acceptable behavior is to terminate "
+ "this application. The exception appears below:\n\n"
+ <<*stack <<"\n";
+ exit(1);
+ } else {
+ uni::Dispose(that.isolate, fatal_stack);
+ }
+
+ uni::Dispose(that.isolate, that.yielded);
+ that.MakeWeak();
+ }
+ }
+
+ /**
+ * Instantiate a new Fiber object. When a fiber is created it only grabs a handle to the
+ * callback; it doesn't create any new contexts until run() is called.
+ */
+ static uni::FunctionType New(const uni::Arguments& args) {
+ if (args.Length() != 1) {
+ THROW(Exception::TypeError, "Fiber expects 1 argument");
+ } else if (!args[0]->IsFunction()) {
+ THROW(Exception::TypeError, "Fiber expects a function");
+ } else if (!args.IsConstructCall()) {
+ Handle argv[1] = { args[0] };
+ return uni::Return(uni::Deref(Isolate::GetCurrent(), tmpl)->GetFunction()->NewInstance(1, argv), args);
+ }
+
+ Handle fn = Handle::Cast(args[0]);
+ new Fiber(args.This(), fn, uni::GetCurrentContext(Isolate::GetCurrent()));
+ return uni::Return(args.This(), args);
+ }
+
+ /**
+ * Begin or resume the current fiber. If the fiber is not currently running a new context will
+ * be created and the callback will start. Otherwise we switch back into the exist context.
+ */
+ static uni::FunctionType Run(const uni::Arguments& args) {
+ Fiber& that = Unwrap(args.Holder());
+
+ // There seems to be no better place to put this check..
+ DestroyOrphans();
+
+ if (that.started && !that.yielding) {
+ THROW(Exception::Error, "This Fiber is already running");
+ } else if (args.Length() > 1) {
+ THROW(Exception::TypeError, "run() excepts 1 or no arguments");
+ }
+
+ if (!that.started) {
+ // Create a new context with entry point `Fiber::RunFiber()`.
+ void** data = new void*[2];
+ data[0] = (void*)&args;
+ data[1] = &that;
+ that.this_fiber = Coroutine::create_fiber((void (*)(void*))RunFiber, data);
+ if (!that.this_fiber) {
+ delete[] data;
+ THROW(Exception::RangeError, "Out of memory");
+ }
+ that.started = true;
+ uni::AdjustAmountOfExternalAllocatedMemory(that.isolate, that.this_fiber->size() * GC_ADJUST);
+ } else {
+ // If the fiber is currently running put the first parameter to `run()` on `yielded`, then
+ // the pending call to `yield()` will return that value. `yielded` in this case is just a
+ // misnomer, we're just reusing the same handle.
+ that.yielded_exception = false;
+ if (args.Length()) {
+ uni::Reset(that.isolate, that.yielded, args[0]);
+ } else {
+ uni::Reset(that.isolate, that.yielded, uni::Undefined(that.isolate));
+ }
+ }
+ that.SwapContext();
+ return uni::Return(that.ReturnYielded(), args);
+ }
+
+ /**
+ * Throw an exception into a currently yielding fiber.
+ */
+ static uni::FunctionType ThrowInto(const uni::Arguments& args) {
+ Fiber& that = Unwrap(args.Holder());
+
+ if (!that.yielding) {
+ THROW(Exception::Error, "This Fiber is not yielding");
+ } else if (args.Length() == 0) {
+ uni::Reset(that.isolate, that.yielded, uni::Undefined(that.isolate));
+ } else if (args.Length() == 1) {
+ uni::Reset(that.isolate, that.yielded, args[0]);
+ } else {
+ THROW(Exception::TypeError, "throwInto() expects 1 or no arguments");
+ }
+ that.yielded_exception = true;
+ that.SwapContext();
+ return uni::Return(that.ReturnYielded(), args);
+ }
+
+ /**
+ * Unwinds a currently running fiber. If the fiber is not running then this function has no
+ * effect.
+ */
+ static uni::FunctionType Reset(const uni::Arguments& args) {
+ Fiber& that = Unwrap(args.Holder());
+
+ if (!that.started) {
+ return uni::Return(uni::Undefined(that.isolate), args);
+ } else if (!that.yielding) {
+ THROW(Exception::Error, "This Fiber is not yielding");
+ } else if (args.Length()) {
+ THROW(Exception::TypeError, "reset() expects no arguments");
+ }
+
+ that.resetting = true;
+ that.UnwindStack();
+ that.resetting = false;
+ that.MakeWeak();
+
+ Handle val = uni::Deref(that.isolate, that.yielded);
+ uni::Dispose(that.isolate, that.yielded);
+ if (that.yielded_exception) {
+ return uni::Return(uni::ThrowException(that.isolate, val), args);
+ } else {
+ return uni::Return(val, args);
+ }
+ }
+
+ /**
+ * Turns the fiber into a zombie and unwinds its whole stack.
+ *
+ * After calling this function you must either destroy this fiber or call MakeWeak() or it will
+ * be leaked.
+ */
+ void UnwindStack() {
+ assert(!zombie);
+ assert(started);
+ assert(yielding);
+ zombie = true;
+
+ // Setup an exception which will be thrown and rethrown from Fiber::Yield()
+ Handle zombie_exception = Exception::Error(uni::NewLatin1String(isolate, "This Fiber is a zombie"));
+ uni::Reset(isolate, this->zombie_exception, zombie_exception);
+ uni::Reset(isolate, yielded, zombie_exception);
+ yielded_exception = true;
+
+ // Swap context back to Fiber::Yield() which will throw an exception to unwind the stack.
+ // Futher calls to yield from this fiber will rethrow the same exception.
+ SwapContext();
+ assert(!started);
+ zombie = false;
+
+ // Make sure this is the exception we threw
+ if (yielded_exception && yielded == zombie_exception) {
+ yielded_exception = false;
+ uni::Dispose(isolate, yielded);
+ uni::Reset(isolate, yielded, uni::Undefined(isolate));
+ }
+ uni::Dispose(isolate, this->zombie_exception);
+ }
+
+ /**
+ * Common logic between Run(), ThrowInto(), and UnwindStack(). This is essentially just a
+ * wrapper around this->fiber->() which also handles all the bookkeeping needed.
+ */
+ void SwapContext() {
+
+ entry_fiber = &Coroutine::current();
+ Fiber* last_fiber = current;
+ current = this;
+
+ // This will jump into either `RunFiber()` or `Yield()`, depending on if the fiber was
+ // already running.
+ {
+ Unlocker unlocker(isolate);
+ uni::ReverseIsolateScope isolate_scope(isolate);
+ this_fiber->run();
+ }
+
+ // At this point the fiber either returned or called `yield()`.
+ current = last_fiber;
+ }
+
+ /**
+ * Grabs and resets this fiber's yielded value.
+ */
+ Handle ReturnYielded() {
+ Handle val = uni::Deref(isolate, yielded);
+ uni::Dispose(isolate, yielded);
+ if (yielded_exception) {
+ return uni::ThrowException(isolate, val);
+ } else {
+ return val;
+ }
+ }
+
+ /**
+ * This is the entry point for a new fiber, from `run()`.
+ */
+ static void RunFiber(void** data) {
+ const uni::Arguments* args = (const uni::Arguments*)data[0];
+ Fiber& that = *(Fiber*)data[1];
+ delete[] data;
+
+ // New C scope so that the stack-allocated objects will be destroyed before calling
+ // Coroutine::finish, because that function may not return, in which case the destructors in
+ // this function won't be called.
+ {
+ Locker locker(that.isolate);
+ Isolate::Scope isolate_scope(that.isolate);
+ uni::HandleScope scope(that.isolate);
+
+ // Set the stack guard for this "thread"; allow 6k of padding past the JS limit for
+ // native v8 code to run
+ uni::SetStackGuard(that.isolate, reinterpret_cast(that.this_fiber->bottom()) + 1024 * 6);
+
+ TryCatch try_catch;
+ that.ClearWeak();
+ Handle v8_context = uni::Deref(that.isolate, that.v8_context);
+ v8_context->Enter();
+
+ // Workaround for v8 issue #1180
+ // http://code.google.com/p/v8/issues/detail?id=1180
+ Script::Compile(uni::NewLatin1String(that.isolate, "void 0;"));
+
+ Handle yielded;
+ if (args->Length()) {
+ Handle argv[1] = { (*args)[0] };
+ yielded = uni::Deref(that.isolate, that.cb)->Call(v8_context->Global(), 1, argv);
+ } else {
+ yielded = uni::Deref(that.isolate, that.cb)->Call(v8_context->Global(), 0, NULL);
+ }
+
+ if (try_catch.HasCaught()) {
+ uni::Reset(that.isolate, that.yielded, try_catch.Exception());
+ that.yielded_exception = true;
+ if (that.zombie && !that.resetting && !uni::Deref(that.isolate, that.yielded)->StrictEquals(uni::Deref(that.isolate, that.zombie_exception))) {
+ // Throwing an exception from a garbage sweep
+ uni::Reset(that.isolate, fatal_stack, try_catch.StackTrace());
+ }
+ } else {
+ uni::Reset(that.isolate, that.yielded, yielded);
+ that.yielded_exception = false;
+ }
+
+ // Do not invoke the garbage collector if there's no context on the stack. It will seg fault
+ // otherwise.
+ uni::AdjustAmountOfExternalAllocatedMemory(that.isolate, -(int)(that.this_fiber->size() * GC_ADJUST));
+
+ // Don't make weak until after notifying the garbage collector. Otherwise it may try and
+ // free this very fiber!
+ if (!that.zombie) {
+ that.MakeWeak();
+ }
+
+ // Now safe to leave the context, this stack is done with JS.
+ v8_context->Exit();
+ }
+
+ // The function returned (instead of yielding).
+ that.started = false;
+ that.this_fiber->finish(*that.entry_fiber, that.isolate);
+ }
+
+ /**
+ * Yield control back to the function that called `run()`. The first parameter to this function
+ * is returned from `run()`. The context is saved, to be later resumed from `run()`.
+ * note: sigh, there is a #define Yield() in WinBase.h on Windows
+ */
+ static uni::FunctionType Yield_(const uni::Arguments& args) {
+ if (current == NULL) {
+ THROW(Exception::Error, "yield() called with no fiber running");
+ }
+
+ Fiber& that = *current;
+
+ if (that.zombie) {
+ return uni::Return(uni::ThrowException(that.isolate, uni::Deref(that.isolate, that.zombie_exception)), args);
+ } else if (args.Length() == 0) {
+ uni::Reset(that.isolate, that.yielded, Undefined(that.isolate));
+ } else if (args.Length() == 1) {
+ uni::Reset(that.isolate, that.yielded, args[0]);
+ } else {
+ THROW(Exception::TypeError, "yield() expects 1 or no arguments");
+ }
+ that.yielded_exception = false;
+
+ // While not running this can be garbage collected if no one has a handle.
+ that.MakeWeak();
+
+ // Return control back to `Fiber::run()`. While control is outside this function we mark it as
+ // ok to garbage collect. If no one ever has a handle to resume the function it's harmful to
+ // keep the handle around.
+ {
+ Unlocker unlocker(that.isolate);
+ uni::ReverseIsolateScope isolate_scope(that.isolate);
+ that.yielding = true;
+ that.entry_fiber->run();
+ that.yielding = false;
+ }
+ // Now `run()` has been called again.
+
+ // Don't garbage collect anymore!
+ that.ClearWeak();
+
+ // Return the yielded value
+ return uni::Return(that.ReturnYielded(), args);
+ }
+
+ /**
+ * Getters for `started`, and `current`.
+ */
+ static uni::FunctionType GetStarted(Local property, const uni::GetterCallbackInfo& info) {
+ if (info.This().IsEmpty() || info.This()->InternalFieldCount() != 1) {
+ return uni::Return(uni::Undefined(Isolate::GetCurrent()), info);
+ }
+ Fiber& that = Unwrap(info.This());
+ return uni::Return(uni::NewBoolean(that.isolate, that.started), info);
+ }
+
+ static uni::FunctionType GetCurrent(Local property, const uni::GetterCallbackInfo& info) {
+ if (current) {
+ return uni::Return(current->handle, info);
+ } else {
+ return uni::Return(uni::Undefined(Isolate::GetCurrent()), info);
+ }
+ }
+
+ /**
+ * Allow access to coroutine pool size
+ */
+ static uni::FunctionType GetPoolSize(Local property, const uni::GetterCallbackInfo& info) {
+ return uni::Return(uni::NewNumber(Isolate::GetCurrent(), Coroutine::pool_size), info);
+ }
+
+ static void SetPoolSize(Local property, Local value, const uni::SetterCallbackInfo& info) {
+ Coroutine::pool_size = value->ToNumber()->Value();
+ }
+
+ /**
+ * Return number of fibers that have been created
+ */
+ static uni::FunctionType GetFibersCreated(Local property, const uni::GetterCallbackInfo& info) {
+ return uni::Return(uni::NewNumber(Isolate::GetCurrent(), Coroutine::coroutines_created()), info);
+ }
+
+ public:
+ /**
+ * Initialize the Fiber library.
+ */
+ static void Init(Handle target) {
+ // Use a locker which won't get destroyed when this library gets unloaded. This is a hack
+ // to prevent v8 from trying to clean up this "thread" while the whole application is
+ // shutting down. TODO: There's likely a better way to accomplish this, but since the
+ // application is going down lost memory isn't the end of the world. But with a regular lock
+ // there's seg faults when node shuts down.
+ Isolate* isolate = Isolate::GetCurrent();
+ global_locker = new Locker(isolate);
+ current = NULL;
+
+ // Fiber constructor
+ Handle tmpl = uni::NewFunctionTemplate(isolate, New);
+ uni::Reset(isolate, Fiber::tmpl, tmpl);
+ tmpl->SetClassName(uni::NewLatin1Symbol(isolate, "Fiber"));
+
+ // Guard which only allows these methods to be called on a fiber; prevents
+ // `fiber.run.call({})` from seg faulting.
+ Handle sig = uni::NewSignature(isolate, tmpl);
+ tmpl->InstanceTemplate()->SetInternalFieldCount(1);
+
+ // Fiber.prototype
+ Handle proto = tmpl->PrototypeTemplate();
+ proto->Set(uni::NewLatin1Symbol(isolate, "reset"),
+ uni::NewFunctionTemplate(isolate, Reset, Handle(), sig));
+ proto->Set(uni::NewLatin1Symbol(isolate, "run"),
+ uni::NewFunctionTemplate(isolate, Run, Handle(), sig));
+ proto->Set(uni::NewLatin1Symbol(isolate, "throwInto"),
+ uni::NewFunctionTemplate(isolate, ThrowInto, Handle(), sig));
+ proto->SetAccessor(uni::NewLatin1Symbol(isolate, "started"), GetStarted);
+
+ // Global yield() function
+ Handle yield = uni::NewFunctionTemplate(isolate, Yield_)->GetFunction();
+ Handle sym_yield = uni::NewLatin1Symbol(isolate, "yield");
+ target->Set(sym_yield, yield);
+
+ // Fiber properties
+ Handle fn = tmpl->GetFunction();
+ fn->Set(sym_yield, yield);
+ fn->SetAccessor(uni::NewLatin1Symbol(isolate, "current"), GetCurrent);
+ fn->SetAccessor(uni::NewLatin1Symbol(isolate, "poolSize"), GetPoolSize, SetPoolSize);
+ fn->SetAccessor(uni::NewLatin1Symbol(isolate, "fibersCreated"), GetFibersCreated);
+
+ // Global Fiber
+ target->Set(uni::NewLatin1Symbol(isolate, "Fiber"), fn);
+ uni::Reset(isolate, fiber_object, fn);
+ }
+};
+
+Persistent Fiber::tmpl;
+Persistent Fiber::fiber_object;
+Locker* Fiber::global_locker;
+Fiber* Fiber::current = NULL;
+vector Fiber::orphaned_fibers;
+Persistent Fiber::fatal_stack;
+bool did_init = false;
+
+#if !NODE_VERSION_AT_LEAST(0,10,0)
+extern "C"
+#endif
+void init(Handle target) {
+ Isolate* isolate = Isolate::GetCurrent();
+ if (did_init || !target->Get(uni::NewLatin1Symbol(isolate, "Fiber"))->IsUndefined()) {
+ // Oh god. Node will call init() twice even though the library was loaded only once. See Node
+ // issue #2621 (no fix).
+ return;
+ }
+ did_init = true;
+ uni::HandleScope scope(isolate);
+ Coroutine::init(isolate);
+ Fiber::Init(target);
+ // Default stack size of either 512k or 1M. Perhaps make this configurable by the run time?
+ Coroutine::set_stack_size(128 * 1024);
+}
+
+NODE_MODULE(fibers, init)
diff --git a/server/node_modules/fibers/src/libcoro/LICENSE b/server/node_modules/fibers/src/libcoro/LICENSE
new file mode 100755
index 0000000..5c9c3bb
--- /dev/null
+++ b/server/node_modules/fibers/src/libcoro/LICENSE
@@ -0,0 +1,26 @@
+Copyright (c) 2000-2009 Marc Alexander Lehmann
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Alternatively, the following files carry an additional notice that
+explicitly allows relicensing under the GPLv2: coro.c, coro.h.
+
diff --git a/server/node_modules/fibers/src/libcoro/README b/server/node_modules/fibers/src/libcoro/README
new file mode 100755
index 0000000..28b0a6f
--- /dev/null
+++ b/server/node_modules/fibers/src/libcoro/README
@@ -0,0 +1,6 @@
+Configuration, documentation etc. is provided in the coro.h file. Please
+note that the file conftest.c in this distribution is under the GPL. It is
+not needed for proper operation of this library though, for that, coro.h
+and coro.c suffice.
+
+Marc Lehmann
diff --git a/server/node_modules/fibers/src/libcoro/conftest.c b/server/node_modules/fibers/src/libcoro/conftest.c
new file mode 100755
index 0000000..5146779
--- /dev/null
+++ b/server/node_modules/fibers/src/libcoro/conftest.c
@@ -0,0 +1,154 @@
+/*
+ * This file was taken from pth-1.40/aclocal.m4
+ * The original copyright is below.
+ *
+ * GNU Pth - The GNU Portable Threads
+ * Copyright (c) 1999-2001 Ralf S. Engelschall
+ *
+ * This file is part of GNU Pth, a non-preemptive thread scheduling
+ * library which can be found at http://www.gnu.org/software/pth/.
+ *
+ * This file is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA, or contact Marc Lehmann