Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
fireballoon
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
template admin
fireballoon
Commits
35cbb54d
Commit
35cbb54d
authored
May 14, 2022
by
Tt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
流程完成
parent
354b163b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
609 additions
and
126 deletions
+609
-126
cocos_generator.fire
assets/cocos_generator/scene/cocos_generator.fire
+361
-100
cocos_generator.ts
assets/cocos_generator/scene/cocos_generator.ts
+248
-26
No files found.
assets/cocos_generator/scene/cocos_generator.fire
View file @
35cbb54d
...
@@ -99,28 +99,28 @@
...
@@ -99,28 +99,28 @@
"__id__": 38
"__id__": 38
},
},
{
{
"__id__": 8
6
"__id__": 8
9
},
},
{
{
"__id__": 9
2
"__id__": 9
5
},
},
{
{
"__id__": 10
2
"__id__": 10
5
},
},
{
{
"__id__": 1
09
"__id__": 1
14
}
}
],
],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 12
0
"__id__": 12
5
},
},
{
{
"__id__": 12
1
"__id__": 12
6
},
},
{
{
"__id__": 12
2
"__id__": 12
7
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -2045,7 +2045,7 @@
...
@@ -2045,7 +2045,7 @@
"__id__": 39
"__id__": 39
},
},
"_children": [],
"_children": [],
"_active":
tru
e,
"_active":
fals
e,
"_components": [
"_components": [
{
{
"__id__": 41
"__id__": 41
...
@@ -3801,10 +3801,13 @@
...
@@ -3801,10 +3801,13 @@
"__id__": 76
"__id__": 76
},
},
{
{
"__id__": 81
"__id__": 79
},
{
"__id__": 84
}
}
],
],
"_active":
fals
e,
"_active":
tru
e,
"_components": [],
"_components": [],
"_prefab": null,
"_prefab": null,
"_opacity": 255,
"_opacity": 255,
...
@@ -3854,6 +3857,113 @@
...
@@ -3854,6 +3857,113 @@
"groupIndex": 0,
"groupIndex": 0,
"_id": "7bDy4EjgtB9ajp31tLlVoB"
"_id": "7bDy4EjgtB9ajp31tLlVoB"
},
},
{
"__type__": "cc.Node",
"_name": "bg_gray",
"_objFlags": 0,
"_parent": {
"__id__": 75
},
"_children": [],
"_active": false,
"_components": [
{
"__id__": 77
},
{
"__id__": 78
}
],
"_prefab": null,
"_opacity": 100,
"_color": {
"__type__": "cc.Color",
"r": 0,
"g": 0,
"b": 0,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 5000,
"height": 5000
},
"_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": "f3K5tAkAFFnJZhgNsB4NNr"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 76
},
"_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": "e5RsbIX+JMr4ddzDndq9FW"
},
{
"__type__": "cc.BlockInputEvents",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 76
},
"_enabled": true,
"_id": "84vPl/5oRDJK/OYsfRbEsm"
},
{
{
"__type__": "cc.Node",
"__type__": "cc.Node",
"_name": "layout_txt",
"_name": "layout_txt",
...
@@ -3863,10 +3973,10 @@
...
@@ -3863,10 +3973,10 @@
},
},
"_children": [
"_children": [
{
{
"__id__":
77
"__id__":
80
},
},
{
{
"__id__":
79
"__id__":
82
}
}
],
],
"_active": false,
"_active": false,
...
@@ -3882,8 +3992,8 @@
...
@@ -3882,8 +3992,8 @@
},
},
"_contentSize": {
"_contentSize": {
"__type__": "cc.Size",
"__type__": "cc.Size",
"width": 0,
"width":
50
0,
"height": 0
"height":
34
0
},
},
"_anchorPoint": {
"_anchorPoint": {
"__type__": "cc.Vec2",
"__type__": "cc.Vec2",
...
@@ -3924,13 +4034,13 @@
...
@@ -3924,13 +4034,13 @@
"_name": "bg1",
"_name": "bg1",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 7
6
"__id__": 7
9
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__":
78
"__id__":
81
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -3956,8 +4066,8 @@
...
@@ -3956,8 +4066,8 @@
"__type__": "TypedArray",
"__type__": "TypedArray",
"ctor": "Float64Array",
"ctor": "Float64Array",
"array": [
"array": [
-3.643
,
0
,
-10.572
,
0
,
0,
0,
0,
0,
0,
0,
...
@@ -3986,7 +4096,7 @@
...
@@ -3986,7 +4096,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__":
77
"__id__":
80
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4018,13 +4128,13 @@
...
@@ -4018,13 +4128,13 @@
"_name": "desc",
"_name": "desc",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 7
6
"__id__": 7
9
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 8
0
"__id__": 8
3
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4038,8 +4148,8 @@
...
@@ -4038,8 +4148,8 @@
},
},
"_contentSize": {
"_contentSize": {
"__type__": "cc.Size",
"__type__": "cc.Size",
"width":
352.77
,
"width":
400
,
"height":
163.8
"height":
220
},
},
"_anchorPoint": {
"_anchorPoint": {
"__type__": "cc.Vec2",
"__type__": "cc.Vec2",
...
@@ -4051,7 +4161,7 @@
...
@@ -4051,7 +4161,7 @@
"ctor": "Float64Array",
"ctor": "Float64Array",
"array": [
"array": [
0,
0,
0
,
32.034
,
0,
0,
0,
0,
0,
0,
...
@@ -4080,7 +4190,7 @@
...
@@ -4080,7 +4190,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__":
79
"__id__":
82
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4119,10 +4229,10 @@
...
@@ -4119,10 +4229,10 @@
},
},
"_children": [
"_children": [
{
{
"__id__": 8
2
"__id__": 8
5
},
},
{
{
"__id__": 8
4
"__id__": 8
7
}
}
],
],
"_active": false,
"_active": false,
...
@@ -4138,8 +4248,8 @@
...
@@ -4138,8 +4248,8 @@
},
},
"_contentSize": {
"_contentSize": {
"__type__": "cc.Size",
"__type__": "cc.Size",
"width": 0,
"width":
50
0,
"height": 0
"height":
34
0
},
},
"_anchorPoint": {
"_anchorPoint": {
"__type__": "cc.Vec2",
"__type__": "cc.Vec2",
...
@@ -4180,13 +4290,13 @@
...
@@ -4180,13 +4290,13 @@
"_name": "bg2",
"_name": "bg2",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 8
1
"__id__": 8
4
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 8
3
"__id__": 8
6
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4242,7 +4352,7 @@
...
@@ -4242,7 +4352,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 8
2
"__id__": 8
5
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4271,16 +4381,16 @@
...
@@ -4271,16 +4381,16 @@
},
},
{
{
"__type__": "cc.Node",
"__type__": "cc.Node",
"_name": "
New Sprite(Splash)
",
"_name": "
img
",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 8
1
"__id__": 8
4
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 8
5
"__id__": 8
8
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4336,7 +4446,7 @@
...
@@ -4336,7 +4446,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 8
4
"__id__": 8
7
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4372,13 +4482,13 @@
...
@@ -4372,13 +4482,13 @@
},
},
"_children": [
"_children": [
{
{
"__id__":
87
"__id__":
90
}
}
],
],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 9
1
"__id__": 9
4
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4434,17 +4544,17 @@
...
@@ -4434,17 +4544,17 @@
"_name": "bg_title",
"_name": "bg_title",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 8
6
"__id__": 8
9
},
},
"_children": [
"_children": [
{
{
"__id__":
88
"__id__":
91
}
}
],
],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 9
0
"__id__": 9
3
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4500,13 +4610,13 @@
...
@@ -4500,13 +4610,13 @@
"_name": "title",
"_name": "title",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__":
87
"__id__":
90
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__":
89
"__id__":
92
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4562,7 +4672,7 @@
...
@@ -4562,7 +4672,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__":
88
"__id__":
91
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4595,7 +4705,7 @@
...
@@ -4595,7 +4705,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__":
87
"__id__":
90
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4627,7 +4737,7 @@
...
@@ -4627,7 +4737,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 8
6
"__id__": 8
9
},
},
"_enabled": true,
"_enabled": true,
"_id": "78N5o1/GhHa5t0r3SoI14W"
"_id": "78N5o1/GhHa5t0r3SoI14W"
...
@@ -4641,19 +4751,19 @@
...
@@ -4641,19 +4751,19 @@
},
},
"_children": [
"_children": [
{
{
"__id__": 9
3
"__id__": 9
6
},
},
{
{
"__id__": 9
5
"__id__": 9
8
},
},
{
{
"__id__":
97
"__id__":
100
},
},
{
{
"__id__":
99
"__id__":
102
}
}
],
],
"_active":
tru
e,
"_active":
fals
e,
"_components": [],
"_components": [],
"_prefab": null,
"_prefab": null,
"_opacity": 255,
"_opacity": 255,
...
@@ -4708,13 +4818,13 @@
...
@@ -4708,13 +4818,13 @@
"_name": "New Sprite(Splash)",
"_name": "New Sprite(Splash)",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 9
2
"__id__": 9
5
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 9
4
"__id__": 9
7
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4770,7 +4880,7 @@
...
@@ -4770,7 +4880,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 9
3
"__id__": 9
6
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4802,13 +4912,13 @@
...
@@ -4802,13 +4912,13 @@
"_name": "bg_instructions",
"_name": "bg_instructions",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 9
2
"__id__": 9
5
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 9
6
"__id__": 9
9
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4864,7 +4974,7 @@
...
@@ -4864,7 +4974,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 9
5
"__id__": 9
8
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4896,13 +5006,13 @@
...
@@ -4896,13 +5006,13 @@
"_name": "desc",
"_name": "desc",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 9
2
"__id__": 9
5
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__":
98
"__id__":
101
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -4958,7 +5068,7 @@
...
@@ -4958,7 +5068,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__":
97
"__id__":
100
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -4993,16 +5103,16 @@
...
@@ -4993,16 +5103,16 @@
"_name": "btn_start",
"_name": "btn_start",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 9
2
"__id__": 9
5
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 10
0
"__id__": 10
3
},
},
{
{
"__id__": 10
1
"__id__": 10
4
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -5058,7 +5168,7 @@
...
@@ -5058,7 +5168,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__":
99
"__id__":
102
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -5090,7 +5200,7 @@
...
@@ -5090,7 +5200,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__":
99
"__id__":
102
},
},
"_enabled": true,
"_enabled": true,
"_normalMaterial": null,
"_normalMaterial": null,
...
@@ -5151,26 +5261,26 @@
...
@@ -5151,26 +5261,26 @@
"hoverSprite": null,
"hoverSprite": null,
"_N$disabledSprite": null,
"_N$disabledSprite": null,
"_N$target": {
"_N$target": {
"__id__":
99
"__id__":
102
},
},
"_id": "7095HuemhJQ40wHbz5jlAy"
"_id": "7095HuemhJQ40wHbz5jlAy"
},
},
{
{
"__type__": "cc.Node",
"__type__": "cc.Node",
"_name": "layou_speak",
"_name": "layou
t
_speak",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 2
"__id__": 2
},
},
"_children": [
"_children": [
{
{
"__id__": 10
3
"__id__": 10
6
},
},
{
{
"__id__": 10
5
"__id__": 10
8
},
},
{
{
"__id__": 1
07
"__id__": 1
11
}
}
],
],
"_active": false,
"_active": false,
...
@@ -5228,13 +5338,13 @@
...
@@ -5228,13 +5338,13 @@
"_name": "speak_ske",
"_name": "speak_ske",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 10
2
"__id__": 10
5
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 10
4
"__id__": 10
7
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -5290,7 +5400,7 @@
...
@@ -5290,7 +5400,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 10
3
"__id__": 10
6
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -5327,16 +5437,19 @@
...
@@ -5327,16 +5437,19 @@
},
},
{
{
"__type__": "cc.Node",
"__type__": "cc.Node",
"_name": "btn_start
2
",
"_name": "btn_start",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 10
2
"__id__": 10
5
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 106
"__id__": 109
},
{
"__id__": 110
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -5392,7 +5505,7 @@
...
@@ -5392,7 +5505,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 10
5
"__id__": 10
8
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -5419,18 +5532,89 @@
...
@@ -5419,18 +5532,89 @@
"_atlas": null,
"_atlas": null,
"_id": "67UAMVMQNBqKelP5W+fOFv"
"_id": "67UAMVMQNBqKelP5W+fOFv"
},
},
{
"__type__": "cc.Button",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 108
},
"_enabled": true,
"_normalMaterial": null,
"_grayMaterial": null,
"duration": 0.1,
"zoomScale": 1.2,
"clickEvents": [],
"_N$interactable": true,
"_N$enableAutoGrayEffect": false,
"_N$transition": 0,
"transition": 0,
"_N$normalColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"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": null,
"_id": "64rKmLxitF3JtRa2XM6kXa"
},
{
{
"__type__": "cc.Node",
"__type__": "cc.Node",
"_name": "btn_stop",
"_name": "btn_stop",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 10
2
"__id__": 10
5
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 108
"__id__": 112
},
{
"__id__": 113
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -5486,7 +5670,7 @@
...
@@ -5486,7 +5670,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 1
07
"__id__": 1
11
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -5513,6 +5697,74 @@
...
@@ -5513,6 +5697,74 @@
"_atlas": null,
"_atlas": null,
"_id": "74Gi/AuH9MWIGMzwezs5Za"
"_id": "74Gi/AuH9MWIGMzwezs5Za"
},
},
{
"__type__": "cc.Button",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 111
},
"_enabled": true,
"_normalMaterial": null,
"_grayMaterial": null,
"duration": 0.1,
"zoomScale": 1.2,
"clickEvents": [],
"_N$interactable": true,
"_N$enableAutoGrayEffect": false,
"_N$transition": 0,
"transition": 0,
"_N$normalColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"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": null,
"_id": "47VA20KyNEkrwrltrdJeMH"
},
{
{
"__type__": "cc.Node",
"__type__": "cc.Node",
"_name": "layout_tip",
"_name": "layout_tip",
...
@@ -5522,19 +5774,19 @@
...
@@ -5522,19 +5774,19 @@
},
},
"_children": [
"_children": [
{
{
"__id__": 11
0
"__id__": 11
5
},
},
{
{
"__id__": 11
2
"__id__": 11
7
},
},
{
{
"__id__": 11
4
"__id__": 11
9
},
},
{
{
"__id__": 1
16
"__id__": 1
21
},
},
{
{
"__id__": 1
18
"__id__": 1
23
}
}
],
],
"_active": false,
"_active": false,
...
@@ -5592,13 +5844,13 @@
...
@@ -5592,13 +5844,13 @@
"_name": "New Sprite(Splash)",
"_name": "New Sprite(Splash)",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 1
09
"__id__": 1
14
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 11
1
"__id__": 11
6
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -5654,7 +5906,7 @@
...
@@ -5654,7 +5906,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 11
0
"__id__": 11
5
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -5686,13 +5938,13 @@
...
@@ -5686,13 +5938,13 @@
"_name": "img_light",
"_name": "img_light",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 1
09
"__id__": 1
14
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 11
3
"__id__": 11
8
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -5748,7 +6000,7 @@
...
@@ -5748,7 +6000,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 11
2
"__id__": 11
7
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -5780,13 +6032,13 @@
...
@@ -5780,13 +6032,13 @@
"_name": "img_co",
"_name": "img_co",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 1
09
"__id__": 1
14
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 1
15
"__id__": 1
20
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -5842,7 +6094,7 @@
...
@@ -5842,7 +6094,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 11
4
"__id__": 11
9
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -5874,13 +6126,13 @@
...
@@ -5874,13 +6126,13 @@
"_name": "img_gj",
"_name": "img_gj",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 1
09
"__id__": 1
14
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 1
17
"__id__": 1
22
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -5936,7 +6188,7 @@
...
@@ -5936,7 +6188,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 1
16
"__id__": 1
21
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -5968,13 +6220,13 @@
...
@@ -5968,13 +6220,13 @@
"_name": "img_ta",
"_name": "img_ta",
"_objFlags": 0,
"_objFlags": 0,
"_parent": {
"_parent": {
"__id__": 1
09
"__id__": 1
14
},
},
"_children": [],
"_children": [],
"_active": true,
"_active": true,
"_components": [
"_components": [
{
{
"__id__": 1
19
"__id__": 1
24
}
}
],
],
"_prefab": null,
"_prefab": null,
...
@@ -6030,7 +6282,7 @@
...
@@ -6030,7 +6282,7 @@
"_name": "",
"_name": "",
"_objFlags": 0,
"_objFlags": 0,
"node": {
"node": {
"__id__": 1
18
"__id__": 1
23
},
},
"_enabled": true,
"_enabled": true,
"_materials": [
"_materials": [
...
@@ -6116,6 +6368,15 @@
...
@@ -6116,6 +6368,15 @@
"layout_balloon": {
"layout_balloon": {
"__id__": 50
"__id__": 50
},
},
"layout_card": {
"__id__": 75
},
"layout_speak": {
"__id__": 105
},
"layout_tip": {
"__id__": 114
},
"item_gun": {
"item_gun": {
"__id__": 39
"__id__": 39
},
},
...
...
assets/cocos_generator/scene/cocos_generator.ts
View file @
35cbb54d
...
@@ -21,6 +21,24 @@ export function getDegree(p1, p2) {
...
@@ -21,6 +21,24 @@ export function getDegree(p1, p2) {
}
}
return
-
(
-
degree
+
90
);
//角度计算方法
return
-
(
-
degree
+
90
);
//角度计算方法
}
}
let
win
:
any
=
window
;
let
courseware
=
win
.
courseware
;
enum
GUN_STATE
{
WAIT
=
1
,
SHUT_MIDDLE
,
SHUT_LEFT
,
SHUT_RIGHT
}
enum
FISH_STATE
{
NORMAL
=
1
,
BREAK
,
FALL
,
}
enum
TIPS_STATE
{
GOOD
=
1
,
TRY
,
COM
,
}
@
ccclass
@
ccclass
export
default
class
SceneComponent
extends
MyCocosSceneComponent
{
export
default
class
SceneComponent
extends
MyCocosSceneComponent
{
...
@@ -56,6 +74,12 @@ export default class SceneComponent extends MyCocosSceneComponent {
...
@@ -56,6 +74,12 @@ export default class SceneComponent extends MyCocosSceneComponent {
@
property
(
cc
.
Node
)
@
property
(
cc
.
Node
)
layout_balloon
:
cc
.
Node
=
null
;
layout_balloon
:
cc
.
Node
=
null
;
@
property
(
cc
.
Node
)
@
property
(
cc
.
Node
)
layout_card
:
cc
.
Node
=
null
;
@
property
(
cc
.
Node
)
layout_speak
:
cc
.
Node
=
null
;
@
property
(
cc
.
Node
)
layout_tip
:
cc
.
Node
=
null
;
@
property
(
cc
.
Node
)
item_gun
:
cc
.
Node
=
null
;
item_gun
:
cc
.
Node
=
null
;
@
property
(
cc
.
Node
)
@
property
(
cc
.
Node
)
...
@@ -114,6 +138,8 @@ export default class SceneComponent extends MyCocosSceneComponent {
...
@@ -114,6 +138,8 @@ export default class SceneComponent extends MyCocosSceneComponent {
private
fishs
:
cc
.
Node
[];
private
fishs
:
cc
.
Node
[];
gameStart
()
{
gameStart
()
{
Game
.
getIns
().
state
=
GAME_STATE
.
RUNNING
;
Game
.
getIns
().
state
=
GAME_STATE
.
RUNNING
;
this
.
playGun
(
GUN_STATE
.
WAIT
)
this
.
updateTips
(
null
);
//游戏开始小鱼出现等等
//游戏开始小鱼出现等等
this
.
layout_start
.
active
=
false
;
this
.
layout_start
.
active
=
false
;
if
(
this
.
audioId
>
-
1
&&
Game
.
getIns
().
state
!=
GAME_STATE
.
WAIT
)
{
if
(
this
.
audioId
>
-
1
&&
Game
.
getIns
().
state
!=
GAME_STATE
.
WAIT
)
{
...
@@ -200,33 +226,112 @@ export default class SceneComponent extends MyCocosSceneComponent {
...
@@ -200,33 +226,112 @@ export default class SceneComponent extends MyCocosSceneComponent {
}
}
private
touching
:
boolean
;
private
touching
:
boolean
;
fishingRight
(
item
,
layout
,
data
:
Option
)
{
updateFishState
(
item
:
cc
.
Node
,
state
:
FISH_STATE
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
switch
(
state
)
{
case
FISH_STATE
.
NORMAL
:
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
img_normal
'
),
true
);
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
img_fall
'
),
false
);
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
light
'
),
false
);
resolve
(
''
);
break
;
case
FISH_STATE
.
BREAK
:
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
img_normal
'
),
true
);
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
img_fall
'
),
false
);
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
light
'
),
true
);
resolve
(
''
);
break
;
case
FISH_STATE
.
FALL
:
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
img_normal
'
),
false
);
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
img_fall
'
),
true
);
pg
.
view
.
visible
(
pg
.
view
.
find
(
item
,
'
light
'
),
false
);
resolve
(
''
);
break
;
}
});
}
playGun
(
state
:
GUN_STATE
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
let
gun1
=
pg
.
view
.
find
(
this
.
item_gun
,
'
gun1
'
);
let
gun2
=
pg
.
view
.
find
(
this
.
item_gun
,
'
gun2
'
);
let
gun3
=
pg
.
view
.
find
(
this
.
item_gun
,
'
gun3
'
);
let
gun4
=
pg
.
view
.
find
(
this
.
item_gun
,
'
gun4
'
);
switch
(
state
)
{
case
GUN_STATE
.
WAIT
:
gun1
.
active
=
true
;
gun2
.
active
=
false
;
gun3
.
active
=
false
;
gun4
.
active
=
false
;
resolve
(
''
);
break
;
case
GUN_STATE
.
SHUT_LEFT
:
break
;
case
GUN_STATE
.
SHUT_RIGHT
:
break
;
case
GUN_STATE
.
SHUT_MIDDLE
:
gun1
.
active
=
false
;
gun2
.
active
=
true
;
gun3
.
active
=
false
;
gun4
.
active
=
false
;
let
ani
=
pg
.
view
.
playDBAnimation
(
gun2
,
'
newAnimation
'
,
1
);
ani
.
addEventListener
(
dragonBones
.
EventObject
.
LOOP_COMPLETE
,
()
=>
{
this
.
playGun
(
GUN_STATE
.
WAIT
);
resolve
(
''
);
})
break
;
}
});
}
playCard
(
data
?:
Option
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
if
(
!
data
)
{
this
.
layout_card
.
active
=
false
;
return
;
}
this
.
layout_card
.
active
=
true
;
let
layout_txt
=
pg
.
view
.
find
(
this
.
layout_card
,
"
layout_txt
"
);
let
layout_img
=
pg
.
view
.
find
(
this
.
layout_card
,
"
layout_img
"
);
let
bg_gray
=
pg
.
view
.
find
(
this
.
layout_card
,
'
bg_gray
'
);
layout_txt
.
active
=
false
;
layout_img
.
active
=
false
;
bg_gray
.
active
=
true
;
let
layout
=
layout_txt
;
if
(
data
.
type
==
"
txt
"
)
{
pg
.
view
.
setString
(
pg
.
view
.
find
(
layout_txt
,
'
desc
'
),
data
.
txt
)
}
else
{
layout
=
layout_img
;
pg
.
view
.
setNetImg
(
pg
.
view
.
find
(
layout_img
,
'
img
'
),
data
.
picUrl
,
{
w
:
440
,
h
:
286
})
}
//动画效果
layout
.
active
=
true
;
layout
.
opacity
=
255
;
layout
.
scale
=
0.1
;
cc
.
tween
(
layout
).
to
(
0.5
,
{
scale
:
1.1
}).
to
(
0.06
,
{
scale
:
1
}).
call
(()
=>
{
resolve
(
''
);
}).
start
();
});
}
fishingRight
(
item
,
layout
,
data
:
Option
)
{
return
new
Promise
(
async
(
resolve
,
reject
)
=>
{
//弹弓动画。
//弹弓动画。
this
.
item_gun
;
this
.
item_gun
;
await
this
.
playGun
(
GUN_STATE
.
SHUT_MIDDLE
);
//爆炸效果
//爆炸效果
this
.
updateFishState
(
item
,
FISH_STATE
.
BREAK
);
await
pg
.
time
.
delay
(
0.5
);
//气球下落
//气球下落
this
.
updateFishState
(
item
,
FISH_STATE
.
FALL
);
cc
.
tween
(
item
).
by
(
2
,
{
y
:
-
1500
},
{
easing
:
cc
.
easing
.
quadIn
}).
call
(
async
()
=>
{
// let wave = pg.view.find(layout, 'wave')
//处理内容
// wave.active = true;
data
.
fish
.
isOut
=
FISH_OUT
.
OUT
;
// wave.angle = getDegree(cc.v2(item), cc.v2(layout).add(cc.v2(wave)));
await
this
.
playCard
(
data
);
// let text = pg.view.find(layout, "text");
this
.
updateLayoutSpeak
();
// text.active = true;
this
.
touching
=
false
;
resolve
(
''
);
}).
start
();
// data.audioUrl && pg.audio.playAudioByUrl(data.audioUrl)
// data.audioUrl && pg.audio.playAudioByUrl(data.audioUrl)
// cc.tween(item)
// .to(1, { x: layout.x, y: layout.y + wave.y, scaleX: item.scaleX * 0.1, scaleY: item.scaleY * 0.1 }).call(() => {
// //处理内容
// data.fish.isOut = FISH_OUT.OUT;
// wave.active = false;
// text.active = false;
// this.touching = false;
// resolve('');
// }).start();
resolve
(
''
);
});
});
}
}
fishingError
(
item
,
layout
,
data
)
{
fishingError
(
item
,
layout
,
data
)
{
...
@@ -261,16 +366,18 @@ export default class SceneComponent extends MyCocosSceneComponent {
...
@@ -261,16 +366,18 @@ export default class SceneComponent extends MyCocosSceneComponent {
let
data
=
item
.
data
;
let
data
=
item
.
data
;
//item停止动画并
//item停止动画并
cc
.
Tween
.
stopAllByTarget
(
item
);
cc
.
Tween
.
stopAllByTarget
(
item
);
if
(
data
.
right
)
{
await
this
.
fishingRight
(
item
,
layout
,
data
);
await
this
.
fishingRight
(
item
,
layout
,
data
);
// if (data.right) {
}
else
{
// await this.fishingRight(item, layout, data);
await
this
.
fishingError
(
item
,
layout
,
data
);
// } else {
}
// await this.fishingError(item, layout, data);
// }
this
.
touchFishs
.
push
(
data
);
this
.
touchFishs
.
push
(
data
);
return
resolve
(
data
.
right
);
return
resolve
(
data
.
right
);
});
});
}
}
//开始点击 点击角色
//开始点击 点击角色
touchData
:
Option
;
async
onTouchItem
(
e
)
{
async
onTouchItem
(
e
)
{
if
(
this
.
touching
)
return
;
if
(
this
.
touching
)
return
;
this
.
touching
=
true
;
this
.
touching
=
true
;
...
@@ -278,6 +385,7 @@ export default class SceneComponent extends MyCocosSceneComponent {
...
@@ -278,6 +385,7 @@ export default class SceneComponent extends MyCocosSceneComponent {
let
data
=
item
.
data
;
let
data
=
item
.
data
;
if
(
this
.
touchFishs
.
some
(
fish
=>
fish
.
id
==
data
.
id
))
return
;
if
(
this
.
touchFishs
.
some
(
fish
=>
fish
.
id
==
data
.
id
))
return
;
if
(
data
.
fish
.
isOut
!=
FISH_OUT
.
RUNNING
)
return
;
if
(
data
.
fish
.
isOut
!=
FISH_OUT
.
RUNNING
)
return
;
this
.
touchData
=
data
;
data
.
fish
.
isOut
=
FISH_OUT
.
TOUCH
;
data
.
fish
.
isOut
=
FISH_OUT
.
TOUCH
;
let
isRight
=
await
this
.
fishing
(
item
,
this
.
layout_player
);
let
isRight
=
await
this
.
fishing
(
item
,
this
.
layout_player
);
isRight
&&
Game
.
getIns
().
player
.
addScore
();
isRight
&&
Game
.
getIns
().
player
.
addScore
();
...
@@ -300,7 +408,121 @@ export default class SceneComponent extends MyCocosSceneComponent {
...
@@ -300,7 +408,121 @@ export default class SceneComponent extends MyCocosSceneComponent {
let
fish
=
this
.
getFishByCount
(
this
.
count
);
let
fish
=
this
.
getFishByCount
(
this
.
count
);
if
(
fish
)
this
.
fishs
.
push
(
fish
);
if
(
fish
)
this
.
fishs
.
push
(
fish
);
}
}
updateTips
(
state
?:
TIPS_STATE
)
{
if
(
!
state
)
{
this
.
layout_tip
.
active
=
false
;
return
;
}
this
.
layout_tip
.
active
=
true
;
let
img_light
=
pg
.
view
.
find
(
this
.
layout_tip
,
'
img_light
'
);
let
img_co
=
pg
.
view
.
find
(
this
.
layout_tip
,
'
img_co
'
);
let
img_gj
=
pg
.
view
.
find
(
this
.
layout_tip
,
'
img_gj
'
);
let
img_ta
=
pg
.
view
.
find
(
this
.
layout_tip
,
'
img_ta
'
);
img_light
.
active
=
true
;
cc
.
Tween
.
stopAllByTarget
(
img_light
)
cc
.
tween
(
img_light
).
repeatForever
(
cc
.
tween
().
by
(
5
,
{
angle
:
360
})).
start
();
img_co
.
active
=
false
;
img_gj
.
active
=
false
;
img_ta
.
active
=
false
;
let
img
=
null
;
switch
(
state
)
{
case
TIPS_STATE
.
COM
:
img
=
img_co
;
break
;
case
TIPS_STATE
.
GOOD
:
img
=
img_gj
;
break
;
case
TIPS_STATE
.
TRY
:
img
=
img_ta
;
break
;
}
img
.
scale
=
0
;
img
.
active
=
true
;
cc
.
tween
(
img
).
to
(
0.5
,
{
scale
:
1
}).
call
(()
=>
{
}).
start
();
}
updateLayoutSpeak
(
hide
?:
boolean
)
{
if
(
!
hide
)
{
this
.
layout_speak
.
active
=
true
;
let
ske
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
speak_ske
'
);
let
btn_start
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
btn_start
'
);
let
btn_stop
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
btn_stop
'
);
pg
.
view
.
touchOn
(
btn_start
,
this
.
onTouchRecord
,
this
);
pg
.
view
.
touchOn
(
btn_stop
,
this
.
onTouchRecordEnd
,
this
);
pg
.
view
.
playDBAnimation
(
ske
,
'
newAnimation
'
,
0
);
ske
.
getComponent
(
dragonBones
.
ArmatureDisplay
).
timeScale
=
0.00001
;
btn_start
.
active
=
true
;
btn_stop
.
active
=
false
;
}
else
{
this
.
layout_speak
.
active
=
false
;
}
}
//按钮触发,使用的方法
async
onTouchRecord
()
{
let
ske
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
speak_ske
'
);
let
btn_start
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
btn_start
'
);
let
btn_stop
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
btn_stop
'
);
btn_start
.
active
=
false
;
btn_stop
.
active
=
true
;
ske
.
getComponent
(
dragonBones
.
ArmatureDisplay
).
timeScale
=
1
;
cc
.
audioEngine
.
stopAllEffects
();
let
end
=
pg
.
view
.
find
(
this
,
"
end
"
);
let
bg_tryagain
=
pg
.
view
.
find
(
end
,
"
bg_tryagain
"
)
pg
.
view
.
visible
(
end
,
false
);
pg
.
view
.
visible
(
bg_tryagain
,
false
);
courseware
&&
courseware
.
startTest
(
this
.
touchData
.
txt
);
//开始录音
}
async
onTouchRecordEnd
()
{
let
ske
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
speak_ske
'
);
let
btn_start
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
btn_start
'
);
let
btn_stop
=
pg
.
view
.
find
(
this
.
layout_speak
,
'
btn_stop
'
);
pg
.
view
.
playDBAnimation
(
ske
,
'
newAnimation
'
,
1
);
ske
.
getComponent
(
dragonBones
.
ArmatureDisplay
).
timeScale
=
10000
;
btn_stop
.
active
=
false
;
btn_start
.
active
=
false
;
let
testData
=
{
"
dtLastResponse
"
:
"
2021-09-17 13:36:26:109
"
,
"
refText
"
:
"
I haven't found anything out about him yet.
"
,
"
recordId
"
:
"
6144295213f0a2200000ed93
"
,
"
eof
"
:
1
,
"
result
"
:
{
"
pronunciation
"
:
25
,
"
resource_version
"
:
"
3.1.0
"
,
"
fluency
"
:
60
,
"
rhythm
"
:
90
,
"
kernel_version
"
:
"
5.2.4
"
,
"
overall
"
:
25
,
//75
"
integrity
"
:
100
,
"
duration
"
:
"
6.779
"
,
"
rear_tone
"
:
"
fall
"
,
"
speed
"
:
96
,
},
"
tokenId
"
:
"
6144295408558b08dd000001
"
,
"
applicationId
"
:
"
154838659000009e
"
}
if
(
!
courseware
)
return
this
.
recrodEnd
(
testData
)
// await pg.time.delay(5);
courseware
&&
courseware
.
stopTest
((
data
)
=>
{
data
=
JSON
.
parse
(
data
);
this
.
recrodEnd
(
data
);
});
//结束录音
}
async
recrodEnd
(
data
)
{
let
score
=
data
.
result
.
overall
;
if
(
score
>=
80
)
{
//提示成功
this
.
updateTips
(
TIPS_STATE
.
GOOD
);
}
else
{
//提示失败
this
.
updateTips
(
TIPS_STATE
.
TRY
);
}
await
pg
.
time
.
delay
(
3
);
this
.
updateTips
(
null
);
this
.
playCard
(
null
);
this
.
updateLayoutSpeak
(
true
)
}
playLocalAudio
(
audioName
)
{
playLocalAudio
(
audioName
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment