模板化初次提交
This commit is contained in:
commit
e0a1cf253c
13
assets/Scene.meta
Normal file
13
assets/Scene.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "29f52784-2fca-467b-92e7-8fd9ef8c57b7",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
766
assets/Scene/GameScene.fire
Normal file
766
assets/Scene/GameScene.fire
Normal file
|
@ -0,0 +1,766 @@
|
|||
[
|
||||
{
|
||||
"__type__": "cc.SceneAsset",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"scene": {
|
||||
"__id__": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Scene",
|
||||
"_objFlags": 0,
|
||||
"_parent": null,
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 2
|
||||
}
|
||||
],
|
||||
"_active": false,
|
||||
"_components": [],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_is3DNode": true,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"autoReleaseAssets": true,
|
||||
"_id": "4eaf518b-35ec-4262-928d-4d497c3f2830"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Canvas",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 3
|
||||
},
|
||||
{
|
||||
"__id__": 5
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 16
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 750,
|
||||
"height": 1334
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
375,
|
||||
667,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "a5esZu+45LA5mBpvttspPD"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Main Camera",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 4
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 960,
|
||||
"height": 640
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "e1WoFrQ79G7r4ZuQE3HlNb"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Camera",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 3
|
||||
},
|
||||
"_enabled": true,
|
||||
"_cullingMask": 4294967295,
|
||||
"_clearFlags": 7,
|
||||
"_backgroundColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"_depth": -1,
|
||||
"_zoomRatio": 1,
|
||||
"_targetTexture": null,
|
||||
"_fov": 60,
|
||||
"_orthoSize": 10,
|
||||
"_nearClip": 1,
|
||||
"_farClip": 4096,
|
||||
"_ortho": true,
|
||||
"_rect": {
|
||||
"__type__": "cc.Rect",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
"_renderStages": 1,
|
||||
"_alignWithScreen": true,
|
||||
"_id": "81GN3uXINKVLeW4+iKSlim"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "GameNode",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 6
|
||||
},
|
||||
{
|
||||
"__id__": 7
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 10
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 15
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 750,
|
||||
"height": 1334
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "b0VHqWWqlJ4qVyuwnLGCWw"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "bg",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
-212.867,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "78Sk802p9L/Ip+ZPEFbJnp"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Top",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 8
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
667,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "cfD+6eekJE44Ilk2xG5ORu"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Widget",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 7
|
||||
},
|
||||
"_enabled": true,
|
||||
"alignMode": 1,
|
||||
"_target": null,
|
||||
"_alignFlags": 1,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 0,
|
||||
"_bottom": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_horizontalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 0,
|
||||
"_originalHeight": 0,
|
||||
"_id": "5cAl+uVM5GTKUsLlsyFnpY"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Win",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "beOm6xY9JGcpUIgHepr4za"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "GameOver",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_active": false,
|
||||
"_components": [],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 40,
|
||||
"height": 36
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "5dxBdyCr9Dd7WMwsS/0Owj"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "New Sprite(Splash)",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 10
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 12
|
||||
},
|
||||
{
|
||||
"__id__": 13
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 50,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 750,
|
||||
"height": 2000
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "c4602Hd0NIO6CGG6oPjm+C"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_srcBlendFactor": 770,
|
||||
"_dstBlendFactor": 771,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
|
||||
},
|
||||
"_type": 0,
|
||||
"_sizeMode": 0,
|
||||
"_fillType": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": true,
|
||||
"_atlas": null,
|
||||
"_id": "ff0h3MP/lOCZ6oqE4ZSOxy"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.BlockInputEvents",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_enabled": true,
|
||||
"_id": "22S5GnmVhCz7EY4orhQpJT"
|
||||
},
|
||||
{
|
||||
"__type__": "b0432BA295DjIOcuitdGKO1",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_enabled": true,
|
||||
"_id": "7dXON6+8BHRrnLvjmlXv+P"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Widget",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_enabled": true,
|
||||
"alignMode": 1,
|
||||
"_target": null,
|
||||
"_alignFlags": 45,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 0,
|
||||
"_bottom": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_horizontalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 0,
|
||||
"_originalHeight": 0,
|
||||
"_id": "dfOLca1KVCyLxvg197AIBc"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Canvas",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"_designResolution": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 750,
|
||||
"height": 1334
|
||||
},
|
||||
"_fitWidth": true,
|
||||
"_fitHeight": false,
|
||||
"_id": "59Cd0ovbdF4byw5sbjJDx7"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Widget",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"alignMode": 1,
|
||||
"_target": null,
|
||||
"_alignFlags": 45,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 0,
|
||||
"_bottom": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_horizontalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 0,
|
||||
"_originalHeight": 0,
|
||||
"_id": "29zXboiXFBKoIV4PQ2liTe"
|
||||
}
|
||||
]
|
8
assets/Scene/GameScene.fire.meta
Normal file
8
assets/Scene/GameScene.fire.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"ver": "1.3.2",
|
||||
"uuid": "4eaf518b-35ec-4262-928d-4d497c3f2830",
|
||||
"importer": "scene",
|
||||
"asyncLoadAssets": false,
|
||||
"autoReleaseAssets": true,
|
||||
"subMetas": {}
|
||||
}
|
1028
assets/Scene/LoadScene.fire
Normal file
1028
assets/Scene/LoadScene.fire
Normal file
File diff suppressed because it is too large
Load Diff
8
assets/Scene/LoadScene.fire.meta
Normal file
8
assets/Scene/LoadScene.fire.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"ver": "1.3.2",
|
||||
"uuid": "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d",
|
||||
"importer": "scene",
|
||||
"asyncLoadAssets": false,
|
||||
"autoReleaseAssets": true,
|
||||
"subMetas": {}
|
||||
}
|
4811
assets/Scene/OverScene.fire
Normal file
4811
assets/Scene/OverScene.fire
Normal file
File diff suppressed because it is too large
Load Diff
8
assets/Scene/OverScene.fire.meta
Normal file
8
assets/Scene/OverScene.fire.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"ver": "1.3.2",
|
||||
"uuid": "4b9c5a7e-c645-48a4-9aca-5df381ce4ef5",
|
||||
"importer": "scene",
|
||||
"asyncLoadAssets": false,
|
||||
"autoReleaseAssets": true,
|
||||
"subMetas": {}
|
||||
}
|
5234
assets/Scene/RankScene.fire
Normal file
5234
assets/Scene/RankScene.fire
Normal file
File diff suppressed because it is too large
Load Diff
8
assets/Scene/RankScene.fire.meta
Normal file
8
assets/Scene/RankScene.fire.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"ver": "1.3.2",
|
||||
"uuid": "2d2f792f-a40c-49bb-a189-ed176a246e49",
|
||||
"importer": "scene",
|
||||
"asyncLoadAssets": false,
|
||||
"autoReleaseAssets": true,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script.meta
Normal file
13
assets/Script.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "4734c20c-0db8-4eb2-92ea-e692f4d70934",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
10
assets/Script/DynamicAtlasManager.js
Normal file
10
assets/Script/DynamicAtlasManager.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
cc.Class({
|
||||
extends: cc.Component,
|
||||
|
||||
properties: {
|
||||
},
|
||||
|
||||
onLoad () {
|
||||
cc.dynamicAtlasManager.enabled = false;
|
||||
},
|
||||
});
|
10
assets/Script/DynamicAtlasManager.js.meta
Normal file
10
assets/Script/DynamicAtlasManager.js.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "5c9b8159-89a3-4b32-b303-b3d4f7ac1c9f",
|
||||
"importer": "javascript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
118
assets/Script/GameManager.ts
Normal file
118
assets/Script/GameManager.ts
Normal file
|
@ -0,0 +1,118 @@
|
|||
// 主游戏控制类
|
||||
const {ccclass, property} = cc._decorator;
|
||||
@ccclass
|
||||
export default class GameManager extends cc.Component {
|
||||
countTime: number;
|
||||
|
||||
onLoad () {}
|
||||
start () {
|
||||
this.fit();
|
||||
this.init();
|
||||
}
|
||||
//初始化数据
|
||||
init(){
|
||||
|
||||
}
|
||||
//根据是否全面屏,做独立适配方面
|
||||
fit(){
|
||||
var jg = this.setFit();
|
||||
if(!jg){
|
||||
|
||||
}
|
||||
}
|
||||
//判断全面屏
|
||||
getSetScreenResolutionFlag () {
|
||||
let size = cc.winSize;
|
||||
let width = size.width;
|
||||
let height = size.height;
|
||||
if ((height / width) > (16.2 / 9)) return false;
|
||||
return true;
|
||||
}
|
||||
//判断全面屏适配
|
||||
setFit () {
|
||||
let flag = this.getSetScreenResolutionFlag();
|
||||
if (flag) {
|
||||
} else {
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
//返回首页
|
||||
backScene(){
|
||||
cc.director.loadScene("LoadScene");
|
||||
}
|
||||
//下一关,或者重新开始,或者返回上一关,根据level决定
|
||||
reStart(type){
|
||||
|
||||
}
|
||||
//获取时间戳
|
||||
getTime(){
|
||||
const timestamp = new Date().getTime();
|
||||
return timestamp;
|
||||
}
|
||||
//获胜
|
||||
passLevel(){
|
||||
|
||||
}
|
||||
//失败
|
||||
loseLevel(type){
|
||||
|
||||
}
|
||||
|
||||
//开始游戏
|
||||
startGame(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
//如果是倒计时 调用此方法
|
||||
updateCountDownTime () {
|
||||
if (this.countTime > 0) {
|
||||
this.countTime -= 1;
|
||||
// this.time.string = cc.fx.GameTool.getTimeMargin(this.countTime);
|
||||
if(this.countTime < 5){
|
||||
// cc.tween(this.time.node)
|
||||
// .to(0.25,{scale:1.5,color:cc.color(255,0,0)})
|
||||
// .to(0.25,{scale:1,color:cc.color(255,255,255)})
|
||||
// .start()
|
||||
let over = this.node.getChildByName("Over");
|
||||
cc.tween(over)
|
||||
.to(0.2,{opacity:255})
|
||||
.delay(0.1)
|
||||
.to(0.2,{opacity:0})
|
||||
.start();
|
||||
}
|
||||
if(this.countTime <= 0){
|
||||
this.unschedule(this.updateCountDownTime);
|
||||
var time = 0;
|
||||
this.gameOver(time);
|
||||
}
|
||||
}
|
||||
}
|
||||
//上传每次操作数据
|
||||
setData(){
|
||||
cc.fx.GameTool.setGameData();
|
||||
}
|
||||
//上传排行榜数据
|
||||
gameOver(time){
|
||||
cc.fx.GameTool.setRank(time);
|
||||
this.node.getChildByName("GameOver").active = true;
|
||||
this.node.getChildByName("GameOver").opacity = 0;
|
||||
cc.tween(this.node.getChildByName("GameOver"))
|
||||
.to(0.4,{opacity:255})
|
||||
.delay(2)
|
||||
.to(0.4,{opacity:50})
|
||||
.call(() =>{
|
||||
cc.director.loadScene("OverScene");
|
||||
})
|
||||
.start()
|
||||
}
|
||||
|
||||
onEnable () {
|
||||
// cc.fx.Notifications.on("clickSun", this.clickSun, this);
|
||||
}
|
||||
onDisable () {
|
||||
// cc.fx.Notifications.off("clickSun", this.clickSun);
|
||||
}
|
||||
update (dt) {
|
||||
}
|
||||
}
|
10
assets/Script/GameManager.ts.meta
Normal file
10
assets/Script/GameManager.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "b0432040-dbde-438c-839c-ba2b5d18a3b5",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
96
assets/Script/GameOver.ts
Normal file
96
assets/Script/GameOver.ts
Normal file
|
@ -0,0 +1,96 @@
|
|||
|
||||
const {ccclass, property} = cc._decorator;
|
||||
|
||||
@ccclass
|
||||
export default class NewClass extends cc.Component {
|
||||
@property(cc.Label)
|
||||
count: cc.Label = null;
|
||||
@property(cc.Label)
|
||||
time: cc.Label = null;
|
||||
@property(cc.Node)
|
||||
selfNode: cc.Node = null;
|
||||
@property(cc.Node)
|
||||
one: cc.Node = null;
|
||||
@property(cc.Node)
|
||||
two: cc.Node = null;
|
||||
@property(cc.Node)
|
||||
three: cc.Node = null;
|
||||
@property(cc.Node)
|
||||
four: cc.Node = null;
|
||||
@property(cc.Node)
|
||||
five: cc.Node = null;
|
||||
listData: any;
|
||||
selfData: any;
|
||||
// onLoad () {}
|
||||
start () {
|
||||
this.count.string = cc.fx.GameConfig.GM_INFO.total + "";
|
||||
if(cc.fx.GameConfig.GM_INFO.mean_Time > 10){
|
||||
cc.fx.GameConfig.GM_INFO.mean_Time = (parseInt(Math.random()*10+"")+5)/10
|
||||
}
|
||||
this.time.string = cc.fx.GameConfig.GM_INFO.mean_Time + "s";
|
||||
this.init();
|
||||
}
|
||||
//初始化数据
|
||||
init(){
|
||||
this.listData = [];
|
||||
this.selfData = null;
|
||||
this.one.active = false;
|
||||
this.two.active = false;
|
||||
this.three.active = false;
|
||||
this.four.active = false;
|
||||
this.five.active = false;
|
||||
this.getRank();
|
||||
}
|
||||
//打开排行榜
|
||||
openRank(){
|
||||
cc.director.loadScene("RankScene");
|
||||
}
|
||||
//重新开始玩
|
||||
again(){
|
||||
cc.director.loadScene("GameScene");
|
||||
}
|
||||
//获取排行榜
|
||||
getRank(){
|
||||
//获取排行榜数据 所需数据量
|
||||
let dataFile = {
|
||||
length:5
|
||||
}
|
||||
cc.fx.GameTool.getRank(dataFile,data =>this.getRankData(data));
|
||||
}
|
||||
//设置排行信息
|
||||
getRankData(data){
|
||||
if(data){
|
||||
cc.fx.GameTool.getRankData(data,this,4);
|
||||
cc.fx.GameTool.setPic(this.selfNode.getChildByName("pic").getChildByName("icon"),this.selfData.pic);
|
||||
for(let i=0;i<=4;i++){
|
||||
this.setRank(i,this.listData[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
//根据内容填充排行榜
|
||||
setRank(num,data){
|
||||
var hitNode = null;
|
||||
if(num == 0){
|
||||
hitNode = this.one;
|
||||
}
|
||||
else if(num == 1){
|
||||
hitNode = this.two;
|
||||
}
|
||||
else if(num == 2){
|
||||
hitNode = this.three;
|
||||
}
|
||||
else if(num == 3){
|
||||
hitNode = this.four;
|
||||
}
|
||||
else if(num == 4){
|
||||
hitNode = this.five;
|
||||
}
|
||||
if(hitNode){
|
||||
hitNode.active = true;
|
||||
cc.fx.GameTool.subName(data.nickName,4);
|
||||
hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName;
|
||||
hitNode.getChildByName("total").getComponent(cc.Label).string = data.totalSunCount;
|
||||
cc.fx.GameTool.setPic(hitNode.getChildByName("pic").getChildByName("icon"),data.pic);
|
||||
}
|
||||
}
|
||||
}
|
10
assets/Script/GameOver.ts.meta
Normal file
10
assets/Script/GameOver.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "805c69df-dfdf-4759-97ae-5a7341f424c7",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
48
assets/Script/GameScene.js
Normal file
48
assets/Script/GameScene.js
Normal file
|
@ -0,0 +1,48 @@
|
|||
|
||||
// cc.Class({
|
||||
// extends: cc.Component,
|
||||
// properties: {
|
||||
// localTest: {
|
||||
// default: false,
|
||||
// tooltip: '本地测试时勾选,避免tz_url和Configure报错,提交前勾掉'
|
||||
// },
|
||||
// clientTest: {
|
||||
// default: false,
|
||||
// tooltip: '客户端测试时勾选,展示版本标记方便测试区分,上线前勾掉'
|
||||
// },
|
||||
// clientTestVersion: {
|
||||
// default: '',
|
||||
// tooltip: '版本标记'
|
||||
// },
|
||||
// testVersion: cc.Label,
|
||||
// score: cc.Label,
|
||||
// double_hit: cc.Node,
|
||||
// add: cc.Node,
|
||||
// add2: cc.Node,
|
||||
// double_title: cc.Node,
|
||||
// count_time: cc.Node,
|
||||
// beginNode: cc.Node,
|
||||
// ball_nomal: [cc.SpriteFrame],
|
||||
// bg_nomal: [cc.SpriteFrame],
|
||||
// ball_light: [cc.SpriteFrame],
|
||||
// kuang_Frame: [cc.SpriteFrame],
|
||||
// daojishi: cc.Label,
|
||||
// pause_anniu: cc.Sprite,
|
||||
// mask: cc.Node,
|
||||
|
||||
// flashUI: {
|
||||
// default: null,
|
||||
// type: cc.SpriteAtlas
|
||||
// },
|
||||
// },
|
||||
|
||||
// onLoad() {
|
||||
|
||||
|
||||
// },
|
||||
|
||||
// update(dt) {
|
||||
|
||||
// },
|
||||
|
||||
// });
|
10
assets/Script/GameScene.js.meta
Normal file
10
assets/Script/GameScene.js.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "e8b23e56-8d10-44ad-a8f0-2e637cc45533",
|
||||
"importer": "javascript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
40
assets/Script/Load.ts
Normal file
40
assets/Script/Load.ts
Normal file
|
@ -0,0 +1,40 @@
|
|||
|
||||
const {ccclass, property, requireComponent} = cc._decorator;
|
||||
|
||||
@ccclass
|
||||
export default class NewClass extends cc.Component {
|
||||
|
||||
@property(false)
|
||||
localTest: boolean = false;
|
||||
|
||||
@property("")
|
||||
clientTestVersion: string = "1.0.0";
|
||||
|
||||
@property(cc.Label)
|
||||
testVersion: cc.Label = null;
|
||||
|
||||
start () {
|
||||
window.initMgr();
|
||||
cc.fx.GameConfig.init(this.localTest);
|
||||
cc.fx.AudioManager.Instance.init();
|
||||
this.testVersion.string = this.clientTestVersion;
|
||||
}
|
||||
|
||||
//开始游戏,跳转至引导页面
|
||||
startGame(){
|
||||
cc.director.loadScene("GameScene");
|
||||
// cc.director.loadScene("GuideScene");
|
||||
}
|
||||
//备用,用来测试跳转 指定关卡
|
||||
clickBtn(event,data){
|
||||
cc.fx.GameConfig.GM_INFO.custom = parseInt(data);
|
||||
cc.director.loadScene("GameScene");
|
||||
}
|
||||
//打开排行榜
|
||||
openRank(){
|
||||
cc.director.loadScene("RankScene");
|
||||
}
|
||||
|
||||
protected update(dt: number): void {
|
||||
}
|
||||
}
|
10
assets/Script/Load.ts.meta
Normal file
10
assets/Script/Load.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "454ad829-851a-40ea-8ab9-941e828357ca",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
133
assets/Script/RankManager.ts
Normal file
133
assets/Script/RankManager.ts
Normal file
|
@ -0,0 +1,133 @@
|
|||
|
||||
import List from "./module/RankList/List";
|
||||
const { ccclass, property } = cc._decorator;
|
||||
//排行榜
|
||||
@ccclass
|
||||
export default class RankManager extends cc.Component {
|
||||
@property(cc.Node) //用户上方头像
|
||||
Player: cc.Node = null;
|
||||
@property(cc.Node) //用户最下方个人信息
|
||||
selfNode: cc.Node = null;
|
||||
@property(cc.Sprite) //用户头像换图
|
||||
phone: cc.Sprite = null;
|
||||
private rankList: List; //排行榜
|
||||
tween: cc.Tween<cc.Node>; //最上方用户头像动画
|
||||
listData: any; //总列表信息
|
||||
selfData: any; //自己信息
|
||||
rankNumber: number; //用户自己排名 有可能不在排行榜内99+
|
||||
rankTotal: number; //获取排行榜用户数量 现在为100
|
||||
|
||||
onLoad() {
|
||||
this.init();
|
||||
}
|
||||
//初始化数据
|
||||
init(){
|
||||
this.rankList = cc.find("ScrollView", this.node).getComponent(List);
|
||||
this.Player.getChildByName("rank").active = false;
|
||||
this.listData = [];
|
||||
this.selfData = null;
|
||||
this.rankNumber = 100;
|
||||
this.rankTotal= 100;
|
||||
this.selfNode.opacity = 0;
|
||||
}
|
||||
|
||||
start() {
|
||||
this.Player.active = false;
|
||||
this.getRank();
|
||||
}
|
||||
//调用获取排行榜接口
|
||||
getRank(){
|
||||
let dataFile = {
|
||||
length:100
|
||||
}
|
||||
cc.fx.GameTool.getRank(dataFile,data =>this.getRankData(data));
|
||||
}
|
||||
//实际设置排行数据
|
||||
getRankData(data){
|
||||
if(data){
|
||||
// console.log(data);
|
||||
cc.fx.GameTool.getRankData(data,this,6);
|
||||
this.setPic(this.selfData.pic);
|
||||
}
|
||||
}
|
||||
//返回按钮
|
||||
backClick(){
|
||||
cc.director.loadScene("LoadScene");
|
||||
}
|
||||
//最上方用户动画
|
||||
playerAction(){
|
||||
//-254 377 210 453
|
||||
this.Player.getChildByName("rank").active = false;
|
||||
let time = 1;
|
||||
this.tween = cc.tween(this.Player)
|
||||
.to(2,{position:cc.v3(210,453,0)})
|
||||
.call(() =>{
|
||||
this.Player.getChildByName("rank").active = true;
|
||||
this.Player.getChildByName("rank").getChildByName("number")
|
||||
.getComponent(cc.Label).string = parseInt(time*100 + "") + "%";
|
||||
})
|
||||
.start();
|
||||
time = (this.listData.length - this.rankNumber)/this.listData.length;
|
||||
if(this.listData.length >= 99){
|
||||
if(this.rankNumber >= 99){
|
||||
time = (Math.random()*49+1)/100
|
||||
var matchId = cc.sys.localStorage.getItem("matchNumber");
|
||||
if(matchId == null || matchId == undefined){
|
||||
time = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
setTimeout(() => {
|
||||
if(this.tween)this.tween.stop();
|
||||
this.Player.getChildByName("rank").active = true;
|
||||
this.Player.getChildByName("rank").getChildByName("number")
|
||||
.getComponent(cc.Label).string = parseInt(time*100 + "") + "%";
|
||||
}, time*2000);
|
||||
|
||||
}
|
||||
//设置头像 处理的逻辑比较多,不用公共类的了
|
||||
public setPic(pic){
|
||||
this.phone.node.parent.getChildByName("icon").active = false;
|
||||
this.phone.node.active = false;
|
||||
this.Player.active = true;
|
||||
this.Player.opacity = 0;
|
||||
this.Player.getChildByName("mask").getChildByName("icon").active = false;
|
||||
this.Player.getChildByName("mask").getChildByName("phone").active = false;
|
||||
fetch(pic)
|
||||
.then(response => {
|
||||
return response.headers.get('Content-Length');
|
||||
})
|
||||
.then(errNo => {
|
||||
if(errNo == "5093"){
|
||||
this.phone.node.parent.getChildByName("icon").active = true;
|
||||
this.Player.getChildByName("mask").getChildByName("icon").active = true;
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error fetching X-Info:', error);
|
||||
});
|
||||
var self = this;
|
||||
cc.assetManager.loadRemote(pic, {ext:'.png'},(err, texture:cc.Texture2D) => {
|
||||
self.Player.opacity = 255;
|
||||
if(texture){
|
||||
self.phone.node.active = true;
|
||||
self.phone.spriteFrame = new cc.SpriteFrame(texture);
|
||||
self.Player.getChildByName("mask").getChildByName("icon").active = false;
|
||||
self.Player.getChildByName("mask").getChildByName("phone").active = true;
|
||||
self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite)
|
||||
.spriteFrame = new cc.SpriteFrame(texture);
|
||||
setTimeout(() => {
|
||||
self.playerAction();
|
||||
}, 500);
|
||||
}
|
||||
else{
|
||||
self.Player.getChildByName("mask").getChildByName("icon").active = true;
|
||||
setTimeout(() => {
|
||||
self.playerAction();
|
||||
}, 500);
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
}
|
10
assets/Script/RankManager.ts.meta
Normal file
10
assets/Script/RankManager.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "e74a9f7d-2031-4e69-bcb2-9998174088b2",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module.meta
Normal file
13
assets/Script/module.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "eaa8b84d-69d0-4170-9f7d-8179ea948cde",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module/Config.meta
Normal file
13
assets/Script/module/Config.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "8848cd9b-8115-456d-a656-2abcda1dadbe",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
334
assets/Script/module/Config/GameConfig.ts
Normal file
334
assets/Script/module/Config/GameConfig.ts
Normal file
|
@ -0,0 +1,334 @@
|
|||
|
||||
|
||||
const { ccclass, property } = cc._decorator;
|
||||
@ccclass('GameConfig')
|
||||
export class GameConfig {
|
||||
//所有控制信息都通过GameAppStart内控制
|
||||
private static _instance : GameConfig = null;
|
||||
//用于盛放埋点数据上传,每次上传后清空
|
||||
static GM_INFO: {
|
||||
// isEnd: false,
|
||||
mean_Time: number; //平均放箭速度
|
||||
total: number; //总共对的个数
|
||||
currSeed: number; //用于随机数种子
|
||||
gameId: string; //游戏ID
|
||||
userId: number; //用户ID
|
||||
guide: boolean; //是否有引导
|
||||
url: string; //访问域名
|
||||
success: boolean; //用户游戏成功与否
|
||||
matchId: any; //用于埋点上传的ID
|
||||
custom: number; //用于测试跳关卡
|
||||
};
|
||||
static CLICK_DATA: {
|
||||
type: number; //上传数据类型
|
||||
success: boolean; //此局游戏胜负
|
||||
round: number; //回合数
|
||||
totalSunCount: number; //太阳总数
|
||||
movedSunCount: number; //可移动太阳个数
|
||||
sunSpeed: number; //太阳移动速度
|
||||
overlapSunCount: number; //重叠太阳个数
|
||||
colorList: any[]; //太阳颜色数组
|
||||
duration: number; //每次点击的反应时间
|
||||
difficultyLevel: number; //此次难度
|
||||
sunList: any[]; //太阳数组,用于存放太阳类型 0:普通 1:移动 2:重叠
|
||||
stepTimeList: any[]; //每次点击间隔
|
||||
remainder: number; //游戏剩余时间
|
||||
};
|
||||
static LEVEL_INFO: { //第一难度
|
||||
number: number; //太阳总数
|
||||
moveNumber: number; //太阳可移动个数
|
||||
moveSpeed: number; //太阳移动速度等级
|
||||
maxDistance: number; //布局后移动最大距离
|
||||
maxMove: number; //每个太阳之间距离最大间距
|
||||
repeat: number; //是否重叠,现在0 不重叠 1 重叠1个
|
||||
}[];
|
||||
static GAME_DATA: any[];
|
||||
|
||||
|
||||
static get Instance()
|
||||
{
|
||||
if (this._instance == null)
|
||||
{
|
||||
this._instance = new GameConfig();
|
||||
}
|
||||
return this._instance;
|
||||
}
|
||||
|
||||
static init(Authentication){
|
||||
cc.resources.load('Json/GM_INFO', (err: any, res: cc.JsonAsset) => {
|
||||
if (err) {
|
||||
this.GM_INFO_init();
|
||||
if(!Authentication) this.Authentication();
|
||||
return;
|
||||
}
|
||||
let jsonData: object = res.json!;
|
||||
this.GM_INFO = jsonData["data"];
|
||||
if(!Authentication) this.Authentication();
|
||||
})
|
||||
cc.resources.load('Json/CLICK_DATA', (err: any, res: cc.JsonAsset) => {
|
||||
if (err) {
|
||||
this.CLICK_init();
|
||||
return;
|
||||
}
|
||||
let jsonData: object = res.json!;
|
||||
this.CLICK_DATA = jsonData["data"];
|
||||
})
|
||||
cc.resources.load('Json/LEVEL_INFO', (err: any, res: cc.JsonAsset) => {
|
||||
if (err) {
|
||||
this.LEVEL_INFO_init();
|
||||
return;
|
||||
}
|
||||
let jsonData: object = res.json!;
|
||||
this.LEVEL_INFO = jsonData["data"];
|
||||
})
|
||||
|
||||
//GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次
|
||||
this.GAME_DATA = [
|
||||
]
|
||||
}
|
||||
|
||||
//数据备用
|
||||
static GM_INFO_init() {
|
||||
this.GM_INFO = {
|
||||
// isEnd: false,
|
||||
mean_Time: 0, //平均放箭速度
|
||||
total: 0, //总共对的个数
|
||||
currSeed: 203213, //用于随机数种子
|
||||
gameId: '100009', //游戏ID
|
||||
userId: 0, //用户ID
|
||||
guide: true, //是否有引导
|
||||
url: "http://api.sparkus.cn",//访问域名
|
||||
success: false, //用户游戏成功与否
|
||||
matchId: null, //用于埋点上传的ID
|
||||
custom: 0 //用于测试跳关卡
|
||||
};
|
||||
}
|
||||
static CLICK_init() {
|
||||
this.CLICK_DATA =
|
||||
{
|
||||
type: 1, //上传数据类型
|
||||
success: false, //此局游戏胜负
|
||||
round: 0, //回合数
|
||||
totalSunCount: 0, //太阳总数
|
||||
movedSunCount: 0, //可移动太阳个数
|
||||
sunSpeed: 0, //太阳移动速度
|
||||
overlapSunCount: 0, //重叠太阳个数
|
||||
colorList: [], //太阳颜色数组
|
||||
duration: 0, //每次点击的反应时间
|
||||
difficultyLevel: 0, //此次难度
|
||||
sunList: [], //太阳数组,用于存放太阳类型 0:普通 1:移动 2:重叠
|
||||
stepTimeList: [], //每次点击间隔
|
||||
remainder: 120 //游戏剩余时间
|
||||
}
|
||||
}
|
||||
static LEVEL_INFO_init() {
|
||||
this.LEVEL_INFO = [
|
||||
{ //第一难度
|
||||
number: 3, //太阳总数
|
||||
moveNumber: 0, //太阳可移动个数
|
||||
moveSpeed: 0, //太阳移动速度等级
|
||||
maxDistance: 200, //布局后移动最大距离
|
||||
maxMove: 1200, //每个太阳之间距离最大间距
|
||||
repeat: 0 //是否重叠,现在0 不重叠 1 重叠1个
|
||||
},
|
||||
{ //第二难度
|
||||
number: 4,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 0,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //第三难度
|
||||
number: 4,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 0,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //第四难度
|
||||
number: 5,
|
||||
moveNumber: 1,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //第五难度
|
||||
number: 5,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //第六难度
|
||||
number: 6,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //第七难度
|
||||
number: 6,
|
||||
moveNumber: 3,
|
||||
moveSpeed: 4,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //第八难度
|
||||
number: 7,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 4,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //第九难度
|
||||
number: 7,
|
||||
moveNumber: 3,
|
||||
moveSpeed: 4,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //第十难度
|
||||
number: 7,
|
||||
moveNumber: 3,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //第十一难度
|
||||
number: 8,
|
||||
moveNumber: 3,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //第十二难度
|
||||
number: 8,
|
||||
moveNumber: 5,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //第十三难度
|
||||
number: 9,
|
||||
moveNumber: 3,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //第十四难度
|
||||
number: 9,
|
||||
moveNumber: 5,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //第十五难度
|
||||
number: 10,
|
||||
moveNumber: 5,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //11
|
||||
number: 3,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //12
|
||||
number: 4,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 0,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //13
|
||||
number: 4,
|
||||
moveNumber: 1,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //14
|
||||
number: 4,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //15
|
||||
number: 4,
|
||||
moveNumber: 1,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //16
|
||||
number: 5,
|
||||
moveNumber: 1,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 0
|
||||
},
|
||||
{ //17
|
||||
number: 5,
|
||||
moveNumber: 0,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //18
|
||||
number: 5,
|
||||
moveNumber: 1,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //19
|
||||
number: 5,
|
||||
moveNumber: 2,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
},
|
||||
{ //20
|
||||
number: 5,
|
||||
moveNumber: 3,
|
||||
moveSpeed: 6,
|
||||
maxDistance: 200,
|
||||
maxMove: 1200,
|
||||
repeat: 1
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
|
||||
static Authentication(){
|
||||
cc.fx.GameTool.Authentication();
|
||||
}
|
||||
}
|
||||
|
10
assets/Script/module/Config/GameConfig.ts.meta
Normal file
10
assets/Script/module/Config/GameConfig.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "c5692be7-8703-45e4-9f67-23b54d290356",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module/Crypto.meta
Normal file
13
assets/Script/module/Crypto.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "13a0b173-d59e-4a9d-b5e3-4dbe4dc37cc1",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
221
assets/Script/module/Crypto/HttpUtil.ts
Normal file
221
assets/Script/module/Crypto/HttpUtil.ts
Normal file
|
@ -0,0 +1,221 @@
|
|||
|
||||
const {ccclass, property} = cc._decorator;
|
||||
import CryptoJS = require('./crypto-js.min.js'); //引用AES源码js
|
||||
|
||||
const BASE_URL = "http://api.sparkus.cn";
|
||||
//只负责网络接口 次类只负责和后端交互,不负责处理数据 数据处理在GameTool
|
||||
@ccclass
|
||||
export default class HttpUtil extends cc.Component {
|
||||
//排行榜
|
||||
static async rankData(type,callback,data): Promise<any> {
|
||||
const time = Math.floor((new Date().getTime()) / 1000)
|
||||
const url = apiSign(`/api/get/rank/data?gameId=${config.gameId}&dataType=${type}&time=${time}`, data)
|
||||
this.post(url,data,callback);
|
||||
}
|
||||
|
||||
static async uploadUserLogData(data,callback): Promise<any> {
|
||||
const url = '/log/collect/data';
|
||||
this.post(url,data,callback);
|
||||
}
|
||||
//暂时用不到
|
||||
static async getUserRecord(data,callback): Promise<any> {
|
||||
const time = Math.floor((new Date().getTime()) / 1000)
|
||||
const url = apiSign(`/api/get/user/data?gameId=${config.gameId}&time=${time}`, data)
|
||||
this.post(url,data,callback);
|
||||
}
|
||||
static async post(url, data, callback) {
|
||||
const response = await this.fetchData(url, data, 'POST');
|
||||
callback && callback(response);
|
||||
}
|
||||
|
||||
static async get(url, callback) {
|
||||
const response = await this.fetchData(url, null, 'GET');
|
||||
callback && callback(response);
|
||||
}
|
||||
|
||||
static async fetchData(url, data, method) {
|
||||
const fullUrl = `${BASE_URL}${url}`;
|
||||
const headers = { 'Content-Type': 'application/json' };
|
||||
const options = {
|
||||
method,
|
||||
headers,
|
||||
body: data ? JSON.stringify(data) : null,
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await fetch(fullUrl, options);
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
return await response.json();
|
||||
} catch (error) {
|
||||
console.error('Fetch error:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function responseHandler(response: { data: any }) {
|
||||
return response.data
|
||||
}
|
||||
// 响应拦截器
|
||||
// Rq.interceptors.response.use(responseHandler)
|
||||
const config = {
|
||||
gameId: "100009",
|
||||
secretKey: "CMNhOzBA",
|
||||
EK:"hui231%1"
|
||||
};
|
||||
|
||||
interface CrypotoType {
|
||||
encryptByDES: any
|
||||
decryptByDES: any
|
||||
hmacSha256: any
|
||||
}
|
||||
|
||||
class Crypoto implements CrypotoType {
|
||||
// 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致
|
||||
private keyHex = this.getHetKey()
|
||||
private getHetKey() {
|
||||
return CryptoJS.enc.Utf8.parse(config.EK);
|
||||
}
|
||||
|
||||
/** DES加密 */
|
||||
encryptByDES(message: string, secret?: string) {
|
||||
if(!message) {
|
||||
return message
|
||||
}
|
||||
const key = secret? CryptoJS.enc.Utf8.parse(secret): this.keyHex
|
||||
const encrypted = CryptoJS.DES.encrypt(message, key, {
|
||||
mode: CryptoJS.mode.ECB,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
});
|
||||
return encrypted.toString()
|
||||
}
|
||||
|
||||
/** DES解密 */
|
||||
decryptByDES(message: string, secret?: string) {
|
||||
const key = secret? CryptoJS.enc.Utf8.parse(secret): this.keyHex
|
||||
|
||||
const decrypted = CryptoJS.DES.decrypt({
|
||||
ciphertext: CryptoJS.enc.Base64.parse(message)
|
||||
}, key, {
|
||||
mode: CryptoJS.mode.ECB,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
})
|
||||
|
||||
return decrypted.toString(CryptoJS.enc.Utf8)
|
||||
}
|
||||
|
||||
/** hmacSHA256加密 */
|
||||
hmacSha256(message: string, secret?: string) {
|
||||
const keyHex = secret? CryptoJS.enc.Utf8.parse(secret): this.keyHex
|
||||
|
||||
const hash = CryptoJS.HmacSHA256(message, keyHex);
|
||||
return hash.toString()
|
||||
}
|
||||
|
||||
/** hmacSHA256验证 */
|
||||
verifyHmacSha256(message: string, signature: string) {
|
||||
const hash = CryptoJS.HmacSHA256(message, this.keyHex);
|
||||
return hash.toString() === signature
|
||||
}
|
||||
|
||||
/** CBC加密 */
|
||||
encryptCBC(word: string) {
|
||||
if (!word) {
|
||||
return word;
|
||||
}
|
||||
const srcs = CryptoJS.enc.Utf8.parse(word);
|
||||
const encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, {
|
||||
iv: this.keyHex,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.ZeroPadding
|
||||
});
|
||||
return encrypted.toString();
|
||||
}
|
||||
|
||||
/** CBC解密 */
|
||||
decryptCBC(word: string) {
|
||||
if (!word) {
|
||||
return word;
|
||||
}
|
||||
const encryptedHexStr = CryptoJS.enc.Hex.parse(word);
|
||||
const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
|
||||
const decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, {
|
||||
iv: this.keyHex,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.ZeroPadding
|
||||
});
|
||||
const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
|
||||
return decryptedStr.toString();
|
||||
}
|
||||
}
|
||||
const fxCry = new Crypoto();
|
||||
|
||||
function isEmpty(data) {
|
||||
return data === "" || data === null || data === undefined || data.length === 0 || JSON.stringify(data) == "{}"
|
||||
}
|
||||
|
||||
function getQueryString(obj) {
|
||||
// 首先对对象的键进行排序并过滤空值
|
||||
const sortedKeys = Object.keys(obj).sort();
|
||||
const sortedObj = {};
|
||||
for (let i = 0; i < sortedKeys.length; i++) {
|
||||
if (isEmpty(obj[sortedKeys[i]])) {
|
||||
continue;
|
||||
}
|
||||
sortedObj[sortedKeys[i]] = obj[sortedKeys[i]];
|
||||
}
|
||||
|
||||
// 然后将排序后的对象转换为查询字符串
|
||||
const params = [];
|
||||
for (const key in sortedObj) {
|
||||
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(sortedObj[key])}`);
|
||||
}
|
||||
return params.join('&');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 组装签名字符串
|
||||
* @param string url: 请求地址
|
||||
* @param string postStr: post参数的a=1&b=2
|
||||
* @returns
|
||||
*/
|
||||
|
||||
function genSignStr(url: string, postStr: string): string {
|
||||
let lessUrl = url.replace('?', '')
|
||||
lessUrl = lessUrl + "&" + postStr
|
||||
return encodeURIComponent(fxCry.hmacSha256(lessUrl))
|
||||
}
|
||||
// 对参数进行统一urlencode
|
||||
function urlencode(url: string): string {
|
||||
const [baseUrl, queryString] = url.split("?", 2);
|
||||
const params = new URLSearchParams(queryString);
|
||||
return `${baseUrl}?${params.toString()}`;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} 接口地址
|
||||
* @param params {object} 需要加密的参数对象
|
||||
*/
|
||||
function apiSign(url: string, params = {}) {
|
||||
|
||||
let convertUrl = url.trim()
|
||||
if (convertUrl.indexOf('?') === -1) {
|
||||
convertUrl += '?'
|
||||
}
|
||||
|
||||
// 传入参数转换拼接字符串
|
||||
let postStr = getQueryString(params)
|
||||
|
||||
const signedStr = genSignStr(convertUrl, postStr)
|
||||
const encryptStr = `sign=${signedStr}`
|
||||
|
||||
let encryptSignStr = fxCry.encryptByDES(encryptStr, config.secretKey)
|
||||
encryptSignStr = encodeURIComponent(encryptSignStr)
|
||||
|
||||
return `${urlencode(convertUrl)}&_p=${encryptSignStr}`
|
||||
}
|
||||
|
10
assets/Script/module/Crypto/HttpUtil.ts.meta
Normal file
10
assets/Script/module/Crypto/HttpUtil.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "771a3d9a-4013-4654-a777-fbaea0c93280",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
3
assets/Script/module/Crypto/crypto-js.min.js
vendored
Normal file
3
assets/Script/module/Crypto/crypto-js.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
assets/Script/module/Crypto/crypto-js.min.js.meta
Normal file
10
assets/Script/module/Crypto/crypto-js.min.js.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "e64e1a97-c93f-4257-ab34-80341d8ff79d",
|
||||
"importer": "javascript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module/GameStart.meta
Normal file
13
assets/Script/module/GameStart.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "b4e113c6-a987-4133-bfa0-3355d8ab4bd1",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
101
assets/Script/module/GameStart/GameAppStart.ts
Normal file
101
assets/Script/module/GameStart/GameAppStart.ts
Normal file
|
@ -0,0 +1,101 @@
|
|||
import { GameConfig } from "../Config/GameConfig";
|
||||
import HttpUtil from "../Crypto/HttpUtil";
|
||||
import { AudioManager } from "../Music/AudioManager";
|
||||
import { Notifications } from "../Notification/Notification";
|
||||
import { StorageMessage } from "../Storage/Storage";
|
||||
import { GameTool } from "../Tool/GameTool";
|
||||
|
||||
window.initMgr = function() {
|
||||
if(cc.fx)
|
||||
{
|
||||
return;
|
||||
}
|
||||
cc.fx = {};
|
||||
console.log("初始化");
|
||||
//基础状态信息
|
||||
cc.fx.StateInfo = {
|
||||
debugMode: true,
|
||||
networkConnected: true, //网络状态
|
||||
networkType: 'none', //网络类型
|
||||
isOnForeground: true //当前是否是在前台
|
||||
};
|
||||
|
||||
//应用系统信息
|
||||
//配置文件
|
||||
cc.fx.GameConfig = GameConfig;
|
||||
cc.fx.HttpUtil = HttpUtil;
|
||||
cc.fx.GameTool = GameTool;
|
||||
cc.fx.AudioManager = AudioManager;
|
||||
cc.fx.Notifications = Notifications;
|
||||
cc.fx.StorageMessage = StorageMessage;
|
||||
|
||||
cc.fx.ShareInfo = {
|
||||
queryId : -1 //分享id
|
||||
};
|
||||
|
||||
/*
|
||||
* 客户端埋点分享类型
|
||||
*/
|
||||
cc.fx.BurialShareType = {
|
||||
Default : "default", //默认分享类型,分享到群
|
||||
Invite : "invite", // 邀请好友
|
||||
|
||||
DailyInviteRoomJoin:'invite_join_room', //邀请好友加入
|
||||
DailyInviteFriend : 'invite_friend', // 日常邀请好友
|
||||
DailyInviteGroup : 'invate_group', // 日常分享群
|
||||
DailyInviteGroupAlive: 'invate_alive', //日常分享群复活
|
||||
DailyInviteGroupReward: 'invate_rewared',//分享奖励翻倍
|
||||
DailyInviteGroupBox: 'invate_box', //宝箱分享奖励
|
||||
DailyInviteGroupBall: 'invate_ball', //分享领取球球
|
||||
|
||||
MatchResult : 'matchResult', // 比赛结算分享
|
||||
MatchFix5: 'MatchFix5', // 5元红包赛
|
||||
MatchFix20: 'MatchFix20', // 20元红包赛
|
||||
MatchFix100: 'MatchFix100', // 100元红包赛
|
||||
MatchFix500: 'MatchFix500', // 500元红包赛
|
||||
NewerRedEnvelope: 'newerRedEnvelope', // 新手红包
|
||||
CoinRoomResult: 'coinRoomResult', // 金币桌结算
|
||||
HighRate : "highRate",//高倍分享
|
||||
CoinRoomWinStreak: 'coinRoomWinStreak', // 连胜
|
||||
CoinRoomBankruptcy1: 'coinRoomBankruptcy1', // 金币桌破产
|
||||
CoinRoomBankruptcy2: 'coinRoomBankruptcy2', // 金币桌破产
|
||||
CoinRoomBankruptcy3: 'coinRoomBankruptcy3', // 金币桌破产
|
||||
};
|
||||
|
||||
/*
|
||||
* 分享到哪儿给奖励 group frined all
|
||||
*/
|
||||
cc.fx.ShareWhereReward = {
|
||||
Group :"group", //微信群
|
||||
Friend : "friend",//好友
|
||||
All : "all", //不区分
|
||||
};
|
||||
|
||||
|
||||
//暂时不用
|
||||
cc.fx.clickStatEventType = {
|
||||
clickStatEventTypeVideoAD : 20173201,//视频播放完成
|
||||
clickStatEventTypeClickAdVideo : 20173202,//视频播放为完成
|
||||
clickStatEventTypeBannerAD : 20173203,//banner播放为完成
|
||||
clickStatEventTypeUserFrom : 99990001,//用户来源
|
||||
clickStatEventTypeShare : 99990002,//用户分享
|
||||
clickStatEventTypeClickAdBtn : 99990007,//点击分流icon
|
||||
clickStatEventTypeBannerAD2 : 67890033, // banner广告干预
|
||||
clickStatEventTypeSubmitVersionInfo : 9999, //上报微信版本及基础库信息
|
||||
clickStatEventTypeClickFirstAd : 99990003, //分流icon显示
|
||||
clickStatEventTypeClickSecondAd : 99990004, //玩家点击分流按钮
|
||||
clickStatEventTypeWxLoginStart : 10001,//微信登录开始
|
||||
clickStatEventTypeWxLoginSuccess : 10002,//微信登录成功
|
||||
clickStatEventTypeWxLoginFailed : 10003,//微信登录失败
|
||||
clickStatEventTypeAuthorizationStart : 10003,//授权开始
|
||||
clickStatEventTypeAuthorizationSuccess : 10004,//授权成功
|
||||
clickStatEventTypeAuthorizationFailed : 10005,//授权失败
|
||||
clickStatEventTypeLoginSDKStart : 10007,//登录SDK开始
|
||||
clickStatEventTypeLoginSDKSuccess : 10008,//登录SDK成功
|
||||
clickStatEventTypeLoginSDKFailed : 10009,//登录SDK时失败
|
||||
clickStatEventTypeTCP_Start : 10009,//TCP连接开始
|
||||
clickStatEventTypeTCP_Success : 10010,//TCP连接成功
|
||||
clickStatEventTypeTCP_Failed : 10011,//TCP连接失败
|
||||
};
|
||||
|
||||
};
|
10
assets/Script/module/GameStart/GameAppStart.ts.meta
Normal file
10
assets/Script/module/GameStart/GameAppStart.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "61d4c718-db3b-4b31-8221-f16bea3cf030",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module/Music.meta
Normal file
13
assets/Script/module/Music.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "0487cacb-b94a-4ab6-a301-b6402ab0ac5d",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
229
assets/Script/module/Music/AudioManager.ts
Normal file
229
assets/Script/module/Music/AudioManager.ts
Normal file
|
@ -0,0 +1,229 @@
|
|||
|
||||
|
||||
const { ccclass, property } = cc._decorator;
|
||||
@ccclass('AudioManager')
|
||||
export class AudioManager {
|
||||
|
||||
private static _instance : AudioManager = null;
|
||||
//背景音乐
|
||||
@property(cc.AudioClip)
|
||||
audioGameBgm0: cc.AudioClip = null;
|
||||
//跳跃
|
||||
@property(cc.AudioClip)
|
||||
audioButtonClick: cc.AudioClip = null;
|
||||
//落地上
|
||||
@property(cc.AudioClip)
|
||||
audioWarning: cc.AudioClip = null;
|
||||
//碰撞
|
||||
@property(cc.AudioClip)
|
||||
audioWin: cc.AudioClip = null;
|
||||
//落方块上
|
||||
|
||||
mAudioMap: {};
|
||||
bgMusicVolume: number;
|
||||
effectMusicVolume: number;
|
||||
mMusicSwitch: number;
|
||||
mEffectSwitch: number;
|
||||
brickSound: any;
|
||||
reward: boolean;
|
||||
finish: boolean;
|
||||
rewardCount: number;
|
||||
mMusicKey: any;
|
||||
|
||||
static playWarning() {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
|
||||
ctor () {
|
||||
this.mAudioMap = {};
|
||||
/**
|
||||
* 默认音量大小
|
||||
* @type {number}
|
||||
*/
|
||||
this.bgMusicVolume = 0.1;
|
||||
this.effectMusicVolume = 1;
|
||||
|
||||
this.mMusicSwitch = 1;
|
||||
this.mEffectSwitch = 1;
|
||||
}
|
||||
play (audioSource, loop, callback, isBgMusic) {
|
||||
if (isBgMusic && !this.mMusicSwitch) return;
|
||||
if (!isBgMusic && !this.mEffectSwitch) return;
|
||||
var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume;
|
||||
|
||||
if (cc.sys.isBrowser) {
|
||||
if(audioSource == this.brickSound){
|
||||
volume = 0.1;
|
||||
}
|
||||
volume = 1;
|
||||
var context = cc.audioEngine.play(audioSource, loop, volume);
|
||||
if (callback){
|
||||
cc.audioEngine.setFinishCallback(context, function(){
|
||||
callback.call(this);
|
||||
}.bind(this));
|
||||
}
|
||||
// cc.wwx.OutPut.log('play audio effect isBrowser: ' + context.src);
|
||||
|
||||
this.mAudioMap[audioSource] = context;
|
||||
return audioSource;
|
||||
} else {
|
||||
return audioSource;
|
||||
}
|
||||
}
|
||||
|
||||
save () {
|
||||
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch);
|
||||
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch);
|
||||
}
|
||||
|
||||
static get Instance()
|
||||
{
|
||||
if (this._instance == null)
|
||||
{
|
||||
this._instance = new AudioManager();
|
||||
}
|
||||
return this._instance;
|
||||
}
|
||||
|
||||
public init() {
|
||||
this.reward = false;
|
||||
this.finish = false;
|
||||
this.rewardCount = 0;
|
||||
this.ctor();
|
||||
this.preload();
|
||||
}
|
||||
preload () {
|
||||
if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) { return; }
|
||||
|
||||
var musics = [
|
||||
this.audioGameBgm0,
|
||||
];
|
||||
musics.forEach(function(path) {
|
||||
})
|
||||
}
|
||||
|
||||
getAudioMusicSwitch()
|
||||
{
|
||||
return this.mMusicSwitch;
|
||||
|
||||
}
|
||||
getAudioEffectSwitch()
|
||||
{
|
||||
return this.mEffectSwitch;
|
||||
}
|
||||
trunAudioSound(on)
|
||||
{
|
||||
this.switchMusic(on);
|
||||
this.switchEffect(on)
|
||||
}
|
||||
switchMusic (on) {
|
||||
if (this.mMusicSwitch != (on?1:0))
|
||||
{
|
||||
this.mMusicSwitch = 1-this.mMusicSwitch;
|
||||
// this.save();
|
||||
|
||||
}
|
||||
if(on)
|
||||
{
|
||||
this.playMusicGame();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.stopMusic();
|
||||
}
|
||||
}
|
||||
switchEffect (on) {
|
||||
if (this.mEffectSwitch != (on?1:0)){
|
||||
this.mEffectSwitch = 1-this.mEffectSwitch;
|
||||
// this.save();
|
||||
|
||||
}
|
||||
}
|
||||
onHide () {
|
||||
cc.audioEngine.pauseAll();
|
||||
}
|
||||
|
||||
onShow () {
|
||||
cc.audioEngine.resumeAll();
|
||||
}
|
||||
playMusic (key, callback, loop) {
|
||||
loop = typeof loop == 'undefined' || loop ? true : false;
|
||||
this.stopMusic();
|
||||
this.mMusicKey = this.play(key, loop, callback, true);
|
||||
}
|
||||
/**
|
||||
* 游戏背景音乐
|
||||
*/
|
||||
playMusicGame () {
|
||||
this.playMusic(this.audioGameBgm0,{},true);
|
||||
}
|
||||
/**
|
||||
* 停止背景音乐播放
|
||||
*/
|
||||
stopMusic () {
|
||||
// cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey);
|
||||
|
||||
var context = this.mAudioMap[this.mMusicKey];
|
||||
|
||||
if (typeof(context) != 'undefined') {
|
||||
if (cc.sys.isBrowser) {
|
||||
cc.audioEngine.stop(context);
|
||||
} else {
|
||||
context.stop();
|
||||
}
|
||||
cc.audioEngine.stop(context);
|
||||
|
||||
}
|
||||
}
|
||||
// 炸弹、火箭爆炸音效
|
||||
playWin () {
|
||||
return this.play(this.audioWin, false,null,this.mEffectSwitch);
|
||||
}
|
||||
//激光音效
|
||||
playWarning()
|
||||
{
|
||||
return this.play(this.audioWarning, false,null,this.mEffectSwitch);
|
||||
}
|
||||
|
||||
/*
|
||||
* 游戏开始音效
|
||||
*
|
||||
*/
|
||||
playGameStart()
|
||||
{
|
||||
|
||||
}
|
||||
/*
|
||||
* 失败的游戏结束
|
||||
*/
|
||||
playGameOver()
|
||||
{
|
||||
|
||||
}
|
||||
/*
|
||||
* 成功的游戏结束
|
||||
*/
|
||||
playGameResultFailed()
|
||||
{
|
||||
|
||||
}
|
||||
/*
|
||||
* 成功的游戏结束
|
||||
*/
|
||||
playGameResultSuccess()
|
||||
{
|
||||
|
||||
}
|
||||
/**
|
||||
* 报警的音效
|
||||
*/
|
||||
|
||||
/**
|
||||
* 按钮
|
||||
*/
|
||||
playAudioButton () {
|
||||
return this.play(this.audioButtonClick, false,null,this.mEffectSwitch);
|
||||
}
|
||||
};
|
||||
|
||||
// export { AudioManager };
|
10
assets/Script/module/Music/AudioManager.ts.meta
Normal file
10
assets/Script/module/Music/AudioManager.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "58403fe7-d7a2-426b-9b19-84d3236731a8",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module/Notification.meta
Normal file
13
assets/Script/module/Notification.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "ff6560d9-676d-42ad-8ec7-e44acb84ad9e",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
45
assets/Script/module/Notification/Notification.ts
Normal file
45
assets/Script/module/Notification/Notification.ts
Normal file
|
@ -0,0 +1,45 @@
|
|||
//全局通知
|
||||
var Notifications = {
|
||||
_eventMap: [],
|
||||
on: function (masgId, callback, target) {
|
||||
if (this._eventMap[masgId] === undefined) {
|
||||
this._eventMap[masgId] = [];
|
||||
}
|
||||
this._eventMap[masgId].push({ callback: callback, target: target });
|
||||
},
|
||||
|
||||
emit: function (masgId, parameter) {
|
||||
let array = this._eventMap[masgId];
|
||||
if (array === undefined) return;
|
||||
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
let element = array[i];
|
||||
if (element) element.callback.call(element.target, parameter);
|
||||
}
|
||||
},
|
||||
|
||||
off: function (masgId, callback) {
|
||||
let array = this._eventMap[masgId];
|
||||
if (array === undefined) return;
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
let element = array[i];
|
||||
if (element && element.callback === callback) {
|
||||
array[i] = undefined;
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
offMasgId: function (masgId) {
|
||||
this._eventMap[masgId] = undefined;
|
||||
},
|
||||
|
||||
removeAllMsg: function () {
|
||||
for (let k in this._eventMap) {
|
||||
if (this._eventMap[k]) {
|
||||
this.offMasgId(k);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
export { Notifications };
|
10
assets/Script/module/Notification/Notification.ts.meta
Normal file
10
assets/Script/module/Notification/Notification.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "55403563-1a5a-4f2f-9eb8-82c762641837",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module/RankList.meta
Normal file
13
assets/Script/module/RankList.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "d3520299-33dc-43d2-b522-d424efb5575d",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
74
assets/Script/module/RankList/ItemRender.ts
Normal file
74
assets/Script/module/RankList/ItemRender.ts
Normal file
|
@ -0,0 +1,74 @@
|
|||
|
||||
import List, { ListType } from "./List";
|
||||
|
||||
const { ccclass, property } = cc._decorator;
|
||||
|
||||
@ccclass
|
||||
export default class ItemRender extends cc.Component {
|
||||
/**数据 */
|
||||
public data:any = null;
|
||||
/**索引 0表示第一项*/
|
||||
public itemIndex:number = 0;
|
||||
|
||||
/**数据改变时调用 */
|
||||
public dataChanged(){
|
||||
cc.fx.GameTool.subName(this.data.name,6);
|
||||
this.node.getChildByName("rankLab").getComponent(cc.Label).string = this.data.rank + "";
|
||||
this.node.getChildByName("nameLab").getComponent(cc.Label).string = this.data.name + "";
|
||||
this.node.getChildByName("totalLab").getComponent(cc.Label).string = this.data.total + "";
|
||||
this.node.getChildByName("rank").getChildByName("one").active = false;
|
||||
this.node.getChildByName("rank").getChildByName("two").active = false;
|
||||
this.node.getChildByName("rank").getChildByName("three").active = false;
|
||||
if(this.data.rank == 1){
|
||||
this.node.getChildByName("rank").getChildByName("one").active = true;
|
||||
this.node.getChildByName("rankLab").active = false;
|
||||
}
|
||||
else if(this.data.rank == 2){
|
||||
this.node.getChildByName("rank").getChildByName("two").active = true;
|
||||
this.node.getChildByName("rankLab").active = false;
|
||||
}
|
||||
else if(this.data.rank == 3){
|
||||
this.node.getChildByName("rank").getChildByName("three").active = true;
|
||||
this.node.getChildByName("rankLab").active = false;
|
||||
}else{
|
||||
this.node.getChildByName("rankLab").active = true;
|
||||
}
|
||||
this.setPic();
|
||||
}
|
||||
|
||||
public setPic(){
|
||||
this.node.getChildByName("pic").getChildByName("icon").active = false;
|
||||
this.node.getChildByName("pic").getChildByName("pic").active= false;
|
||||
var self = this;
|
||||
let url = this.data.pic;
|
||||
fetch(url)
|
||||
.then(response => {
|
||||
return response.headers.get('Content-Length');
|
||||
})
|
||||
|
||||
.then(errNo => {
|
||||
// console.log(this.data.rank,'X-Info:', errNo); // 输出X-ErrNo的值
|
||||
if(errNo == "5093"){
|
||||
// console.log(this.data.rank,"没头像");
|
||||
this.node.getChildByName("pic").getChildByName("icon").active = true;
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error fetching X-Info:', error);
|
||||
});
|
||||
cc.assetManager.loadRemote(url, {ext:'.png'},(err, texture:cc.Texture2D) => {
|
||||
if(texture){
|
||||
this.node.getChildByName("pic").getChildByName("pic").active= true;
|
||||
var sprite = this.node.getChildByName("pic").getChildByName("pic").getComponent(cc.Sprite);
|
||||
sprite.spriteFrame = new cc.SpriteFrame(texture);
|
||||
// console.log(this.data.rank,"设置头像成功",err);
|
||||
}
|
||||
else{
|
||||
// console.log("设置头像失败",url);
|
||||
console.log(err,texture)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
10
assets/Script/module/RankList/ItemRender.ts.meta
Normal file
10
assets/Script/module/RankList/ItemRender.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "ca0f9934-a015-436e-9402-f8e30d4c5de6",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
592
assets/Script/module/RankList/List.ts
Normal file
592
assets/Script/module/RankList/List.ts
Normal file
|
@ -0,0 +1,592 @@
|
|||
// Learn TypeScript:
|
||||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||||
// Learn Attribute:
|
||||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||||
// Learn life-cycle callbacks:
|
||||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||||
|
||||
import ItemRender from "./ItemRender"
|
||||
|
||||
const { ccclass, property } = cc._decorator;
|
||||
|
||||
/**列表排列方式 */
|
||||
export enum ListType {
|
||||
/**水平排列 */
|
||||
Horizontal = 1,
|
||||
/**垂直排列 */
|
||||
Vertical = 2,
|
||||
/**网格排列 */
|
||||
Grid = 3
|
||||
}
|
||||
|
||||
/**网格布局中的方向 */
|
||||
export enum StartAxisType {
|
||||
/**水平排列 */
|
||||
Horizontal = 1,
|
||||
/**垂直排列 */
|
||||
Vertical = 2,
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表
|
||||
* 根据cocos_example的listView改动而来
|
||||
* @author chenkai 2020.7.8
|
||||
* @example
|
||||
* 1.创建cocos的ScrollView组件,添加List,设置List属性即可
|
||||
*
|
||||
*/
|
||||
@ccclass
|
||||
export default class List extends cc.Component {
|
||||
|
||||
//==================== 属性面板 =========================
|
||||
/**列表选项 */
|
||||
@property({ type: cc.Node, tooltip: "列表项" })
|
||||
public itemRender: cc.Node = null;
|
||||
|
||||
/**排列方式 */
|
||||
@property({ type: cc.Enum(ListType), tooltip: "排列方式" })
|
||||
public type: ListType = ListType.Vertical;
|
||||
|
||||
/**网格布局中的方向 */
|
||||
@property({ type: cc.Enum(StartAxisType), tooltip: "网格布局中的方向", visible() { return this.type == ListType.Grid } })
|
||||
public startAxis: StartAxisType = StartAxisType.Horizontal;
|
||||
|
||||
/**列表项之间X间隔 */
|
||||
@property({ type: cc.Integer, tooltip: "列表项X间隔", visible() { return (this.type == ListType.Horizontal || this.type == ListType.Grid) } })
|
||||
public spaceX: number = 0;
|
||||
|
||||
/**列表项之间Y间隔 */
|
||||
@property({ type: cc.Integer, tooltip: "列表项Y间隔", visible() { return this.type == ListType.Vertical || this.type == ListType.Grid } })
|
||||
public spaceY: number = 0;
|
||||
|
||||
/**上间距 */
|
||||
@property({ type: cc.Integer, tooltip: "上间距", visible() { return (this.type == ListType.Vertical || this.type == ListType.Grid) } })
|
||||
public padding_top: number = 0;
|
||||
|
||||
/**下间距 */
|
||||
@property({ type: cc.Integer, tooltip: "下间距", visible() { return (this.type == ListType.Vertical || this.type == ListType.Grid) } })
|
||||
public padding_buttom: number = 0;
|
||||
|
||||
/**左间距 */
|
||||
@property({ type: cc.Integer, tooltip: "左间距", visible() { return (this.type == ListType.Horizontal || this.type == ListType.Grid) } })
|
||||
public padding_left: number = 0;
|
||||
|
||||
|
||||
|
||||
@property(cc.Integer)
|
||||
public _padding: number = 0;
|
||||
|
||||
/**右间距 */
|
||||
@property({ type: cc.Integer, tooltip: "右间距", visible() { return (this.type == ListType.Horizontal || this.type == ListType.Grid) } })
|
||||
public padding_right: number = 0;
|
||||
|
||||
//====================== 滚动容器 ===============================
|
||||
/**列表滚动容器 */
|
||||
public scrollView: cc.ScrollView = null;
|
||||
/**scrollView的内容容器 */
|
||||
private content: cc.Node = null;
|
||||
|
||||
//======================== 列表项 ===========================
|
||||
/**列表项数据 */
|
||||
private itemDataList: Array<any> = [];
|
||||
/**应创建的实例数量 */
|
||||
private spawnCount: number = 0;
|
||||
/**存放列表项实例的数组 */
|
||||
private itemList: Array<cc.Node> = [];
|
||||
/**item的高度 */
|
||||
private itemHeight: number = 0;
|
||||
/**item的宽度 */
|
||||
private itemWidth: number = 0;
|
||||
/**存放不再使用中的列表项 */
|
||||
private itemPool: Array<cc.Node> = [];
|
||||
|
||||
//======================= 计算参数 ==========================
|
||||
/**距离scrollView中心点的距离,超过这个距离的item会被重置,一般设置为 scrollVIew.height/2 + item.heigt/2 + space,因为这个距离item正好超出scrollView显示范围 */
|
||||
private halfScrollView: number = 0;
|
||||
/**上一次content的X值,用于和现在content的X值比较,得出是向左还是向右滚动 */
|
||||
private lastContentPosX: number = 0;
|
||||
/**上一次content的Y值,用于和现在content的Y值比较,得出是向上还是向下滚动 */
|
||||
private lastContentPosY: number = 0;
|
||||
/**网格行数 */
|
||||
private gridRow: number = 0;
|
||||
/**网格列数 */
|
||||
private gridCol: number = 0;
|
||||
/**刷新时间,单位s */
|
||||
private updateTimer: number = 0;
|
||||
/**刷新间隔,单位s */
|
||||
private updateInterval: number = 0.1;
|
||||
/**是否滚动容器 */
|
||||
private bScrolling: boolean = false;
|
||||
/**刷新的函数 */
|
||||
private updateFun: Function = function () { };
|
||||
|
||||
onLoad() {
|
||||
this.itemHeight = this.itemRender.height;
|
||||
this.itemWidth = this.itemRender.width;
|
||||
this.scrollView = this.node.getComponent(cc.ScrollView);
|
||||
this.content = this.scrollView.content;
|
||||
this.content.anchorX = 0;
|
||||
this.content.anchorY = 1;
|
||||
this.content.removeAllChildren();
|
||||
this.scrollView.node.on("scrolling", this.onScrolling, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表数据 (列表数据复制使用,如果列表数据改变,则需要重新设置一遍数据)
|
||||
* @param itemDataList item数据列表
|
||||
*/
|
||||
public setData(itemDataList: Array<any>) {
|
||||
this.itemDataList = itemDataList.slice();
|
||||
this.updateContent();
|
||||
|
||||
}
|
||||
|
||||
/**计算列表的各项参数 */
|
||||
private countListParam() {
|
||||
let dataLen = this.itemDataList.length;
|
||||
if (this.type == ListType.Vertical) {
|
||||
this.scrollView.horizontal = false;
|
||||
this.scrollView.vertical = true;
|
||||
this.content.width = this.content.parent.width;
|
||||
this.content.height = dataLen * this.itemHeight + (dataLen - 1) * this.spaceY + this.padding_top + this.padding_buttom;
|
||||
this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) + 2; //计算创建的item实例数量,比当前scrollView容器能放下的item数量再加上2个
|
||||
this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZone,item的显示范围
|
||||
this.updateFun = this.updateV;
|
||||
} else if (this.type == ListType.Horizontal) {
|
||||
this.scrollView.horizontal = true;
|
||||
this.scrollView.vertical = false;
|
||||
this.content.width = dataLen * this.itemWidth + (dataLen - 1) * this.spaceX + this.padding_left + this.padding_right;
|
||||
this.content.height = this.content.parent.height;
|
||||
this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) + 2;
|
||||
this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX;
|
||||
this.updateFun = this.udpateH;
|
||||
} else if (this.type == ListType.Grid) {
|
||||
if (this.startAxis == StartAxisType.Vertical) {
|
||||
this.scrollView.horizontal = false;
|
||||
this.scrollView.vertical = true;
|
||||
this.content.width = this.content.parent.width;
|
||||
//如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效
|
||||
if (this.padding_left + this.padding_right + this.itemWidth + this.spaceX > this.content.width) {
|
||||
this.padding_left = 0;
|
||||
this.padding_right = 0;
|
||||
console.error("padding_left或padding_right过大");
|
||||
}
|
||||
|
||||
this.gridCol = Math.floor((this.content.width - this.padding_left - this.padding_right) / (this.itemWidth + this.spaceX));
|
||||
this.gridRow = Math.ceil(dataLen / this.gridCol);
|
||||
this.content.height = this.gridRow * this.itemHeight + (this.gridRow - 1) * this.spaceY + this.padding_top + this.padding_buttom;
|
||||
this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) * this.gridCol + this.gridCol * 2;
|
||||
this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY;
|
||||
this.updateFun = this.updateGrid_V;
|
||||
} else if (this.startAxis == StartAxisType.Horizontal) {
|
||||
this.scrollView.horizontal = true;
|
||||
this.scrollView.vertical = false;
|
||||
//计算高间隔
|
||||
this.content.height = this.content.parent.height;
|
||||
//如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效
|
||||
if (this.padding_top + this.padding_buttom + this.itemHeight + this.spaceY > this.content.height) {
|
||||
this.padding_top = 0;
|
||||
this.padding_buttom = 0;
|
||||
console.error("padding_top或padding_buttom过大");
|
||||
}
|
||||
|
||||
this.gridRow = Math.floor((this.content.height - this.padding_top - this.padding_buttom) / (this.itemHeight + this.spaceY));
|
||||
this.gridCol = Math.ceil(dataLen / this.gridRow);
|
||||
this.content.width = this.gridCol * this.itemWidth + (this.gridCol - 1) * this.spaceX + this.padding_left + this.padding_right;
|
||||
this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) * this.gridRow + this.gridRow * 2;
|
||||
this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX;
|
||||
this.updateFun = this.updateGrid_H;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建列表
|
||||
* @param startIndex 起始显示的数据索引 0表示第一项
|
||||
* @param offset scrollView偏移量
|
||||
*/
|
||||
private createList(startIndex: number, offset: cc.Vec2) {
|
||||
//当需要显示的数据长度 > 虚拟列表长度, 删除最末尾几个数据时,列表需要重置位置到scrollView最底端
|
||||
if (this.itemDataList.length > this.spawnCount && (startIndex + this.spawnCount - 1) >= this.itemDataList.length) {
|
||||
startIndex = this.itemDataList.length - this.spawnCount;
|
||||
offset = this.scrollView.getMaxScrollOffset();
|
||||
|
||||
//当需要显示的数据长度 <= 虚拟列表长度, 隐藏多余的虚拟列表项
|
||||
} else if (this.itemDataList.length <= this.spawnCount) {
|
||||
startIndex = 0;
|
||||
}
|
||||
|
||||
for (let i = 0; i < this.spawnCount; i++) {
|
||||
let item: cc.Node;
|
||||
//需要显示的数据索引在数据范围内,则item实例显示出来
|
||||
if (i + startIndex < this.itemDataList.length) {
|
||||
if (this.itemList[i] == null) {
|
||||
item = this.getItem();
|
||||
this.itemList.push(item);
|
||||
item.parent = this.content;
|
||||
} else {
|
||||
item = this.itemList[i];
|
||||
}
|
||||
//需要显示的数据索引超过了数据范围,则item实例隐藏起来
|
||||
} else {
|
||||
//item实例数量 > 需要显示的数据量
|
||||
if (this.itemList.length > (this.itemDataList.length - startIndex)) {
|
||||
item = this.itemList.pop();
|
||||
item.removeFromParent();
|
||||
this.itemPool.push(item);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
itemRender.itemIndex = i + startIndex;
|
||||
itemRender.data = this.itemDataList[i + startIndex];
|
||||
itemRender.dataChanged();
|
||||
|
||||
if (this.type == ListType.Vertical) {
|
||||
//因为content的锚点X是0,所以item的x值是content.with/2表示居中,锚点Y是1,所以item的y值从content顶部向下是0到负无穷。所以item.y= -item.height/2时,是在content的顶部。
|
||||
item.setPosition(this.content.width / 2, -item.height * (0.5 + i + startIndex) - this.spaceY * (i + startIndex) - this.padding_top);
|
||||
} else if (this.type == ListType.Horizontal) {
|
||||
item.setPosition(item.width * (0.5 + i + startIndex) + this.spaceX * (i + startIndex) + this.padding_left, -this.content.height / 2);
|
||||
} else if (this.type == ListType.Grid) {
|
||||
if (this.startAxis == StartAxisType.Vertical) {
|
||||
var row = Math.floor((i + startIndex) / this.gridCol);
|
||||
var col = (i + startIndex) % this.gridCol;
|
||||
item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top);
|
||||
item.opacity = 255;
|
||||
} else if (this.startAxis == StartAxisType.Horizontal) {
|
||||
var row = (i + startIndex) % this.gridRow;
|
||||
var col = Math.floor((i + startIndex) / this.gridRow);
|
||||
item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top);
|
||||
item.opacity = 255;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.scrollView.scrollToOffset(offset);
|
||||
}
|
||||
|
||||
/**获取一个列表项 */
|
||||
private getItem() {
|
||||
if (this.itemPool.length == 0) {
|
||||
return cc.instantiate(this.itemRender);
|
||||
} else {
|
||||
return this.itemPool.pop();
|
||||
}
|
||||
}
|
||||
|
||||
update(dt) {
|
||||
if (this.bScrolling == false) {
|
||||
return;
|
||||
}
|
||||
this.updateTimer += dt;
|
||||
if (this.updateTimer < this.updateInterval) {
|
||||
return;
|
||||
}
|
||||
this.updateTimer = 0;
|
||||
this.bScrolling = false;
|
||||
this.updateFun();
|
||||
}
|
||||
|
||||
onScrolling() {
|
||||
this.bScrolling = true;
|
||||
}
|
||||
|
||||
/**垂直排列 */
|
||||
private updateV() {
|
||||
let items = this.itemList;
|
||||
let item;
|
||||
let bufferZone = this.halfScrollView;
|
||||
let isUp = this.scrollView.content.y > this.lastContentPosY;
|
||||
let offset = (this.itemHeight + this.spaceY) * items.length;
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
item = items[i];
|
||||
let viewPos = this.getPositionInView(item);
|
||||
if (isUp) {
|
||||
//item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界
|
||||
if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) {
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
let itemIndex = itemRender.itemIndex + items.length;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
itemRender.data = this.itemDataList[itemIndex];
|
||||
itemRender.dataChanged();
|
||||
item.y = item.y - offset;
|
||||
}
|
||||
} else {
|
||||
//item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界
|
||||
if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) {
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
let itemIndex = itemRender.itemIndex - items.length;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
itemRender.data = this.itemDataList[itemIndex];
|
||||
itemRender.dataChanged();
|
||||
item.y = item.y + offset;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.lastContentPosY = this.scrollView.content.y;
|
||||
}
|
||||
|
||||
/**水平排列 */
|
||||
private udpateH() {
|
||||
let items = this.itemList;
|
||||
let item;
|
||||
let bufferZone = this.halfScrollView;
|
||||
let isRight = this.scrollView.content.x > this.lastContentPosX;
|
||||
let offset = (this.itemWidth + this.spaceX) * items.length;
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
item = items[i];
|
||||
let viewPos = this.getPositionInView(item);
|
||||
if (isRight) {
|
||||
//item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界
|
||||
if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) {
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
let itemIndex = itemRender.itemIndex - items.length;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
itemRender.data = this.itemDataList[itemIndex];
|
||||
itemRender.dataChanged();
|
||||
item.x = item.x - offset;
|
||||
}
|
||||
} else {
|
||||
//item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界
|
||||
if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) {
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
let itemIndex = itemRender.itemIndex + items.length;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
itemRender.data = this.itemDataList[itemIndex];
|
||||
itemRender.dataChanged();
|
||||
item.x = item.x + offset;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.lastContentPosX = this.scrollView.content.x;
|
||||
}
|
||||
|
||||
/**网格垂直排列 */
|
||||
private updateGrid_V() {
|
||||
let items = this.itemList;
|
||||
let item: cc.Node;
|
||||
let bufferZone = this.halfScrollView;
|
||||
let isUp = this.scrollView.content.y > this.lastContentPosY;
|
||||
let offset = (this.itemHeight + this.spaceY) * (this.spawnCount / this.gridCol);
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
item = items[i];
|
||||
let viewPos = this.getPositionInView(item);
|
||||
if (isUp) {
|
||||
//item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界
|
||||
if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) {
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
let itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridCol) * this.gridCol;
|
||||
if (this.itemDataList[itemIndex] != null) {
|
||||
item.y = item.y - offset;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
itemRender.data = this.itemDataList[itemIndex];
|
||||
itemRender.dataChanged();
|
||||
item.opacity = 255;
|
||||
} else {
|
||||
item.y = item.y - offset;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
item.opacity = 0;
|
||||
}
|
||||
}
|
||||
} else {//item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界
|
||||
if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) {
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
let itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridCol) * this.gridCol;
|
||||
if (this.itemDataList[itemIndex] != null) {
|
||||
item.y = item.y + offset;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
itemRender.data = this.itemDataList[itemIndex];
|
||||
itemRender.dataChanged();
|
||||
item.opacity = 255;
|
||||
} else {
|
||||
item.y = item.y + offset;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
item.opacity = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.lastContentPosY = this.scrollView.content.y;
|
||||
}
|
||||
|
||||
/**网格水平排列 */
|
||||
private updateGrid_H() {
|
||||
let items = this.itemList;
|
||||
let item;
|
||||
let bufferZone = this.halfScrollView;
|
||||
let isRight = this.scrollView.content.x > this.lastContentPosX;
|
||||
let offset = (this.itemWidth + this.spaceX) * (this.spawnCount / this.gridRow);
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
item = items[i];
|
||||
let viewPos = this.getPositionInView(item);
|
||||
if (isRight) {
|
||||
//item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界
|
||||
if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) {
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
let itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridRow) * this.gridRow;
|
||||
if (this.itemDataList[itemIndex] != null) {
|
||||
item.x = item.x - offset;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
itemRender.data = this.itemDataList[itemIndex];
|
||||
itemRender.dataChanged();
|
||||
item.opacity = 255;
|
||||
} else {
|
||||
item.x = item.x - offset;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
item.opacity = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界
|
||||
if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) {
|
||||
let itemRender: ItemRender = item.getComponent(ItemRender);
|
||||
let itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridRow) * this.gridRow;
|
||||
if (this.itemDataList[itemIndex] != null) {
|
||||
item.x = item.x + offset;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
itemRender.data = this.itemDataList[itemIndex];
|
||||
itemRender.dataChanged();
|
||||
item.opacity = 255;
|
||||
} else {
|
||||
item.x = item.x + offset;
|
||||
itemRender.itemIndex = itemIndex;
|
||||
item.opacity = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.lastContentPosX = this.scrollView.content.x;
|
||||
}
|
||||
|
||||
/**获取item在scrollView的局部坐标 */
|
||||
private getPositionInView(item) {
|
||||
let worldPos = item.parent.convertToWorldSpaceAR(item.position);
|
||||
let viewPos = this.scrollView.node.convertToNodeSpaceAR(worldPos);
|
||||
return viewPos;
|
||||
}
|
||||
|
||||
/**获取列表数据 */
|
||||
public getListData() {
|
||||
return this.itemDataList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加一项数据到列表的末尾
|
||||
* @param data 数据
|
||||
*/
|
||||
public addItem(data: any) {
|
||||
this.itemDataList.push(data);
|
||||
this.updateContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加一项数据到列表指定位置
|
||||
* @param index 位置,0表示第1项
|
||||
* @param data 数据
|
||||
*/
|
||||
public addItemAt(index: number, data: any) {
|
||||
if (this.itemDataList[index] != null || this.itemDataList.length == index) {
|
||||
this.itemDataList.splice(index, 1, data);
|
||||
this.updateContent();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除一项数据
|
||||
* @param index 删除项的位置 ,0表示第1项
|
||||
*/
|
||||
public deleteItem(index: number) {
|
||||
if (this.itemDataList[index] != null) {
|
||||
this.itemDataList.splice(index, 1);
|
||||
this.updateContent();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 改变一项数据
|
||||
* @param index 位置,0表示第1项
|
||||
* @param data 替换的数据
|
||||
*/
|
||||
public changeItem(index: number, data: any) {
|
||||
if (this.itemDataList[index] != null) {
|
||||
this.itemDataList[index] = data;
|
||||
this.updateContent();
|
||||
}
|
||||
}
|
||||
|
||||
/**获取第一个Item的位置 */
|
||||
private updateContent() {
|
||||
//显示列表实例为0个
|
||||
if (this.itemList.length == 0) {
|
||||
this.countListParam();
|
||||
this.createList(0, new cc.Vec2(0, 0));
|
||||
//显示列表的实例不为0个,则需要重新排列item实例数组
|
||||
} else {
|
||||
if (this.type == ListType.Vertical) {
|
||||
this.itemList.sort((a: any, b: any) => {
|
||||
return b.y - a.y;
|
||||
});
|
||||
} else if (this.type == ListType.Horizontal) {
|
||||
this.itemList.sort((a: any, b: any) => {
|
||||
return a.x - b.x;
|
||||
});
|
||||
} else if (this.type == ListType.Grid) {
|
||||
if (this.startAxis == StartAxisType.Vertical) {
|
||||
this.itemList.sort((a: any, b: any) => {
|
||||
return a.x - b.x;
|
||||
});
|
||||
this.itemList.sort((a: any, b: any) => {
|
||||
return b.y - a.y;
|
||||
});
|
||||
} else if (this.startAxis == StartAxisType.Horizontal) {
|
||||
this.itemList.sort((a: any, b: any) => {
|
||||
return b.y - a.y;
|
||||
});
|
||||
this.itemList.sort((a: any, b: any) => {
|
||||
return a.x - b.x;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.countListParam();
|
||||
|
||||
//获取第一个item实例需要显示的数据索引
|
||||
var startIndex = this.itemList[0].getComponent(ItemRender).itemIndex;
|
||||
|
||||
if (this.type == ListType.Grid && this.startAxis == StartAxisType.Vertical) {
|
||||
startIndex += (startIndex + this.spawnCount) % this.gridCol;
|
||||
} else if (this.type == ListType.Grid && this.startAxis == StartAxisType.Horizontal) {
|
||||
startIndex += (startIndex + this.spawnCount) % this.gridRow;
|
||||
}
|
||||
|
||||
//getScrollOffset()和scrollToOffset()的x值是相反的
|
||||
var offset: cc.Vec2 = this.scrollView.getScrollOffset();
|
||||
offset.x = - offset.x;
|
||||
|
||||
this.createList(startIndex, offset);
|
||||
}
|
||||
}
|
||||
|
||||
/**销毁 */
|
||||
public onDestroy() {
|
||||
//清理列表项
|
||||
let len = this.itemList.length;
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (cc.isValid(this.itemList[i], true)) {
|
||||
this.itemList[i].destroy();
|
||||
}
|
||||
}
|
||||
this.itemList.length = 0;
|
||||
//清理对象池
|
||||
len = this.itemPool.length;
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (cc.isValid(this.itemPool[i], true)) {
|
||||
this.itemPool[i].destroy();
|
||||
}
|
||||
}
|
||||
this.itemPool.length = 0;
|
||||
//清理列表数据
|
||||
this.itemDataList.length = 0;
|
||||
}
|
||||
}
|
10
assets/Script/module/RankList/List.ts.meta
Normal file
10
assets/Script/module/RankList/List.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "d54211e0-2d28-4528-88e3-e5fd7c9b59a2",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module/Storage.meta
Normal file
13
assets/Script/module/Storage.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "2af8f2ef-b8a0-43ad-a144-ef4a887f2fa9",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
27
assets/Script/module/Storage/Storage.ts
Normal file
27
assets/Script/module/Storage/Storage.ts
Normal file
|
@ -0,0 +1,27 @@
|
|||
//缓存浏览器数据
|
||||
var StorageMessage = {
|
||||
getStorage : function(key){
|
||||
var result = null;
|
||||
if(cc.sys.localStorage.getItem(key)){
|
||||
var result = cc.sys.localStorage.getItem(key);
|
||||
}
|
||||
|
||||
if(result){
|
||||
result = JSON.parse(result);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
setStorage : function(key,value){
|
||||
//主动拉起分享接口
|
||||
var temp = JSON.stringify(value);
|
||||
cc.sys.localStorage.setItem(key, temp)
|
||||
},
|
||||
removeStorage : function(key){
|
||||
//主动删除消息接口
|
||||
if(cc.sys.localStorage.getItem(key)){
|
||||
cc.sys.localStorage.removeItem(key)
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export { StorageMessage };
|
10
assets/Script/module/Storage/Storage.ts.meta
Normal file
10
assets/Script/module/Storage/Storage.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "10029dfc-5454-4977-bd11-8809e8f48cac",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Script/module/Tool.meta
Normal file
13
assets/Script/module/Tool.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "2a81f82d-8d16-44af-b947-44eea4dde54f",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
244
assets/Script/module/Tool/GameTool.ts
Normal file
244
assets/Script/module/Tool/GameTool.ts
Normal file
|
@ -0,0 +1,244 @@
|
|||
|
||||
//最大工具类 各种公共方法,以及处理上传,获取后端接口数据
|
||||
var GameTool = {
|
||||
_startTime: 0,
|
||||
_endTime: 0,
|
||||
_totalTime: 0,
|
||||
//获取userId
|
||||
Authentication(){
|
||||
let name = "user_" + cc.fx.GameConfig.GM_INFO.gameId;
|
||||
var data = JSON.parse(localStorage.getItem(name));
|
||||
if(data == "undifend" || data==null || data == ""){
|
||||
let url = "http://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback="+location.href;
|
||||
window.location.href = url;
|
||||
}
|
||||
else{
|
||||
cc.fx.StorageMessage.setStorage(name,data);
|
||||
cc.fx.GameConfig.GM_INFO.userId = parseInt(data.userId);
|
||||
}
|
||||
},
|
||||
|
||||
//埋点上传
|
||||
setGameData(){
|
||||
//GAME_DATA 初始化 每次清零
|
||||
cc.fx.GameConfig.GAME_DATA = [];
|
||||
cc.fx.GameConfig.GAME_DATA.push(cc.fx.GameConfig.CLICK_DATA);
|
||||
cc.fx.GameConfig.CLICK_init();
|
||||
let data = cc.fx.GameConfig.GAME_DATA;
|
||||
let matchId = this.getMatchId();
|
||||
let postData = {
|
||||
"gameId":cc.fx.GameConfig.GM_INFO.gameId,
|
||||
"userId":cc.fx.GameConfig.GM_INFO.userId,
|
||||
"matchId":matchId,
|
||||
"data": data
|
||||
};
|
||||
|
||||
// console.log("上传数据:")
|
||||
cc.fx.HttpUtil.uploadUserLogData(postData,function(){})
|
||||
},
|
||||
//上传排行榜 type为1
|
||||
setRank(data){
|
||||
//GAME_DATA 初始化 每次清零
|
||||
let postData = {
|
||||
"gameId":cc.fx.GameConfig.GM_INFO.gameId,
|
||||
"userId":cc.fx.GameConfig.GM_INFO.userId,
|
||||
"type":1,
|
||||
"reactionTime": data,
|
||||
"totalSunCount": cc.fx.GameConfig.GM_INFO.total,
|
||||
"success": cc.fx.GameConfig.GM_INFO.success
|
||||
};
|
||||
cc.fx.HttpUtil.rankData(1,function(){},postData);
|
||||
},
|
||||
//获取排行榜 type为2
|
||||
getRank(data,callback){
|
||||
let rankLength = data.length;
|
||||
let postData = {
|
||||
"gameId":cc.fx.GameConfig.GM_INFO.gameId,
|
||||
"userId":cc.fx.GameConfig.GM_INFO.userId,
|
||||
"page":1,
|
||||
"pageSize":rankLength
|
||||
};
|
||||
//回调进getRankData
|
||||
cc.fx.HttpUtil.rankData(2,data =>{callback(data)},postData);
|
||||
},
|
||||
//获取matchId 用于上传每次点击数据里面记录id方便查询
|
||||
getMatchId (){
|
||||
let matchId = cc.sys.localStorage.getItem("matchId");
|
||||
if(matchId == "undifend" || matchId==null){
|
||||
matchId = this.setMatchId();
|
||||
}
|
||||
else{
|
||||
if(this.containsNanana(matchId) == true){
|
||||
matchId = this.setMatchId();
|
||||
}
|
||||
else{
|
||||
let char = parseInt(matchId[10]);
|
||||
if(this.level == 1){
|
||||
char += 1;
|
||||
}
|
||||
matchId = matchId.slice(0, 10) + char + "";
|
||||
cc.fx.GameConfig.GM_INFO.matchId = matchId;
|
||||
cc.sys.localStorage.setItem("matchId",matchId);
|
||||
}
|
||||
}
|
||||
return matchId;
|
||||
},
|
||||
//检测matchId 如果有缓存以前的nanana数据清除
|
||||
containsNanana(str) {
|
||||
return /na/i.test(str);
|
||||
},
|
||||
//重新设置MatchId
|
||||
setMatchId (){
|
||||
// 定义包含可用字符的字符集
|
||||
const characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||||
// 创建一个数组以保存随机字符
|
||||
const uuidArray = [];
|
||||
// 循环10次 生成10位的UUID
|
||||
for (let i = 0; i < 10; i++) {
|
||||
// 生成随机索引,范围是字符集的长度
|
||||
const randomIndex = Math.floor(Math.random() * characters.length);
|
||||
// 从字符集中获取随机字符
|
||||
const randomChar = characters.charAt(randomIndex);
|
||||
// 将字符添加到数组中
|
||||
uuidArray.push(randomChar);
|
||||
}
|
||||
let data = uuidArray.join('') + 1 + "";
|
||||
cc.sys.localStorage.setItem("matchNumber",1);
|
||||
cc.sys.localStorage.setItem("matchId",data);
|
||||
cc.fx.GameConfig.GM_INFO.matchId = data;
|
||||
return data;
|
||||
},
|
||||
//截取名字
|
||||
subName(name,length){
|
||||
if(name.length > length){
|
||||
name = name.substring(0,length) + "..."
|
||||
}
|
||||
return name;
|
||||
},
|
||||
//设置头像
|
||||
setPic(node,pic){
|
||||
node.active = false;
|
||||
let url = pic;
|
||||
setTimeout(() => {
|
||||
fetch(url)
|
||||
.then(response => {
|
||||
return response.headers.get('Content-Length');
|
||||
})
|
||||
.then(errNo => {
|
||||
if(errNo == "5093"){
|
||||
node.active = true;
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error fetching X-Info:', error);
|
||||
});
|
||||
}, 100);
|
||||
cc.assetManager.loadRemote(url, {ext:'.jpg'},(err, texture:cc.Texture2D) => {
|
||||
if(texture){
|
||||
node.active = true;
|
||||
node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture);
|
||||
}
|
||||
else{
|
||||
console.log(err,texture)
|
||||
}
|
||||
})
|
||||
},
|
||||
//第一个参数把目标带进来处理,第二个参数为名字长度,不同场景不同需求
|
||||
//名字4短,小排行,名字6长,大排行
|
||||
getRankData(data,target,nameLength){
|
||||
target.listData = data.data.list;
|
||||
target.selfData = data.data.info;
|
||||
let rankData = [];
|
||||
let self = false;
|
||||
cc.fx.GameTool.setPic(target.selfNode.getChildByName("pic").getChildByName("icon"),target.selfData.pic);
|
||||
for(let i=0;i<=target.listData.length-1;i++){
|
||||
rankData.push({rank:(i+1), name:target.listData[i].nickName, total:target.listData[i].totalSunCount, pic:target.listData[i].pic});
|
||||
if(cc.fx.GameConfig.GM_INFO.userId == target.listData[i].userId){
|
||||
self = true;
|
||||
target.rankNumber = i;
|
||||
target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string =(i+1) + "";
|
||||
}
|
||||
if(i == (target.listData.length-1) && self == false){
|
||||
target.rankNumber = i;
|
||||
target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+";
|
||||
}
|
||||
}
|
||||
cc.fx.GameTool.subName(target.selfData.nickName,nameLength);
|
||||
target.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = target.selfData.nickName;
|
||||
target.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = target.selfData.totalSunCount;
|
||||
switch(target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string){
|
||||
case "1":
|
||||
target.selfNode.getChildByName("rank").getChildByName("one").active = true;
|
||||
break;
|
||||
case "2":
|
||||
target.selfNode.getChildByName("rank").getChildByName("two").active = true;
|
||||
break;
|
||||
case "3":
|
||||
target.selfNode.getChildByName("rank").getChildByName("three").active = true;
|
||||
break;
|
||||
|
||||
}
|
||||
// 大排行
|
||||
if(nameLength == 6){
|
||||
target.rankList.setData(rankData);
|
||||
target.selfNode.opacity = 255;
|
||||
if(target.selfData.totalSunCount == 0) target.selfNode.opacity = 0;
|
||||
}
|
||||
},
|
||||
|
||||
getSetScreenResolutionFlag: function () {
|
||||
let size = cc.winSize;
|
||||
let width = size.width;
|
||||
let height = size.height;
|
||||
if ((height / width) > (16.2 / 9)) return false;
|
||||
return true;
|
||||
},
|
||||
//判断全面屏适配
|
||||
setFit: function (canvas) {
|
||||
let flag = cc.fx.GameTool.getSetScreenResolutionFlag();
|
||||
if (flag) {
|
||||
// console.log("不是全面屏");
|
||||
} else {
|
||||
// console.log("是全面屏");
|
||||
}
|
||||
return flag;
|
||||
},
|
||||
//获取游戏信息
|
||||
getGameInfo: function(node){
|
||||
var jg = false;
|
||||
return jg;
|
||||
},
|
||||
//设置游戏信息
|
||||
setGameInfo: function(pd){
|
||||
|
||||
},
|
||||
//输入秒,返回需要展示时间格式
|
||||
getTimeMargin:(second) => {
|
||||
let total = 0;
|
||||
total = second;
|
||||
let hour = 0;
|
||||
hour = parseInt((total / 3600) + "");//计算整数小时数
|
||||
let afterHour = total - hour * 60 * 60;//取得算出小时数后剩余的秒数
|
||||
let min = parseInt((afterHour / 60)+"");//计算整数分
|
||||
let m = "" + min;
|
||||
if(min < 10) m = "0"+min;
|
||||
let afterMin = total - hour * 60 * 60 - min * 60;//取得算出分后剩余的秒数
|
||||
let miao = afterMin + "";
|
||||
if(afterMin < 10) miao = "0" + afterMin;
|
||||
return m + ':' + miao
|
||||
},
|
||||
|
||||
//获取时间戳
|
||||
getTime(){
|
||||
const timestamp = new Date().getTime();
|
||||
return timestamp;
|
||||
},
|
||||
pushLister:function () {
|
||||
|
||||
},
|
||||
removeAllLister:function () {
|
||||
|
||||
},
|
||||
|
||||
};
|
||||
export { GameTool };
|
10
assets/Script/module/Tool/GameTool.ts.meta
Normal file
10
assets/Script/module/Tool/GameTool.ts.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "43bfc27a-ff6e-45b3-87c7-504d0f781397",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Shader.meta
Normal file
13
assets/Shader.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "afa9e39a-94ca-477f-8a2a-25082d9092c3",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
13
assets/Texture.meta
Normal file
13
assets/Texture.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "7b81d4e8-ec84-4716-968d-500ac1d78a54",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
BIN
assets/Texture/HelloWorld.png
Normal file
BIN
assets/Texture/HelloWorld.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
38
assets/Texture/HelloWorld.png.meta
Normal file
38
assets/Texture/HelloWorld.png.meta
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"ver": "2.3.7",
|
||||
"uuid": "6aa0aa6a-ebee-4155-a088-a687a6aadec4",
|
||||
"importer": "texture",
|
||||
"type": "sprite",
|
||||
"wrapMode": "clamp",
|
||||
"filterMode": "bilinear",
|
||||
"premultiplyAlpha": false,
|
||||
"genMipmaps": false,
|
||||
"packable": true,
|
||||
"width": 195,
|
||||
"height": 270,
|
||||
"platformSettings": {},
|
||||
"subMetas": {
|
||||
"HelloWorld": {
|
||||
"ver": "1.0.6",
|
||||
"uuid": "31bc895a-c003-4566-a9f3-2e54ae1c17dc",
|
||||
"importer": "sprite-frame",
|
||||
"rawTextureUuid": "6aa0aa6a-ebee-4155-a088-a687a6aadec4",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 0,
|
||||
"width": 195,
|
||||
"height": 270,
|
||||
"rawWidth": 195,
|
||||
"rawHeight": 270,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"subMetas": {}
|
||||
}
|
||||
}
|
||||
}
|
BIN
assets/Texture/singleColor.png
Normal file
BIN
assets/Texture/singleColor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 82 B |
38
assets/Texture/singleColor.png.meta
Normal file
38
assets/Texture/singleColor.png.meta
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"ver": "2.3.7",
|
||||
"uuid": "a8027877-d8d6-4645-97a0-52d4a0123dba",
|
||||
"importer": "texture",
|
||||
"type": "sprite",
|
||||
"wrapMode": "clamp",
|
||||
"filterMode": "bilinear",
|
||||
"premultiplyAlpha": false,
|
||||
"genMipmaps": false,
|
||||
"packable": true,
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"platformSettings": {},
|
||||
"subMetas": {
|
||||
"singleColor": {
|
||||
"ver": "1.0.6",
|
||||
"uuid": "410fb916-8721-4663-bab8-34397391ace7",
|
||||
"importer": "sprite-frame",
|
||||
"rawTextureUuid": "a8027877-d8d6-4645-97a0-52d4a0123dba",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 0,
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"rawWidth": 2,
|
||||
"rawHeight": 2,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"subMetas": {}
|
||||
}
|
||||
}
|
||||
}
|
13
assets/animation.meta
Normal file
13
assets/animation.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "7c1d6faa-66b9-4423-aa04-8c38a15768cf",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
13
assets/migration.meta
Normal file
13
assets/migration.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "2e3d6223-9889-4122-8121-c6d837f5367e",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
17
assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js
Normal file
17
assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version.
|
||||
* You do not need to manually add this script in any other project.
|
||||
* If you don't use cc.Toggle in your project, you can delete this script directly.
|
||||
* If your project is hosted in VCS such as git, submit this script together.
|
||||
*
|
||||
* 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程,
|
||||
* 你无需在任何其它项目中手动添加此脚本。
|
||||
* 如果你的项目中没用到 Toggle,可直接删除该脚本。
|
||||
* 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。
|
||||
*/
|
||||
|
||||
if (cc.Toggle) {
|
||||
// Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code
|
||||
// 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件
|
||||
cc.Toggle._triggerEventInScript_isChecked = true;
|
||||
}
|
10
assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js.meta
Normal file
10
assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js.meta
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "7a231473-d1df-4b05-8620-6376c36252c1",
|
||||
"importer": "javascript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/music.meta
Normal file
13
assets/music.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "6ebfe2d9-539a-4853-8b16-fca5c89cf2ce",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
13
assets/prefab.meta
Normal file
13
assets/prefab.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "bf3935ca-518a-42f4-84e4-ad96badfd1b4",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
5181
assets/prefab/Canvas.prefab
Normal file
5181
assets/prefab/Canvas.prefab
Normal file
File diff suppressed because it is too large
Load Diff
9
assets/prefab/Canvas.prefab.meta
Normal file
9
assets/prefab/Canvas.prefab.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"ver": "1.3.2",
|
||||
"uuid": "badb56f7-1c07-4fbb-87e6-5bfd805fe81b",
|
||||
"importer": "prefab",
|
||||
"optimizationPolicy": "AUTO",
|
||||
"asyncLoadAssets": false,
|
||||
"readonly": false,
|
||||
"subMetas": {}
|
||||
}
|
1364
assets/prefab/RankListItem.prefab
Normal file
1364
assets/prefab/RankListItem.prefab
Normal file
File diff suppressed because it is too large
Load Diff
9
assets/prefab/RankListItem.prefab.meta
Normal file
9
assets/prefab/RankListItem.prefab.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"ver": "1.3.2",
|
||||
"uuid": "a264c8df-80f6-474f-9fe5-28b7ae529d95",
|
||||
"importer": "prefab",
|
||||
"optimizationPolicy": "AUTO",
|
||||
"asyncLoadAssets": false,
|
||||
"readonly": false,
|
||||
"subMetas": {}
|
||||
}
|
13
assets/res.meta
Normal file
13
assets/res.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "2880dc26-5b38-48bd-baba-daaec97499cb",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
25
assets/resources.meta
Normal file
25
assets/resources.meta
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "52e78fe3-9095-42ad-8e4d-f9bb12dc69ce",
|
||||
"importer": "folder",
|
||||
"isBundle": true,
|
||||
"bundleName": "resources",
|
||||
"priority": 8,
|
||||
"compressionType": {
|
||||
"web-mobile": "default",
|
||||
"wechatgame": "default"
|
||||
},
|
||||
"optimizeHotUpdate": {
|
||||
"web-mobile": false,
|
||||
"wechatgame": false
|
||||
},
|
||||
"inlineSpriteFrames": {
|
||||
"web-mobile": false,
|
||||
"wechatgame": false
|
||||
},
|
||||
"isRemoteBundle": {
|
||||
"web-mobile": false,
|
||||
"wechatgame": true
|
||||
},
|
||||
"subMetas": {}
|
||||
}
|
13
assets/resources/Json.meta
Normal file
13
assets/resources/Json.meta
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"ver": "1.1.3",
|
||||
"uuid": "066e91c2-fc55-407c-b061-9e4de4a9f224",
|
||||
"importer": "folder",
|
||||
"isBundle": false,
|
||||
"bundleName": "",
|
||||
"priority": 1,
|
||||
"compressionType": {},
|
||||
"optimizeHotUpdate": {},
|
||||
"inlineSpriteFrames": {},
|
||||
"isRemoteBundle": {},
|
||||
"subMetas": {}
|
||||
}
|
18
assets/resources/Json/CLICK_DATA.json
Normal file
18
assets/resources/Json/CLICK_DATA.json
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"data" :
|
||||
{
|
||||
"type": 1,
|
||||
"success": false,
|
||||
"round": 0,
|
||||
"totalSunCount": 0,
|
||||
"movedSunCount": 0,
|
||||
"sunSpeed": 0,
|
||||
"overlapSunCount": 0,
|
||||
"colorList": [],
|
||||
"duration": 0,
|
||||
"difficultyLevel": 0,
|
||||
"sunList": [],
|
||||
"stepTimeList": [],
|
||||
"remainder": 120
|
||||
}
|
||||
}
|
6
assets/resources/Json/CLICK_DATA.json.meta
Normal file
6
assets/resources/Json/CLICK_DATA.json.meta
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"ver": "1.0.2",
|
||||
"uuid": "e1d57e63-4f2f-467d-9c55-0a889d5533a8",
|
||||
"importer": "json",
|
||||
"subMetas": {}
|
||||
}
|
14
assets/resources/Json/GM_INFO.json
Normal file
14
assets/resources/Json/GM_INFO.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"data":{
|
||||
"mean_Time": 0,
|
||||
"total": 0,
|
||||
"currSeed": 203213,
|
||||
"gameId": 100009,
|
||||
"userId": 0,
|
||||
"guide": true,
|
||||
"url": "http://api.sparkus.cn",
|
||||
"success": false,
|
||||
"matchId": null,
|
||||
"custom": 0
|
||||
}
|
||||
}
|
6
assets/resources/Json/GM_INFO.json.meta
Normal file
6
assets/resources/Json/GM_INFO.json.meta
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"ver": "1.0.2",
|
||||
"uuid": "2d69a479-18ec-4787-b35f-e9a9b3247435",
|
||||
"importer": "json",
|
||||
"subMetas": {}
|
||||
}
|
205
assets/resources/Json/LEVEL_INFO.json
Normal file
205
assets/resources/Json/LEVEL_INFO.json
Normal file
|
@ -0,0 +1,205 @@
|
|||
{
|
||||
"data" : [
|
||||
{
|
||||
"number": 3,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 0,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 0,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 0,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 5,
|
||||
"moveNumber": 1,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 5,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 6,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 6,
|
||||
"moveNumber": 3,
|
||||
"moveSpeed": 4,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 7,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 4,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 7,
|
||||
"moveNumber": 3,
|
||||
"moveSpeed": 4,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 7,
|
||||
"moveNumber": 3,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 8,
|
||||
"moveNumber": 3,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 8,
|
||||
"moveNumber": 5,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 9,
|
||||
"moveNumber": 3,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 9,
|
||||
"moveNumber": 5,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 10,
|
||||
"moveNumber": 5,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 3,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 0,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"moveNumber": 1,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"moveNumber": 1,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 5,
|
||||
"moveNumber": 1,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 0
|
||||
},
|
||||
{
|
||||
"number": 5,
|
||||
"moveNumber": 0,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 5,
|
||||
"moveNumber": 1,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 5,
|
||||
"moveNumber": 2,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
},
|
||||
{
|
||||
"number": 5,
|
||||
"moveNumber": 3,
|
||||
"moveSpeed": 6,
|
||||
"maxDistance": 200,
|
||||
"maxMove": 1200,
|
||||
"repeat": 1
|
||||
}
|
||||
|
||||
]
|
||||
}
|
6
assets/resources/Json/LEVEL_INFO.json.meta
Normal file
6
assets/resources/Json/LEVEL_INFO.json.meta
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"ver": "1.0.2",
|
||||
"uuid": "2cddbdcb-5dba-4b13-960c-9ebe6d17a7db",
|
||||
"importer": "json",
|
||||
"subMetas": {}
|
||||
}
|
BIN
build-templates/splash.jpg
Normal file
BIN
build-templates/splash.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
240
build-templates/web-mobile2/index.html
Normal file
240
build-templates/web-mobile2/index.html
Normal file
File diff suppressed because one or more lines are too long
138
build-templates/web-mobile2/main.js
Normal file
138
build-templates/web-mobile2/main.js
Normal file
|
@ -0,0 +1,138 @@
|
|||
var remote_url="http://static.sparkus.cn/shoot-sun/assets/";
|
||||
|
||||
window.boot = function () {
|
||||
var settings = window._CCSettings;
|
||||
window._CCSettings = undefined;
|
||||
var onProgress = null;
|
||||
|
||||
var RESOURCES = remote_url + cc.AssetManager.BuiltinBundleName.RESOURCES;
|
||||
// var RESOURCES = cc.AssetManager.BuiltinBundleName.RESOURCES;
|
||||
var INTERNAL = cc.AssetManager.BuiltinBundleName.INTERNAL;
|
||||
var MAIN = cc.AssetManager.BuiltinBundleName.MAIN;
|
||||
function setLoadingDisplay () {
|
||||
// Loading splash scene
|
||||
var splash = document.getElementById('splash');
|
||||
var star = document.getElementById('_star');
|
||||
onProgress = function (finish, total) {
|
||||
};
|
||||
cc.director.once(cc.Director.EVENT_AFTER_SCENE_LAUNCH, function () {
|
||||
splash.style.display = 'none';
|
||||
star.style.display = 'none';
|
||||
});
|
||||
}
|
||||
|
||||
var onStart = function () {
|
||||
cc.view.enableRetina(true);
|
||||
cc.view.resizeWithBrowserSize(true);
|
||||
if (cc.sys.isBrowser) {
|
||||
setLoadingDisplay();
|
||||
}
|
||||
|
||||
if (cc.sys.isMobile) {
|
||||
if (settings.orientation === 'landscape') {
|
||||
cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
|
||||
}
|
||||
else if (settings.orientation === 'portrait') {
|
||||
cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
|
||||
}
|
||||
cc.view.enableAutoFullScreen([
|
||||
cc.sys.BROWSER_TYPE_BAIDU,
|
||||
cc.sys.BROWSER_TYPE_BAIDU_APP,
|
||||
cc.sys.BROWSER_TYPE_WECHAT,
|
||||
cc.sys.BROWSER_TYPE_MOBILE_QQ,
|
||||
cc.sys.BROWSER_TYPE_MIUI,
|
||||
cc.sys.BROWSER_TYPE_HUAWEI,
|
||||
cc.sys.BROWSER_TYPE_UC,
|
||||
].indexOf(cc.sys.browserType) < 0);
|
||||
}
|
||||
|
||||
// Limit downloading max concurrent task to 2,
|
||||
// more tasks simultaneously may cause performance draw back on some android system / browsers.
|
||||
// You can adjust the number based on your own test result, you have to set it before any loading process to take effect.
|
||||
if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_ANDROID) {
|
||||
cc.assetManager.downloader.maxConcurrency = 2;
|
||||
cc.assetManager.downloader.maxRequestsPerFrame = 2;
|
||||
}
|
||||
|
||||
var launchScene = settings.launchScene;
|
||||
var bundle = cc.assetManager.bundles.find(function (b) {
|
||||
return b.getSceneInfo(launchScene);
|
||||
});
|
||||
|
||||
bundle.loadScene(launchScene, null, onProgress,
|
||||
function (err, scene) {
|
||||
if (!err) {
|
||||
cc.director.runSceneImmediate(scene);
|
||||
if (cc.sys.isBrowser) {
|
||||
// show canvas
|
||||
var canvas = document.getElementById('GameCanvas');
|
||||
canvas.style.visibility = '';
|
||||
var div = document.getElementById('GameDiv');
|
||||
if (div) {
|
||||
div.style.backgroundImage = '';
|
||||
}
|
||||
console.log('Success to load scene: ' + launchScene);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
var option = {
|
||||
id: 'GameCanvas',
|
||||
debugMode: settings.debug ? cc.debug.DebugMode.INFO : cc.debug.DebugMode.ERROR,
|
||||
showFPS: settings.debug,
|
||||
frameRate: 60,
|
||||
groupList: settings.groupList,
|
||||
collisionMatrix: settings.collisionMatrix,
|
||||
};
|
||||
|
||||
cc.assetManager.init({
|
||||
bundleVers: settings.bundleVers,
|
||||
remoteBundles: settings.remoteBundles,
|
||||
server: settings.server
|
||||
});
|
||||
|
||||
var bundleRoot = [INTERNAL];
|
||||
settings.hasResourcesBundle && bundleRoot.push(RESOURCES);
|
||||
|
||||
var count = 0;
|
||||
function cb (err) {
|
||||
if (err) return console.error(err.message, err.stack);
|
||||
count++;
|
||||
if (count === bundleRoot.length + 1) {
|
||||
cc.assetManager.loadBundle(MAIN, function (err) {
|
||||
if (!err) cc.game.run(option, onStart);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
cc.assetManager.loadScript(settings.jsList.map(function (x) { return 'src/' + x;}), cb);
|
||||
|
||||
for (var i = 0; i < bundleRoot.length; i++) {
|
||||
cc.assetManager.loadBundle(bundleRoot[i], cb);
|
||||
}
|
||||
};
|
||||
|
||||
if (window.jsb) {
|
||||
var isRuntime = (typeof loadRuntime === 'function');
|
||||
if (isRuntime) {
|
||||
require('src/settings.js');
|
||||
require('src/cocos2d-runtime.js');
|
||||
if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
|
||||
require('src/physics.js');
|
||||
}
|
||||
require('jsb-adapter/engine/index.js');
|
||||
}
|
||||
else {
|
||||
require('src/settings.js');
|
||||
require('src/cocos2d-jsb.js');
|
||||
if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
|
||||
require('src/physics.js');
|
||||
}
|
||||
require('jsb-adapter/jsb-engine.js');
|
||||
}
|
||||
|
||||
cc.macro.CLEANUP_IMAGE_CACHE = true;
|
||||
window.boot();
|
||||
}
|
BIN
build-templates/web-mobile2/splash.jpg
Normal file
BIN
build-templates/web-mobile2/splash.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
124
build-templates/web-mobile2/style-mobile.css
Normal file
124
build-templates/web-mobile2/style-mobile.css
Normal file
|
@ -0,0 +1,124 @@
|
|||
html {
|
||||
-ms-touch-action: none;
|
||||
}
|
||||
|
||||
body, canvas, div {
|
||||
display: block;
|
||||
outline: none;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
|
||||
user-select: none;
|
||||
-moz-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-ms-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
/* Remove spin of input type number */
|
||||
input::-webkit-outer-spin-button,
|
||||
input::-webkit-inner-spin-button {
|
||||
/* display: none; <- Crashes Chrome on hover */
|
||||
-webkit-appearance: none;
|
||||
margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
|
||||
}
|
||||
|
||||
body {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
|
||||
cursor: default;
|
||||
color: #888;
|
||||
background-color: #333;
|
||||
|
||||
text-align: center;
|
||||
font-family: Helvetica, Verdana, Arial, sans-serif;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
/* fix bug: https://github.com/cocos-creator/2d-tasks/issues/791 */
|
||||
/* overflow cannot be applied in Cocos2dGameContainer,
|
||||
otherwise child elements will be hidden when Cocos2dGameContainer rotated 90 deg */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#Cocos2dGameContainer {
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-align: center;
|
||||
-webkit-box-pack: center;
|
||||
}
|
||||
|
||||
canvas {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
a:link, a:visited {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
a:active, a:hover {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
p.header {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
p.footer {
|
||||
font-size: x-small;
|
||||
}
|
||||
|
||||
/* #splash {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #171717 url(./splash.jpg) no-repeat center;
|
||||
background-size: 100%;
|
||||
} */
|
||||
|
||||
/* .progress-bar {
|
||||
position: absolute;
|
||||
left: 27.5%;
|
||||
top: 80%;
|
||||
height: 3px;
|
||||
padding: 2px;
|
||||
width: 0%;
|
||||
border-radius: 7px;
|
||||
box-shadow: 0 1px 5px #000 inset, 0 1px 0 #444;
|
||||
}
|
||||
|
||||
.progress-bar span {
|
||||
display: block;
|
||||
height: 0%;
|
||||
border-radius: 3px;
|
||||
transition: width .4s ease-in-out;
|
||||
background-color: #3dc5de;
|
||||
} */
|
||||
|
||||
.stripes span {
|
||||
background-size: 30px 30px;
|
||||
background-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%,
|
||||
transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,
|
||||
transparent 75%, transparent);
|
||||
|
||||
animation: animate-stripes 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes animate-stripes {
|
||||
0% {background-position: 0 0;} 100% {background-position: 60px 0;}
|
||||
}
|
32078
creator.d.ts
vendored
Normal file
32078
creator.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
15
jsconfig.json
Normal file
15
jsconfig.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"experimentalDecorators": true
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
".vscode",
|
||||
"library",
|
||||
"local",
|
||||
"settings",
|
||||
"temp"
|
||||
]
|
||||
}
|
409
library/imports/00/0004d1cf-a0ad-47d8-ab17-34d3db9d35a3.json
Normal file
409
library/imports/00/0004d1cf-a0ad-47d8-ab17-34d3db9d35a3.json
Normal file
|
@ -0,0 +1,409 @@
|
|||
[
|
||||
{
|
||||
"__type__": "cc.Prefab",
|
||||
"_name": "slider",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"data": {
|
||||
"__id__": 1
|
||||
},
|
||||
"optimizationPolicy": 1,
|
||||
"asyncLoadAssets": false,
|
||||
"readonly": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "slider",
|
||||
"_objFlags": 0,
|
||||
"_parent": null,
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 5
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 9
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 10
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 300,
|
||||
"height": 20
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Background",
|
||||
"_objFlags": 512,
|
||||
"_parent": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 3
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 4
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 300,
|
||||
"height": 20
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_srcBlendFactor": 770,
|
||||
"_dstBlendFactor": 771,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "31d8962d-babb-4ec7-be19-8e9f54a4ea99"
|
||||
},
|
||||
"_type": 1,
|
||||
"_sizeMode": 0,
|
||||
"_fillType": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": true,
|
||||
"_atlas": null,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "0004d1cf-a0ad-47d8-ab17-34d3db9d35a3"
|
||||
},
|
||||
"fileId": "f43c4gNvOtBE41OTztiOT6T",
|
||||
"sync": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Handle",
|
||||
"_objFlags": 512,
|
||||
"_parent": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 6
|
||||
},
|
||||
{
|
||||
"__id__": 7
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 8
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 32,
|
||||
"height": 32
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_srcBlendFactor": 770,
|
||||
"_dstBlendFactor": 771,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "e7aba14b-f956-4480-b254-8d57832e273f"
|
||||
},
|
||||
"_type": 1,
|
||||
"_sizeMode": 2,
|
||||
"_fillType": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": true,
|
||||
"_atlas": null,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Button",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_enabled": true,
|
||||
"_normalMaterial": null,
|
||||
"_grayMaterial": null,
|
||||
"duration": 0.1,
|
||||
"zoomScale": 1.1,
|
||||
"clickEvents": [],
|
||||
"_N$interactable": true,
|
||||
"_N$enableAutoGrayEffect": true,
|
||||
"_N$transition": 3,
|
||||
"transition": 3,
|
||||
"_N$normalColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_N$pressedColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"pressedColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_N$hoverColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"hoverColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_N$disabledColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_N$normalSprite": {
|
||||
"__uuid__": "e7aba14b-f956-4480-b254-8d57832e273f"
|
||||
},
|
||||
"_N$pressedSprite": {
|
||||
"__uuid__": "e7aba14b-f956-4480-b254-8d57832e273f"
|
||||
},
|
||||
"pressedSprite": {
|
||||
"__uuid__": "e7aba14b-f956-4480-b254-8d57832e273f"
|
||||
},
|
||||
"_N$hoverSprite": {
|
||||
"__uuid__": "e7aba14b-f956-4480-b254-8d57832e273f"
|
||||
},
|
||||
"hoverSprite": {
|
||||
"__uuid__": "e7aba14b-f956-4480-b254-8d57832e273f"
|
||||
},
|
||||
"_N$disabledSprite": {
|
||||
"__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
|
||||
},
|
||||
"_N$target": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "0004d1cf-a0ad-47d8-ab17-34d3db9d35a3"
|
||||
},
|
||||
"fileId": "93f4b6UTvtD0Iy5hi3tLIn2",
|
||||
"sync": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Slider",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"direction": 0,
|
||||
"slideEvents": [],
|
||||
"_N$handle": {
|
||||
"__id__": 7
|
||||
},
|
||||
"_N$progress": 0.5,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "0004d1cf-a0ad-47d8-ab17-34d3db9d35a3"
|
||||
},
|
||||
"fileId": "8ac42iRpDlK6pemd22ZO6x/",
|
||||
"sync": false
|
||||
}
|
||||
]
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"__type__": "cc.Texture2D",
|
||||
"content": "0,9729,9729,33071,33071,0,0,1"
|
||||
}
|
BIN
library/imports/02/0275e94c-56a7-410f-bd1a-fc7483f7d14a.png
Normal file
BIN
library/imports/02/0275e94c-56a7-410f-bd1a-fc7483f7d14a.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 82 B |
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"__type__": "cc.Texture2D",
|
||||
"content": "0,9729,9729,33071,33071,0,0,1"
|
||||
}
|
BIN
library/imports/02/0291c134-b3da-4098-b7b5-e397edbe947f.png
Normal file
BIN
library/imports/02/0291c134-b3da-4098-b7b5-e397edbe947f.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
BIN
library/imports/04/046f172c-1574-488b-bbb8-6415a9adb96d.bin
Normal file
BIN
library/imports/04/046f172c-1574-488b-bbb8-6415a9adb96d.bin
Normal file
Binary file not shown.
90
library/imports/04/046f172c-1574-488b-bbb8-6415a9adb96d.json
Normal file
90
library/imports/04/046f172c-1574-488b-bbb8-6415a9adb96d.json
Normal file
|
@ -0,0 +1,90 @@
|
|||
[
|
||||
{
|
||||
"__type__": "cc.Mesh",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"_native": ".bin",
|
||||
"_vertexBundles": [
|
||||
{
|
||||
"__id__": 1
|
||||
}
|
||||
],
|
||||
"_primitives": [
|
||||
{
|
||||
"__id__": 6
|
||||
}
|
||||
],
|
||||
"_minPos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": -0.5,
|
||||
"y": -0.5,
|
||||
"z": -0.5
|
||||
},
|
||||
"_maxPos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0.5,
|
||||
"y": 0.5,
|
||||
"z": 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.VertexBundle",
|
||||
"data": {
|
||||
"__id__": 2
|
||||
},
|
||||
"formats": [
|
||||
{
|
||||
"__id__": 3
|
||||
},
|
||||
{
|
||||
"__id__": 4
|
||||
},
|
||||
{
|
||||
"__id__": 5
|
||||
}
|
||||
],
|
||||
"verticesCount": 24
|
||||
},
|
||||
{
|
||||
"__type__": "cc.BufferRange",
|
||||
"offset": 0,
|
||||
"length": 768
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.VertexFormat",
|
||||
"name": "a_normal",
|
||||
"type": 5126,
|
||||
"num": 3,
|
||||
"normalize": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.VertexFormat",
|
||||
"name": "a_position",
|
||||
"type": 5126,
|
||||
"num": 3,
|
||||
"normalize": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.VertexFormat",
|
||||
"name": "a_uv0",
|
||||
"type": 5126,
|
||||
"num": 2,
|
||||
"normalize": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.Primitive",
|
||||
"vertexBundleIndices": [
|
||||
0
|
||||
],
|
||||
"data": {
|
||||
"__id__": 7
|
||||
},
|
||||
"indexUnit": 5123,
|
||||
"topology": 4
|
||||
},
|
||||
{
|
||||
"__type__": "cc.BufferRange",
|
||||
"offset": 768,
|
||||
"length": 72
|
||||
}
|
||||
]
|
117
library/imports/0c/0cf30284-9073-46bc-9eba-e62b69dbbff3.json
Normal file
117
library/imports/0c/0cf30284-9073-46bc-9eba-e62b69dbbff3.json
Normal file
|
@ -0,0 +1,117 @@
|
|||
[
|
||||
{
|
||||
"__type__": "cc.Prefab",
|
||||
"_name": "point",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"data": {
|
||||
"__id__": 1
|
||||
},
|
||||
"optimizationPolicy": 0,
|
||||
"asyncLoadAssets": false,
|
||||
"readonly": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "light",
|
||||
"_objFlags": 0,
|
||||
"_parent": null,
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_level": 1,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 2
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 3
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": true,
|
||||
"groupIndex": 0,
|
||||
"_id": "",
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Light",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"_type": 1,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_intensity": 1,
|
||||
"_range": 1000,
|
||||
"_spotAngle": 60,
|
||||
"_spotExp": 1,
|
||||
"_shadowType": 0,
|
||||
"_shadowResolution": 1024,
|
||||
"_shadowDarkness": 0.5,
|
||||
"_shadowMinDepth": 1,
|
||||
"_shadowMaxDepth": 1000,
|
||||
"_shadowDepthScale": 250,
|
||||
"_shadowFrustumSize": 50,
|
||||
"_shadowBias": 0.0005,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "0cf30284-9073-46bc-9eba-e62b69dbbff3"
|
||||
},
|
||||
"fileId": "33zOkteexCqamZ4PXuwJaW",
|
||||
"sync": false
|
||||
}
|
||||
]
|
384
library/imports/0d/0d784963-d024-4ea6-a7db-03be0ad63010.json
Normal file
384
library/imports/0d/0d784963-d024-4ea6-a7db-03be0ad63010.json
Normal file
|
@ -0,0 +1,384 @@
|
|||
[
|
||||
{
|
||||
"__type__": "cc.Prefab",
|
||||
"_name": "toggle",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"data": {
|
||||
"__id__": 1
|
||||
},
|
||||
"optimizationPolicy": 1,
|
||||
"asyncLoadAssets": false,
|
||||
"readonly": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "toggle",
|
||||
"_objFlags": 0,
|
||||
"_parent": null,
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 5
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 8
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 9
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 28,
|
||||
"height": 28
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Background",
|
||||
"_objFlags": 512,
|
||||
"_parent": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 3
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 4
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 28,
|
||||
"height": 28
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_srcBlendFactor": 770,
|
||||
"_dstBlendFactor": 771,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "6827ca32-0107-4552-bab2-dfb31799bb44"
|
||||
},
|
||||
"_type": 0,
|
||||
"_sizeMode": 1,
|
||||
"_fillType": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": true,
|
||||
"_atlas": null,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "0d784963-d024-4ea6-a7db-03be0ad63010"
|
||||
},
|
||||
"fileId": "238bacn/jZGGYuFN7ndSzkO",
|
||||
"sync": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "checkmark",
|
||||
"_objFlags": 512,
|
||||
"_parent": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 6
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 7
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 28,
|
||||
"height": 28
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_srcBlendFactor": 770,
|
||||
"_dstBlendFactor": 771,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "90004ad6-2f6d-40e1-93ef-b714375c6f06"
|
||||
},
|
||||
"_type": 0,
|
||||
"_sizeMode": 2,
|
||||
"_fillType": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": false,
|
||||
"_atlas": null,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "0d784963-d024-4ea6-a7db-03be0ad63010"
|
||||
},
|
||||
"fileId": "0d447hRg/9AuLVwR7+lDw/1",
|
||||
"sync": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Toggle",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"_normalMaterial": null,
|
||||
"_grayMaterial": null,
|
||||
"duration": 0.1,
|
||||
"zoomScale": 1.2,
|
||||
"clickEvents": [],
|
||||
"_N$interactable": true,
|
||||
"_N$enableAutoGrayEffect": false,
|
||||
"_N$transition": 3,
|
||||
"transition": 3,
|
||||
"_N$normalColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 214,
|
||||
"g": 214,
|
||||
"b": 214,
|
||||
"a": 255
|
||||
},
|
||||
"_N$pressedColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 211,
|
||||
"g": 211,
|
||||
"b": 211,
|
||||
"a": 255
|
||||
},
|
||||
"pressedColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 211,
|
||||
"g": 211,
|
||||
"b": 211,
|
||||
"a": 255
|
||||
},
|
||||
"_N$hoverColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"hoverColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_N$disabledColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 124,
|
||||
"g": 124,
|
||||
"b": 124,
|
||||
"a": 255
|
||||
},
|
||||
"_N$normalSprite": null,
|
||||
"_N$pressedSprite": null,
|
||||
"pressedSprite": null,
|
||||
"_N$hoverSprite": null,
|
||||
"hoverSprite": null,
|
||||
"_N$disabledSprite": null,
|
||||
"_N$target": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_N$isChecked": true,
|
||||
"toggleGroup": null,
|
||||
"checkMark": {
|
||||
"__id__": 6
|
||||
},
|
||||
"checkEvents": [],
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "0d784963-d024-4ea6-a7db-03be0ad63010"
|
||||
},
|
||||
"fileId": "3d81aISgHdGFblE/PZD2Cp3",
|
||||
"sync": false
|
||||
}
|
||||
]
|
101
library/imports/0e/0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c.json
Normal file
101
library/imports/0e/0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c.json
Normal file
|
@ -0,0 +1,101 @@
|
|||
[
|
||||
{
|
||||
"__type__": "cc.Prefab",
|
||||
"_name": "tiledtile",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"data": {
|
||||
"__id__": 1
|
||||
},
|
||||
"optimizationPolicy": 0,
|
||||
"asyncLoadAssets": false,
|
||||
"readonly": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "New TiledTile",
|
||||
"_objFlags": 0,
|
||||
"_parent": null,
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_level": 1,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 2
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 3
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_localZOrder": 45,
|
||||
"groupIndex": 0,
|
||||
"_id": "",
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.TiledTile",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"_x": 0,
|
||||
"_y": 0,
|
||||
"_gid": 6,
|
||||
"_layer": null,
|
||||
"_id": "39h1tJvWtC8oLyzYKulleV"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c"
|
||||
},
|
||||
"fileId": "fb1JS09SVFapQy1+PoRN4F",
|
||||
"sync": false
|
||||
}
|
||||
]
|
125
library/imports/0e/0e93aeaa-0b53-4e40-b8e0-6268b4e07bd7.json
Normal file
125
library/imports/0e/0e93aeaa-0b53-4e40-b8e0-6268b4e07bd7.json
Normal file
|
@ -0,0 +1,125 @@
|
|||
{
|
||||
"__type__": "cc.EffectAsset",
|
||||
"_name": "builtin-2d-spine",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"properties": null,
|
||||
"techniques": [
|
||||
{
|
||||
"passes": [
|
||||
{
|
||||
"blendState": {
|
||||
"targets": [
|
||||
{
|
||||
"blend": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"rasterizerState": {
|
||||
"cullMode": 0
|
||||
},
|
||||
"properties": {
|
||||
"texture": {
|
||||
"value": "white",
|
||||
"type": 29
|
||||
},
|
||||
"alphaThreshold": {
|
||||
"value": [
|
||||
0.5
|
||||
],
|
||||
"type": 13
|
||||
}
|
||||
},
|
||||
"program": "builtin-2d-spine|vs|fs"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"shaders": [
|
||||
{
|
||||
"hash": 3550530479,
|
||||
"glsl3": {
|
||||
"vert": "\nprecision highp float;\nuniform CCGlobal {\n mat4 cc_matView;\n mat4 cc_matViewInv;\n mat4 cc_matProj;\n mat4 cc_matProjInv;\n mat4 cc_matViewProj;\n mat4 cc_matViewProjInv;\n vec4 cc_cameraPos;\n vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_screenScale;\n};\nuniform CCLocal {\n mat4 cc_matWorld;\n mat4 cc_matWorldIT;\n};\nin vec3 a_position;\nin vec4 a_color;\n#if USE_TINT\n in vec4 a_color0;\n#endif\nin vec2 a_uv0;\nout vec2 v_uv0;\nout vec4 v_light;\n#if USE_TINT\n out vec4 v_dark;\n#endif\nvoid main () {\n mat4 mvp;\n #if CC_USE_MODEL\n mvp = cc_matViewProj * cc_matWorld;\n #else\n mvp = cc_matViewProj;\n #endif\n v_uv0 = a_uv0;\n v_light = a_color;\n #if USE_TINT\n v_dark = a_color0;\n #endif\n gl_Position = mvp * vec4(a_position, 1);\n}",
|
||||
"frag": "\nprecision highp float;\nuniform sampler2D texture;\nin vec2 v_uv0;\nin vec4 v_light;\n#if USE_TINT\n in vec4 v_dark;\n#endif\n#if USE_ALPHA_TEST\n uniform ALPHA_TEST {\n float alphaThreshold;\n };\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nvoid main () {\n vec4 texColor = vec4(1.0);\n vec4 texture_tmp = texture(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture\n texture_tmp.a *= texture(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n texColor.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n texColor.a *= texture_tmp.a;\n #else\n texColor *= texture_tmp;\n #endif\n vec4 finalColor;\n #if USE_TINT\n finalColor.a = v_light.a * texColor.a;\n finalColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n #else\n finalColor = texColor * v_light;\n #endif\n ALPHA_TEST(finalColor);\n gl_FragColor = finalColor;\n}"
|
||||
},
|
||||
"glsl1": {
|
||||
"vert": "\nprecision highp float;\nuniform mat4 cc_matViewProj;\nuniform mat4 cc_matWorld;\nattribute vec3 a_position;\nattribute vec4 a_color;\n#if USE_TINT\n attribute vec4 a_color0;\n#endif\nattribute vec2 a_uv0;\nvarying vec2 v_uv0;\nvarying vec4 v_light;\n#if USE_TINT\n varying vec4 v_dark;\n#endif\nvoid main () {\n mat4 mvp;\n #if CC_USE_MODEL\n mvp = cc_matViewProj * cc_matWorld;\n #else\n mvp = cc_matViewProj;\n #endif\n v_uv0 = a_uv0;\n v_light = a_color;\n #if USE_TINT\n v_dark = a_color0;\n #endif\n gl_Position = mvp * vec4(a_position, 1);\n}",
|
||||
"frag": "\nprecision highp float;\nuniform sampler2D texture;\nvarying vec2 v_uv0;\nvarying vec4 v_light;\n#if USE_TINT\n varying vec4 v_dark;\n#endif\n#if USE_ALPHA_TEST\n uniform float alphaThreshold;\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nvoid main () {\n vec4 texColor = vec4(1.0);\n vec4 texture_tmp = texture2D(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture\n texture_tmp.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n texColor.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n texColor.a *= texture_tmp.a;\n #else\n texColor *= texture_tmp;\n #endif\n vec4 finalColor;\n #if USE_TINT\n finalColor.a = v_light.a * texColor.a;\n finalColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n #else\n finalColor = texColor * v_light;\n #endif\n ALPHA_TEST(finalColor);\n gl_FragColor = finalColor;\n}"
|
||||
},
|
||||
"builtins": {
|
||||
"globals": {
|
||||
"blocks": [
|
||||
{
|
||||
"name": "CCGlobal",
|
||||
"defines": []
|
||||
}
|
||||
],
|
||||
"samplers": []
|
||||
},
|
||||
"locals": {
|
||||
"blocks": [
|
||||
{
|
||||
"name": "CCLocal",
|
||||
"defines": []
|
||||
}
|
||||
],
|
||||
"samplers": []
|
||||
}
|
||||
},
|
||||
"defines": [
|
||||
{
|
||||
"name": "USE_TINT",
|
||||
"type": "boolean",
|
||||
"defines": []
|
||||
},
|
||||
{
|
||||
"name": "CC_USE_MODEL",
|
||||
"type": "boolean",
|
||||
"defines": []
|
||||
},
|
||||
{
|
||||
"name": "USE_ALPHA_TEST",
|
||||
"type": "boolean",
|
||||
"defines": []
|
||||
},
|
||||
{
|
||||
"name": "CC_USE_ALPHA_ATLAS_texture",
|
||||
"type": "boolean",
|
||||
"defines": []
|
||||
},
|
||||
{
|
||||
"name": "INPUT_IS_GAMMA",
|
||||
"type": "boolean",
|
||||
"defines": []
|
||||
}
|
||||
],
|
||||
"blocks": [
|
||||
{
|
||||
"name": "ALPHA_TEST",
|
||||
"members": [
|
||||
{
|
||||
"name": "alphaThreshold",
|
||||
"type": 13,
|
||||
"count": 1
|
||||
}
|
||||
],
|
||||
"defines": [
|
||||
"USE_ALPHA_TEST"
|
||||
],
|
||||
"binding": 0
|
||||
}
|
||||
],
|
||||
"samplers": [
|
||||
{
|
||||
"name": "texture",
|
||||
"type": 29,
|
||||
"count": 1,
|
||||
"defines": [],
|
||||
"binding": 30
|
||||
}
|
||||
],
|
||||
"record": null,
|
||||
"name": "builtin-2d-spine|vs|fs"
|
||||
}
|
||||
]
|
||||
}
|
34
library/imports/10/10029dfc-5454-4977-bd11-8809e8f48cac.js
Normal file
34
library/imports/10/10029dfc-5454-4977-bd11-8809e8f48cac.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
"use strict";
|
||||
cc._RF.push(module, '1002938VFRJd70RiAno9Iys', 'Storage');
|
||||
// Script/module/Storage/Storage.ts
|
||||
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.StorageMessage = void 0;
|
||||
//缓存浏览器数据
|
||||
var StorageMessage = {
|
||||
getStorage: function (key) {
|
||||
var result = null;
|
||||
if (cc.sys.localStorage.getItem(key)) {
|
||||
var result = cc.sys.localStorage.getItem(key);
|
||||
}
|
||||
if (result) {
|
||||
result = JSON.parse(result);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
setStorage: function (key, value) {
|
||||
//主动拉起分享接口
|
||||
var temp = JSON.stringify(value);
|
||||
cc.sys.localStorage.setItem(key, temp);
|
||||
},
|
||||
removeStorage: function (key) {
|
||||
//主动删除消息接口
|
||||
if (cc.sys.localStorage.getItem(key)) {
|
||||
cc.sys.localStorage.removeItem(key);
|
||||
}
|
||||
},
|
||||
};
|
||||
exports.StorageMessage = StorageMessage;
|
||||
|
||||
cc._RF.pop();
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"sources":["assets\\Script\\module\\Storage\\Storage.ts"],"names":[],"mappings":";;;;;;;AAAA,SAAS;AACT,IAAI,cAAc,GAAG;IACjB,UAAU,EAAG,UAAS,GAAG;QACrB,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC;YAClC,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC/C;QAED,IAAG,MAAM,EAAC;YACR,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC7B;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,UAAU,EAAG,UAAS,GAAG,EAAC,KAAK;QAC3B,UAAU;QACV,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;IACD,aAAa,EAAG,UAAS,GAAG;QAC1B,UAAU;QACV,IAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC;YAClC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;SACpC;IACH,CAAC;CACJ,CAAC;AAEO,wCAAc","file":"","sourceRoot":"/","sourcesContent":["//缓存浏览器数据\nvar StorageMessage = {\n getStorage : function(key){\n var result = null;\n if(cc.sys.localStorage.getItem(key)){\n var result = cc.sys.localStorage.getItem(key);\n }\n \n if(result){\n result = JSON.parse(result);\n }\n return result;\n },\n setStorage : function(key,value){\n //主动拉起分享接口\n var temp = JSON.stringify(value);\n cc.sys.localStorage.setItem(key, temp)\n },\n removeStorage : function(key){\n //主动删除消息接口\n if(cc.sys.localStorage.getItem(key)){\n cc.sys.localStorage.removeItem(key)\n }\n },\n};\n\nexport { StorageMessage };"]}
|
106
library/imports/11/115286d1-2e10-49ee-aab4-341583f607e8.json
Normal file
106
library/imports/11/115286d1-2e10-49ee-aab4-341583f607e8.json
Normal file
|
@ -0,0 +1,106 @@
|
|||
{
|
||||
"__type__": "cc.EffectAsset",
|
||||
"_name": "__builtin-editor-gizmo",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"properties": null,
|
||||
"techniques": [
|
||||
{
|
||||
"passes": [
|
||||
{
|
||||
"stage": "transparent",
|
||||
"blendState": {
|
||||
"targets": [
|
||||
{
|
||||
"blend": true,
|
||||
"blendEq": 32774,
|
||||
"blendAlphaEq": 32774,
|
||||
"blendSrcAlpha": 1,
|
||||
"blendDstAlpha": 771
|
||||
}
|
||||
]
|
||||
},
|
||||
"rasterizerState": {
|
||||
"cullMode": 0
|
||||
},
|
||||
"depthStencilState": {
|
||||
"depthTest": false,
|
||||
"depthWrite": false
|
||||
},
|
||||
"properties": {
|
||||
"diffuseColor": {
|
||||
"value": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"editor": {
|
||||
"type": "color"
|
||||
},
|
||||
"type": 16
|
||||
}
|
||||
},
|
||||
"program": "__builtin-editor-gizmo|vs|fs"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"shaders": [
|
||||
{
|
||||
"hash": 2992916359,
|
||||
"glsl3": {
|
||||
"vert": "\nprecision highp float;\nuniform CCGlobal {\n mat4 cc_matView;\n mat4 cc_matViewInv;\n mat4 cc_matProj;\n mat4 cc_matProjInv;\n mat4 cc_matViewProj;\n mat4 cc_matViewProjInv;\n vec4 cc_cameraPos;\n vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_screenScale;\n};\nuniform CCLocal {\n mat4 cc_matWorld;\n mat4 cc_matWorldIT;\n};\nvarying vec3 v_worldNormal;\nvarying vec3 v_worldPosition;\nvarying vec3 v_localPosition;\nvarying vec3 v_right;\nvarying vec3 v_up;\nvarying vec3 v_forward;\nattribute vec3 a_position;\nattribute vec3 a_normal;\nvoid main () {\n vec4 pos = vec4(a_position, 1);\n v_localPosition = a_position;\n v_worldPosition = (cc_matWorld * pos).xyz;\n v_worldNormal = (cc_matWorldIT * vec4(a_normal, 0)).xyz;\n v_right = vec3(cc_matView[0][0], cc_matView[1][0], cc_matView[2][0]);\n v_up = vec3(cc_matView[0][1], cc_matView[1][1], cc_matView[2][1]);\n v_forward = vec3(cc_matView[0][2], cc_matView[1][2], cc_matView[2][2]);\n gl_Position = cc_matViewProj * cc_matWorld * pos;\n}",
|
||||
"frag": "\nprecision highp float;\nvec4 CCFragOutput (vec4 color) {\n #if OUTPUT_TO_GAMMA\n color.rgb = sqrt(color.rgb);\n #endif\n\treturn color;\n}\nmat3 transpose(mat3 v) {\n mat3 tmp;\n tmp[0] = vec3(v[0].x, v[1].x, v[2].x);\n tmp[1] = vec3(v[0].y, v[1].y, v[2].y);\n tmp[2] = vec3(v[0].z, v[1].z, v[2].z);\n return tmp;\n}\nvoid ClipQuadToHorizon(inout vec3 L[5], out int n) {\n int config = 0;\n if (L[0].z > 0.0) config += 1;\n if (L[1].z > 0.0) config += 2;\n if (L[2].z > 0.0) config += 4;\n if (L[3].z > 0.0) config += 8;\n config = 15;\n n = 0;\n if (config == 0)\n {\n }\n else if (config == 1)\n {\n n = 3;\n L[1] = -L[1].z * L[0] + L[0].z * L[1];\n L[2] = -L[3].z * L[0] + L[0].z * L[3];\n }\n else if (config == 2)\n {\n n = 3;\n L[0] = -L[0].z * L[1] + L[1].z * L[0];\n L[2] = -L[2].z * L[1] + L[1].z * L[2];\n }\n else if (config == 3)\n {\n n = 4;\n L[2] = -L[2].z * L[1] + L[1].z * L[2];\n L[3] = -L[3].z * L[0] + L[0].z * L[3];\n }\n else if (config == 4)\n {\n n = 3;\n L[0] = -L[3].z * L[2] + L[2].z * L[3];\n L[1] = -L[1].z * L[2] + L[2].z * L[1];\n }\n else if (config == 5)\n {\n n = 0;\n }\n else if (config == 6)\n {\n n = 4;\n L[0] = -L[0].z * L[1] + L[1].z * L[0];\n L[3] = -L[3].z * L[2] + L[2].z * L[3];\n }\n else if (config == 7)\n {\n n = 5;\n L[4] = -L[3].z * L[0] + L[0].z * L[3];\n L[3] = -L[3].z * L[2] + L[2].z * L[3];\n }\n else if (config == 8)\n {\n n = 3;\n L[0] = -L[0].z * L[3] + L[3].z * L[0];\n L[1] = -L[2].z * L[3] + L[3].z * L[2];\n L[2] = L[3];\n }\n else if (config == 9)\n {\n n = 4;\n L[1] = -L[1].z * L[0] + L[0].z * L[1];\n L[2] = -L[2].z * L[3] + L[3].z * L[2];\n }\n else if (config == 10)\n {\n n = 0;\n }\n else if (config == 11)\n {\n n = 5;\n L[4] = L[3];\n L[3] = -L[2].z * L[3] + L[3].z * L[2];\n L[2] = -L[2].z * L[1] + L[1].z * L[2];\n }\n else if (config == 12)\n {\n n = 4;\n L[1] = -L[1].z * L[2] + L[2].z * L[1];\n L[0] = -L[0].z * L[3] + L[3].z * L[0];\n }\n else if (config == 13)\n {\n n = 5;\n L[4] = L[3];\n L[3] = L[2];\n L[2] = -L[1].z * L[2] + L[2].z * L[1];\n L[1] = -L[1].z * L[0] + L[0].z * L[1];\n }\n else if (config == 14)\n {\n n = 5;\n L[4] = -L[0].z * L[3] + L[3].z * L[0];\n L[0] = -L[0].z * L[1] + L[1].z * L[0];\n }\n else if (config == 15)\n {\n n = 4;\n }\n if (n == 3)\n L[3] = L[0];\n if (n == 4)\n L[4] = L[0];\n}\nfloat IntegrateEdge(vec3 v1, vec3 v2) {\n float cosTheta = dot(v1, v2);\n float theta = acos(cosTheta);\n return cross(v1, v2).z * ((theta > 0.001) ? theta/sin(theta) : 4.0);\n}\nvec3 LTC_Evaluate(vec3 N, vec3 V, vec3 P, mat3 Minv, vec3 points[4]) {\n vec3 T1, T2;\n T1 = normalize(V - N*dot(V, N));\n T2 = cross(N, T1);\n Minv = Minv * transpose(mat3(T1, T2, N));\n vec3 L[5];\n L[0] = Minv * (points[0] - P);\n L[1] = Minv * (points[1] - P);\n L[2] = Minv * (points[2] - P);\n L[3] = Minv * (points[3] - P);\n int n;\n ClipQuadToHorizon(L, n);\n if (n == 0)\n return vec3(0, 0, 0);\n L[0] = normalize(L[0]);\n L[1] = normalize(L[1]);\n L[2] = normalize(L[2]);\n L[3] = normalize(L[3]);\n L[4] = normalize(L[4]);\n float sum = 0.0;\n sum += IntegrateEdge(L[0], L[1]);\n sum += IntegrateEdge(L[1], L[2]);\n sum += IntegrateEdge(L[2], L[3]);\n if (n >= 4)\n sum += IntegrateEdge(L[3], L[4]);\n if (n == 5)\n sum += IntegrateEdge(L[4], L[0]);\n sum = max(0.0, sum);\n vec3 Lo_i = vec3(sum, sum, sum);\n return Lo_i;\n}\nuniform CCGlobal {\n mat4 cc_matView;\n mat4 cc_matViewInv;\n mat4 cc_matProj;\n mat4 cc_matProjInv;\n mat4 cc_matViewProj;\n mat4 cc_matViewProjInv;\n vec4 cc_cameraPos;\n vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_screenScale;\n};\nuniform DIFFUSE_COLOR {\n vec4 diffuseColor;\n};\nvarying vec3 v_worldNormal;\nvarying vec3 v_worldPosition;\nvarying vec3 v_localPosition;\nvarying vec3 v_right;\nvarying vec3 v_up;\nvarying vec3 v_forward;\nvoid main () {\n vec3 N = normalize(v_worldNormal);\n vec3 V = normalize(cc_cameraPos.xyz - v_worldPosition);\n vec3 points[4];\n vec3 up = vec3(0, 1, 0);\n points[0] = (v_forward * 3.0 + v_right + up) * 40.0;\n points[1] = (v_forward * 3.0 - v_right + up) * 40.0;\n points[2] = (v_forward * 3.0 - v_right - up) * 40.0;\n points[3] = (v_forward * 3.0 + v_right - up) * 40.0;\n vec3 diffuse = diffuseColor.rgb * (0.2 + LTC_Evaluate(N, V, v_localPosition, mat3(1), points) * 0.8);\n gl_FragColor = CCFragOutput(vec4(diffuse, diffuseColor.a));\n}"
|
||||
},
|
||||
"glsl1": {
|
||||
"vert": "\nprecision highp float;\nuniform mat4 cc_matView;\nuniform mat4 cc_matViewProj;\nuniform mat4 cc_matWorld;\nuniform mat4 cc_matWorldIT;\nvarying vec3 v_worldNormal;\nvarying vec3 v_worldPosition;\nvarying vec3 v_localPosition;\nvarying vec3 v_right;\nvarying vec3 v_up;\nvarying vec3 v_forward;\nattribute vec3 a_position;\nattribute vec3 a_normal;\nvoid main () {\n vec4 pos = vec4(a_position, 1);\n v_localPosition = a_position;\n v_worldPosition = (cc_matWorld * pos).xyz;\n v_worldNormal = (cc_matWorldIT * vec4(a_normal, 0)).xyz;\n v_right = vec3(cc_matView[0][0], cc_matView[1][0], cc_matView[2][0]);\n v_up = vec3(cc_matView[0][1], cc_matView[1][1], cc_matView[2][1]);\n v_forward = vec3(cc_matView[0][2], cc_matView[1][2], cc_matView[2][2]);\n gl_Position = cc_matViewProj * cc_matWorld * pos;\n}",
|
||||
"frag": "\nprecision highp float;\nvec4 CCFragOutput (vec4 color) {\n #if OUTPUT_TO_GAMMA\n color.rgb = sqrt(color.rgb);\n #endif\n\treturn color;\n}\nmat3 transpose(mat3 v) {\n mat3 tmp;\n tmp[0] = vec3(v[0].x, v[1].x, v[2].x);\n tmp[1] = vec3(v[0].y, v[1].y, v[2].y);\n tmp[2] = vec3(v[0].z, v[1].z, v[2].z);\n return tmp;\n}\nvoid ClipQuadToHorizon(inout vec3 L[5], out int n) {\n int config = 0;\n if (L[0].z > 0.0) config += 1;\n if (L[1].z > 0.0) config += 2;\n if (L[2].z > 0.0) config += 4;\n if (L[3].z > 0.0) config += 8;\n config = 15;\n n = 0;\n if (config == 0)\n {\n }\n else if (config == 1)\n {\n n = 3;\n L[1] = -L[1].z * L[0] + L[0].z * L[1];\n L[2] = -L[3].z * L[0] + L[0].z * L[3];\n }\n else if (config == 2)\n {\n n = 3;\n L[0] = -L[0].z * L[1] + L[1].z * L[0];\n L[2] = -L[2].z * L[1] + L[1].z * L[2];\n }\n else if (config == 3)\n {\n n = 4;\n L[2] = -L[2].z * L[1] + L[1].z * L[2];\n L[3] = -L[3].z * L[0] + L[0].z * L[3];\n }\n else if (config == 4)\n {\n n = 3;\n L[0] = -L[3].z * L[2] + L[2].z * L[3];\n L[1] = -L[1].z * L[2] + L[2].z * L[1];\n }\n else if (config == 5)\n {\n n = 0;\n }\n else if (config == 6)\n {\n n = 4;\n L[0] = -L[0].z * L[1] + L[1].z * L[0];\n L[3] = -L[3].z * L[2] + L[2].z * L[3];\n }\n else if (config == 7)\n {\n n = 5;\n L[4] = -L[3].z * L[0] + L[0].z * L[3];\n L[3] = -L[3].z * L[2] + L[2].z * L[3];\n }\n else if (config == 8)\n {\n n = 3;\n L[0] = -L[0].z * L[3] + L[3].z * L[0];\n L[1] = -L[2].z * L[3] + L[3].z * L[2];\n L[2] = L[3];\n }\n else if (config == 9)\n {\n n = 4;\n L[1] = -L[1].z * L[0] + L[0].z * L[1];\n L[2] = -L[2].z * L[3] + L[3].z * L[2];\n }\n else if (config == 10)\n {\n n = 0;\n }\n else if (config == 11)\n {\n n = 5;\n L[4] = L[3];\n L[3] = -L[2].z * L[3] + L[3].z * L[2];\n L[2] = -L[2].z * L[1] + L[1].z * L[2];\n }\n else if (config == 12)\n {\n n = 4;\n L[1] = -L[1].z * L[2] + L[2].z * L[1];\n L[0] = -L[0].z * L[3] + L[3].z * L[0];\n }\n else if (config == 13)\n {\n n = 5;\n L[4] = L[3];\n L[3] = L[2];\n L[2] = -L[1].z * L[2] + L[2].z * L[1];\n L[1] = -L[1].z * L[0] + L[0].z * L[1];\n }\n else if (config == 14)\n {\n n = 5;\n L[4] = -L[0].z * L[3] + L[3].z * L[0];\n L[0] = -L[0].z * L[1] + L[1].z * L[0];\n }\n else if (config == 15)\n {\n n = 4;\n }\n if (n == 3)\n L[3] = L[0];\n if (n == 4)\n L[4] = L[0];\n}\nfloat IntegrateEdge(vec3 v1, vec3 v2) {\n float cosTheta = dot(v1, v2);\n float theta = acos(cosTheta);\n return cross(v1, v2).z * ((theta > 0.001) ? theta/sin(theta) : 4.0);\n}\nvec3 LTC_Evaluate(vec3 N, vec3 V, vec3 P, mat3 Minv, vec3 points[4]) {\n vec3 T1, T2;\n T1 = normalize(V - N*dot(V, N));\n T2 = cross(N, T1);\n Minv = Minv * transpose(mat3(T1, T2, N));\n vec3 L[5];\n L[0] = Minv * (points[0] - P);\n L[1] = Minv * (points[1] - P);\n L[2] = Minv * (points[2] - P);\n L[3] = Minv * (points[3] - P);\n int n;\n ClipQuadToHorizon(L, n);\n if (n == 0)\n return vec3(0, 0, 0);\n L[0] = normalize(L[0]);\n L[1] = normalize(L[1]);\n L[2] = normalize(L[2]);\n L[3] = normalize(L[3]);\n L[4] = normalize(L[4]);\n float sum = 0.0;\n sum += IntegrateEdge(L[0], L[1]);\n sum += IntegrateEdge(L[1], L[2]);\n sum += IntegrateEdge(L[2], L[3]);\n if (n >= 4)\n sum += IntegrateEdge(L[3], L[4]);\n if (n == 5)\n sum += IntegrateEdge(L[4], L[0]);\n sum = max(0.0, sum);\n vec3 Lo_i = vec3(sum, sum, sum);\n return Lo_i;\n}\nuniform vec4 cc_cameraPos;\nuniform vec4 diffuseColor;\nvarying vec3 v_worldNormal;\nvarying vec3 v_worldPosition;\nvarying vec3 v_localPosition;\nvarying vec3 v_right;\nvarying vec3 v_up;\nvarying vec3 v_forward;\nvoid main () {\n vec3 N = normalize(v_worldNormal);\n vec3 V = normalize(cc_cameraPos.xyz - v_worldPosition);\n vec3 points[4];\n vec3 up = vec3(0, 1, 0);\n points[0] = (v_forward * 3.0 + v_right + up) * 40.0;\n points[1] = (v_forward * 3.0 - v_right + up) * 40.0;\n points[2] = (v_forward * 3.0 - v_right - up) * 40.0;\n points[3] = (v_forward * 3.0 + v_right - up) * 40.0;\n vec3 diffuse = diffuseColor.rgb * (0.2 + LTC_Evaluate(N, V, v_localPosition, mat3(1), points) * 0.8);\n gl_FragColor = CCFragOutput(vec4(diffuse, diffuseColor.a));\n}"
|
||||
},
|
||||
"builtins": {
|
||||
"globals": {
|
||||
"blocks": [
|
||||
{
|
||||
"name": "CCGlobal",
|
||||
"defines": []
|
||||
}
|
||||
],
|
||||
"samplers": []
|
||||
},
|
||||
"locals": {
|
||||
"blocks": [
|
||||
{
|
||||
"name": "CCLocal",
|
||||
"defines": []
|
||||
}
|
||||
],
|
||||
"samplers": []
|
||||
}
|
||||
},
|
||||
"defines": [
|
||||
{
|
||||
"name": "OUTPUT_TO_GAMMA",
|
||||
"type": "boolean",
|
||||
"defines": []
|
||||
}
|
||||
],
|
||||
"blocks": [
|
||||
{
|
||||
"name": "DIFFUSE_COLOR",
|
||||
"members": [
|
||||
{
|
||||
"name": "diffuseColor",
|
||||
"type": 16,
|
||||
"count": 1
|
||||
}
|
||||
],
|
||||
"defines": [],
|
||||
"binding": 0
|
||||
}
|
||||
],
|
||||
"samplers": [],
|
||||
"record": null,
|
||||
"name": "__builtin-editor-gizmo|vs|fs"
|
||||
}
|
||||
]
|
||||
}
|
84
library/imports/14/144c3297-af63-49e8-b8ef-1cfa29b3be28.json
Normal file
84
library/imports/14/144c3297-af63-49e8-b8ef-1cfa29b3be28.json
Normal file
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"__type__": "cc.EffectAsset",
|
||||
"_name": "builtin-2d-gray-sprite",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"properties": null,
|
||||
"techniques": [
|
||||
{
|
||||
"passes": [
|
||||
{
|
||||
"blendState": {
|
||||
"targets": [
|
||||
{
|
||||
"blend": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"rasterizerState": {
|
||||
"cullMode": 0
|
||||
},
|
||||
"properties": {
|
||||
"texture": {
|
||||
"value": "white",
|
||||
"type": 29
|
||||
}
|
||||
},
|
||||
"program": "builtin-2d-gray-sprite|vs|fs"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"shaders": [
|
||||
{
|
||||
"hash": 4278481454,
|
||||
"glsl3": {
|
||||
"vert": "\nprecision highp float;\nuniform CCGlobal {\n mat4 cc_matView;\n mat4 cc_matViewInv;\n mat4 cc_matProj;\n mat4 cc_matProjInv;\n mat4 cc_matViewProj;\n mat4 cc_matViewProjInv;\n vec4 cc_cameraPos;\n vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_screenScale;\n};\nin vec3 a_position;\nin mediump vec2 a_uv0;\nout mediump vec2 v_uv0;\nin vec4 a_color;\nout vec4 v_color;\nvoid main () {\n gl_Position = cc_matViewProj * vec4(a_position, 1);\n v_uv0 = a_uv0;\n v_color = a_color;\n}",
|
||||
"frag": "\nprecision highp float;\nuniform sampler2D texture;\nin mediump vec2 v_uv0;\nin vec4 v_color;\nvoid main () {\n vec4 color = v_color;\n vec4 texture_tmp = texture(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture\n texture_tmp.a *= texture(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n color.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n color.a *= texture_tmp.a;\n #else\n color *= texture_tmp;\n #endif\n float gray = 0.2126*color.r + 0.7152*color.g + 0.0722*color.b;\n gl_FragColor = vec4(gray, gray, gray, color.a);\n}"
|
||||
},
|
||||
"glsl1": {
|
||||
"vert": "\nprecision highp float;\nuniform mat4 cc_matViewProj;\nattribute vec3 a_position;\nattribute mediump vec2 a_uv0;\nvarying mediump vec2 v_uv0;\nattribute vec4 a_color;\nvarying vec4 v_color;\nvoid main () {\n gl_Position = cc_matViewProj * vec4(a_position, 1);\n v_uv0 = a_uv0;\n v_color = a_color;\n}",
|
||||
"frag": "\nprecision highp float;\nuniform sampler2D texture;\nvarying mediump vec2 v_uv0;\nvarying vec4 v_color;\nvoid main () {\n vec4 color = v_color;\n vec4 texture_tmp = texture2D(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture\n texture_tmp.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n color.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n color.a *= texture_tmp.a;\n #else\n color *= texture_tmp;\n #endif\n float gray = 0.2126*color.r + 0.7152*color.g + 0.0722*color.b;\n gl_FragColor = vec4(gray, gray, gray, color.a);\n}"
|
||||
},
|
||||
"builtins": {
|
||||
"globals": {
|
||||
"blocks": [
|
||||
{
|
||||
"name": "CCGlobal",
|
||||
"defines": []
|
||||
}
|
||||
],
|
||||
"samplers": []
|
||||
},
|
||||
"locals": {
|
||||
"blocks": [],
|
||||
"samplers": []
|
||||
}
|
||||
},
|
||||
"defines": [
|
||||
{
|
||||
"name": "CC_USE_ALPHA_ATLAS_texture",
|
||||
"type": "boolean",
|
||||
"defines": []
|
||||
},
|
||||
{
|
||||
"name": "INPUT_IS_GAMMA",
|
||||
"type": "boolean",
|
||||
"defines": []
|
||||
}
|
||||
],
|
||||
"blocks": [],
|
||||
"samplers": [
|
||||
{
|
||||
"name": "texture",
|
||||
"type": 29,
|
||||
"count": 1,
|
||||
"defines": [],
|
||||
"binding": 30
|
||||
}
|
||||
],
|
||||
"record": null,
|
||||
"name": "builtin-2d-gray-sprite|vs|fs"
|
||||
}
|
||||
]
|
||||
}
|
BIN
library/imports/14/14c74869-bdb4-4f57-86d8-a7875de2be30.bin
Normal file
BIN
library/imports/14/14c74869-bdb4-4f57-86d8-a7875de2be30.bin
Normal file
Binary file not shown.
90
library/imports/14/14c74869-bdb4-4f57-86d8-a7875de2be30.json
Normal file
90
library/imports/14/14c74869-bdb4-4f57-86d8-a7875de2be30.json
Normal file
|
@ -0,0 +1,90 @@
|
|||
[
|
||||
{
|
||||
"__type__": "cc.Mesh",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"_native": ".bin",
|
||||
"_vertexBundles": [
|
||||
{
|
||||
"__id__": 1
|
||||
}
|
||||
],
|
||||
"_primitives": [
|
||||
{
|
||||
"__id__": 6
|
||||
}
|
||||
],
|
||||
"_minPos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": -0.5,
|
||||
"y": -0.0999999940395355,
|
||||
"z": -0.5
|
||||
},
|
||||
"_maxPos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0.5,
|
||||
"y": 0.0999999940395355,
|
||||
"z": 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.VertexBundle",
|
||||
"data": {
|
||||
"__id__": 2
|
||||
},
|
||||
"formats": [
|
||||
{
|
||||
"__id__": 3
|
||||
},
|
||||
{
|
||||
"__id__": 4
|
||||
},
|
||||
{
|
||||
"__id__": 5
|
||||
}
|
||||
],
|
||||
"verticesCount": 1089
|
||||
},
|
||||
{
|
||||
"__type__": "cc.BufferRange",
|
||||
"offset": 0,
|
||||
"length": 34848
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.VertexFormat",
|
||||
"name": "a_normal",
|
||||
"type": 5126,
|
||||
"num": 3,
|
||||
"normalize": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.VertexFormat",
|
||||
"name": "a_position",
|
||||
"type": 5126,
|
||||
"num": 3,
|
||||
"normalize": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.VertexFormat",
|
||||
"name": "a_uv0",
|
||||
"type": 5126,
|
||||
"num": 2,
|
||||
"normalize": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.mesh.Primitive",
|
||||
"vertexBundleIndices": [
|
||||
0
|
||||
],
|
||||
"data": {
|
||||
"__id__": 7
|
||||
},
|
||||
"indexUnit": 5123,
|
||||
"topology": 4
|
||||
},
|
||||
{
|
||||
"__type__": "cc.BufferRange",
|
||||
"offset": 34848,
|
||||
"length": 12288
|
||||
}
|
||||
]
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user