feat: new animation

feature/ads-smart-display
tiendat3699 2024-06-12 18:48:19 +07:00
parent 522329a421
commit 2017a46914
104 changed files with 28442 additions and 5640 deletions

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "e47e8fd8-2608-478b-b1fc-6d5e1f74b86a",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "c759a91b-cc04-45fb-9ff4-8fcc1703398a",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,55 @@
cheese-booster.png
size: 256,128
format: RGBA8888
filter: Linear,Linear
repeat: none
Booster
rotate: false
xy: 4, 40
size: 63, 77
orig: 63, 77
offset: 0, 0
index: -1
Fruit_Item
rotate: false
xy: 4, 4
size: 63, 32
orig: 63, 32
offset: 0, 0
index: -1
Fruit_Item1
rotate: false
xy: 71, 5
size: 48, 52
orig: 48, 52
offset: 0, 0
index: -1
Fruit_Item2
rotate: true
xy: 125, 68
size: 49, 48
orig: 49, 48
offset: 0, 0
index: -1
Fruit_Item3
rotate: false
xy: 123, 8
size: 49, 49
orig: 49, 49
offset: 0, 0
index: -1
Fruit_Item4
rotate: true
xy: 71, 61
size: 56, 50
orig: 56, 50
offset: 0, 0
index: -1
Item
rotate: false
xy: 176, 7
size: 24, 57
orig: 24, 57
offset: 0, 0
index: -1

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.2",
"importer": "text",
"imported": true,
"uuid": "7926890a-d91a-472c-a614-d4366c624d3e",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,332 @@
{
"skeleton": {
"hash": "OyHd6UWmGv77aYehVIsISmT7c+4",
"spine": "3.8.99",
"x": -83.54,
"y": -83.14,
"width": 166.53,
"height": 160.14,
"images": "",
"audio": ""
},
"bones": [
{ "name": "root" },
{ "name": "pivot", "parent": "root" },
{ "name": "booster", "parent": "pivot" },
{ "name": "Item", "parent": "pivot", "length": 98.07, "rotation": 81.12, "x": 21.67, "y": -29.87 },
{ "name": "Fruit_Item", "parent": "pivot", "length": 83.22, "rotation": 31.23, "x": 4.85, "y": 1.35 },
{ "name": "Fruit_Item3", "parent": "pivot", "length": 46.18, "x": -33.24, "y": 2.97 },
{ "name": "Item4", "parent": "pivot", "length": 71.8, "rotation": -24.94, "x": -0.32, "y": -20.11 },
{ "name": "Fruit_Item4", "parent": "pivot", "length": 57.48, "rotation": -49.81, "x": 4.57, "y": -35.91 },
{ "name": "Item3", "parent": "pivot", "length": 74.76, "rotation": -105.87, "x": 5.93, "y": -9.06 },
{ "name": "Fruit_Item2", "parent": "pivot", "length": 47.67, "rotation": -136.93, "x": -19.54, "y": 18.45 },
{ "name": "Item5", "parent": "pivot", "length": 58.13, "rotation": -171.76, "x": -21.02, "y": 4.84 },
{ "name": "Item2", "parent": "pivot", "length": 61.17, "rotation": 139.01, "x": -34.37, "y": -8.85 },
{ "name": "Fruit_Item1", "parent": "pivot", "length": 51.81, "rotation": 115.07, "x": 9.44, "y": 0.52 }
],
"slots": [
{ "name": "Fruit_Item", "bone": "Fruit_Item", "color": "ffffff00", "attachment": "Fruit_Item" },
{ "name": "Fruit_Item1", "bone": "Fruit_Item1", "color": "ffffff00", "attachment": "Fruit_Item1" },
{ "name": "Item", "bone": "Item", "color": "ffffff00", "attachment": "Item" },
{ "name": "Item2", "bone": "Item2", "color": "ffffff00", "attachment": "Item" },
{ "name": "Item3", "bone": "Item3", "color": "ffffff00", "attachment": "Item" },
{ "name": "Item5", "bone": "Item5", "color": "ffffff00", "attachment": "Item" },
{ "name": "Item4", "bone": "Item4", "color": "ffffff00", "attachment": "Item" },
{ "name": "Fruit_Item4", "bone": "Fruit_Item4", "color": "ffffff00", "attachment": "Fruit_Item4" },
{ "name": "Fruit_Item2", "bone": "Fruit_Item2", "color": "ffffff00", "attachment": "Fruit_Item2" },
{ "name": "Fruit_Item3", "bone": "Fruit_Item3", "color": "ffffff00", "attachment": "Fruit_Item3" },
{ "name": "Booster", "bone": "booster", "attachment": "Booster" }
],
"skins": [
{
"name": "default",
"attachments": {
"Booster": {
"Booster": { "width": 125, "height": 154 }
},
"Fruit_Item": {
"Fruit_Item": {
"x": 40.13,
"y": -2.79,
"scaleX": 0.6,
"scaleY": 0.6,
"rotation": -5.49,
"width": 126,
"height": 64
}
},
"Fruit_Item1": {
"Fruit_Item1": {
"x": 14.91,
"y": -3.58,
"scaleX": 0.8,
"scaleY": 0.8,
"rotation": -97.28,
"width": 96,
"height": 104
}
},
"Fruit_Item2": {
"Fruit_Item2": {
"x": 11.82,
"y": -4.81,
"scaleX": 0.7,
"scaleY": 0.7,
"rotation": -146.33,
"width": 97,
"height": 96
}
},
"Fruit_Item3": {
"Fruit_Item3": {
"x": 4.93,
"y": 8.06,
"scaleX": 0.5,
"scaleY": 0.5,
"rotation": -18.59,
"width": 97,
"height": 97
}
},
"Fruit_Item4": {
"Fruit_Item4": {
"x": 7.18,
"y": 6.85,
"scaleX": 0.8,
"scaleY": 0.8,
"rotation": -38.18,
"width": 112,
"height": 99
}
},
"Item": {
"Item": {
"x": 40.6,
"y": 0.02,
"scaleX": 0.7,
"scaleY": 0.7,
"rotation": -88.56,
"width": 48,
"height": 114
}
},
"Item2": {
"Item": {
"x": 10.93,
"y": -0.76,
"scaleX": 0.7,
"scaleY": 0.7,
"rotation": -88.77,
"width": 48,
"height": 114
}
},
"Item3": {
"Item": {
"x": 21.34,
"y": 0.63,
"scaleX": 0.6,
"scaleY": 0.6,
"rotation": -89.87,
"width": 48,
"height": 114
}
},
"Item4": {
"Item": {
"x": 21.85,
"y": 4.77,
"scaleX": 0.8,
"scaleY": 0.8,
"rotation": -92.56,
"width": 48,
"height": 114
}
},
"Item5": {
"Item": {
"x": 5.64,
"y": -1.71,
"scaleX": 0.8,
"scaleY": 0.8,
"rotation": -88.79,
"width": 48,
"height": 114
}
}
}
}
],
"animations": {
"active": {
"slots": {
"Booster": {
"color": [
{ "time": 0.1333, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.2, "color": "ffffff00" }
]
},
"Fruit_Item": {
"color": [
{ "time": 0.1333, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.2, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4333, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.5333, "color": "ffffff00" }
]
},
"Fruit_Item1": {
"color": [
{ "time": 0.1667, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.3, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4333, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.5333, "color": "ffffff00" }
]
},
"Fruit_Item2": {
"color": [
{ "time": 0.2333, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.3667, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.5333, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.6, "color": "ffffff00" }
]
},
"Fruit_Item3": {
"color": [
{ "time": 0.1667, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4333, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.5667, "color": "ffffff00" }
]
},
"Fruit_Item4": {
"color": [
{ "time": 0.1333, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.2333, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.5333, "color": "ffffff00" }
]
},
"Item": {
"color": [
{ "time": 0.1333, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.5333, "color": "ffffff00" }
]
},
"Item2": {
"color": [
{ "time": 0.1333, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.2333, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.5, "color": "ffffff00" }
]
},
"Item3": {
"color": [
{ "time": 0.1667, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4667, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.5667, "color": "ffffff00" }
]
},
"Item4": {
"color": [
{ "time": 0.2, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.3333, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4667, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.6, "color": "ffffff00" }
]
},
"Item5": {
"color": [
{ "time": 0.1667, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.4333, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 0.5667, "color": "ffffff00" }
]
}
},
"bones": {
"booster": {
"scale": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.0667, "x": 0.952, "y": 0.952, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2, "x": 1.2, "y": 1.2 }
]
},
"Fruit_Item": {
"translate": [
{ "time": 0.1333, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.5333, "x": 118, "y": 71.55 }
]
},
"Fruit_Item1": {
"translate": [
{ "time": 0.1667, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.5333, "x": -58.47, "y": 125 }
]
},
"Fruit_Item2": {
"translate": [
{ "time": 0.2333, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.6, "x": -100.81, "y": -94.23 }
]
},
"Fruit_Item3": {
"translate": [
{ "time": 0.1667, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.5667, "x": 137.99 }
]
},
"Fruit_Item4": {
"translate": [
{ "time": 0.1333, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.5333, "x": 89.05, "y": -105.41 }
]
},
"Item": {
"translate": [
{ "time": 0.1333, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.5333, "x": 21.3, "y": 136.34 }
]
},
"Item2": {
"translate": [
{ "time": 0.1333, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.5, "x": -104.17, "y": 90.51 }
]
},
"Item3": {
"translate": [
{ "time": 0.1667, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.5667, "x": -37.73, "y": -132.74 }
]
},
"Item4": {
"translate": [
{ "time": 0.2, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.6, "x": 125.12, "y": -58.2 }
]
},
"Item5": {
"translate": [
{ "time": 0.1667, "curve": 0, "c2": 0.5, "c3": 0.75 },
{ "time": 0.5667, "x": -136.57, "y": -19.77 }
]
}
}
},
"idle": {
"bones": {
"booster": {
"rotate": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.2, "angle": 6.35, "curve": 0.25, "c3": 0.75 },
{ "time": 0.4 }
]
}
}
}
}
}

View File

@ -0,0 +1,11 @@
{
"ver": "1.2.6",
"importer": "spine-data",
"imported": true,
"uuid": "a2e8df4b-a028-47ea-940e-a59e1aa826f0",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.26",
"importer": "image",
"imported": true,
"uuid": "23d6deb6-9e83-4408-9376-a1997d6424c7",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "23d6deb6-9e83-4408-9376-a1997d6424c7@6c48a",
"displayName": "cheese-booster",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "23d6deb6-9e83-4408-9376-a1997d6424c7",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "23d6deb6-9e83-4408-9376-a1997d6424c7@f9941",
"displayName": "cheese-booster",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -26,
"offsetY": 3.5,
"trimX": 4,
"trimY": 4,
"width": 196,
"height": 113,
"rawWidth": 256,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-98,
-56.5,
0,
98,
-56.5,
0,
-98,
56.5,
0,
98,
56.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
4,
124,
200,
124,
4,
11,
200,
11
],
"nuv": [
0.015625,
0.0859375,
0.78125,
0.0859375,
0.015625,
0.96875,
0.78125,
0.96875
],
"minPos": [
-98,
-56.5,
0
],
"maxPos": [
98,
56.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "23d6deb6-9e83-4408-9376-a1997d6424c7@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "23d6deb6-9e83-4408-9376-a1997d6424c7@f9941"
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "32dff488-3dda-47ce-9ef2-45c8888d20ce",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,902 @@
heads.png
size: 1024,1024
format: RGBA8888
filter: Linear,Linear
repeat: none
Face1
rotate: true
xy: 643, 464
size: 126, 132
orig: 126, 132
offset: 0, 0
index: -1
Face1-freckles
rotate: false
xy: 342, 651
size: 119, 24
orig: 119, 24
offset: 0, 0
index: -1
Face1-hair
rotate: true
xy: 831, 253
size: 190, 164
orig: 190, 164
offset: 0, 0
index: -1
Face1-hair2
rotate: false
xy: 780, 577
size: 137, 58
orig: 137, 58
offset: 0, 0
index: -1
Face2-hair2
rotate: false
xy: 780, 577
size: 137, 58
orig: 137, 58
offset: 0, 0
index: -1
Face3-hair2
rotate: false
xy: 780, 577
size: 137, 58
orig: 137, 58
offset: 0, 0
index: -1
Face4-front-hair2
rotate: false
xy: 780, 577
size: 137, 58
orig: 137, 58
offset: 0, 0
index: -1
Face5-front-hair-2
rotate: false
xy: 780, 577
size: 137, 58
orig: 137, 58
offset: 0, 0
index: -1
Face1-left-brow
rotate: false
xy: 590, 678
size: 23, 13
orig: 23, 13
offset: 0, 0
index: -1
Face1-left-ear
rotate: true
xy: 194, 655
size: 23, 32
orig: 23, 33
offset: 0, 0
index: -1
Face2-left-ear
rotate: true
xy: 194, 655
size: 23, 32
orig: 23, 33
offset: 0, 0
index: -1
Face1-left-eye
rotate: true
xy: 587, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face2-left-eye
rotate: true
xy: 587, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face1-left-eye-glitter
rotate: true
xy: 53, 682
size: 9, 11
orig: 10, 12
offset: 1, 0
index: -1
Face2-left-eye-glitter
rotate: true
xy: 53, 682
size: 9, 11
orig: 10, 12
offset: 1, 0
index: -1
Face1-left-eye-lines
rotate: false
xy: 767, 644
size: 44, 28
orig: 44, 28
offset: 0, 0
index: -1
Face1-left-eyebag
rotate: false
xy: 753, 676
size: 36, 15
orig: 38, 17
offset: 1, 1
index: -1
Face2-left-eyebag
rotate: false
xy: 753, 676
size: 36, 15
orig: 38, 17
offset: 1, 1
index: -1
Face1-left-pupil
rotate: true
xy: 895, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face2-left-pupil
rotate: true
xy: 895, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face1-left-sclera
rotate: false
xy: 168, 615
size: 41, 36
orig: 41, 36
offset: 0, 0
index: -1
Face1-left-tear
rotate: false
xy: 230, 655
size: 34, 23
orig: 35, 23
offset: 1, 0
index: -1
Face1-mouth
rotate: false
xy: 617, 678
size: 41, 13
orig: 41, 13
offset: 0, 0
index: -1
Face1-nose
rotate: false
xy: 68, 682
size: 12, 9
orig: 13, 10
offset: 1, 0
index: -1
Face2-nose
rotate: false
xy: 68, 682
size: 12, 9
orig: 13, 10
offset: 1, 0
index: -1
Face1-outlines
rotate: false
xy: 614, 109
size: 195, 169
orig: 195, 169
offset: 0, 0
index: -1
Face1-rear-hair
rotate: false
xy: 322, 507
size: 148, 96
orig: 148, 96
offset: 0, 0
index: -1
Face1-right-brow
rotate: false
xy: 662, 678
size: 23, 13
orig: 23, 13
offset: 0, 0
index: -1
Face1-right-ear
rotate: true
xy: 28, 656
size: 22, 32
orig: 22, 33
offset: 0, 0
index: -1
Face2-right-ear
rotate: true
xy: 28, 656
size: 22, 32
orig: 22, 33
offset: 0, 0
index: -1
Face1-right-eye
rotate: true
xy: 623, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face2-right-eye
rotate: true
xy: 623, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face3-right-eye
rotate: true
xy: 623, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face4-left-eye
rotate: true
xy: 623, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face1-right-eye-glitter
rotate: true
xy: 84, 682
size: 9, 11
orig: 10, 12
offset: 0, 0
index: -1
Face2-right-eye-glitter
rotate: true
xy: 84, 682
size: 9, 11
orig: 10, 12
offset: 0, 0
index: -1
Face3-right-eye-glitter
rotate: true
xy: 84, 682
size: 9, 11
orig: 10, 12
offset: 0, 0
index: -1
Face4-left-eye-glitter
rotate: true
xy: 84, 682
size: 9, 11
orig: 10, 12
offset: 0, 0
index: -1
Face5-right-eye-glitter
rotate: true
xy: 84, 682
size: 9, 11
orig: 10, 12
offset: 0, 0
index: -1
Face1-right-eye-lines
rotate: false
xy: 815, 643
size: 44, 28
orig: 44, 28
offset: 0, 0
index: -1
Face1-right-eyebag
rotate: false
xy: 793, 676
size: 36, 15
orig: 38, 17
offset: 1, 1
index: -1
Face2-right-eyebag
rotate: false
xy: 793, 676
size: 36, 15
orig: 38, 17
offset: 1, 1
index: -1
Face1-right-pupil
rotate: true
xy: 920, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face2-right-pupil
rotate: true
xy: 920, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face3-right-pupil
rotate: true
xy: 920, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face4-left-pupil
rotate: true
xy: 920, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face5-right-pupil
rotate: true
xy: 920, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face1-right-sclera
rotate: false
xy: 213, 615
size: 41, 36
orig: 41, 36
offset: 0, 0
index: -1
Face1-right-tear
rotate: false
xy: 268, 654
size: 34, 23
orig: 35, 23
offset: 0, 0
index: -1
Face1-shade
rotate: false
xy: 187, 515
size: 131, 89
orig: 131, 90
offset: 0, 1
index: -1
Face1-wrinkles
rotate: true
xy: 921, 525
size: 110, 90
orig: 110, 90
offset: 0, 0
index: -1
Face2
rotate: true
xy: 779, 447
size: 126, 132
orig: 126, 132
offset: 0, 0
index: -1
Face2 copy
rotate: false
xy: 215, 172
size: 198, 166
orig: 199, 166
offset: 0, 0
index: -1
Face2-freckles
rotate: false
xy: 465, 651
size: 118, 24
orig: 118, 24
offset: 0, 0
index: -1
Face2-hair
rotate: false
xy: 276, 342
size: 193, 161
orig: 194, 161
offset: 0, 0
index: -1
Face2-left-brow
rotate: false
xy: 99, 682
size: 28, 9
orig: 30, 11
offset: 1, 1
index: -1
Face2-left-eye-lines
rotate: false
xy: 64, 656
size: 43, 22
orig: 44, 22
offset: 0, 0
index: -1
Face2-left-sclera
rotate: false
xy: 39, 618
size: 40, 34
orig: 40, 34
offset: 0, 0
index: -1
Face2-mouth
rotate: false
xy: 4, 684
size: 32, 7
orig: 33, 7
offset: 0, 0
index: -1
Face2-rear-hair
rotate: false
xy: 474, 497
size: 165, 96
orig: 165, 96
offset: 0, 0
index: -1
Face3-rear-hair
rotate: false
xy: 474, 497
size: 165, 96
orig: 165, 96
offset: 0, 0
index: -1
Face4-rear-hair
rotate: false
xy: 474, 497
size: 165, 96
orig: 165, 96
offset: 0, 0
index: -1
Face2-right-brow
rotate: false
xy: 279, 681
size: 28, 10
orig: 30, 11
offset: 1, 0
index: -1
Face2-right-eye-line
rotate: false
xy: 111, 656
size: 43, 22
orig: 44, 22
offset: 1, 0
index: -1
Face2-right-sclera
rotate: false
xy: 83, 618
size: 40, 34
orig: 40, 34
offset: 0, 0
index: -1
Face3
rotate: true
xy: 4, 399
size: 126, 132
orig: 126, 132
offset: 0, 0
index: -1
Face4
rotate: true
xy: 4, 399
size: 126, 132
orig: 126, 132
offset: 0, 0
index: -1
Face3-hair
rotate: false
xy: 638, 282
size: 189, 161
orig: 189, 161
offset: 0, 0
index: -1
Face3-left-brow
rotate: false
xy: 131, 682
size: 29, 9
orig: 30, 9
offset: 1, 0
index: -1
Face3-left-ear
rotate: true
xy: 306, 652
size: 23, 32
orig: 23, 33
offset: 0, 0
index: -1
Face4-left-ear
rotate: true
xy: 306, 652
size: 23, 32
orig: 23, 33
offset: 0, 0
index: -1
Face5-left-ear
rotate: true
xy: 306, 652
size: 23, 32
orig: 23, 33
offset: 0, 0
index: -1
Face3-left-eye
rotate: true
xy: 659, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face4-right-eye
rotate: true
xy: 659, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face3-left-eye-glitter
rotate: true
xy: 311, 681
size: 10, 11
orig: 10, 12
offset: 0, 0
index: -1
Face4-right-eye-glitter
rotate: true
xy: 311, 681
size: 10, 11
orig: 10, 12
offset: 0, 0
index: -1
Face5-left-eye-glitter
rotate: true
xy: 311, 681
size: 10, 11
orig: 10, 12
offset: 0, 0
index: -1
Face3-left-eye-line
rotate: false
xy: 904, 639
size: 42, 30
orig: 43, 41
offset: 0, 11
index: -1
Face3-left-pupil
rotate: true
xy: 945, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face4-right-pupil
rotate: true
xy: 945, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face5-left-pupil
rotate: true
xy: 945, 673
size: 18, 21
orig: 18, 21
offset: 0, 0
index: -1
Face3-left-sclera
rotate: false
xy: 300, 608
size: 40, 39
orig: 40, 39
offset: 0, 0
index: -1
Face3-mouth
rotate: false
xy: 833, 675
size: 36, 16
orig: 36, 16
offset: 0, 0
index: -1
Face3-nose
rotate: false
xy: 164, 682
size: 14, 9
orig: 14, 10
offset: 0, 0
index: -1
Face4-nose
rotate: false
xy: 164, 682
size: 14, 9
orig: 14, 10
offset: 0, 0
index: -1
Face5-nose
rotate: false
xy: 164, 682
size: 14, 9
orig: 14, 10
offset: 0, 0
index: -1
Face3-outlines
rotate: false
xy: 417, 135
size: 193, 166
orig: 194, 166
offset: 0, 0
index: -1
Face3-right-brow
rotate: false
xy: 182, 682
size: 29, 9
orig: 30, 9
offset: 0, 0
index: -1
Face3-right-ear
rotate: true
xy: 158, 656
size: 22, 32
orig: 22, 33
offset: 0, 0
index: -1
Face4-right-ear
rotate: true
xy: 158, 656
size: 22, 32
orig: 22, 33
offset: 0, 0
index: -1
Face5-right-ear
rotate: true
xy: 158, 656
size: 22, 32
orig: 22, 33
offset: 0, 0
index: -1
Face3-right-eye-line
rotate: false
xy: 950, 639
size: 42, 30
orig: 43, 30
offset: 1, 0
index: -1
Face3-right-sclera
rotate: false
xy: 344, 608
size: 40, 39
orig: 40, 39
offset: 0, 0
index: -1
Face4-cheeks
rotate: false
xy: 326, 679
size: 128, 12
orig: 128, 12
offset: 0, 0
index: -1
Face4-front-hair
rotate: true
xy: 473, 305
size: 188, 161
orig: 189, 161
offset: 0, 0
index: -1
Face4-left-brow
rotate: false
xy: 215, 682
size: 28, 9
orig: 30, 11
offset: 1, 1
index: -1
Face4-left-eye-lines
rotate: false
xy: 576, 597
size: 47, 46
orig: 47, 46
offset: 0, 0
index: -1
Face4-left-pinkshade
rotate: true
xy: 476, 605
size: 42, 46
orig: 44, 46
offset: 1, 0
index: -1
Face5-right-pinkshade
rotate: true
xy: 476, 605
size: 42, 46
orig: 44, 46
offset: 1, 0
index: -1
Face4-left-sclera
rotate: false
xy: 388, 607
size: 40, 40
orig: 40, 40
offset: 0, 0
index: -1
Face5-right-sclera
rotate: false
xy: 388, 607
size: 40, 40
orig: 40, 40
offset: 0, 0
index: -1
Face4-mouth
rotate: false
xy: 863, 641
size: 37, 28
orig: 37, 29
offset: 0, 1
index: -1
Face4-outlines
rotate: false
xy: 813, 74
size: 193, 175
orig: 194, 175
offset: 0, 0
index: -1
Face4-right-brow
rotate: false
xy: 247, 682
size: 28, 9
orig: 30, 11
offset: 1, 1
index: -1
Face4-right-eye-lines
rotate: false
xy: 627, 597
size: 47, 46
orig: 47, 46
offset: 0, 0
index: -1
Face4-right-pinkshade
rotate: true
xy: 526, 604
size: 43, 46
orig: 43, 46
offset: 0, 0
index: -1
Face5-left-pinkshade
rotate: true
xy: 526, 604
size: 43, 46
orig: 43, 46
offset: 0, 0
index: -1
Face4-right-sclera
rotate: false
xy: 432, 607
size: 40, 40
orig: 40, 40
offset: 0, 0
index: -1
Face5-left-sclera
rotate: false
xy: 432, 607
size: 40, 40
orig: 40, 40
offset: 0, 0
index: -1
Face5
rotate: true
xy: 140, 385
size: 126, 132
orig: 126, 132
offset: 0, 0
index: -1
Face5-cheeks
rotate: false
xy: 458, 679
size: 128, 12
orig: 128, 12
offset: 0, 0
index: -1
Face5-front-hair
rotate: false
xy: 4, 220
size: 207, 161
orig: 207, 161
offset: 0, 0
index: -1
Face5-head-glossy
rotate: true
xy: 40, 683
size: 8, 9
orig: 9, 10
offset: 0, 0
index: -1
Face5-left-brow
rotate: false
xy: 689, 678
size: 28, 13
orig: 29, 14
offset: 0, 1
index: -1
Face5-left-eye
rotate: true
xy: 695, 647
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face5-left-eye-lines
rotate: false
xy: 678, 597
size: 47, 46
orig: 47, 46
offset: 0, 0
index: -1
Face5-mouth
rotate: false
xy: 127, 617
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
Face5-outline
rotate: true
xy: 4, 4
size: 212, 175
orig: 212, 175
offset: 0, 0
index: -1
Face5-rear-hair
rotate: false
xy: 4, 529
size: 179, 82
orig: 179, 82
offset: 0, 0
index: -1
Face5-right-brow
rotate: false
xy: 721, 678
size: 28, 13
orig: 29, 14
offset: 1, 1
index: -1
Face5-right-eye
rotate: true
xy: 731, 645
size: 27, 32
orig: 27, 32
offset: 0, 0
index: -1
Face5-right-eye-lines
rotate: false
xy: 729, 594
size: 47, 46
orig: 47, 46
offset: 0, 0
index: -1
glitter1
rotate: false
xy: 4, 661
size: 20, 19
orig: 20, 20
offset: 0, 0
index: -1
glitter2
rotate: false
xy: 258, 612
size: 38, 38
orig: 38, 38
offset: 0, 0
index: -1
glitter3
rotate: false
xy: 873, 674
size: 18, 17
orig: 18, 19
offset: 0, 1
index: -1
glitter4
rotate: false
xy: 970, 673
size: 18, 18
orig: 18, 18
offset: 0, 0
index: -1
glitter5
rotate: false
xy: 992, 673
size: 18, 18
orig: 18, 18
offset: 0, 0
index: -1
glitter6
rotate: true
xy: 4, 622
size: 30, 31
orig: 30, 31
offset: 0, 0
index: -1

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.2",
"importer": "text",
"imported": true,
"uuid": "2d34d046-5376-4725-8619-542f4e77d039",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,11 @@
{
"ver": "1.2.6",
"importer": "spine-data",
"imported": true,
"uuid": "408e08ca-48e9-4cba-98a6-a3877857e7ae",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.26",
"importer": "image",
"imported": true,
"uuid": "02240ae2-49de-405f-a52f-e6af28578686",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "02240ae2-49de-405f-a52f-e6af28578686@6c48a",
"displayName": "heads",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "02240ae2-49de-405f-a52f-e6af28578686",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "02240ae2-49de-405f-a52f-e6af28578686@f9941",
"displayName": "heads",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -4.5,
"offsetY": 164.5,
"trimX": 4,
"trimY": 4,
"width": 1007,
"height": 687,
"rawWidth": 1024,
"rawHeight": 1024,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-503.5,
-343.5,
0,
503.5,
-343.5,
0,
-503.5,
343.5,
0,
503.5,
343.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
4,
1020,
1011,
1020,
4,
333,
1011,
333
],
"nuv": [
0.00390625,
0.3251953125,
0.9873046875,
0.3251953125,
0.00390625,
0.99609375,
0.9873046875,
0.99609375
],
"minPos": [
-503.5,
-343.5,
0
],
"maxPos": [
503.5,
343.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "02240ae2-49de-405f-a52f-e6af28578686@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "02240ae2-49de-405f-a52f-e6af28578686@f9941"
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "a9506370-329b-447b-a428-d6bac33b7aa3",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,13 @@
lucky chain.png
size: 256,128
format: RGBA8888
filter: Linear,Linear
repeat: none
card1
rotate: false
xy: 4, 4
size: 126, 98
orig: 126, 98
offset: 0, 0
index: -1

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.2",
"importer": "text",
"imported": true,
"uuid": "3fbcadbe-992c-4d94-b878-f9be6e0b4432",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,650 @@
{
"skeleton": {
"hash": "BcZ2FibnrssyNN7bNZF6FotzWBw",
"spine": "3.8.99",
"x": -470,
"y": -442.5,
"width": 948,
"height": 904,
"images": "",
"audio": "D:/Huy 2D Animation/works/2024/Product/Galaxy Seeker/Reward Animation/lucky chain"
},
"bones": [
{
"name": "root"
},
{
"name": "pivot",
"parent": "root"
},
{
"name": "frame-pivot",
"parent": "pivot"
},
{
"name": "cards-pivot",
"parent": "frame-pivot"
},
{
"name": "card1",
"parent": "cards-pivot",
"x": -259.5,
"y": 297.5
},
{
"name": "card2",
"parent": "cards-pivot",
"x": 267.5,
"y": 297.5
},
{
"name": "card3",
"parent": "cards-pivot",
"x": 267.5,
"y": -278.5
},
{
"name": "card4",
"parent": "cards-pivot",
"x": -259.5,
"y": -278.5
},
{
"name": "card5",
"parent": "cards-pivot",
"x": -259.5,
"y": -278.5
}
],
"slots": [
{
"name": "card5",
"bone": "card5",
"color": "ffffff00",
"attachment": "card1"
},
{
"name": "card4",
"bone": "card4",
"attachment": "card1"
},
{
"name": "card3",
"bone": "card3",
"attachment": "card1"
},
{
"name": "card2",
"bone": "card2",
"attachment": "card1"
},
{
"name": "card1",
"bone": "card1",
"attachment": "card1"
},
{
"name": "card2-orange",
"bone": "card2",
"color": "ffffff00",
"attachment": "card1"
},
{
"name": "card1-glow",
"bone": "card1",
"color": "ffffff00",
"attachment": "card1",
"blend": "additive"
}
],
"skins": [
{
"name": "default",
"attachments": {
"card1": {
"card1": {
"width": 421,
"height": 328
}
},
"card1-glow": {
"card1": {
"width": 421,
"height": 328
}
},
"card2": {
"card1": {
"width": 421,
"height": 328
}
},
"card2-orange": {
"card1": {
"width": 421,
"height": 328
}
},
"card3": {
"card1": {
"width": 421,
"height": 328
}
},
"card4": {
"card1": {
"width": 421,
"height": 328
}
},
"card5": {
"card1": {
"width": 421,
"height": 328
}
}
}
}
],
"events": {
"card-claimed": {},
"new-card-spawned": {},
"card-appear": {}
},
"animations": {
"active": {
"slots": {
"card1": {
"color": [
{
"time": 0.2,
"color": "ffffffff",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.4,
"color": "ffffff00"
}
]
},
"card1-glow": {
"color": [
{
"color": "ffffff00",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.0667,
"color": "ffffffff",
"curve": "stepped"
},
{
"time": 0.2,
"color": "ffffffff",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.4,
"color": "ffffff00"
}
]
},
"card2": {
"color": [
{
"color": "dadadaff",
"curve": "stepped"
},
{
"time": 0.4,
"color": "dadadaff",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.7,
"color": "ffffffff"
}
]
},
"card2-orange": {
"color": [
{
"time": 0.7,
"color": "ffffff00",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.9,
"color": "ffffffff"
}
]
},
"card3": {
"color": [
{
"color": "989898ff",
"curve": "stepped"
},
{
"time": 0.6,
"color": "989898ff",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.7667,
"color": "dadadaff"
}
]
},
"card4": {
"color": [
{
"color": "797979ff",
"curve": "stepped"
},
{
"time": 0.6,
"color": "797979ff",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.7667,
"color": "808080ff"
}
]
},
"card5": {
"color": [
{
"color": "79797900",
"curve": "stepped"
},
{
"time": 0.7,
"color": "79797900",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.8,
"color": "797979ff"
}
]
}
},
"bones": {
"card1": {
"scale": [
{
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.1333,
"x": 0.9,
"y": 0.95,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.4,
"x": 1.2,
"y": 1.2
}
]
},
"card2": {
"translate": [
{
"time": 0.4,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.5,
"x": 12.5,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.7,
"x": -567.5,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.9,
"x": -527
}
]
},
"card3": {
"translate": [
{
"time": 0.6,
"curve": 0,
"c2": 0.79,
"c3": 0.75
},
{
"time": 0.7667,
"y": 576
}
]
},
"card4": {
"translate": [
{
"time": 0.6,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.7667,
"x": 527
}
]
},
"card5": {
"scale": [
{
"x": 0.9,
"y": 0.9,
"curve": "stepped"
},
{
"time": 0.7,
"x": 0.9,
"y": 0.9,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.9,
"x": 1.1,
"y": 1.1,
"curve": 0.25,
"c3": 0.75
},
{
"time": 1.1
}
]
}
},
"events": [
{
"time": 0.4,
"name": "card-claimed"
},
{
"time": 0.8,
"name": "new-card-spawned"
}
]
},
"appear": {
"slots": {
"card1": {
"color": [
{
"color": "ffffff00",
"curve": "stepped"
},
{
"time": 0.5,
"color": "ffffff00",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.6333,
"color": "ffffffff"
}
]
},
"card2": {
"color": [
{
"color": "dadada00",
"curve": "stepped"
},
{
"time": 0.6,
"color": "dadada00",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.7333,
"color": "dadadaff"
}
]
},
"card3": {
"color": [
{
"color": "98989800",
"curve": "stepped"
},
{
"time": 0.7333,
"color": "98989800",
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.8667,
"color": "989898ff"
}
]
},
"card4": {
"color": [
{
"color": "79797900",
"curve": "stepped"
},
{
"time": 0.9,
"color": "79797900",
"curve": 0.25,
"c3": 0.75
},
{
"time": 1.0333,
"color": "797979ff"
}
]
}
},
"bones": {
"card4": {
"scale": [
{
"x": 0.8,
"y": 0.8,
"curve": "stepped"
},
{
"time": 0.9,
"x": 0.8,
"y": 0.8,
"curve": 0.25,
"c3": 0.75
},
{
"time": 1.0333,
"x": 1.1,
"y": 1.1,
"curve": 0.25,
"c3": 0.75
},
{
"time": 1.4
}
]
},
"card3": {
"scale": [
{
"x": 0.8,
"y": 0.8,
"curve": "stepped"
},
{
"time": 0.7333,
"x": 0.8,
"y": 0.8,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.8667,
"x": 1.1,
"y": 1.1,
"curve": 0.25,
"c3": 0.75
},
{
"time": 1.2333
}
]
},
"card2": {
"scale": [
{
"x": 0.8,
"y": 0.8,
"curve": "stepped"
},
{
"time": 0.6,
"x": 0.8,
"y": 0.8,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.7333,
"x": 1.1,
"y": 1.1,
"curve": 0.25,
"c3": 0.75
},
{
"time": 1.1
}
]
},
"card1": {
"scale": [
{
"x": 0.8,
"y": 0.8,
"curve": "stepped"
},
{
"time": 0.5,
"x": 0.8,
"y": 0.8,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.6333,
"x": 1.1,
"y": 1.1,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.8,
"x": 0.95,
"y": 0.95,
"curve": 0.25,
"c3": 0.75
},
{
"time": 1
}
]
},
"frame-pivot": {
"translate": [
{
"y": -100,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.2,
"y": 50,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.4
}
],
"scale": [
{
"x": 0.8,
"y": 0.8,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.2,
"x": 1.1,
"y": 1.1,
"curve": 0.25,
"c3": 0.75
},
{
"time": 0.4
}
]
}
},
"events": [
{
"time": 0.6333,
"name": "card-appear"
}
]
},
"idle": {
"slots": {
"card2": {
"color": [
{
"color": "dadadaff"
}
]
},
"card3": {
"color": [
{
"color": "989898ff"
}
]
},
"card4": {
"color": [
{
"color": "7a7a7aff"
}
]
}
}
}
}
}

View File

@ -0,0 +1,11 @@
{
"ver": "1.2.6",
"importer": "spine-data",
"imported": true,
"uuid": "6ff5b217-d36e-4bb4-b934-63a4c6d4bbca",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.26",
"importer": "image",
"imported": true,
"uuid": "3b1daf2a-906f-4987-9b18-1f67d771b082",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "3b1daf2a-906f-4987-9b18-1f67d771b082@6c48a",
"displayName": "lucky chain",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "3b1daf2a-906f-4987-9b18-1f67d771b082",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "3b1daf2a-906f-4987-9b18-1f67d771b082@f9941",
"displayName": "lucky chain",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -61,
"offsetY": 11,
"trimX": 4,
"trimY": 4,
"width": 126,
"height": 98,
"rawWidth": 256,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-63,
-49,
0,
63,
-49,
0,
-63,
49,
0,
63,
49,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
4,
124,
130,
124,
4,
26,
130,
26
],
"nuv": [
0.015625,
0.203125,
0.5078125,
0.203125,
0.015625,
0.96875,
0.5078125,
0.96875
],
"minPos": [
-63,
-49,
0
],
"maxPos": [
63,
49,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "3b1daf2a-906f-4987-9b18-1f67d771b082@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "3b1daf2a-906f-4987-9b18-1f67d771b082@f9941"
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "a8f96f45-df25-4d90-a0c6-fb7446ac362a",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,48 @@
lucky-chest.png
size: 1024,512
format: RGBA8888
filter: Linear,Linear
repeat: none
chest-lid
rotate: true
xy: 527, 304
size: 201, 112
orig: 201, 112
offset: 0, 0
index: -1
glitter-vfx
rotate: true
xy: 4, 185
size: 320, 317
orig: 339, 323
offset: 6, 0
index: -1
lower-chest
rotate: false
xy: 4, 4
size: 189, 177
orig: 189, 177
offset: 0, 0
index: -1
orange-glow1
rotate: true
xy: 325, 234
size: 271, 198
orig: 285, 216
offset: 7, 9
index: -1
orange-glow2
rotate: false
xy: 406, 32
size: 271, 198
orig: 285, 216
offset: 7, 9
index: -1
yellow-glow2
rotate: false
xy: 197, 70
size: 205, 111
orig: 211, 118
offset: 3, 3
index: -1

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.2",
"importer": "text",
"imported": true,
"uuid": "c24620c9-3cca-45b7-a312-68f369ad3663",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,265 @@
{
"skeleton": {
"hash": "zFG55+Ztt8KQnB+5nVHgIyvt+Ck",
"spine": "3.8.99",
"x": -305.95,
"y": -104.5,
"width": 691.64,
"height": 668.84,
"images": "",
"audio": "D:/Huy 2D Animation/works/2024/Product/Galaxy Seeker/Reward Animation/lucky-chest"
},
"bones": [
{ "name": "root" },
{ "name": "pivot", "parent": "root" },
{ "name": "lower-chest", "parent": "pivot", "length": 165.62, "rotation": 90, "x": 25, "y": -60 },
{ "name": "chest-lid", "parent": "lower-chest", "length": 155.21, "x": 180, "y": 35 },
{ "name": "chest-lid2", "parent": "lower-chest", "length": 425.29, "rotation": -79.62, "x": 284.38, "y": 326.62 },
{ "name": "chest-lid3", "parent": "chest-lid2", "length": 177.55, "rotation": 85.02, "x": 79.17, "y": 23.44 },
{ "name": "glitter-vfx", "parent": "pivot", "x": 25, "y": 140 },
{ "name": "chest-vfx", "parent": "lower-chest", "x": 201.94, "y": 21.9 },
{ "name": "gift", "parent": "lower-chest", "x": 198.3, "y": 30.03 }
],
"slots": [
{ "name": "lower-chest", "bone": "lower-chest", "attachment": "lower-chest" },
{ "name": "glitter-vfx", "bone": "glitter-vfx", "color": "ffffff00", "attachment": "glitter-vfx", "blend": "additive" },
{ "name": "orange-glow1", "bone": "chest-vfx", "color": "ffffff00", "attachment": "orange-glow1" },
{ "name": "orange-glow2", "bone": "chest-vfx", "color": "ffffff00", "attachment": "orange-glow2" },
{ "name": "yellow-glow2", "bone": "chest-vfx", "color": "ffffff00", "attachment": "yellow-glow2" },
{ "name": "chest-lid", "bone": "chest-lid", "attachment": "chest-lid" }
],
"skins": [
{
"name": "default",
"attachments": {
"chest-lid": {
"chest-lid": { "x": 62.22, "y": -10, "rotation": -90, "width": 402, "height": 223 }
},
"glitter-vfx": {
"glitter-vfx": { "x": 22.2, "y": 101.34, "width": 677, "height": 646 }
},
"lower-chest": {
"lower-chest": { "x": 132, "y": 25, "rotation": -90, "width": 378, "height": 353 }
},
"orange-glow1": {
"orange-glow1": { "x": 6.85, "y": 24.54, "rotation": -90, "width": 569, "height": 431 }
},
"orange-glow2": {
"orange-glow2": { "x": -3.12, "y": 11.51, "rotation": -90, "width": 569, "height": 431 }
},
"yellow-glow2": {
"yellow-glow2": { "x": 23.09, "y": -2.3, "rotation": -90, "width": 422, "height": 235 }
}
}
}
],
"events": {
"open": {}
},
"animations": {
"appear": {
"slots": {
"chest-lid": {
"color": [
{ "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.1333, "color": "ffffffff" }
]
},
"lower-chest": {
"color": [
{ "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.1333, "color": "ffffffff" }
]
}
},
"bones": {
"pivot": {
"scale": [
{ "x": 0.7, "y": 0.7, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "x": 1.1, "y": 1.1, "curve": 0.25, "c3": 0.75 },
{ "time": 0.5 }
]
}
}
},
"idle": {
"bones": {
"pivot": {
"scale": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.4, "x": 1.02, "y": 1.02, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8 }
]
},
"chest-lid": {
"translate": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "x": 4.89, "curve": 0.25, "c3": 0.75 },
{ "time": 0.5333, "x": -7.33, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8 }
]
}
}
},
"open": {
"slots": {
"chest-lid": {
"color": [
{ "time": 0.6667, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.7333, "color": "ffffff00" }
]
},
"glitter-vfx": {
"color": [
{ "time": 0.7, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.7667, "color": "ffffffff", "curve": "stepped" },
{ "time": 0.9, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 1.3, "color": "ffffff00" }
]
},
"orange-glow1": {
"color": [
{ "time": 0.6667, "color": "ffffff00", "curve": 0, "c2": 0.35, "c3": 0.75 },
{ "time": 0.9, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 2, "color": "ffffff00" }
]
},
"orange-glow2": {
"color": [
{ "time": 0.6667, "color": "ffffff00", "curve": 0, "c2": 0.35, "c3": 0.75 },
{ "time": 0.9, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 2, "color": "ffffff00" }
]
},
"yellow-glow2": {
"color": [
{ "time": 0.6667, "color": "ffffff00", "curve": 0, "c2": 0.35, "c3": 0.75 },
{ "time": 0.9, "color": "ffffffff", "curve": 0.25, "c3": 0.75 },
{ "time": 2, "color": "ffffff00" }
]
}
},
"bones": {
"pivot": {
"rotate": [
{ "time": 0.7, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8333, "angle": 2.85, "curve": 0.25, "c3": 0.75 },
{ "time": 0.9667, "angle": -1.62, "curve": 0.25, "c3": 0.75 },
{ "time": 1.1, "angle": 1.81, "curve": 0.25, "c3": 0.75 },
{ "time": 1.2667 }
],
"translate": [
{ "time": 0.7, "curve": 0.25, "c3": 0.75 },
{ "time": 0.7667, "y": 46.56, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8333, "curve": 0.25, "c3": 0.75 },
{ "time": 0.9667, "y": 6.65, "curve": 0.25, "c3": 0.75 },
{ "time": 1.0667, "curve": 0.25, "c3": 0.75 },
{ "time": 1.1667, "y": 2.22, "curve": 0.25, "c3": 0.75 },
{ "time": 1.3 }
],
"scale": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.7, "x": 0.9, "y": 0.9, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8, "x": 1.1, "y": 1.1, "curve": 0.25, "c3": 0.75 },
{ "time": 1 }
]
},
"lower-chest": {
"translate": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.1, "x": -2.42, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2, "x": 12.33, "y": -7.37, "curve": 0.25, "c3": 0.75 },
{ "time": 0.3, "x": 4.81, "y": 0.14, "curve": 0.25, "c3": 0.75 },
{ "time": 0.4, "x": 8.82, "y": 2.81, "curve": 0.25, "c3": 0.75 },
{ "time": 0.5, "x": 3.37, "y": 1.45, "curve": 0.25, "c3": 0.75 },
{ "time": 0.6, "x": 7.52, "y": -4.08, "curve": 0.25, "c3": 0.75 },
{ "time": 0.7, "x": 10.31, "y": 1.49, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8 }
]
},
"chest-lid": {
"translate": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.1, "x": -5.48, "y": -7.31, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2, "x": -9.2, "y": 3.82, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "x": -3.56, "y": 13.21, "curve": 0.25, "c3": 0.75 },
{ "time": 0.3333, "x": -5.46, "y": 3.7, "curve": 0.25, "c3": 0.75 },
{ "time": 0.4, "x": -11.25, "y": -2.09, "curve": 0.25, "c3": 0.75 },
{ "time": 0.4667, "x": -9.3, "y": 3.77, "curve": 0.25, "c3": 0.75 },
{ "time": 0.5333, "x": -3.36, "y": -2.16, "curve": 0.25, "c3": 0.75 },
{ "time": 0.6, "x": -9.36, "y": 1.84, "curve": 0.25, "c3": 0.75 },
{ "time": 0.6667, "x": -31.49, "y": 5.86, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8 }
]
},
"chest-lid2": {
"rotate": [
{ "time": 0.6667, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8, "angle": 4.28, "curve": 0.25, "c3": 0.75 },
{ "time": 0.9333, "angle": -7.73, "curve": 0.25, "c3": 0.75 },
{ "time": 1.1 }
],
"translate": [
{ "time": 0.6667, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8333, "x": -3.91, "y": 3.78, "curve": 0.25, "c3": 0.75 },
{ "time": 0.9667, "x": 4.44, "y": 14.77, "curve": 0.25, "c3": 0.75 },
{ "time": 1.1333 }
],
"scale": [
{ "time": 0.6667, "curve": 0.25, "c3": 0.75 },
{ "time": 0.7667, "x": 0.984, "y": 1.127, "curve": 0.25, "c3": 0.75 },
{ "time": 1 }
],
"shear": [
{ "time": 0.6667, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8, "x": -2.21, "y": 4.37, "curve": 0.25, "c3": 0.75 },
{ "time": 0.9333, "x": 2.3, "y": 2.71, "curve": 0.25, "c3": 0.75 },
{ "time": 1.1 }
]
},
"chest-lid3": {
"scale": [
{ "time": 0.7, "curve": 0.25, "c3": 0.75 },
{ "time": 0.7667, "x": 0.817, "y": 0.721, "curve": 0.25, "c3": 0.75 },
{ "time": 1 }
],
"shear": [
{ "time": 0.7, "curve": 0.25, "c3": 0.75 },
{ "time": 0.8, "x": 7.69, "y": -14.24, "curve": 0.25, "c3": 0.75 },
{ "time": 0.9333, "x": -6.27, "y": 5.08, "curve": 0.25, "c3": 0.75 },
{ "time": 1.1 }
]
},
"glitter-vfx": {
"rotate": [
{ "time": 0.6333, "curve": 0.25, "c3": 0.75 },
{ "time": 1.4, "angle": -67.1, "curve": "stepped" },
{ "time": 1.5, "angle": -67.1, "curve": 0.25, "c3": 0.75 },
{ "time": 1.6333 }
],
"translate": [
{ "x": 22.9, "y": 24.3 }
],
"scale": [
{ "x": 0.5, "y": 0.5, "curve": "stepped" },
{ "time": 0.7, "x": 0.5, "y": 0.5, "curve": 0, "c2": 0.89, "c3": 0.75 },
{ "time": 1.3, "x": 1.757, "y": 1.757 }
]
},
"gift": {
"translate": [
{ "time": 0.7, "curve": 0.25, "c3": 0.75 },
{ "time": 0.9, "x": 72.4 }
],
"scale": [
{ "time": 0.7, "curve": 0.25, "c3": 0.75 },
{ "time": 0.9, "x": 1.3, "y": 1.3 }
]
}
},
"events": [
{ "time": 0.8, "name": "open" }
]
}
}
}

View File

@ -0,0 +1,11 @@
{
"ver": "1.2.6",
"importer": "spine-data",
"imported": true,
"uuid": "1d0f299b-6898-4cc4-8c85-f9ce62349681",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.26",
"importer": "image",
"imported": true,
"uuid": "fb95c189-1334-4922-ade5-cb42b3a41d41",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "fb95c189-1334-4922-ade5-cb42b3a41d41@6c48a",
"displayName": "lucky-chest",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "fb95c189-1334-4922-ade5-cb42b3a41d41",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "fb95c189-1334-4922-ade5-cb42b3a41d41@f9941",
"displayName": "lucky-chest",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -171.5,
"offsetY": 1.5,
"trimX": 4,
"trimY": 4,
"width": 673,
"height": 501,
"rawWidth": 1024,
"rawHeight": 512,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-336.5,
-250.5,
0,
336.5,
-250.5,
0,
-336.5,
250.5,
0,
336.5,
250.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
4,
508,
677,
508,
4,
7,
677,
7
],
"nuv": [
0.00390625,
0.013671875,
0.6611328125,
0.013671875,
0.00390625,
0.9921875,
0.6611328125,
0.9921875
],
"minPos": [
-336.5,
-250.5,
0
],
"maxPos": [
336.5,
250.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "fb95c189-1334-4922-ade5-cb42b3a41d41@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "fb95c189-1334-4922-ade5-cb42b3a41d41@f9941"
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "fb355c9c-1689-40b9-ad64-e80d23e3adab",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,20 @@
random-flip-card.png
size: 1024,1024
format: RGBA8888
filter: Linear,Linear
repeat: none
back
rotate: false
xy: 4, 4
size: 443, 585
orig: 443, 585
offset: 0, 0
index: -1
front
rotate: false
xy: 451, 4
size: 443, 585
orig: 443, 585
offset: 0, 0
index: -1

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.2",
"importer": "text",
"imported": true,
"uuid": "25828842-5777-482d-8261-e35c71845053",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,185 @@
{
"skeleton": {
"hash": "pM2k1yJ9HBzPuOWa6eXbzr6Ff30",
"spine": "3.8.99",
"x": -471.5,
"y": -42.5,
"width": 943,
"height": 585,
"images": "",
"audio": ""
},
"bones": [
{ "name": "root" },
{ "name": "card1", "parent": "root", "x": -250, "y": 250 },
{ "name": "card2", "parent": "root", "x": 250, "y": 250 },
{ "name": "card1-flip", "parent": "card1" },
{ "name": "card2-flip", "parent": "card2" }
],
"slots": [
{ "name": "front1", "bone": "card1-flip", "color": "ffffff00", "attachment": "front" },
{ "name": "front2", "bone": "card2-flip", "color": "ffffff00", "attachment": "front" },
{ "name": "back1", "bone": "card1-flip", "attachment": "back" },
{ "name": "back2", "bone": "card2-flip", "attachment": "back" }
],
"skins": [
{
"name": "default",
"attachments": {
"back1": {
"back": { "width": 443, "height": 585 }
},
"back2": {
"back": { "width": 443, "height": 585 }
},
"front1": {
"front": { "width": 443, "height": 585 }
},
"front2": {
"front": { "width": 443, "height": 585 }
}
}
}
],
"events": {
"card1-active": {},
"card2-active": {},
"card3-active": {},
"card4-active": {}
},
"animations": {
"appear": {
"slots": {
"back1": {
"color": [
{ "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.1333, "color": "ffffffff" }
]
},
"back2": {
"color": [
{ "color": "ffffff00", "curve": "stepped" },
{ "time": 0.1667, "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.3, "color": "ffffffff" }
]
},
"front2": {
"color": [
{ "time": 0.8, "color": "ffffff00" }
]
}
},
"bones": {
"card1": {
"translate": [
{ "y": -200.13, "curve": 0.25, "c3": 0.75 },
{ "time": 0.1667, "y": 77.24, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "y": -17.55, "curve": 0.25, "c3": 0.75 },
{ "time": 0.4 }
],
"scale": [
{ "x": 0.5, "y": 0.5, "curve": 0.25, "c3": 0.75 },
{ "time": 0.1, "x": 1.1, "y": 1.1, "curve": 0.25, "c3": 0.75 },
{ "time": 0.3 }
]
},
"card2": {
"translate": [
{ "y": -200.13, "curve": "stepped" },
{ "time": 0.1667, "y": -200.13, "curve": 0.25, "c3": 0.75 },
{ "time": 0.3333, "y": 77.24, "curve": 0.25, "c3": 0.75 },
{ "time": 0.4333, "y": -17.55, "curve": 0.25, "c3": 0.75 },
{ "time": 0.5667 }
],
"scale": [
{ "x": 0.5, "y": 0.5, "curve": "stepped" },
{ "time": 0.1667, "x": 0.5, "y": 0.5, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "x": 1.1, "y": 1.1, "curve": 0.25, "c3": 0.75 },
{ "time": 0.4667 }
]
}
}
},
"card1-active": {
"slots": {
"back1": {
"color": [
{ "color": "ffffffff", "curve": "stepped" },
{ "time": 0.1333, "color": "ffffff00" }
]
},
"front1": {
"color": [
{ "color": "ffffff00", "curve": "stepped" },
{ "time": 0.1333, "color": "ffffffff" }
]
}
},
"bones": {
"card1": {
"scale": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.0667, "x": 0.9, "y": 0.9, "curve": 0.25, "c3": 0.75 },
{ "time": 0.1667, "x": 1.152, "y": 1.152, "curve": 0.25, "c3": 0.75 },
{ "time": 0.3 }
]
},
"card1-flip": {
"scale": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.1333, "x": 0, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667 }
]
}
},
"events": [
{ "time": 0.1, "name": "card1-active" }
]
},
"card2-active": {
"slots": {
"back2": {
"color": [
{ "color": "ffffffff", "curve": "stepped" },
{ "time": 0.1333, "color": "ffffff00" }
]
},
"front2": {
"color": [
{ "color": "ffffff00", "curve": "stepped" },
{ "time": 0.1333, "color": "ffffffff" }
]
}
},
"bones": {
"card2": {
"scale": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.0667, "x": 0.9, "y": 0.9, "curve": 0.25, "c3": 0.75 },
{ "time": 0.1667, "x": 1.152, "y": 1.152, "curve": 0.25, "c3": 0.75 },
{ "time": 0.3 }
]
},
"card2-flip": {
"scale": [
{ "curve": 0.25, "c3": 0.75 },
{ "time": 0.1333, "x": 0, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667 }
]
}
},
"events": [
{ "time": 0.1, "name": "card2-active" }
]
},
"idle": {
"slots": {
"front2": {
"color": [
{ "time": 0.0667, "color": "ffffff00" }
]
}
}
}
}
}

View File

@ -0,0 +1,11 @@
{
"ver": "1.2.6",
"importer": "spine-data",
"imported": true,
"uuid": "1df74001-0dae-4b7f-b452-b2b736175924",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.26",
"importer": "image",
"imported": true,
"uuid": "b1c0433a-7a24-48ed-8b60-b7c96e5ad4cb",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "b1c0433a-7a24-48ed-8b60-b7c96e5ad4cb@6c48a",
"displayName": "random-flip-card",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "b1c0433a-7a24-48ed-8b60-b7c96e5ad4cb",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "b1c0433a-7a24-48ed-8b60-b7c96e5ad4cb@f9941",
"displayName": "random-flip-card",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -63,
"offsetY": 215.5,
"trimX": 4,
"trimY": 4,
"width": 890,
"height": 585,
"rawWidth": 1024,
"rawHeight": 1024,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-445,
-292.5,
0,
445,
-292.5,
0,
-445,
292.5,
0,
445,
292.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
4,
1020,
894,
1020,
4,
435,
894,
435
],
"nuv": [
0.00390625,
0.4248046875,
0.873046875,
0.4248046875,
0.00390625,
0.99609375,
0.873046875,
0.99609375
],
"minPos": [
-445,
-292.5,
0
],
"maxPos": [
445,
292.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "b1c0433a-7a24-48ed-8b60-b7c96e5ad4cb@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "b1c0433a-7a24-48ed-8b60-b7c96e5ad4cb@f9941"
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "89a2d7dc-1ae2-4d72-8877-228f57944001",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,27 @@
lucky-spin.png
size: 1024,512
format: RGBA8888
filter: Linear,Linear
repeat: none
base
rotate: false
xy: 4, 4
size: 486, 486
orig: 486, 486
offset: 0, 0
index: -1
button
rotate: false
xy: 910, 381
size: 97, 109
orig: 97, 109
offset: 0, 0
index: -1
wheel
rotate: false
xy: 494, 78
size: 412, 412
orig: 412, 412
offset: 0, 0
index: -1

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.2",
"importer": "text",
"imported": true,
"uuid": "96626b27-c1fb-403d-a63b-91a3e38d4546",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,107 @@
{
"skeleton": {
"hash": "kuwiiYiHn+xO3We/O+NiwTWnKs4",
"spine": "3.8.99",
"x": -485.5,
"y": -485.5,
"width": 971,
"height": 971,
"images": "",
"audio": "D:/Huy 2D Animation/works/2024/Product/Galaxy Seeker/Reward Animation/lucky-spin"
},
"bones": [
{ "name": "root" },
{ "name": "pivot", "parent": "root" },
{ "name": "wheel", "parent": "pivot", "length": 415.93 },
{ "name": "spin-button", "parent": "pivot" },
{ "name": "slot01", "parent": "wheel", "length": 80, "rotation": -75, "x": 225.73, "y": 98.61 },
{ "name": "slot02", "parent": "wheel", "length": 80, "rotation": -30, "x": 89.89, "y": 229.34 },
{ "name": "slot03", "parent": "wheel", "length": 80, "rotation": 15, "x": -98.61, "y": 225.73 },
{ "name": "slot04", "parent": "wheel", "length": 80, "rotation": 60, "x": -229.34, "y": 89.89 },
{ "name": "slot05", "parent": "wheel", "length": 80, "rotation": 105, "x": -225.73, "y": -98.61 },
{ "name": "slot06", "parent": "wheel", "length": 80, "rotation": 150, "x": -89.89, "y": -229.34 },
{ "name": "slot07", "parent": "wheel", "length": 80, "rotation": -165, "x": 98.61, "y": -225.73 },
{ "name": "slot08", "parent": "wheel", "length": 80, "rotation": -120, "x": 229.34, "y": -89.89 }
],
"slots": [
{ "name": "base", "bone": "pivot", "attachment": "base" },
{ "name": "wheel", "bone": "wheel", "attachment": "wheel" },
{ "name": "button", "bone": "spin-button", "attachment": "button" }
],
"skins": [
{
"name": "default",
"attachments": {
"base": {
"base": { "width": 971, "height": 971 }
},
"button": {
"button": { "width": 193, "height": 218 }
},
"wheel": {
"wheel": { "width": 824, "height": 824 }
}
}
}
],
"animations": {
"appear": {
"slots": {
"base": {
"color": [
{ "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.1667, "color": "ffffffff" }
]
},
"button": {
"color": [
{ "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.1667, "color": "ffffffff" }
]
},
"wheel": {
"color": [
{ "color": "ffffff00", "curve": 0.25, "c3": 0.75 },
{ "time": 0.1667, "color": "ffffffff" }
]
}
},
"bones": {
"pivot": {
"scale": [
{ "x": 0.8, "y": 0.8, "curve": 0.25, "c3": 0.75 },
{ "time": 0.2667, "x": 1.1, "y": 1.1, "curve": 0.25, "c3": 0.75 },
{ "time": 0.5333 }
]
}
}
},
"idle": {
"bones": {
"wheel": {
"rotate": [
{},
{ "time": 3.3333, "angle": 90 },
{ "time": 6.6667, "angle": 180 },
{ "time": 10, "angle": -90 },
{ "time": 13.3333 }
]
}
}
},
"spin": {
"bones": {
"wheel": {
"rotate": [
{},
{ "time": 0.1333, "angle": -90 },
{ "time": 0.2667, "angle": 180 },
{ "time": 0.4, "angle": 90 },
{ "time": 0.5333 }
]
}
}
},
"stop": {}
}
}

View File

@ -0,0 +1,11 @@
{
"ver": "1.2.6",
"importer": "spine-data",
"imported": true,
"uuid": "1ea3636d-33de-4b14-8b9b-ee47ca06f51a",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.26",
"importer": "image",
"imported": true,
"uuid": "6c3b7d1f-aee7-41ff-84c7-15ebdcdb39f8",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "6c3b7d1f-aee7-41ff-84c7-15ebdcdb39f8@6c48a",
"displayName": "lucky-spin",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "6c3b7d1f-aee7-41ff-84c7-15ebdcdb39f8",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "6c3b7d1f-aee7-41ff-84c7-15ebdcdb39f8@f9941",
"displayName": "lucky-spin",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -6.5,
"offsetY": 9,
"trimX": 4,
"trimY": 4,
"width": 1003,
"height": 486,
"rawWidth": 1024,
"rawHeight": 512,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-501.5,
-243,
0,
501.5,
-243,
0,
-501.5,
243,
0,
501.5,
243,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
4,
508,
1007,
508,
4,
22,
1007,
22
],
"nuv": [
0.00390625,
0.04296875,
0.9833984375,
0.04296875,
0.00390625,
0.9921875,
0.9833984375,
0.9921875
],
"minPos": [
-501.5,
-243,
0
],
"maxPos": [
501.5,
243,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "6c3b7d1f-aee7-41ff-84c7-15ebdcdb39f8@6c48a",
"atlasUuid": ""
},
"ver": "1.0.12",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"hasAlpha": true,
"fixAlphaTransparencyArtifacts": false,
"redirect": "6c3b7d1f-aee7-41ff-84c7-15ebdcdb39f8@f9941"
}
}

View File

@ -0,0 +1,90 @@
[
{
"__type__": "cc.AnimationClip",
"_name": "loadingscreen",
"_objFlags": 0,
"__editorExtras__": {
"embeddedPlayerGroups": []
},
"_native": "",
"sample": 60,
"speed": 1,
"wrapMode": 2,
"enableTrsBlending": false,
"_duration": 0.6666666666666666,
"_hash": 500763545,
"_tracks": [
{
"__id__": 1
}
],
"_exoticAnimation": null,
"_events": [],
"_embeddedPlayers": [],
"_additiveSettings": {
"__id__": 7
},
"_auxiliaryCurveEntries": []
},
{
"__type__": "cc.animation.ObjectTrack",
"_binding": {
"__type__": "cc.animation.TrackBinding",
"path": {
"__id__": 2
},
"proxy": null
},
"_channel": {
"__id__": 5
}
},
{
"__type__": "cc.animation.TrackPath",
"_paths": [
{
"__id__": 3
},
{
"__id__": 4
},
"string"
]
},
{
"__type__": "cc.animation.HierarchyPath",
"path": "Label"
},
{
"__type__": "cc.animation.ComponentPath",
"component": "cc.Label"
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 6
}
},
{
"__type__": "cc.ObjectCurve",
"_times": [
0,
0.16666666666666666,
0.3333333333333333,
0.5,
0.6666666666666666
],
"_values": [
"Loading",
"Loading.",
"Loading..",
"Loading...",
"Loading..."
]
},
{
"__type__": "cc.AnimationClipAdditiveSettings",
"enabled": false,
"refClip": null
}
]

View File

@ -0,0 +1,13 @@
{
"ver": "2.0.3",
"importer": "animation-clip",
"imported": true,
"uuid": "b13bfd91-4ce6-4a86-ba9f-9100296ee7de",
"files": [
".cconb"
],
"subMetas": {},
"userData": {
"name": "loadingscreen"
}
}

View File

@ -1138,7 +1138,8 @@
},
"displayName": "SECRET BOX",
"duration": 0.5,
"gachaType": 2,
"type": 1,
"gachaType": 3,
"_id": ""
},
{

View File

@ -1138,6 +1138,7 @@
},
"displayName": "SECRET BOX",
"duration": 0.5,
"type": 4,
"gachaType": 0,
"_id": ""
},

View File

@ -1138,6 +1138,7 @@
},
"displayName": "SECRET BOX",
"duration": 0.5,
"type": 3,
"gachaType": 2,
"_id": ""
},

View File

@ -1138,6 +1138,7 @@
},
"displayName": "SECRET BOX",
"duration": 0.5,
"type": 2,
"gachaType": 1,
"_id": ""
},

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
[
{
"__type__": "cc.Prefab",
"_name": "Flip_Card",
"_name": "Vital_Graden_Flip_Card",
"_objFlags": 0,
"__editorExtras__": {},
"_native": "",
@ -13,7 +13,7 @@
},
{
"__type__": "cc.Node",
"_name": "Flip_Card",
"_name": "Vital_Graden_Flip_Card",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": null,
@ -25,17 +25,17 @@
"_active": true,
"_components": [
{
"__id__": 70
"__id__": 40
},
{
"__id__": 72
"__id__": 42
},
{
"__id__": 74
"__id__": 44
}
],
"_prefab": {
"__id__": 76
"__id__": 46
},
"_lpos": {
"__type__": "cc.Vec3",
@ -85,35 +85,23 @@
"__id__": 17
},
{
"__id__": 24
"__id__": 23
}
],
"_active": true,
"_components": [
{
"__id__": 29
},
{
"__id__": 31
},
{
"__id__": 37
},
{
"__id__": 43
},
{
"__id__": 49
}
],
"_active": true,
"_components": [
{
"__id__": 55
},
{
"__id__": 57
},
{
"__id__": 67
}
],
"_prefab": {
"__id__": 69
"__id__": 39
},
"_lpos": {
"__type__": "cc.Vec3",
@ -496,7 +484,7 @@
},
{
"__type__": "cc.Node",
"_name": "Button-3",
"_name": "Card-1",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
@ -513,357 +501,7 @@
}
],
"_prefab": {
"__id__": 23
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 250.00001525878906,
"y": -250,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 2.185569414336889e-8,
"w": 0.9999999999999996
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1.0000000000000038,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0.000002504478065487657
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 17
},
"_enabled": true,
"__prefab": {
"__id__": 19
},
"_contentSize": {
"__type__": "cc.Size",
"width": 400,
"height": 400
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "02zTpiG2JE2IBcUwy8i63r"
},
{
"__type__": "cc.Button",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 17
},
"_enabled": true,
"__prefab": {
"__id__": 21
},
"clickEvents": [
{
"__id__": 22
}
],
"_interactable": true,
"_transition": 0,
"_normalColor": {
"__type__": "cc.Color",
"r": 214,
"g": 214,
"b": 214,
"a": 255
},
"_hoverColor": {
"__type__": "cc.Color",
"r": 211,
"g": 211,
"b": 211,
"a": 255
},
"_pressedColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_disabledColor": {
"__type__": "cc.Color",
"r": 124,
"g": 124,
"b": 124,
"a": 255
},
"_normalSprite": {
"__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_hoverSprite": {
"__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_pressedSprite": {
"__uuid__": "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_disabledSprite": {
"__uuid__": "951249e0-9f16-456d-8b85-a6ca954da16b@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_duration": 0.1,
"_zoomScale": 1.2,
"_target": {
"__id__": 17
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "0c2ftBA4lFSKD1TPMSABst"
},
{
"__type__": "cc.ClickEvent",
"target": {
"__id__": 1
},
"component": "",
"_componentId": "818c6yH+wVE1oYz6IfUAKq1",
"handler": "open",
"customEventData": "3"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "e9si110ExNy7wrjmf4a7ql",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "Button-4",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 2
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 25
},
{
"__id__": 27
}
],
"_prefab": {
"__id__": 30
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -249.99998474121094,
"y": -250,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 2.185569414336889e-8,
"w": 0.9999999999999996
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1.0000000000000038,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0.000002504478065487657
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 24
},
"_enabled": true,
"__prefab": {
"__id__": 26
},
"_contentSize": {
"__type__": "cc.Size",
"width": 400,
"height": 400
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "b5ON4SLzVGWaoa7fd0CCUK"
},
{
"__type__": "cc.Button",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 24
},
"_enabled": true,
"__prefab": {
"__id__": 28
},
"clickEvents": [
{
"__id__": 29
}
],
"_interactable": true,
"_transition": 0,
"_normalColor": {
"__type__": "cc.Color",
"r": 214,
"g": 214,
"b": 214,
"a": 255
},
"_hoverColor": {
"__type__": "cc.Color",
"r": 211,
"g": 211,
"b": 211,
"a": 255
},
"_pressedColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_disabledColor": {
"__type__": "cc.Color",
"r": 124,
"g": 124,
"b": 124,
"a": 255
},
"_normalSprite": {
"__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_hoverSprite": {
"__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_pressedSprite": {
"__uuid__": "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_disabledSprite": {
"__uuid__": "951249e0-9f16-456d-8b85-a6ca954da16b@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_duration": 0.1,
"_zoomScale": 1.2,
"_target": {
"__id__": 24
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "74VLo9dydKkad+xJS+eVSi"
},
{
"__type__": "cc.ClickEvent",
"target": {
"__id__": 1
},
"component": "",
"_componentId": "818c6yH+wVE1oYz6IfUAKq1",
"handler": "open",
"customEventData": "4"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "23yXZazgdN76lLRR1wZ/Oz",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "Card-1",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 2
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 32
},
{
"__id__": 34
}
],
"_prefab": {
"__id__": 36
"__id__": 22
},
"_lpos": {
"__type__": "cc.Vec3",
@ -900,11 +538,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 31
"__id__": 17
},
"_enabled": true,
"__prefab": {
"__id__": 33
"__id__": 19
},
"_contentSize": {
"__type__": "cc.Size",
@ -928,11 +566,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 31
"__id__": 17
},
"_enabled": true,
"__prefab": {
"__id__": 35
"__id__": 21
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@ -989,14 +627,14 @@
"_active": true,
"_components": [
{
"__id__": 38
"__id__": 24
},
{
"__id__": 40
"__id__": 26
}
],
"_prefab": {
"__id__": 42
"__id__": 28
},
"_lpos": {
"__type__": "cc.Vec3",
@ -1033,11 +671,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 37
"__id__": 23
},
"_enabled": true,
"__prefab": {
"__id__": 39
"__id__": 25
},
"_contentSize": {
"__type__": "cc.Size",
@ -1061,11 +699,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 37
"__id__": 23
},
"_enabled": true,
"__prefab": {
"__id__": 41
"__id__": 27
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@ -1110,272 +748,6 @@
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "Card-3",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 2
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 44
},
{
"__id__": 46
}
],
"_prefab": {
"__id__": 48
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 250.00001525878906,
"y": -250,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 3.278353943869637e-8,
"w": 0.9999999999999989
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1.0000000000000084,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0.00000375671689467597
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 43
},
"_enabled": true,
"__prefab": {
"__id__": 45
},
"_contentSize": {
"__type__": "cc.Size",
"width": 150,
"height": 150
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "72yMpuDOpOX7SmF/QYitU0"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 43
},
"_enabled": true,
"__prefab": {
"__id__": 47
},
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_spriteFrame": null,
"_type": 0,
"_fillType": 0,
"_sizeMode": 1,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": null,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "30VVk6d5dNrqQkSPOBCj3E"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "1dclcCdGBM0bF00bEJLCjp",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "Card-4",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 2
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 50
},
{
"__id__": 52
}
],
"_prefab": {
"__id__": 54
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -249.99998474121094,
"y": -250,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 3.278353943869637e-8,
"w": 0.9999999999999989
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1.0000000000000084,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0.00000375671689467597
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 49
},
"_enabled": true,
"__prefab": {
"__id__": 51
},
"_contentSize": {
"__type__": "cc.Size",
"width": 150,
"height": 150
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "c2D2tXN6lHvLmOwuadfJ4H"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 49
},
"_enabled": true,
"__prefab": {
"__id__": 53
},
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_spriteFrame": null,
"_type": 0,
"_fillType": 0,
"_sizeMode": 1,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": null,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "e7M6DBHpFBE7BgYMj3tWH0"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "5dLnT951NBxL9Ph1dHlc9X",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.UITransform",
"_name": "",
@ -1386,17 +758,17 @@
},
"_enabled": true,
"__prefab": {
"__id__": 56
"__id__": 30
},
"_contentSize": {
"__type__": "cc.Size",
"width": 923,
"height": 923
"width": 943,
"height": 585
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
"y": 0.07264957264957266
},
"_id": ""
},
@ -1414,7 +786,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 58
"__id__": 32
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@ -1427,39 +799,27 @@
"a": 255
},
"_skeletonData": {
"__uuid__": "aadf64c3-e6a0-4bf8-9805-b291ef07fa28",
"__uuid__": "1df74001-0dae-4b7f-b452-b2b736175924",
"__expectedType__": "sp.SkeletonData"
},
"defaultSkin": "default",
"defaultAnimation": "<None>",
"defaultAnimation": "",
"_premultipliedAlpha": true,
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
"_sockets": [
{
"__id__": 59
"__id__": 33
},
{
"__id__": 60
"__id__": 34
},
{
"__id__": 61
"__id__": 35
},
{
"__id__": 62
},
{
"__id__": 63
},
{
"__id__": 64
},
{
"__id__": 65
},
{
"__id__": 66
"__id__": 36
}
],
"_useTint": false,
@ -1490,44 +850,16 @@
},
{
"__type__": "sp.Skeleton.SpineSocket",
"path": "root/card3",
"path": "root/card1/card1-flip",
"target": {
"__id__": 17
}
},
{
"__type__": "sp.Skeleton.SpineSocket",
"path": "root/card4",
"target": {
"__id__": 24
}
},
{
"__type__": "sp.Skeleton.SpineSocket",
"path": "root/card1/card1-flip",
"target": {
"__id__": 31
}
},
{
"__type__": "sp.Skeleton.SpineSocket",
"path": "root/card2/card2-flip",
"target": {
"__id__": 37
}
},
{
"__type__": "sp.Skeleton.SpineSocket",
"path": "root/card3/card3-flip",
"target": {
"__id__": 43
}
},
{
"__type__": "sp.Skeleton.SpineSocket",
"path": "root/card4/card4-flip",
"target": {
"__id__": 49
"__id__": 23
}
},
{
@ -1540,7 +872,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 68
"__id__": 38
},
"ignoreTimeScale": true,
"_id": ""
@ -1572,7 +904,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 71
"__id__": 41
},
"_contentSize": {
"__type__": "cc.Size",
@ -1600,10 +932,10 @@
},
"_enabled": true,
"__prefab": {
"__id__": 73
"__id__": 43
},
"skeleton": {
"__id__": 57
"__id__": 31
},
"_flipX": false,
"_flipY": false,
@ -1623,26 +955,20 @@
},
"_enabled": true,
"__prefab": {
"__id__": 75
"__id__": 45
},
"animationHandler": {
"__id__": 72
"__id__": 42
},
"spineRoot": {
"__id__": 2
},
"cards": [
{
"__id__": 34
"__id__": 20
},
{
"__id__": 40
},
{
"__id__": 46
},
{
"__id__": 52
"__id__": 26
}
],
"_id": ""
@ -1660,6 +986,7 @@
"__id__": 0
},
"fileId": "244TXoUqdKA4qqvhPODAbd",
"instance": null,
"targetOverrides": null
}
]

View File

@ -8,6 +8,6 @@
],
"subMetas": {},
"userData": {
"syncNodeName": "Flip_Card"
"syncNodeName": "Vital_Graden_Flip_Card"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,6 @@
],
"subMetas": {},
"userData": {
"syncNodeName": "Lucky_Chain"
"syncNodeName": "Vital_Graden_Lucky_Chain"
}
}

View File

@ -1,7 +1,7 @@
[
{
"__type__": "cc.Prefab",
"_name": "Lucky_Chest",
"_name": "Vital_Graden_Lucky_Chest",
"_objFlags": 0,
"__editorExtras__": {},
"_native": "",
@ -13,7 +13,7 @@
},
{
"__type__": "cc.Node",
"_name": "Lucky_Chest",
"_name": "Vital_Graden_Lucky_Chest",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": null,
@ -25,17 +25,17 @@
"_active": true,
"_components": [
{
"__id__": 35
"__id__": 40
},
{
"__id__": 37
"__id__": 42
},
{
"__id__": 39
"__id__": 44
}
],
"_prefab": {
"__id__": 41
"__id__": 46
},
"_lpos": {
"__type__": "cc.Vec3",
@ -84,18 +84,18 @@
],
"_active": true,
"_components": [
{
"__id__": 28
},
{
"__id__": 30
},
{
"__id__": 32
},
{
"__id__": 34
},
{
"__id__": 37
}
],
"_prefab": {
"__id__": 34
"__id__": 39
},
"_lpos": {
"__type__": "cc.Vec3",
@ -298,40 +298,34 @@
"_children": [
{
"__id__": 11
},
{
"__id__": 17
}
],
"_active": true,
"_components": [
{
"__id__": 23
},
{
"__id__": 25
"__id__": 29
}
],
"_prefab": {
"__id__": 27
"__id__": 31
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"x": -5.030021667480469,
"y": 138.3000030517578,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
"z": 0.7071068275494721,
"w": 0.7071067348236201
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"x": 1.0000000000000084,
"y": 1.0000000000000084,
"z": 1
},
"_mobility": 0,
@ -340,37 +334,94 @@
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
"z": 90
},
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "Label",
"_name": "Node",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 10
},
"_children": [],
"_active": true,
"_components": [
"_children": [
{
"__id__": 12
},
{
"__id__": 14
"__id__": 18
}
],
"_active": true,
"_components": [
{
"__id__": 24
},
{
"__id__": 26
}
],
"_prefab": {
"__id__": 16
"__id__": 28
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -125.884765625,
"x": 100,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": -0.7071067811865475,
"w": 0.7071067811865476
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 0.9999999999999915,
"y": 0.9999999999999915,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": -90
},
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "Sprite",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 11
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 13
},
{
"__id__": 15
}
],
"_prefab": {
"__id__": 17
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -50,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
@ -380,8 +431,8 @@
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"x": 1.0000000000000082,
"y": 1.0000000000000082,
"z": 1
},
"_mobility": 0,
@ -400,16 +451,152 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 11
"__id__": 12
},
"_enabled": true,
"__prefab": {
"__id__": 13
"__id__": 14
},
"_contentSize": {
"__type__": "cc.Size",
"width": 148.23046875,
"height": 138
"width": 200,
"height": 200
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "eeSLyxaSdA14MnU1JhQE8L"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 12
},
"_enabled": true,
"__prefab": {
"__id__": 16
},
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_spriteFrame": {
"__uuid__": "e993110b-c53f-4d5c-bf69-b58cf61036b4@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
"_fillType": 0,
"_sizeMode": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": null,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "ecbp9qmr5AsK8U3oG22/LR"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "01q2I1EmNPXr4APxBvWUXg",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "Label",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 11
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 19
},
{
"__id__": 21
}
],
"_prefab": {
"__id__": 23
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -193.8,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1.0000000000000082,
"y": 1.0000000000000082,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 18
},
"_enabled": true,
"__prefab": {
"__id__": 20
},
"_contentSize": {
"__type__": "cc.Size",
"width": 124.529296875,
"height": 87.6
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@ -428,11 +615,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 11
"__id__": 18
},
"_enabled": true,
"__prefab": {
"__id__": 15
"__id__": 22
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@ -444,13 +631,13 @@
"b": 255,
"a": 255
},
"_string": "100",
"_string": "x100",
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 100,
"_fontSize": 100,
"_actualFontSize": 60,
"_fontSize": 60,
"_fontFamily": "Arial",
"_lineHeight": 100,
"_lineHeight": 60,
"_overflow": 0,
"_enableWrapText": true,
"_font": {
@ -506,153 +693,17 @@
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "Sprite",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 10
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 18
},
{
"__id__": 20
}
],
"_prefab": {
"__id__": 22
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 58.23046875,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 17
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 19
},
"_contentSize": {
"__type__": "cc.Size",
"width": 200,
"height": 200
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "eeSLyxaSdA14MnU1JhQE8L"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 17
},
"_enabled": true,
"__prefab": {
"__id__": 21
},
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_spriteFrame": {
"__uuid__": "5b5a3073-f986-4350-9ef0-e1fddb56a494@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
"_fillType": 0,
"_sizeMode": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": null,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "ecbp9qmr5AsK8U3oG22/LR"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "01q2I1EmNPXr4APxBvWUXg",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
},
"_enabled": true,
"__prefab": {
"__id__": 24
"__id__": 25
},
"_contentSize": {
"__type__": "cc.Size",
@ -668,7 +719,7 @@
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "00TALsq4ZHl6Ld0LVWiUr7"
"fileId": "7fNaLND8lN0rjAFvwJC64r"
},
{
"__type__": "cc.Layout",
@ -676,14 +727,14 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 26
"__id__": 27
},
"_resizeMode": 0,
"_layoutType": 1,
"_layoutType": 2,
"_cellSize": {
"__type__": "cc.Size",
"width": 40,
@ -706,7 +757,48 @@
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "289shnSS9OzLTNRZIo1ZaP"
"fileId": "20HHQ2NSRJNrUJbvHj4VH2"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "6fCX5a1M9HHIoQHGdL3gQY",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 10
},
"_enabled": true,
"__prefab": {
"__id__": 30
},
"_contentSize": {
"__type__": "cc.Size",
"width": 400,
"height": 100
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "00TALsq4ZHl6Ld0LVWiUr7"
},
{
"__type__": "cc.PrefabInfo",
@ -731,17 +823,17 @@
},
"_enabled": true,
"__prefab": {
"__id__": 29
"__id__": 33
},
"_contentSize": {
"__type__": "cc.Size",
"width": 1280,
"height": 1280
"width": 691.6400146484375,
"height": 668.8400268554688
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.46616406440734864,
"y": 0.4069765567779541
"x": 0.44235441230586764,
"y": 0.15624064918976754
},
"_id": ""
},
@ -759,7 +851,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 31
"__id__": 35
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@ -772,7 +864,7 @@
"a": 255
},
"_skeletonData": {
"__uuid__": "75cc4005-0956-4ded-8966-c8e347fc48d5",
"__uuid__": "1d0f299b-6898-4cc4-8c85-f9ce62349681",
"__expectedType__": "sp.SkeletonData"
},
"defaultSkin": "default",
@ -781,7 +873,11 @@
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
"_sockets": [],
"_sockets": [
{
"__id__": 36
}
],
"_useTint": false,
"_debugMesh": false,
"_debugBones": false,
@ -794,6 +890,13 @@
"__type__": "cc.CompPrefabInfo",
"fileId": "21L7AIRjlL4LYtwXg0hbBU"
},
{
"__type__": "sp.Skeleton.SpineSocket",
"path": "root/pivot/lower-chest/gift",
"target": {
"__id__": 10
}
},
{
"__type__": "88095558MdN+qsTqyxCx1uE",
"_name": "",
@ -804,7 +907,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 33
"__id__": 38
},
"ignoreTimeScale": true,
"_id": ""
@ -836,7 +939,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 36
"__id__": 41
},
"_contentSize": {
"__type__": "cc.Size",
@ -864,10 +967,10 @@
},
"_enabled": true,
"__prefab": {
"__id__": 38
"__id__": 43
},
"skeleton": {
"__id__": 30
"__id__": 34
},
"_flipX": false,
"_flipY": false,
@ -887,22 +990,22 @@
},
"_enabled": true,
"__prefab": {
"__id__": 40
"__id__": 45
},
"animationHandler": {
"__id__": 37
"__id__": 42
},
"spineRoot": {
"__id__": 2
},
"rewardRoot": {
"__id__": 10
"__id__": 11
},
"rewardSprite": {
"__id__": 20
"__id__": 15
},
"rewardLabel": {
"__id__": 14
"__id__": 21
},
"_id": ""
},

View File

@ -8,6 +8,6 @@
],
"subMetas": {},
"userData": {
"syncNodeName": "Lucky_Chest"
"syncNodeName": "Vital_Graden_Lucky_Chest"
}
}

View File

@ -8,6 +8,6 @@
],
"subMetas": {},
"userData": {
"syncNodeName": "Lucky_Wheel"
"syncNodeName": "Vital_Graden_Lucky_Wheel"
}
}

View File

@ -2587,7 +2587,7 @@
"__id__": 200
},
"scaleSpace": 1,
"startSize3D": false,
"startSize3D": true,
"startSizeX": {
"__id__": 201
},
@ -2709,7 +2709,7 @@
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 1.4,
"constant": 3,
"multiplier": 1
},
{
@ -3449,7 +3449,7 @@
},
"_gpuMaterial": null,
"_mainTexture": {
"__uuid__": "2b650e94-45ea-4b87-abd2-2ec749120c3e@6c48a",
"__uuid__": "11743d14-c5ef-48b4-b59e-39ec61ed8212@6c48a",
"__expectedType__": "cc.Texture2D"
},
"_useGPU": false,

View File

@ -1743,7 +1743,7 @@
"__id__": 132
},
"scaleSpace": 1,
"startSize3D": false,
"startSize3D": true,
"startSizeX": {
"__id__": 133
},
@ -1865,7 +1865,7 @@
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 1.4,
"constant": 8,
"multiplier": 1
},
{
@ -2605,7 +2605,7 @@
},
"_gpuMaterial": null,
"_mainTexture": {
"__uuid__": "7707dbd4-ddf6-4442-8cdf-350a7cdeda41@6c48a",
"__uuid__": "b0d5ff19-fd23-46a9-bb03-26d2e3ebbe50@6c48a",
"__expectedType__": "cc.Texture2D"
},
"_useGPU": false,

View File

@ -977,7 +977,7 @@
"__id__": 71
},
"scaleSpace": 1,
"startSize3D": false,
"startSize3D": true,
"startSizeX": {
"__id__": 72
},
@ -1099,7 +1099,7 @@
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 1.4,
"constant": 4.8,
"multiplier": 1
},
{
@ -1839,7 +1839,7 @@
},
"_gpuMaterial": null,
"_mainTexture": {
"__uuid__": "6745acfe-918c-4397-8569-bf99289ee920@6c48a",
"__uuid__": "20896042-1912-4ba9-a389-35a7546ea747@6c48a",
"__expectedType__": "cc.Texture2D"
},
"_useGPU": false,

View File

@ -2590,7 +2590,7 @@
"__id__": 200
},
"scaleSpace": 1,
"startSize3D": false,
"startSize3D": true,
"startSizeX": {
"__id__": 201
},
@ -2712,7 +2712,7 @@
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 1.4,
"constant": 8,
"multiplier": 1
},
{

View File

@ -1743,7 +1743,7 @@
"__id__": 132
},
"scaleSpace": 1,
"startSize3D": false,
"startSize3D": true,
"startSizeX": {
"__id__": 133
},
@ -1865,7 +1865,7 @@
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 1.4,
"constant": 4,
"multiplier": 1
},
{
@ -2605,7 +2605,7 @@
},
"_gpuMaterial": null,
"_mainTexture": {
"__uuid__": "b79c8ce6-3d5e-433d-ba6a-35dd1b46a374@6c48a",
"__uuid__": "8e1e138f-e782-413c-88a9-22ef180eb01f@6c48a",
"__expectedType__": "cc.Texture2D"
},
"_useGPU": false,

View File

@ -330,7 +330,7 @@
"__expectedType__": "cc.AudioClip"
},
"_score": 0,
"_bonusTime": 5,
"_bonusTime": 10,
"_id": ""
},
{

View File

@ -20,28 +20,34 @@
"_children": [
{
"__id__": 2
},
{
"__id__": 10
}
],
"_active": true,
"_components": [
{
"__id__": 76
},
{
"__id__": 78
},
{
"__id__": 80
},
{
"__id__": 84
},
{
"__id__": 82
"__id__": 86
},
{
"__id__": 88
},
{
"__id__": 94
},
{
"__id__": 90
},
{
"__id__": 92
}
],
"_prefab": {
"__id__": 86
"__id__": 96
},
"_lpos": {
"__type__": "cc.Vec3",
@ -72,6 +78,168 @@
},
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "spine",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 1
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 3
},
{
"__id__": 5
},
{
"__id__": 7
}
],
"_prefab": {
"__id__": 9
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 10,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 0.65,
"y": 0.65,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": {
"__id__": 4
},
"_contentSize": {
"__type__": "cc.Size",
"width": 166.52999877929688,
"height": 160.13999938964844
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5016513632852623,
"y": 0.5191707237824722
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "8cgS7HLu5PoZB6mL8KbJv8"
},
{
"__type__": "sp.Skeleton",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": {
"__id__": 6
},
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_skeletonData": {
"__uuid__": "a2e8df4b-a028-47ea-940e-a59e1aa826f0",
"__expectedType__": "sp.SkeletonData"
},
"defaultSkin": "default",
"defaultAnimation": "idle",
"_premultipliedAlpha": true,
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
"_sockets": [],
"_useTint": false,
"_debugMesh": false,
"_debugBones": false,
"_debugSlots": false,
"_enableBatch": false,
"loop": true,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "c1tC0lYOlLFKA9oivphpal"
},
{
"__type__": "b2937Y+5yVLE4z8uGa84ZqS",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": {
"__id__": 8
},
"skeleton": {
"__id__": 5
},
"_flipX": false,
"_flipY": false,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "a6iULR29ROkqlLhKZ24pRU"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "eb772pMDdMO7KDMpjPbAfI",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
"__type__": "cc.Node",
"_name": "Sprite",
@ -82,20 +250,20 @@
},
"_children": [
{
"__id__": 3
"__id__": 11
}
],
"_active": true,
"_components": [
{
"__id__": 71
"__id__": 79
},
{
"__id__": 73
"__id__": 81
}
],
"_prefab": {
"__id__": 75
"__id__": 83
},
"_lpos": {
"__type__": "cc.Vec3",
@ -132,23 +300,23 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 2
"__id__": 10
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 4
"__id__": 12
},
{
"__id__": 6
"__id__": 14
},
{
"__id__": 68
"__id__": 76
}
],
"_prefab": {
"__id__": 70
"__id__": 78
},
"_lpos": {
"__type__": "cc.Vec3",
@ -185,11 +353,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 3
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 5
"__id__": 13
},
"_contentSize": {
"__type__": "cc.Size",
@ -213,11 +381,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 3
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 7
"__id__": 15
},
"_materials": [
{
@ -228,56 +396,56 @@
],
"_visFlags": 0,
"startColor": {
"__id__": 8
"__id__": 16
},
"scaleSpace": 1,
"startSize3D": false,
"startSizeX": {
"__id__": 9
"__id__": 17
},
"startSize": {
"__id__": 9
"__id__": 17
},
"startSizeY": {
"__id__": 10
"__id__": 18
},
"startSizeZ": {
"__id__": 11
"__id__": 19
},
"startSpeed": {
"__id__": 12
"__id__": 20
},
"startRotation3D": false,
"startRotationX": {
"__id__": 13
"__id__": 21
},
"startRotationY": {
"__id__": 14
"__id__": 22
},
"startRotationZ": {
"__id__": 15
"__id__": 23
},
"startRotation": {
"__id__": 15
"__id__": 23
},
"startDelay": {
"__id__": 16
"__id__": 24
},
"startLifetime": {
"__id__": 17
"__id__": 25
},
"duration": 5,
"loop": true,
"simulationSpeed": 1,
"playOnAwake": true,
"gravityModifier": {
"__id__": 18
"__id__": 26
},
"rateOverTime": {
"__id__": 19
"__id__": 27
},
"rateOverDistance": {
"__id__": 20
"__id__": 28
},
"bursts": [],
"_renderCulling": false,
@ -288,37 +456,37 @@
"_dataCulling": false,
"enableCulling": false,
"_colorOverLifetimeModule": {
"__id__": 21
"__id__": 29
},
"_shapeModule": {
"__id__": 31
},
"_sizeOvertimeModule": {
"__id__": 33
},
"_velocityOvertimeModule": {
"__id__": 39
},
"_sizeOvertimeModule": {
"__id__": 41
},
"_velocityOvertimeModule": {
"__id__": 47
},
"_forceOvertimeModule": {
"__id__": 44
"__id__": 52
},
"_limitVelocityOvertimeModule": {
"__id__": 48
"__id__": 56
},
"_rotationOvertimeModule": {
"__id__": 53
},
"_textureAnimationModule": {
"__id__": 57
},
"_noiseModule": {
"__id__": 61
},
"_textureAnimationModule": {
"__id__": 65
},
"_noiseModule": {
"__id__": 69
},
"_trailModule": {
"__id__": 62
"__id__": 70
},
"renderer": {
"__id__": 67
"__id__": 75
},
"_prewarm": false,
"_capacity": 100,
@ -419,41 +587,41 @@
"__type__": "cc.ColorOvertimeModule",
"_enable": true,
"color": {
"__id__": 22
"__id__": 30
}
},
{
"__type__": "cc.GradientRange",
"_mode": 1,
"gradient": {
"__id__": 23
"__id__": 31
}
},
{
"__type__": "cc.Gradient",
"colorKeys": [
{
"__id__": 24
"__id__": 32
},
{
"__id__": 25
"__id__": 33
},
{
"__id__": 26
"__id__": 34
}
],
"alphaKeys": [
{
"__id__": 27
"__id__": 35
},
{
"__id__": 28
"__id__": 36
},
{
"__id__": 29
"__id__": 37
},
{
"__id__": 30
"__id__": 38
}
],
"mode": 0
@ -526,7 +694,7 @@
"arcMode": 0,
"arcSpread": 0,
"arcSpeed": {
"__id__": 32
"__id__": 40
},
"length": 5,
"boxThickness": {
@ -567,23 +735,23 @@
"_enable": true,
"separateAxes": false,
"size": {
"__id__": 34
"__id__": 42
},
"x": {
"__id__": 36
"__id__": 44
},
"y": {
"__id__": 37
"__id__": 45
},
"z": {
"__id__": 38
"__id__": 46
}
},
{
"__type__": "cc.CurveRange",
"mode": 1,
"spline": {
"__id__": 35
"__id__": 43
},
"multiplier": 1
},
@ -657,16 +825,16 @@
"__type__": "cc.VelocityOvertimeModule",
"_enable": false,
"x": {
"__id__": 40
"__id__": 48
},
"y": {
"__id__": 41
"__id__": 49
},
"z": {
"__id__": 42
"__id__": 50
},
"speedModifier": {
"__id__": 43
"__id__": 51
},
"space": 1
},
@ -698,13 +866,13 @@
"__type__": "cc.ForceOvertimeModule",
"_enable": false,
"x": {
"__id__": 45
"__id__": 53
},
"y": {
"__id__": 46
"__id__": 54
},
"z": {
"__id__": 47
"__id__": 55
},
"space": 1
},
@ -730,16 +898,16 @@
"__type__": "cc.LimitVelocityOvertimeModule",
"_enable": false,
"limitX": {
"__id__": 49
"__id__": 57
},
"limitY": {
"__id__": 50
"__id__": 58
},
"limitZ": {
"__id__": 51
"__id__": 59
},
"limit": {
"__id__": 52
"__id__": 60
},
"dampen": 3,
"separateAxes": false,
@ -774,13 +942,13 @@
"_enable": true,
"_separateAxes": false,
"x": {
"__id__": 54
"__id__": 62
},
"y": {
"__id__": 55
"__id__": 63
},
"z": {
"__id__": 56
"__id__": 64
}
},
{
@ -812,10 +980,10 @@
"_mode": 0,
"animation": 0,
"frameOverTime": {
"__id__": 58
"__id__": 66
},
"startFrame": {
"__id__": 60
"__id__": 68
},
"cycleCount": 0,
"_flipU": 0,
@ -828,7 +996,7 @@
"__type__": "cc.CurveRange",
"mode": 1,
"spline": {
"__id__": 59
"__id__": 67
},
"multiplier": 1
},
@ -895,21 +1063,21 @@
"_enable": false,
"mode": 0,
"lifeTime": {
"__id__": 63
"__id__": 71
},
"_minParticleDistance": 0.1,
"existWithParticles": true,
"textureMode": 0,
"widthFromParticle": true,
"widthRatio": {
"__id__": 64
"__id__": 72
},
"colorFromParticle": false,
"colorOverTrail": {
"__id__": 65
"__id__": 73
},
"colorOvertime": {
"__id__": 66
"__id__": 74
},
"_space": 0,
"_particleSystem": null
@ -972,11 +1140,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 3
"__id__": 11
},
"_enabled": true,
"__prefab": {
"__id__": 69
"__id__": 77
},
"_id": ""
},
@ -1003,11 +1171,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
"__id__": 10
},
"_enabled": true,
"__prefab": {
"__id__": 72
"__id__": 80
},
"_contentSize": {
"__type__": "cc.Size",
@ -1031,11 +1199,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
"__id__": 10
},
"_enabled": true,
"__prefab": {
"__id__": 74
"__id__": 82
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@ -1093,7 +1261,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 77
"__id__": 85
},
"_contentSize": {
"__type__": "cc.Size",
@ -1121,23 +1289,29 @@
},
"_enabled": true,
"__prefab": {
"__id__": 79
"__id__": 87
},
"_collider": {
"__id__": 80
"__id__": 88
},
"_collectSound": {
"__uuid__": "05a2671e-35bb-4be0-9244-43d541b9a26a",
"__expectedType__": "cc.AudioClip"
},
"_animation": {
"__id__": 82
"__id__": 90
},
"uiOpacity": {
"__id__": 92
},
"sprite": {
"__id__": 73
"__id__": 81
},
"displayName": "HỘP SỮA ???",
"displayName": "COLLAGEN JELLY",
"duration": 10,
"animationHandler": {
"__id__": 7
},
"_id": ""
},
{
@ -1154,7 +1328,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 81
"__id__": 89
},
"tag": 0,
"_group": 2,
@ -1188,7 +1362,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 83
"__id__": 91
},
"playOnLoad": false,
"_clips": [
@ -1207,6 +1381,25 @@
"__type__": "cc.CompPrefabInfo",
"fileId": "97YXh830lMc4IyNHTMRNi6"
},
{
"__type__": "cc.UIOpacity",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 93
},
"_opacity": 255,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "3e4+c6VN9HP6802ZkCCjh8"
},
{
"__type__": "cc.RigidBody2D",
"_name": "",
@ -1217,7 +1410,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 85
"__id__": 95
},
"enabledContactListener": true,
"bullet": false,

View File

@ -139,8 +139,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 100,
"height": 50
"width": 70,
"height": 60
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@ -176,7 +176,7 @@
"a": 255
},
"_spriteFrame": {
"__uuid__": "2e3299e9-8196-4a88-8823-6213d2e138d5@f9941",
"__uuid__": "d03ebb30-d706-45b9-ac5e-ed6781faf78c@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
@ -397,8 +397,8 @@
},
"_size": {
"__type__": "cc.Size",
"width": 100,
"height": 40
"width": 70,
"height": 60
},
"_id": ""
},

View File

@ -462,7 +462,7 @@
"__id__": 22
},
"_hitSound": null,
"_score": 5,
"_score": 10,
"_bonusTime": 0,
"_id": ""
},

View File

@ -462,7 +462,7 @@
"__id__": 22
},
"_hitSound": null,
"_score": 5,
"_score": 10,
"_bonusTime": 0,
"_id": ""
},

View File

@ -462,7 +462,7 @@
"__id__": 22
},
"_hitSound": null,
"_score": 5,
"_score": 30,
"_bonusTime": 0,
"_id": ""
},

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +0,0 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "46ab7167-6eec-4756-9dfb-67301f88f4ad",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -1,167 +0,0 @@
import CryptoES from 'crypto-es';
import { get, post } from './HttpRequest';
export default class BEConnector {
private static token: string;
private static skinId: string;
private static tournamentId: string;
private static key: string;
private static deviceInfo: string;
// Ticket info
public static numberTicket: number;
public static maxScore: number;
public static currentScore: number;
public static topScores: [] = [];
private static mileStone: string;
public static gameScore: number = 0;
private static gameURL: string = '';
public static getGameData() {
let url = new URLSearchParams(window.location.search);
this.token = url.get('token');
this.skinId = url.get('skinId');
this.tournamentId = url.get('tournamentId');
this.deviceInfo = url.get('deviceInfo');
this.numberTicket = parseInt(url.get('numberTicket')) || 0;
this.maxScore = parseInt(url.get('maxScore')) || 0;
this.currentScore = parseInt(url.get('currentScore')) || 0;
this.mileStone = url.get('mileStone') || '';
this.gameURL = ENV_CONFIG[url.get('env')];
}
public static async authenticate() {
try {
const res = await get(
`${this.gameURL}/promotions/authenticate-tournament?token=${this.token}&tournamentId=${this.tournamentId}&skinId=${this.skinId}&deviceInfo=${this.deviceInfo}`,
);
const data = await res.json();
if (data.ResultCode == 1) {
this.key = data.Data.Key;
console.log('Authenticate success');
}
} catch (error) {
console.log('Authenticate failed', error);
}
}
public static async ticketMinus(type: 'auth' | 'revive') {
const numberTicket = type === 'auth' ? 1 : this.getTicketCanBeMinus();
const dataEncrypted: string = this.getDataEncrypted({ type: type, total: numberTicket });
const JsonData = JSON.stringify({ data: dataEncrypted });
try {
await post(
`${this.gameURL}/promotions/ticket-minus/${this.tournamentId}/${this.skinId}?cocos=1`,
this.token,
JsonData,
);
this.numberTicket -= numberTicket;
return this.numberTicket;
} catch (error) {
console.log(error);
}
}
public static calculatingTicketToContinue(scoreRange: object, yourScore: number) {
let closestMilestone: number = 0;
for (const milestone in scoreRange) {
if (parseInt(milestone) <= yourScore) {
closestMilestone = scoreRange[milestone];
}
}
if (!closestMilestone) {
const minValue = Math.min(...Object.values(scoreRange));
closestMilestone = minValue;
}
return closestMilestone;
}
public static async checkGameScoreTicket() {
const totalScore: number = this.gameScore;
const dataEncrypted: string = this.getDataEncrypted({
score: totalScore,
ticket: this.getTicketCanBeMinus(),
});
const data = JSON.stringify({ data: dataEncrypted });
try {
await post(
`${this.gameURL}/promotions/check-game-score-ticket/${this.tournamentId}/${this.skinId}?cocos=1`,
this.token,
data,
);
} catch (error) {
console.log(error);
}
}
public static postMessage() {
let totalScore: number = this.gameScore + this.currentScore;
window.parent.postMessage(
JSON.stringify({
error: false,
message: 'Hello World',
score: totalScore,
type: 'paypal_modal',
}),
'*',
);
}
public static async postScoreToServer() {
const dataEncrypted: string = this.getDataEncrypted({
Score: this.gameScore,
TournamentId: this.tournamentId,
SkinId: this.skinId,
});
const data = JSON.stringify({ data: dataEncrypted });
try {
const res = await post(
`${this.gameURL}/promotions/store-score-tournament?tournamentId=${this.tournamentId}&skinId=${this.skinId}&cocos=1`,
this.token,
data,
);
console.log('send score to server: ' + this.gameScore);
window.parent.postMessage(
JSON.stringify({
error: false,
message: 'Hello World',
score: this.gameScore + this.currentScore,
type: 'game_tournament',
}),
'*',
);
} catch (error) {
console.log(error);
}
}
private static getDataEncrypted(data: any): string {
return CryptoES.AES.encrypt(JSON.stringify(data), this.key, {
iv: CryptoES.enc.Utf8.parse('16'),
mode: CryptoES.mode.CBC,
padding: CryptoES.pad.Pkcs7,
}).toString();
}
public static getTicketCanBeMinus() {
if (!this.mileStone) return 0;
let mileStone = JSON.parse(this.mileStone);
let currentScore = this.gameScore;
let total = this.calculatingTicketToContinue(mileStone, currentScore);
return total;
}
public static canRelive() {
return this.numberTicket > this.getTicketCanBeMinus();
}
}
const ENV_CONFIG = {
development: 'http://192.168.1.144:3009/api',
staging: 'https://api.play4promote.com/api',
production: 'https://api.play4promo.com/api',
};

View File

@ -1,67 +0,0 @@
const headersInit = {
Accept: 'application/json',
'Content-Type': 'application/json',
};
export const get = async (path: RequestInfo) => {
const res = await fetch(path, {
method: 'GET',
});
if (!res.ok) {
throw new Error(res.statusText);
}
return res;
};
export const post = async (path: RequestInfo, token?: string, data?: string) => {
const res = await fetch(path, {
method: 'POST',
headers: {
...headersInit,
'x-access-refactor-token': token,
},
body: data,
});
if (!res.ok) {
throw new Error(res.statusText);
}
return res;
};
export const put = async (path: RequestInfo, token?: string, data?: string) => {
const res = await fetch(path, {
method: 'PUT',
headers: {
...headersInit,
'x-access-refactor-token': token,
},
body: data,
});
if (!res.ok) {
throw new Error(res.statusText);
}
return res;
};
export const del = async (path: RequestInfo, token?: string, data?: string) => {
const res = await fetch(path, {
method: 'DELETE',
headers: {
...headersInit,
'x-access-refactor-token': token,
},
body: data,
});
if (!res.ok) {
throw new Error(res.statusText);
}
return res;
};

View File

@ -1,9 +0,0 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "04c2a240-38c0-4d9c-993a-3773d709137f",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -233,6 +233,11 @@ export default class SpineAnimationHandler extends Component {
this.skeleton.clearTrack(trackIndex);
}
public clearTracks(): void {
if (!this.skeleton) return;
this.skeleton.clearTracks();
}
public findBone(boneName: string): sp.spine.Bone {
return this.skeleton.findBone(boneName);
}

View File

@ -9,6 +9,7 @@ import {
Contact2DType,
Node,
Sprite,
UIOpacity,
Vec3,
} from 'cc';
import BoosterType from '../Enum/BoosterType';
@ -29,8 +30,10 @@ export class BoosterBase extends Component implements IPoolable {
protected _collectSound: AudioClip;
@property({ type: Animation, visible: true })
private _animation: Animation;
@property(UIOpacity)
private uiOpacity: UIOpacity;
@property(Sprite)
private sprite: Sprite;
protected sprite: Sprite;
@property(CCString)
public readonly displayName: string = 'CHEESE';
@property(CCFloat)
@ -45,6 +48,10 @@ export class BoosterBase extends Component implements IPoolable {
return this._active;
}
public set activeCollider(value: boolean) {
this._activeCollider = value;
}
protected onLoad(): void {
this._collider.on(Contact2DType.BEGIN_CONTACT, this.onContactBegin, this);
this._activeCollider = false;
@ -60,7 +67,6 @@ export class BoosterBase extends Component implements IPoolable {
public tick(dt: number) {
if (!this._active) return;
this.node.setPosition(Vec3.ZERO);
this._timer += dt;
if (this._timer >= this.duration) {
this._active = false;
@ -75,7 +81,7 @@ export class BoosterBase extends Component implements IPoolable {
this._active = true;
this._timer = 0;
this.sprite.setNodeActive(false);
this.node.setParent(collector);
this.node.setParent(collector, false);
}
public end() {
if (!this.node.releaseToPool()) {
@ -88,14 +94,23 @@ export class BoosterBase extends Component implements IPoolable {
}
}
public hide() {
if (this.uiOpacity) {
this.uiOpacity.opacity = 0;
}
}
async onGet() {
this._animation.play();
await Utils.delay(this._animation.defaultClip.duration);
this._activeCollider = true;
this.sprite.setNodeActive(true);
}
onRelease() {
this.sprite.setNodeActive(true);
this._activeCollider = false;
if (this.uiOpacity) {
this.uiOpacity.opacity = 255;
}
}
}

View File

@ -1,4 +1,5 @@
import { _decorator, Component, Node } from 'cc';
import SpineAnimationHandler from '../Base/SpineAnimationHandler';
import BoosterType from '../Enum/BoosterType';
import AudioManager from '../Manager/AudioManager';
import { BoosterBase } from './BoosterBase';
@ -6,15 +7,33 @@ const { ccclass, property } = _decorator;
@ccclass('CumulativeBooster')
export class CumulativeBooster extends BoosterBase {
@property(SpineAnimationHandler)
private animationHandler: SpineAnimationHandler;
public readonly type: BoosterType = BoosterType.CumulativeBar;
protected onLoad(): void {
super.onLoad();
this.sprite.setNodeActive(true);
this.animationHandler?.setNodeActive(false);
}
public collect(collector: Node): void {
super.collect(collector);
AudioManager.setPlayRateBGM(1.5);
this.animationHandler?.setAnimation('active');
}
public end(): void {
super.end();
AudioManager.setPlayRateBGM(1);
}
async onGet(): Promise<void> {
await super.onGet();
if (this.animationHandler) {
this.animationHandler.setNodeActive(true);
this.sprite.setNodeActive(false);
}
}
}

View File

@ -7,7 +7,8 @@ const { ccclass, property } = _decorator;
@ccclass('SecretBoxBooster')
export default class SecretBoxBooster extends BoosterBase {
public readonly type: BoosterType = BoosterType.Gacha;
@property({ type: BoosterType })
public readonly type: BoosterType;
@property({ type: GachaType })
private gachaType: GachaType;

View File

@ -1,6 +1,13 @@
import { Enum } from 'cc';
enum BoosterType {
CumulativeBar,
Gacha,
FlipCard,
LuckyWheel,
LuckyChain,
FreeReward,
}
Enum(BoosterType);
export default BoosterType;

View File

@ -0,0 +1,42 @@
import { _decorator, Component, Node } from 'cc';
import SpineAnimationHandler from '../Base/SpineAnimationHandler';
import ScoreType from '../Enum/ScoreType';
import GameEvent from '../Events/GameEvent';
import { EventManger } from '../Manager/EventManger';
const { ccclass, property } = _decorator;
@ccclass('GoalAnimation')
export default class GoalAnimation extends Component {
@property(SpineAnimationHandler)
private animationHandler: SpineAnimationHandler;
private index: number = 1;
protected onEnable(): void {
this.animationHandler.setAnimation('stage' + this.index, { loop: true });
EventManger.instance.on(GameEvent.Score, this.onScore, this);
EventManger.instance.on(GameEvent.BallOut, this.onBallOut, this);
}
protected onDisable(): void {
EventManger.instance.off(GameEvent.Score, this.onScore, this);
EventManger.instance.off(GameEvent.BallOut, this.onBallOut, this);
}
private onScore(score: number, points: number, type: ScoreType) {
if (type == ScoreType.Goal) {
if (this.index < 5) {
this.index++;
this.animationHandler.setAnimation('stage' + this.index, { loop: true });
}
}
}
private onBallOut() {
if (this.index > 1) {
this.index--;
this.animationHandler.setAnimation('stage' + this.index, { loop: true });
}
}
}

View File

@ -2,7 +2,7 @@
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "a0ece421-9b71-46f8-a587-35d6a5991259",
"uuid": "d71281d3-7e0d-433f-9b73-a22b12e19c01",
"files": [],
"subMetas": {},
"userData": {}

View File

@ -18,6 +18,7 @@ enum GameEvent {
ControlTouchEnd,
WarningTime,
TicketUpdate,
SpawnMultiBall,
}
export interface GameEventCallbackMap {
@ -33,6 +34,7 @@ export interface GameEventCallbackMap {
[GameEvent.ControlTouchEnd]: (touchSide: ControllerSide) => void;
[GameEvent.WarningTime]: (warning: boolean) => void;
[GameEvent.TicketUpdate]: (ticket: number) => void;
[GameEvent.SpawnMultiBall]: (quantity: number) => void;
}
export interface GameEventArgMap {
@ -48,6 +50,7 @@ export interface GameEventArgMap {
[GameEvent.ControlTouchEnd]: ControllerSide;
[GameEvent.WarningTime]: boolean;
[GameEvent.TicketUpdate]: number;
[GameEvent.SpawnMultiBall]: number;
}
export default GameEvent;

View File

@ -86,6 +86,7 @@ declare global {
interface Array<T> {
getRandomIndex(): number;
getRandomIndex(weights: number[]): number;
getRandom(): T;
getRandom(weights: number[]): T;
}
@ -269,8 +270,17 @@ String.prototype.isNullOrWhiteSpace = function () {
//#region ARRAY
Array.prototype.getRandomIndex = function () {
return randomRangeInt(0, this.length);
Array.prototype.getRandomIndex = function (weights?: number[]) {
if (weights) {
let weightsClone = [...weights];
const totalWeight = weightsClone.reduce((a, b) => a + b, 0);
let random = Math.random() * totalWeight;
let index;
this.findIndex((_, i) => (random -= weightsClone[i]) <= 0);
return index;
} else {
return randomRangeInt(0, this.length);
}
};
Array.prototype.getRandom = function (weights?: number[]) {

View File

@ -43,6 +43,7 @@ export default class FlipCard extends GachaBase {
public async show(): Promise<void> {
this.spineRoot.setActive(true);
this.animationHandler.clearTracks();
await this.animationHandler.setAnimationAsync('appear');
this.animationHandler.addAnimation('idle', { loop: true });
}
@ -55,12 +56,11 @@ export default class FlipCard extends GachaBase {
if (reward) {
this.cards[+value - 1].spriteFrame = reward.icon;
await this.animationHandler.setAnimationAsync(`card${value}-active`, { trackIndex: +value });
GachaManager.instance.showFloatingText(
reward.quantity.toString(),
this.cards[+value - 1].node.worldPosition,
reward.icon,
);
const pos = this.cards[+value - 1].node.worldPosition.clone();
pos.y += 150;
GachaManager.instance.showFloatingText(reward.quantity.toString(), pos, reward.icon);
GachaManager.instance.gachaDone();
return;
}
GachaManager.instance.gachaDone();

View File

@ -20,32 +20,24 @@ export default class FreeReward extends GachaBase {
private rewardLabel: Label;
private _opened: boolean = false;
private _startShowReward: boolean = false;
private _timer: number = 0;
private _reward: RewardConfig;
protected onLoad(): void {
this.animationHandler.setListener((_, e) => {
switch (e.data.name) {
case 'open':
this.rewardRoot.setActive(true);
break;
}
});
}
protected onEnable(): void {
this.spineRoot.setActive(false);
this.rewardRoot.setActive(false);
this._opened = false;
}
protected update(dt: number): void {
if (this._startShowReward) {
let k = clamp01(this._timer / 0.3);
k = easing.quintInOut(k);
const targetScale = Vec3.lerp(this.rewardRoot.scale, Vec3.ZERO, Vec3.ONE, k);
const targetPosition = Vec3.lerp(this.rewardRoot.position, new Vec3(0, 150), new Vec3(0, 700), k);
this.rewardRoot.setScale(targetScale);
this.rewardRoot.setPosition(targetPosition);
this._timer += game.deltaTime;
if (k === 1) {
this._startShowReward = false;
GachaManager.instance.gachaDone();
}
}
}
public async show() {
this.spineRoot.setActive(true);
await this.animationHandler.setAnimationAsync('appear');
@ -54,20 +46,17 @@ export default class FreeReward extends GachaBase {
public async open() {
if (this._opened) return;
this._timer = 0;
this._opened = true;
this._reward = await GachaManager.instance.getReward();
if (this._reward) {
this.animationHandler.setAnimation('open');
this.rewardSprite.spriteFrame = this._reward.icon;
this.rewardLabel.string = this._reward.quantity.toString();
await Utils.delay(1);
this.rewardLabel.string = 'x' + this._reward.quantity;
await this.animationHandler.setAnimationAsync('open');
this.rewardRoot.setActive(true);
this._startShowReward = true;
GachaManager.instance.gachaDone();
return;
}
this._startShowReward = false;
GachaManager.instance.gachaDone();
}
}

View File

@ -1,4 +1,4 @@
import { _decorator, Component, Node, sp, Sprite, SpriteFrame } from 'cc';
import { _decorator, Component, Label, Node, sp, Sprite, SpriteFrame, tween, Vec3 } from 'cc';
import GachaBase from '../Base/GachaBase';
import SpineAnimationHandler, { SocketPath, SpineAnimation, SpineSkin } from '../Base/SpineAnimationHandler';
import GachaManager, { RewardConfig } from '../Manager/GachaManager';
@ -47,13 +47,17 @@ export default class LuckyChain extends GachaBase {
const card = this._allCards.shift();
const path = this.cardSlotPath[i];
const socket = this.animationHandler.addSocket(path, card.node);
card.setActive(true);
card.socket = socket;
this._activeCards.push(card);
}
this.animationHandler.setListener((_, e) => {
switch (e.data.name) {
case 'card-appear':
this._activeCards.forEach((card) => {
card.setActive(true);
});
break;
case 'card-claimed':
const cardRemove = this._activeCards.shift();
this._reward = cardRemove;
@ -76,12 +80,16 @@ export default class LuckyChain extends GachaBase {
protected onEnable(): void {
this.spriteRoot.setActive(false);
this._activeCards.forEach((card) => {
card.setActive(false);
});
}
private setReward() {
this._allCards = this.cards.map((card) => {
const rw = GachaManager.instance.getRandomReward([60, 35, 5]);
const rw = GachaManager.instance.getRandomReward();
card.getComponent(Sprite).spriteFrame = rw.icon;
card.getComponentInChildren(Label).string = 'x' + rw.quantity;
card.setActive(false);
return new RewardCard(card, rw);
});

View File

@ -1,9 +1,11 @@
import {
_decorator,
CCFloat,
CCInteger,
CCString,
Component,
game,
Label,
Node,
random,
randomRangeInt,
@ -18,16 +20,23 @@ import GachaManager, { RewardConfig } from '../Manager/GachaManager';
const { ccclass, property } = _decorator;
class RewardCard {
public node: Node;
public reward: RewardConfig;
constructor(node: Node, reward: RewardConfig) {
this.node = node;
constructor(reward: RewardConfig) {
this.reward = reward;
}
}
public setActive(value: boolean) {
this.node.setActive(value);
@ccclass('RewardDisplay')
class RewardDisplay {
@property(Sprite)
private sprite: Sprite;
@property(Label)
private label: Label;
public setReward(reward: RewardConfig) {
this.sprite.spriteFrame = reward.icon;
this.label.string = 'x' + reward.quantity;
}
}
@ -43,8 +52,10 @@ export default class LuckyWheel extends GachaBase {
private speed: number = 1;
@property(RealCurve)
private spinCurve: RealCurve = new RealCurve();
@property(Sprite)
private sprites: Sprite[] = [];
@property(RewardDisplay)
private rewardDisplay: RewardDisplay[] = [];
@property(CCFloat)
private offsetAngle: number;
private _wheel: sp.spine.Bone;
private _targetAngle: number = 0;
@ -60,7 +71,6 @@ export default class LuckyWheel extends GachaBase {
}
protected onEnable(): void {
this.setReward();
this._random = null;
this.spineRoot.setActive(false);
this._wheel.rotation = 0;
@ -87,17 +97,15 @@ export default class LuckyWheel extends GachaBase {
}
private setReward() {
this._allCards = this.sprites.map((card) => {
const rw = GachaManager.instance.getRandomReward([60, 35, 5]);
card.spriteFrame = rw.icon;
return new RewardCard(card.node, rw);
this._allCards = this.rewardDisplay.map((card, i) => {
let rw = GachaManager.instance.rewards[i];
card.setReward(rw);
return new RewardCard(rw);
});
}
public async show(): Promise<void> {
for (let i = 0; i < GachaManager.instance.rewards.length; i++) {
this.sprites[i].spriteFrame = GachaManager.instance.rewards[i].icon;
}
this.setReward();
this.spineRoot.setActive(true);
await this.animationHandler.setAnimationAsync('appear');
@ -108,16 +116,10 @@ export default class LuckyWheel extends GachaBase {
if (this._spinning) return;
this._spinning = true;
this._random = this._allCards.getRandomIndex();
if (this._random) {
this.animationHandler.clearTrack(0);
this._targetAngle = -36 * this._random;
this._timer = 0;
this._timeSpin = randomRangeInt(10, 15);
this._maxAngle = 360 * this._timeSpin;
return;
}
this._spinning = false;
GachaManager.instance.setReward(this._allCards[this._random].reward.id);
this.animationHandler.clearTrack(0);
this._targetAngle = -(360 / this.rewardDisplay.length) * this._random + this.offsetAngle;
this._timer = 0;
this._timeSpin = randomRangeInt(10, 15);
this._maxAngle = 360 * this._timeSpin;
}
}

View File

@ -13,9 +13,11 @@ import {
} from 'cc';
import TimeConfig from '../Enum/TimeConfig';
import { CameraController } from '../Environments/CameraController';
import GameEvent from '../Events/GameEvent';
import { registerGizmos } from '../Gizmos/Decorator';
import Gizmos2D from '../Gizmos/Gizmos2D';
import AudioManager from '../Manager/AudioManager';
import { EventManger } from '../Manager/EventManger';
import { GameManager } from '../Manager/GameManager';
import ObjectPool from '../Pool/ObjectPool';
import Utils from '../Utilities';
@ -57,6 +59,7 @@ export class MultiBall extends Component {
protected onLoad(): void {
this._fxPool = new ObjectPool(this._fx, 2, true);
this._collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
EventManger.instance.on(GameEvent.SpawnMultiBall, this.spawnBall, this);
}
protected lateUpdate(dt: number): void {
@ -69,16 +72,41 @@ export class MultiBall extends Component {
ball1.node.setWorldPosition(this._portRight.worldPosition);
ball1.clearRigiState(true);
ball1.addForce(new Vec2(20, 0));
ball1.addForce(new Vec2(50, 0));
ball2.node.setWorldPosition(this._portLeft.worldPosition);
ball2.clearRigiState(true);
ball2.addForce(new Vec2(-20, 0));
ball2.addForce(new Vec2(-50, 0));
this._trigged = false;
}
}
public async spawnBall(quantity: number) {
CameraController.instance.shake(0.2);
this._colliderEnabled = false;
for (let i = 0; i < quantity; i++) {
const ball = GameManager.instance.spawnBall(false, false);
if (i % 2 == 0) {
ball.node.setWorldPosition(this._portRight.worldPosition);
ball.addForce(new Vec2(40, 0));
} else {
ball.node.setWorldPosition(this._portLeft.worldPosition);
ball.addForce(new Vec2(-40, 0));
}
}
const fx = this._fxPool.get(ParticleSystem, GameManager.instance.topContainer);
const pos = this.node.getWorldPosition();
pos.z = 10;
fx.node.setWorldPosition(pos);
AudioManager.playSfx(this._soundFX);
await Utils.delay(TimeConfig.DelayMultiBall);
this._colliderEnabled = true;
await Utils.waitUntil(() => fx.isStopped);
this._fxPool.release(fx);
}
private async onBeginContact(selfCollider: Collider2D, otherCollider: Collider2D) {
if (!this._colliderEnabled) return;
if (this._trigged) return;

View File

@ -21,6 +21,7 @@ import {
Vec2,
Vec3,
} from 'cc';
import BoosterType from '../Enum/BoosterType';
import PhysicsGroup from '../Enum/PhysicGroup';
import { SequenceSound } from '../Environments/SequenceSound';
import GameEvent from '../Events/GameEvent';
@ -78,14 +79,6 @@ export class Ball extends Component implements IPoolable {
private _parent: Node;
private _cheeseModeOn = false;
public init(boosterActive: boolean) {
if (boosterActive) {
this.onBoosterActive();
} else {
this.onBoosterDisable();
}
}
protected onLoad(): void {
if (this._collider) {
this._collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
@ -94,8 +87,8 @@ export class Ball extends Component implements IPoolable {
director.on(Director.EVENT_AFTER_PHYSICS, this.afterPhysicUpdate, this);
this._impactPool = new ObjectPool(this._impactPrefab, 10, false);
EventManger.instance.on(GameEvent.BoosterActive, this.onBoosterActive, this);
EventManger.instance.on(GameEvent.BoosterDisable, this.onBoosterDisable, this);
EventManger.instance.on(GameEvent.BoosterActive, this.addBoosterEffect, this);
EventManger.instance.on(GameEvent.BoosterDisable, this.removeBoosterEffect, this);
}
protected update(dt: number): void {
@ -151,7 +144,7 @@ export class Ball extends Component implements IPoolable {
this._isHit = true;
const velocity = this._rigidBody.linearVelocity.length();
if (!otherCollider.sensor) {
if (velocity >= 5) {
if (velocity >= 6) {
this._animation.play();
let hitPoint = contact.getWorldManifold().points[0];
@ -185,18 +178,24 @@ export class Ball extends Component implements IPoolable {
this._isHit = false;
}
private onBoosterActive() {
// this._fireParticle.play();
this._cheeseModeOn = true;
this._cheeseModeSprite.setNodeActive(true);
this._normalSprite.setNodeActive(false);
public addBoosterEffect(boosterType: BoosterType) {
switch (boosterType) {
case BoosterType.CumulativeBar:
this._cheeseModeOn = true;
this._cheeseModeSprite.setNodeActive(true);
this._normalSprite.setNodeActive(false);
break;
}
}
private onBoosterDisable() {
// this._fireParticle.stop();
this._cheeseModeOn = false;
this._cheeseModeSprite.setNodeActive(false);
this._normalSprite.setNodeActive(true);
public removeBoosterEffect(boosterType: BoosterType) {
switch (boosterType) {
case BoosterType.CumulativeBar:
this._cheeseModeOn = false;
this._cheeseModeSprite.setNodeActive(false);
this._normalSprite.setNodeActive(true);
break;
}
}
private afterPhysicUpdate() {

View File

@ -14,14 +14,18 @@ import {
UIOpacity,
Vec3,
} from 'cc';
import { EDITOR, PREVIEW } from 'cc/env';
import GachaBase from '../Base/GachaBase';
import BoosterType from '../Enum/BoosterType';
import ScoreType from '../Enum/ScoreType';
import GameEvent from '../Events/GameEvent';
import FloatingTextFactory from '../Factory/FloatingTextFactory';
import P4PSDK from '../P4PSDK';
import Singleton from '../Singleton';
import Utils from '../Utilities';
import { EventManger } from './EventManger';
import { GameManager } from './GameManager';
import { SpawnObjectManager } from './SpawnObjectManager';
const { ccclass, property } = _decorator;
@ -37,6 +41,7 @@ export enum RewardType {
Star,
Time,
Cheese,
Ball,
}
Enum(RewardType);
@ -117,7 +122,17 @@ export default class GachaManager extends Singleton<GachaManager>() {
}
public async getReward(): Promise<RewardConfig> {
this._reward = this.getRandomReward();
if (!EDITOR && !PREVIEW) {
try {
const rw = await P4PSDK.spinGacha(this.gachaId);
this._reward = this.rewards.find((r) => r.id == rw.id);
} catch (error) {
console.log(error);
return null;
}
} else {
this._reward = this.getRandomReward();
}
return this._reward;
}
@ -129,6 +144,7 @@ export default class GachaManager extends Singleton<GachaManager>() {
console.log(`Gacha reward: ${RewardType[this._reward.type]} quantity: ${this._reward.quantity}`);
await Utils.delay(1);
game.timeScale = 1;
tween(this.container)
.to(0.1, { opacity: 0 })
.call(() => {
@ -140,6 +156,15 @@ export default class GachaManager extends Singleton<GachaManager>() {
case RewardType.Time:
GameManager.instance.addTime(this._reward.quantity, Vec3.ZERO);
break;
case RewardType.Cheese:
const cheese = SpawnObjectManager.instance.getBoosterByType(BoosterType.CumulativeBar);
cheese.activeCollider = false;
cheese.hide();
GameManager.instance.addBooster(cheese);
break;
case RewardType.Ball:
EventManger.instance.emit(GameEvent.SpawnMultiBall, this._reward.quantity);
break;
}
})
.start();

View File

@ -13,7 +13,7 @@ import {
Vec2,
Vec3,
} from 'cc';
import BEConnector from '../API/BEConnector';
import { EDITOR, PREVIEW } from 'cc/env';
import Timer, { TimerType } from '../Base/Timer';
import { BoosterBase } from '../Booster/BoosterBase';
import BoosterType from '../Enum/BoosterType';
@ -24,6 +24,7 @@ import GameEvent from '../Events/GameEvent';
import BallFactory from '../Factory/BallFactory';
import FloatingTextFactory from '../Factory/FloatingTextFactory';
import { Ball } from '../GamePlay/Ball';
import P4PSDK from '../P4PSDK';
import Singleton from '../Singleton';
import Utils from '../Utilities';
import AudioManager from './AudioManager';
@ -31,18 +32,6 @@ import { EventManger } from './EventManger';
import { StickerManager } from './StickerManager';
const { ccclass, property } = _decorator;
window.addEventListener('message', (data) => {
const { data: res } = data;
const objectRes = Utils.getJson(res);
if (objectRes) {
const { type, value } = objectRes;
if (type === 'newTicket') {
BEConnector.numberTicket += value;
GameManager.instance.gameRelive();
}
}
});
@ccclass('GameManager')
export class GameManager extends Singleton<GameManager>() {
@property({ visible: true })
@ -103,11 +92,12 @@ export class GameManager extends Singleton<GameManager>() {
protected onLoad(): void {
super.onLoad();
BEConnector.getGameData();
if (this._colliderDebug) PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Shape;
}
protected start(): void {
protected async start(): Promise<void> {
await P4PSDK.init(this.onBoughtTicket, this);
await P4PSDK.authenticate();
this.changeGameState(GameState.Init);
}
@ -117,28 +107,31 @@ export class GameManager extends Singleton<GameManager>() {
this.runBooster(dt);
}
private onBoughtTicket() {
this.gameRelive();
EventManger.instance.emit(GameEvent.TicketUpdate, P4PSDK.getUserTicket());
}
private async changeGameState(state: GameState) {
this._gameState = state;
EventManger.instance.emit(GameEvent.GameStateChange, this._gameState);
let ticket = 0;
switch (state) {
case GameState.Init:
BEConnector.authenticate();
break;
case GameState.Ready:
break;
case GameState.Playing:
this.countTime();
ticket = await BEConnector.ticketMinus('auth');
EventManger.instance.emit(GameEvent.TicketUpdate, ticket);
await P4PSDK.minusTicket('auth');
EventManger.instance.emit(GameEvent.TicketUpdate, P4PSDK.getUserTicket());
break;
case GameState.GameOver:
break;
case GameState.End:
break;
case GameState.Relive:
ticket = await BEConnector.ticketMinus('revive');
EventManger.instance.emit(GameEvent.TicketUpdate, ticket);
await P4PSDK.minusTicket('revive');
EventManger.instance.emit(GameEvent.TicketUpdate, P4PSDK.getUserTicket());
break;
default:
throw new Error(`Argument Out Of Range Exception: ${GameState[state]}`);
@ -152,6 +145,7 @@ export class GameManager extends Singleton<GameManager>() {
opts?: { scaleMin?: number; scaleMax?: number; duration?: number },
) {
this._score += score;
P4PSDK.updateScore(score);
const floatingScore = this._floatingScoreFactory.create(this._topContainer);
if (position) {
floatingScore.show(
@ -174,6 +168,7 @@ export class GameManager extends Singleton<GameManager>() {
this._isWaitingUpdateScore = true;
await Utils.waitUntil(predicate);
this._score += score;
P4PSDK.updateScore(score);
const floatingScore = this._floatingScoreFactory.create(this._topContainer);
floatingScore.show(`+${score}`, position, score >= 100 ? opts.scaleMax : opts.scaleMin, opts.duration);
EventManger.instance.emit(GameEvent.Score, [this._score, score, type, position]);
@ -217,7 +212,9 @@ export class GameManager extends Singleton<GameManager>() {
if (playStartSound) AudioManager.playSfx(this._startSound);
this.setCurrentBallInGame(1);
const ball = BallFactory.instance.create(this._ballHolder);
ball.init(this._activeBoosters.size > 0);
this._activeBoosters.forEach((_, type) => {
ball.addBoosterEffect(type);
});
ball.node.setRotation(Quat.IDENTITY);
ball.node.setPosition(this._ballSpawnPosition);
if (!throwBall) return ball;
@ -286,7 +283,6 @@ export class GameManager extends Singleton<GameManager>() {
this.cleanBooster();
AudioManager.playBGM(this._gameOverMusic);
StickerManager.instance.showLabel('TIME UP!!!', { color: new Color('#ed3a18'), outLineColor: Color.WHITE });
BEConnector.gameScore = this.score;
if (this.isReplayed) {
this.changeGameState(GameState.End);
return;
@ -301,6 +297,24 @@ export class GameManager extends Singleton<GameManager>() {
this.changeGameState(GameState.Ready);
}
public async replay(): Promise<void> {
if (!PREVIEW && !EDITOR) {
if (P4PSDK.canRelive()) {
const success = await P4PSDK.minusTicket('revive');
if (success) {
this.gameRelive();
} else {
this.gameOver();
return;
}
} else {
P4PSDK.callPayPalModal();
}
} else {
this.gameRelive();
}
}
public async play() {
this._timer.time = this._timePlay;
this._score = 0;

View File

@ -1,5 +1,6 @@
import { _decorator, CCFloat, CCInteger, Color, Component, Node, Prefab, randomRangeInt, Vec3 } from 'cc';
import { BoosterBase } from '../Booster/BoosterBase';
import BoosterType from '../Enum/BoosterType';
import GameState from '../Enum/GameState';
import ScoreType from '../Enum/ScoreType';
import { ScoreObject } from '../Environments/ScoreObject';
@ -7,6 +8,7 @@ import GameEvent from '../Events/GameEvent';
import { registerGizmos } from '../Gizmos/Decorator';
import Gizmos2D from '../Gizmos/Gizmos2D';
import ObjectPool from '../Pool/ObjectPool';
import Singleton from '../Singleton';
import { EventManger } from './EventManger';
const { ccclass, property } = _decorator;
@ -26,13 +28,31 @@ class weightedObject {
public currentWeight;
}
@ccclass('weightedBooster')
class weightedBooster {
@property({ type: BoosterType })
public boosterType: BoosterType;
@property(Prefab)
public prefab: Prefab;
@property(CCInteger)
public readonly weight = 0;
@property(CCInteger)
public weightStepOnGoal = 0;
@property(CCInteger)
public maxWeight = 0;
@property(CCInteger)
public maxObjects = -1;
@property({ type: CCInteger, readonly: true })
public currentWeight;
}
@registerGizmos
@ccclass('SpawnObjectManager')
export class SpawnObjectManager extends Component {
export class SpawnObjectManager extends Singleton<SpawnObjectManager>() {
@property({ type: weightedObject, visible: true })
private _objects: weightedObject[] = [];
@property({ type: weightedObject, visible: true })
private _boosters: weightedObject[] = [];
@property({ type: weightedBooster, visible: true })
private _boosters: weightedBooster[] = [];
@property({ type: Node, visible: true })
private _spawnPoints: Node[] = [];
@property({ type: CCFloat, visible: true })
@ -62,6 +82,7 @@ export class SpawnObjectManager extends Component {
}
protected onLoad(): void {
super.onLoad();
EventManger.instance.on(GameEvent.ObjectRelease, this.onObjectRelease, this);
EventManger.instance.on(GameEvent.GameStateChange, this.onGameStateChange, this);
EventManger.instance.on(GameEvent.Score, this.onScore, this);
@ -128,8 +149,14 @@ export class SpawnObjectManager extends Component {
this._boosterSpawned = true;
}
public getBoosterByType(boosterType: BoosterType): BoosterBase {
this._boosterSpawned = true;
const index = this._boosters.findIndex((b) => b.boosterType == boosterType);
return this._boosterPools[index].get(BoosterBase, this.node);
}
private onObjectRelease(obj: Node) {
delete this._usedPoints[obj.uuid];
if (this._usedPoints[obj.uuid]) delete this._usedPoints[obj.uuid];
}
private onBoosterActive() {

View File

@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "03e78308-8bd2-416c-8d21-c4ca7b017d83",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,124 @@
export type postMessageType = 'paypal_modal' | 'game_tournament';
export type minusTicketType = 'auth' | 'revive';
export interface SDK {
getUserTicket(): number;
getTopScore(): number;
getLatestScore(): number;
getGameScore(): number;
getTicketNeedToContinue(): number;
init(buyTicketCallBack: () => any, thisArg?: any): void;
updateScore(score: number): void;
authenticate(): Promise<boolean>;
checkGameScoreTicket(): Promise<boolean>;
buyMoreTicket(): void;
postScoreToServer(): void;
minusTicket(type: minusTicketType): Promise<boolean>;
callPayPalModal(): void;
canRelive(): boolean;
spinGacha(id: string): Promise<Reward>;
}
export interface Reward {
id: string;
name: string;
type: string;
description: string;
}
enum InitState {
UnInitialized,
Initialized,
}
export default class P4PSDK {
private static _initState: InitState = InitState.UnInitialized;
private static _sdk: SDK;
//#region PUBLIC METHOD
public static getUserTicket(): number {
return this._sdk?.getUserTicket();
}
public static getTopScore(): number {
return this._sdk?.getTopScore();
}
public static getLatestScore(): number {
return this._sdk?.getLatestScore();
}
public static getGameScore(): number {
return this._sdk?.getGameScore();
}
public static getTicketNeedToContinue(): number {
return this._sdk?.getTicketNeedToContinue();
}
private static async loadSDK(): Promise<void> {
return new Promise((resolve, reject) => {
const tag = document.createElement('script');
tag.type = 'module';
tag.src =
'https://firebasestorage.googleapis.com/v0/b/play-now-1aef8.appspot.com/o/SDK%2Fsdk.js?alt=media&token=dd9de5d9-3c09-40da-81ae-c4efae33a828';
tag.async = true;
tag.onload = async () => {
console.log('P4P SDK loaded');
this._sdk = (window as any).P4P.SDK;
resolve();
};
tag.onerror = (e) => {
console.error('Failed to load P4PSDK JS. Please check your internet connection.');
reject(e);
};
document.head.appendChild(tag);
});
}
public static async init(buyTicketCallBack: () => any, thisArg?: any): Promise<void> {
if (this._initState == InitState.Initialized) return;
await this.loadSDK();
this._sdk.init(buyTicketCallBack, thisArg);
this._initState = InitState.Initialized;
}
public static updateScore(score: number) {
this._sdk?.updateScore(score);
}
public static async authenticate(): Promise<boolean> {
return this._sdk?.authenticate();
}
public static async checkGameScoreTicket(): Promise<boolean> {
return this._sdk?.checkGameScoreTicket();
}
public static buyMoreTicket() {
this._sdk?.buyMoreTicket();
}
public static async postScoreToServer() {
this._sdk?.postScoreToServer();
}
public static async minusTicket(type: minusTicketType): Promise<boolean> {
return this._sdk?.minusTicket(type);
}
public static callPayPalModal() {
this._sdk?.callPayPalModal();
}
public static canRelive(): boolean {
return this._sdk?.canRelive();
}
public static async spinGacha(id: string): Promise<Reward> {
return this._sdk?.spinGacha(id);
}
//#endregion
}

View File

@ -2,7 +2,7 @@
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "268944fd-86a0-4e77-b478-a690fb01e519",
"uuid": "bb08d9bc-05c6-4fab-b468-8ca124a3e205",
"files": [],
"subMetas": {},
"userData": {}

View File

@ -1,31 +0,0 @@
import { _decorator, Component, Label, Node } from 'cc';
import BEConnector from '../API/BEConnector';
import { GameManager } from '../Manager/GameManager';
const { ccclass, property } = _decorator;
@ccclass('ConfirmPanel')
export class ConfirmPanel extends Component {
@property(Label) ticketWaringText: Label = null;
protected onEnable(): void {
this.ticketWaringText.string = `To continue playing, you will be deducted ${BEConnector.getTicketCanBeMinus()} ticket`;
}
onClickYesButton() {
if (BEConnector.canRelive()) {
BEConnector.checkGameScoreTicket()
.then(() => {
GameManager.instance.gameRelive();
})
.catch(() => {
GameManager.instance.gameOver();
});
} else {
BEConnector.postMessage();
}
}
onClickNoButton() {
this.node.setActive(false);
}
}

View File

@ -1,11 +1,11 @@
import { _decorator, AudioClip, Component, geometry, Label, Node, Tween, tween, Vec3 } from 'cc';
import BEConnector from '../API/BEConnector';
import GameState from '../Enum/GameState';
import GameEvent from '../Events/GameEvent';
import SpriteFloatingFactory from '../Factory/SpriteFloatingFactory';
import AudioManager from '../Manager/AudioManager';
import { EventManger } from '../Manager/EventManger';
import { GameManager } from '../Manager/GameManager';
import P4PSDK from '../P4PSDK';
import Utils from '../Utilities';
const { ccclass, property } = _decorator;
@ -49,11 +49,11 @@ export class GameOverPanel extends Component {
}
protected onEnable(): void {
this._ticketMinus.string = '-' + BEConnector.getTicketCanBeMinus().toString();
this.topScore.string = BEConnector.maxScore.toString();
this.yourScore.string = BEConnector.currentScore.toString();
this._ticketMinus.string = '-' + P4PSDK.getTicketNeedToContinue().toString();
const currentScore = P4PSDK.getLatestScore();
const gameScore = GameManager.instance.score;
const currentScore = BEConnector.currentScore;
this.topScore.string = P4PSDK.getTopScore().toString();
this.yourScore.string = currentScore.toString();
this.playCollectEffect(gameScore, currentScore);
this.scheduleOnce(this.endGame, 60);
this._active = true;
@ -75,7 +75,7 @@ export class GameOverPanel extends Component {
this._end = true;
if (this._active) {
await Utils.delay(1);
BEConnector.postScoreToServer();
P4PSDK.postScoreToServer();
}
break;
case GameState.Relive:
@ -86,20 +86,7 @@ export class GameOverPanel extends Component {
onClickYesButton() {
if (this._clicked) return;
this._clicked = true;
if (BEConnector.canRelive()) {
BEConnector.checkGameScoreTicket()
.then(() => {
this._clicked = false;
GameManager.instance.gameRelive();
})
.catch(() => {
this._clicked = false;
GameManager.instance.gameOver();
});
} else {
this._clicked = false;
BEConnector.postMessage();
}
GameManager.instance.replay();
}
onClickNoButton() {
@ -170,7 +157,7 @@ export class GameOverPanel extends Component {
.start();
if (!this._end) return;
await Utils.delay(1);
BEConnector.postScoreToServer();
P4PSDK.postScoreToServer();
}
}
}

View File

@ -1,5 +1,4 @@
import { _decorator, Color, Component, Label, Node, ParticleSystem, Vec3 } from 'cc';
import BEConnector from '../API/BEConnector';
import { _decorator, Button, Color, Component, Label, Node, ParticleSystem, Vec3 } from 'cc';
import BoosterType from '../Enum/BoosterType';
import GameState from '../Enum/GameState';
import ScoreType from '../Enum/ScoreType';
@ -7,6 +6,7 @@ import GameEvent from '../Events/GameEvent';
import { EventManger } from '../Manager/EventManger';
import { GameManager } from '../Manager/GameManager';
import { StickerManager } from '../Manager/StickerManager';
import P4PSDK from '../P4PSDK';
import Utils from '../Utilities';
const { ccclass, property } = _decorator;
@ -26,6 +26,10 @@ export class UIController extends Component {
private _startPanel: Node;
@property({ type: Node, visible: true })
private _overPanel: Node;
@property(Node)
private loadingScreen: Node;
@property(Button)
private playButton: Button;
protected async onLoad() {
EventManger.instance.on(GameEvent.Score, this.onScore, this);
@ -37,6 +41,9 @@ export class UIController extends Component {
EventManger.instance.on(GameEvent.TicketUpdate, this.onTicketUpdate, this);
this._buffFx.setNodeActive(false);
this._startPanel.active = true;
this.playButton.interactable = false;
this.loadingScreen.active = true;
}
private async onScore(score: number, points: number, type: ScoreType) {
@ -57,8 +64,9 @@ export class UIController extends Component {
private async onGameStateChange(state: GameState) {
switch (state) {
case GameState.Init:
this._startPanel.active = true;
this._ticketLabel.string = BEConnector.numberTicket.toString();
this.playButton.interactable = true;
this.loadingScreen.active = false;
this._ticketLabel.string = P4PSDK.getUserTicket().toString();
this._scoreLabel.string = '0';
break;
case GameState.Ready:
@ -92,15 +100,15 @@ export class UIController extends Component {
}
public onBoosterActive(type: BoosterType, displayName: string) {
this._buffFx.setNodeActive(true);
this._buffFx.setNodeActive(type == BoosterType.CumulativeBar);
StickerManager.instance.showLabel(displayName + '!!!', {
color: new Color('#ffb517'),
outLineColor: new Color('#ec830a'),
});
}
public onBoosterDisable() {
this._buffFx.setNodeActive(false);
public onBoosterDisable(type: BoosterType) {
if (type == BoosterType.CumulativeBar) this._buffFx.setNodeActive(false);
}
public starGame() {

Some files were not shown because too many files have changed in this diff Show More