[add] All
This commit is contained in:
commit
98c0b825ad
53
.gitignore
vendored
Normal file
53
.gitignore
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
# Fireball Projects
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/library/
|
||||||
|
/temp/
|
||||||
|
/local/
|
||||||
|
/build/
|
||||||
|
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
# npm files
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
npm-debug.log
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
# Logs and databases
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
*.log
|
||||||
|
*.sql
|
||||||
|
*.sqlite
|
||||||
|
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
# files for debugger
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
*.sln
|
||||||
|
*.csproj
|
||||||
|
*.pidb
|
||||||
|
*.unityproj
|
||||||
|
*.suo
|
||||||
|
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
# OS generated files
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
# WebStorm files
|
||||||
|
#/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
#//////////////////////////
|
||||||
|
# VS Code files
|
||||||
|
#//////////////////////////
|
||||||
|
|
||||||
|
.vscode/
|
12
assets/Scenes.meta
Normal file
12
assets/Scenes.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.2",
|
||||||
|
"uuid": "2402736d-3ccb-4c8f-8cf6-cabd22702c9f",
|
||||||
|
"isBundle": false,
|
||||||
|
"bundleName": "",
|
||||||
|
"priority": 1,
|
||||||
|
"compressionType": {},
|
||||||
|
"optimizeHotUpdate": {},
|
||||||
|
"inlineSpriteFrames": {},
|
||||||
|
"isRemoteBundle": {},
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
549
assets/Scenes/Main.fire
Normal file
549
assets/Scenes/Main.fire
Normal file
@ -0,0 +1,549 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.SceneAsset",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"scene": {
|
||||||
|
"__id__": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Scene",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_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,
|
||||||
|
"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": false,
|
||||||
|
"_id": "eb39d67f-78c3-41bc-98e2-f556bacb1121"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "Canvas",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 8
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 13
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": null,
|
||||||
|
"_opacity": 255,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 800,
|
||||||
|
"height": 1422
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_trs": {
|
||||||
|
"__type__": "TypedArray",
|
||||||
|
"ctor": "Float64Array",
|
||||||
|
"array": [
|
||||||
|
400,
|
||||||
|
711,
|
||||||
|
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": "e3akdGNn1PyoTbHpi1SITO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__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": 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": "9eCU/wjnFG0LU1E6P6R2ZV"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__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": "eer5ZHeAVBNaWGblaAVUZF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "Sprite",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 7
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": null,
|
||||||
|
"_opacity": 255,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 800,
|
||||||
|
"height": 1422
|
||||||
|
},
|
||||||
|
"_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": "cbmkrFYwJPAoTgPeD/ThtM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"node": {
|
||||||
|
"__id__": 5
|
||||||
|
},
|
||||||
|
"_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": "07LqVnsmVBb5DcKsmBHTvt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Widget",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"node": {
|
||||||
|
"__id__": 5
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"alignMode": 1,
|
||||||
|
"_target": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_alignFlags": 45,
|
||||||
|
"_left": 0,
|
||||||
|
"_right": 0,
|
||||||
|
"_top": 0,
|
||||||
|
"_bottom": 0,
|
||||||
|
"_verticalCenter": 0,
|
||||||
|
"_horizontalCenter": 0,
|
||||||
|
"_isAbsLeft": true,
|
||||||
|
"_isAbsRight": true,
|
||||||
|
"_isAbsTop": true,
|
||||||
|
"_isAbsBottom": true,
|
||||||
|
"_isAbsHorizontalCenter": true,
|
||||||
|
"_isAbsVerticalCenter": true,
|
||||||
|
"_originalWidth": 1280,
|
||||||
|
"_originalHeight": 720,
|
||||||
|
"_id": "b8hMGvJ8xMYL9upO1SMxXv"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "Label",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": null,
|
||||||
|
"_opacity": 255,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 0,
|
||||||
|
"g": 0,
|
||||||
|
"b": 0,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 800,
|
||||||
|
"height": 1422
|
||||||
|
},
|
||||||
|
"_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": "74pJ6Hpm5KKbtPdpO+Y06T"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Label",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"node": {
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"_materials": [
|
||||||
|
{
|
||||||
|
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_srcBlendFactor": 770,
|
||||||
|
"_dstBlendFactor": 771,
|
||||||
|
"_string": "",
|
||||||
|
"_N$string": "",
|
||||||
|
"_fontSize": 40,
|
||||||
|
"_lineHeight": 40,
|
||||||
|
"_enableWrapText": true,
|
||||||
|
"_N$file": null,
|
||||||
|
"_isSystemFontUsed": true,
|
||||||
|
"_spacingX": 0,
|
||||||
|
"_batchAsBitmap": false,
|
||||||
|
"_styleFlags": 0,
|
||||||
|
"_underlineHeight": 0,
|
||||||
|
"_N$horizontalAlign": 0,
|
||||||
|
"_N$verticalAlign": 0,
|
||||||
|
"_N$fontFamily": "Arial",
|
||||||
|
"_N$overflow": 1,
|
||||||
|
"_N$cacheMode": 0,
|
||||||
|
"_id": "e5IiqQKkpDGo1WoaOzNBSK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Widget",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"node": {
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"alignMode": 1,
|
||||||
|
"_target": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_alignFlags": 45,
|
||||||
|
"_left": 0,
|
||||||
|
"_right": 0,
|
||||||
|
"_top": 0,
|
||||||
|
"_bottom": 0,
|
||||||
|
"_verticalCenter": 0,
|
||||||
|
"_horizontalCenter": 0,
|
||||||
|
"_isAbsLeft": true,
|
||||||
|
"_isAbsRight": true,
|
||||||
|
"_isAbsTop": true,
|
||||||
|
"_isAbsBottom": true,
|
||||||
|
"_isAbsHorizontalCenter": true,
|
||||||
|
"_isAbsVerticalCenter": true,
|
||||||
|
"_originalWidth": 1280,
|
||||||
|
"_originalHeight": 720,
|
||||||
|
"_id": "91CtmskvtEyb7/Wzfcwb1K"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Canvas",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"_designResolution": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 800,
|
||||||
|
"height": 1422
|
||||||
|
},
|
||||||
|
"_fitWidth": true,
|
||||||
|
"_fitHeight": true,
|
||||||
|
"_id": "86oo0JU4tAsrVDCLcrBw1C"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__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": "9666csvt9Kk6gOpE7ihFtP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "b0fdfAdh/tAnLTifeq/LjHo",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"Label": {
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
"_id": "b5aVggLydHz6G8PNqQdWfA"
|
||||||
|
}
|
||||||
|
]
|
7
assets/Scenes/Main.fire.meta
Normal file
7
assets/Scenes/Main.fire.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.2.9",
|
||||||
|
"uuid": "eb39d67f-78c3-41bc-98e2-f556bacb1121",
|
||||||
|
"asyncLoadAssets": false,
|
||||||
|
"autoReleaseAssets": false,
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
12
assets/Scripts.meta
Normal file
12
assets/Scripts.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.2",
|
||||||
|
"uuid": "b580b754-0d87-4198-9d35-0cafb12aa701",
|
||||||
|
"isBundle": false,
|
||||||
|
"bundleName": "",
|
||||||
|
"priority": 1,
|
||||||
|
"compressionType": {},
|
||||||
|
"optimizeHotUpdate": {},
|
||||||
|
"inlineSpriteFrames": {},
|
||||||
|
"isRemoteBundle": {},
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
201
assets/Scripts/WebSocketSever.ts
Normal file
201
assets/Scripts/WebSocketSever.ts
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
const { ccclass, property } = cc._decorator;
|
||||||
|
|
||||||
|
@ccclass
|
||||||
|
export default class WebSocketSeverClass extends cc.Component {
|
||||||
|
//#region 外調參數
|
||||||
|
|
||||||
|
@property({ type: cc.Label })
|
||||||
|
public Label: cc.Label = null;
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
//#region Lifecycle
|
||||||
|
|
||||||
|
protected onLoad(): void {
|
||||||
|
let self: this = this;
|
||||||
|
// 在原生平台的 Release 模式下或者在 Web/微信小游戏等平台中,WebSocketServer 可能没有定义
|
||||||
|
if (typeof WebSocketServer === "undefined") {
|
||||||
|
self._addLog("WebSocketServer is not enabled!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (cc.sys.getNetworkType()) {
|
||||||
|
case cc.sys.NetworkType.LAN: {
|
||||||
|
self._addLog("已連接Wifi");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case cc.sys.NetworkType.WWAN: {
|
||||||
|
self._addLog("未連接Wifi");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case cc.sys.NetworkType.NONE: {
|
||||||
|
self._addLog("未連接Network");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let ws: any = new WebSocketServer();
|
||||||
|
ws.onconnection = function (conn: any): any {
|
||||||
|
self._addLog(`${conn.headers["origin:"]} connect!`);
|
||||||
|
conn.ondata = function (data: any): any {
|
||||||
|
self._addLog(`${conn.headers["origin:"]} ondata!`);
|
||||||
|
self.ParseRpcMessage.bind(self)(data);
|
||||||
|
self.SendData.bind(self)(ws, "acc", "666");
|
||||||
|
};
|
||||||
|
|
||||||
|
conn.onclose = function (): any {
|
||||||
|
self._addLog(`${conn.headers["origin:"]} connection gone!`);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ws.onclose = function (): any {
|
||||||
|
self._addLog("server is closed!");
|
||||||
|
};
|
||||||
|
|
||||||
|
ws.listen(9005, (err: any): any => {
|
||||||
|
if (err) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self._addLog("server booted!");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private _addLog(msg: string): void {
|
||||||
|
console.log(msg);
|
||||||
|
this.Label.string += `\n\n${msg}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendData(ws, Method, Data) {
|
||||||
|
let json = [Method];
|
||||||
|
if (Data != null && Data != undefined && Data != NaN) {
|
||||||
|
json[1] = Data;
|
||||||
|
}
|
||||||
|
|
||||||
|
let str = JSON.stringify(json);
|
||||||
|
if (str.length > 65535) {
|
||||||
|
this._addLog("要傳的資料太大囉");
|
||||||
|
throw new Error('要傳的資料太大囉');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Data != null && Data != undefined && Data != NaN) {
|
||||||
|
this._addLog(`[RPC] 傳送server資料: ${Method}(${JSON.stringify(Data).replace(/\\/g, "")})`);
|
||||||
|
} else {
|
||||||
|
this._addLog(`[RPC] 傳送server資料: ${Method}()`);
|
||||||
|
}
|
||||||
|
|
||||||
|
let strary = this.GetBytes(str);
|
||||||
|
let buffer = new Uint8Array(4 + strary.byteLength);
|
||||||
|
let u16ary = new Uint16Array(buffer.buffer, 0, 3);
|
||||||
|
u16ary[0] = strary.byteLength;
|
||||||
|
buffer[3] = 0x01;
|
||||||
|
buffer.set(strary, 4);
|
||||||
|
ws.send(buffer, (err: any) => {
|
||||||
|
this._addLog(`${ws.headers["origin:"]} send!`);
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public ParseRpcMessage(buffer) {
|
||||||
|
let startIndex = 0, byteLength = buffer.byteLength;
|
||||||
|
while (startIndex + 4 < byteLength) {
|
||||||
|
let strlen = new DataView(buffer, startIndex, 3).getUint16(0, true);
|
||||||
|
let str = this.GetString(new Uint8Array(buffer, startIndex + 4, strlen));
|
||||||
|
startIndex += strlen + 4;
|
||||||
|
|
||||||
|
try {
|
||||||
|
let json = JSON.parse(str);
|
||||||
|
let method = json[0];
|
||||||
|
let status = json[1][0];
|
||||||
|
let data = json[1][1];
|
||||||
|
|
||||||
|
let resp = {
|
||||||
|
Method: method,
|
||||||
|
Status: status,
|
||||||
|
Data: data,
|
||||||
|
IsValid: method && status === 0
|
||||||
|
};
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
this._addLog(`[RPC] 收到server呼叫:(${resp.Status}): ${resp.Method}(${JSON.stringify(resp.Data)})`);
|
||||||
|
// ResData(resp.Status, resp.Method, resp.Data);
|
||||||
|
} else {
|
||||||
|
this._addLog(`[RPC] 收到server呼叫:(${resp.Status}): ${resp.Method}()`);
|
||||||
|
// ResData(resp.Status, resp.Method);
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
this._addLog(`[RPC] 無法解析Server回應: ${str}`);
|
||||||
|
throw new Error(`[RPC] 無法解析Server回應: ${str}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GetString(array) {
|
||||||
|
let str = "";
|
||||||
|
let i = 0, len = array.length;
|
||||||
|
while (i < len) {
|
||||||
|
let c = array[i++];
|
||||||
|
switch (c >> 4) {
|
||||||
|
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
|
||||||
|
str += String.fromCharCode(c);
|
||||||
|
break;
|
||||||
|
case 12: case 13:
|
||||||
|
str += String.fromCharCode(((c & 0x1F) << 6) | (array[i++] & 0x3F));
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
str += String.fromCharCode(((c & 0x0F) << 12) | ((array[i++] & 0x3F) << 6) | ((array[i++] & 0x3F) << 0));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GetBytes(str) {
|
||||||
|
let len = str.length, resPos = -1;
|
||||||
|
let resArr = new Uint8Array(len * 3);
|
||||||
|
for (let point = 0, nextcode = 0, i = 0; i !== len;) {
|
||||||
|
point = str.charCodeAt(i), i += 1;
|
||||||
|
if (point >= 0xD800 && point <= 0xDBFF) {
|
||||||
|
if (i === len) {
|
||||||
|
resArr[resPos += 1] = 0xef;
|
||||||
|
resArr[resPos += 1] = 0xbf;
|
||||||
|
resArr[resPos += 1] = 0xbd;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
nextcode = str.charCodeAt(i);
|
||||||
|
if (nextcode >= 0xDC00 && nextcode <= 0xDFFF) {
|
||||||
|
point = (point - 0xD800) * 0x400 + nextcode - 0xDC00 + 0x10000;
|
||||||
|
i += 1;
|
||||||
|
if (point > 0xffff) {
|
||||||
|
resArr[resPos += 1] = (0x1e << 3) | (point >>> 18);
|
||||||
|
resArr[resPos += 1] = (0x2 << 6) | ((point >>> 12) & 0x3f);
|
||||||
|
resArr[resPos += 1] = (0x2 << 6) | ((point >>> 6) & 0x3f);
|
||||||
|
resArr[resPos += 1] = (0x2 << 6) | (point & 0x3f);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
resArr[resPos += 1] = 0xef;
|
||||||
|
resArr[resPos += 1] = 0xbf;
|
||||||
|
resArr[resPos += 1] = 0xbd;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (point <= 0x007f) {
|
||||||
|
resArr[resPos += 1] = (0x0 << 7) | point;
|
||||||
|
} else if (point <= 0x07ff) {
|
||||||
|
resArr[resPos += 1] = (0x6 << 5) | (point >>> 6);
|
||||||
|
resArr[resPos += 1] = (0x2 << 6) | (point & 0x3f);
|
||||||
|
} else {
|
||||||
|
resArr[resPos += 1] = (0xe << 4) | (point >>> 12);
|
||||||
|
resArr[resPos += 1] = (0x2 << 6) | ((point >>> 6) & 0x3f);
|
||||||
|
resArr[resPos += 1] = (0x2 << 6) | (point & 0x3f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resArr.subarray(0, resPos + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
}
|
9
assets/Scripts/WebSocketSever.ts.meta
Normal file
9
assets/Scripts/WebSocketSever.ts.meta
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.8",
|
||||||
|
"uuid": "b0fdf01d-87fb-409c-b4e2-7deabf2e31e8",
|
||||||
|
"isPlugin": false,
|
||||||
|
"loadPluginInWeb": true,
|
||||||
|
"loadPluginInNative": true,
|
||||||
|
"loadPluginInEditor": false,
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
32073
creator.d.ts
vendored
Normal file
32073
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"
|
||||||
|
]
|
||||||
|
}
|
11
package-lock.json
generated
Normal file
11
package-lock.json
generated
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"requires": true,
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": {
|
||||||
|
"version": "17.0.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.9.tgz",
|
||||||
|
"integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8
project.json
Normal file
8
project.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"engine": "cocos-creator-js",
|
||||||
|
"packages": "packages",
|
||||||
|
"name": "Test_2_4_4_20220118_WebSocketSever",
|
||||||
|
"id": "d6b39298-c7da-4e8a-9c8d-e9f667d382e6",
|
||||||
|
"version": "2.4.4",
|
||||||
|
"isNew": false
|
||||||
|
}
|
55
settings/builder.json
Normal file
55
settings/builder.json
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"title": "WebSocketSever",
|
||||||
|
"packageName": "org.cocos2d.demo",
|
||||||
|
"startScene": "eb39d67f-78c3-41bc-98e2-f556bacb1121",
|
||||||
|
"excludeScenes": [],
|
||||||
|
"orientation": {
|
||||||
|
"landscapeLeft": true,
|
||||||
|
"landscapeRight": true,
|
||||||
|
"portrait": true,
|
||||||
|
"upsideDown": true
|
||||||
|
},
|
||||||
|
"webOrientation": "auto",
|
||||||
|
"inlineSpriteFrames": true,
|
||||||
|
"inlineSpriteFrames_native": true,
|
||||||
|
"mainCompressionType": "default",
|
||||||
|
"mainIsRemote": false,
|
||||||
|
"optimizeHotUpdate": false,
|
||||||
|
"md5Cache": true,
|
||||||
|
"nativeMd5Cache": false,
|
||||||
|
"encryptJs": true,
|
||||||
|
"xxteaKey": "79d700a6-67d6-46",
|
||||||
|
"zipCompressJs": true,
|
||||||
|
"fb-instant-games": {},
|
||||||
|
"android": {
|
||||||
|
"REMOTE_SERVER_ROOT": "",
|
||||||
|
"packageName": "org.cocos2d.demo"
|
||||||
|
},
|
||||||
|
"ios": {
|
||||||
|
"REMOTE_SERVER_ROOT": "",
|
||||||
|
"ios_enable_jit": true,
|
||||||
|
"packageName": "org.cocos2d.demo"
|
||||||
|
},
|
||||||
|
"mac": {
|
||||||
|
"REMOTE_SERVER_ROOT": "",
|
||||||
|
"height": 720,
|
||||||
|
"packageName": "org.cocos2d.demo",
|
||||||
|
"width": 1280
|
||||||
|
},
|
||||||
|
"win32": {
|
||||||
|
"REMOTE_SERVER_ROOT": "",
|
||||||
|
"height": 720,
|
||||||
|
"width": 1280
|
||||||
|
},
|
||||||
|
"android-instant": {
|
||||||
|
"REMOTE_SERVER_ROOT": "",
|
||||||
|
"host": "",
|
||||||
|
"packageName": "org.cocos2d.demo",
|
||||||
|
"pathPattern": "",
|
||||||
|
"recordPath": "",
|
||||||
|
"scheme": "https",
|
||||||
|
"skipRecord": false
|
||||||
|
},
|
||||||
|
"appBundle": false,
|
||||||
|
"agreements": {}
|
||||||
|
}
|
41
settings/project.json
Normal file
41
settings/project.json
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"last-module-event-record-time": 1642487386814,
|
||||||
|
"group-list": [
|
||||||
|
"default"
|
||||||
|
],
|
||||||
|
"collision-matrix": [
|
||||||
|
[
|
||||||
|
true
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"excluded-modules": [
|
||||||
|
"3D",
|
||||||
|
"3D Primitive",
|
||||||
|
"3D Physics/cannon.js",
|
||||||
|
"3D Physics/Builtin",
|
||||||
|
"3D Particle"
|
||||||
|
],
|
||||||
|
"preview-port": 7456,
|
||||||
|
"design-resolution-width": 960,
|
||||||
|
"design-resolution-height": 640,
|
||||||
|
"fit-width": false,
|
||||||
|
"fit-height": true,
|
||||||
|
"use-project-simulator-setting": false,
|
||||||
|
"simulator-orientation": false,
|
||||||
|
"use-customize-simulator": true,
|
||||||
|
"simulator-resolution": {
|
||||||
|
"height": 640,
|
||||||
|
"width": 960
|
||||||
|
},
|
||||||
|
"clear-simulator-cache": true,
|
||||||
|
"facebook": {
|
||||||
|
"appID": "",
|
||||||
|
"audience": {
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
|
"enable": false,
|
||||||
|
"live": {
|
||||||
|
"enable": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
6
settings/services.json
Normal file
6
settings/services.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"game": {
|
||||||
|
"name": "未知游戏",
|
||||||
|
"appid": "UNKNOW"
|
||||||
|
}
|
||||||
|
}
|
19
tsconfig.json
Normal file
19
tsconfig.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "commonjs",
|
||||||
|
"lib": [ "es2015", "es2017", "dom" ],
|
||||||
|
"target": "es5",
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"outDir": "temp/vscode-dist",
|
||||||
|
"forceConsistentCasingInFileNames": true
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"library",
|
||||||
|
"local",
|
||||||
|
"temp",
|
||||||
|
"build",
|
||||||
|
"settings"
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user