骑行代码迁移,赛事逻辑初步框架完成

This commit is contained in:
lishuo 2021-06-29 18:03:20 +08:00
parent 380e67cc1e
commit ec45246aa4
151 changed files with 7689 additions and 3538 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 54985e7690b31194e95a87aa6f8a95ad
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e23c97190520d2d4d835627a7d333d40
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 001ba3d76a793bc40b5db183ae441f11
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,234 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8655198199642205025
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8655198199642205024}
- component: {fileID: 8655198199642205030}
- component: {fileID: 8655198199642205031}
m_Layer: 5
m_Name: Title
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8655198199642205024
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198199642205025}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 8655198200362386541}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0.000041962, y: 32.458}
m_SizeDelta: {x: 498.98566, y: 64.915596}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8655198199642205030
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198199642205025}
m_CullTransparentMesh: 0
--- !u!114 &8655198199642205031
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198199642205025}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: 1db9e217733971041be26b076fda6083, type: 3}
m_FontSize: 36
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 3
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Race begin after
--- !u!1 &8655198200362386542
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8655198200362386541}
- component: {fileID: 8655198200362386531}
- component: {fileID: 8655198200362386540}
m_Layer: 5
m_Name: CountDownPanel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8655198200362386541
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198200362386542}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8655198199642205024}
- {fileID: 8655198200579522384}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -520.51, y: 141.25}
m_SizeDelta: {x: -1101.0143, y: -742.5}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8655198200362386531
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198200362386542}
m_CullTransparentMesh: 0
--- !u!114 &8655198200362386540
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198200362386542}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &8655198200579522385
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8655198200579522384}
- component: {fileID: 8655198200579522390}
- component: {fileID: 8655198200579522391}
m_Layer: 5
m_Name: Timer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8655198200579522384
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198200579522385}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 8655198200362386541}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -8, y: -39.375}
m_SizeDelta: {x: 295.4264, y: 78.74981}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8655198200579522390
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198200579522385}
m_CullTransparentMesh: 0
--- !u!114 &8655198200579522391
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8655198200579522385}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: 1db9e217733971041be26b076fda6083, type: 3}
m_FontSize: 36
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 3
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 00:00:00

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e11813a8e3f6f4e49b49bd840f121b02
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,785 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &387565771936290546
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1945399037117554846}
- component: {fileID: 8929967819597229218}
- component: {fileID: 6867390185509525018}
- component: {fileID: 776111304942601944}
m_Layer: 5
m_Name: Name
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1945399037117554846
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 387565771936290546}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2470702738328327122}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -169.48, y: 13.386}
m_SizeDelta: {x: 255.83951, y: 26.770844}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8929967819597229218
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 387565771936290546}
m_CullTransparentMesh: 0
--- !u!114 &6867390185509525018
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 387565771936290546}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 24
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Name
--- !u!114 &776111304942601944
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 387565771936290546}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e47f6ee11b78f3247a0b474b6c36e2cd, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &477974778128357920
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8918583880764163001}
- component: {fileID: 7390776504515078202}
- component: {fileID: 8619180685653039787}
m_Layer: 5
m_Name: Head
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8918583880764163001
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 477974778128357920}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2470702738328327122}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -320.8, y: 9.3074}
m_SizeDelta: {x: 35.19715, y: 34.585686}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7390776504515078202
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 477974778128357920}
m_CullTransparentMesh: 0
--- !u!114 &8619180685653039787
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 477974778128357920}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 2800000, guid: b83009748905f084887c2d4a34f052fd, type: 3}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!1 &1203636650522419747
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8206739373848930593}
- component: {fileID: 510753573079622608}
- component: {fileID: 8905776654102798812}
m_Layer: 5
m_Name: Country
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8206739373848930593
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1203636650522419747}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2470702738328327122}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 364.3, y: 13.3}
m_SizeDelta: {x: 23.995338, y: 26.600487}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &510753573079622608
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1203636650522419747}
m_CullTransparentMesh: 0
--- !u!114 &8905776654102798812
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1203636650522419747}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 2800000, guid: b83009748905f084887c2d4a34f052fd, type: 3}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!1 &2039954414693443182
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5028262886418322962}
- component: {fileID: 2948356824209932300}
- component: {fileID: 6975949818572773739}
- component: {fileID: 2826938124940003444}
m_Layer: 5
m_Name: Heart
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5028262886418322962
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2039954414693443182}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2470702738328327122}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 236.2, y: -18.985}
m_SizeDelta: {x: 93.399994, y: 22}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2948356824209932300
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2039954414693443182}
m_CullTransparentMesh: 0
--- !u!114 &6975949818572773739
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2039954414693443182}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: 1db9e217733971041be26b076fda6083, type: 3}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 100bpm
--- !u!114 &2826938124940003444
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2039954414693443182}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e47f6ee11b78f3247a0b474b6c36e2cd, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &3402143849051894530
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5776800250494938657}
- component: {fileID: 914885949612555739}
- component: {fileID: 1049020844800666480}
- component: {fileID: 2189283391476243351}
m_Layer: 5
m_Name: Timer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5776800250494938657
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3402143849051894530}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2470702738328327122}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 241.91, y: 11}
m_SizeDelta: {x: 104.829956, y: 22}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &914885949612555739
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3402143849051894530}
m_CullTransparentMesh: 0
--- !u!114 &1049020844800666480
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3402143849051894530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: 1db9e217733971041be26b076fda6083, type: 3}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: "00\uFF1A00\uFF1A00"
--- !u!114 &2189283391476243351
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3402143849051894530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e47f6ee11b78f3247a0b474b6c36e2cd, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &3638718135352563336
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2470702738328327122}
- component: {fileID: 2235010553136405887}
- component: {fileID: 5174577417352346134}
- component: {fileID: 6946663127870700282}
m_Layer: 5
m_Name: FinalRankingItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2470702738328327122
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3638718135352563336}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8637168095196952554}
- {fileID: 1945399037117554846}
- {fileID: 5028262886418322962}
- {fileID: 5776800250494938657}
- {fileID: 6005805997969872739}
- {fileID: 4070024285971270188}
- {fileID: 8918583880764163001}
- {fileID: 8206739373848930593}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 800, y: 69.91507}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2235010553136405887
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3638718135352563336}
m_CullTransparentMesh: 0
--- !u!114 &5174577417352346134
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3638718135352563336}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &6946663127870700282
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3638718135352563336}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1e64a5b2fb6d4f3418094195460237d1, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &6168534200313274756
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6005805997969872739}
- component: {fileID: 2862083170618635592}
- component: {fileID: 6508256954569929105}
- component: {fileID: 3066426405193871421}
m_Layer: 5
m_Name: Power
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6005805997969872739
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6168534200313274756}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2470702738328327122}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -265.08, y: -18.985}
m_SizeDelta: {x: 64.64496, y: 22}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2862083170618635592
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6168534200313274756}
m_CullTransparentMesh: 0
--- !u!114 &6508256954569929105
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6168534200313274756}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: 1db9e217733971041be26b076fda6083, type: 3}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 3000w
--- !u!114 &3066426405193871421
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6168534200313274756}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e47f6ee11b78f3247a0b474b6c36e2cd, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &8554795462613962202
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4070024285971270188}
- component: {fileID: 280639950050165111}
- component: {fileID: 5842543041269499732}
- component: {fileID: 8378477932830490383}
m_Layer: 5
m_Name: WKG
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4070024285971270188
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8554795462613962202}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2470702738328327122}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -0.000030518, y: -18.985}
m_SizeDelta: {x: 90.805115, y: 22}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &280639950050165111
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8554795462613962202}
m_CullTransparentMesh: 0
--- !u!114 &5842543041269499732
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8554795462613962202}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: 1db9e217733971041be26b076fda6083, type: 3}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 4.55W/KG
--- !u!114 &8378477932830490383
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8554795462613962202}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e47f6ee11b78f3247a0b474b6c36e2cd, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &8637168095196952555
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8637168095196952554}
- component: {fileID: 8637168095196952559}
- component: {fileID: 8637168095196952556}
- component: {fileID: 8637168095196952557}
m_Layer: 5
m_Name: Ranking
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8637168095196952554
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8637168095196952555}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2470702738328327122}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -367.15, y: -0.17348}
m_SizeDelta: {x: 39.526814, y: 34.238728}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8637168095196952559
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8637168095196952555}
m_CullTransparentMesh: 0
--- !u!114 &8637168095196952556
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8637168095196952555}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: 1db9e217733971041be26b076fda6083, type: 3}
m_FontSize: 24
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 1
--- !u!114 &8637168095196952557
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8637168095196952555}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e47f6ee11b78f3247a0b474b6c36e2cd, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1a7b6d4e60a4e4c4bbbd465f14899150
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,157 +0,0 @@
using Assets.Scenes.Ride.Scripts.Model;
using Assets.Scripts;
using System;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class NearByFactory : MonoBehaviour
{
PlayerController playerController;
private GameObject nearByItem;
private GameObject nearByMajorItem;
private GameObject scroll;
GameObject body;
private int bufferSize = 0;
private int pageIndex = 1;
private int pageSize =7;
private int preNum = 0;//前面的数量
private int offset = 8;//显示区域的数量
CyclingController cyclingController;
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
playerController = FindObjectOfType<PlayerController>();
nearByItem = Resources.Load<GameObject>("UI/Prefab/Ride/NearbyItem");
nearByMajorItem = Resources.Load<GameObject>("UI/Prefab/Ride/NearbyMajorItem");
scroll = transform.parent.parent.gameObject;
if (scroll != null)
{
UIManager.AddEvent(scroll, UnityEngine.EventSystems.EventTriggerType.EndDrag, OnEndDrag);
}
}
bool startMouse = false;
float t =1f;
private void Update()
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
if (scroll.GetComponent<ScrollRect>().verticalNormalizedPosition <= 0 ||
scroll.GetComponent<ScrollRect>().verticalNormalizedPosition >= (pageIndex == 0 ? 1.2 : 1))
{
startMouse = true;
}
}
else
{
if (startMouse)
{
startMouse = false;
OnEndDrag(null);
}
}
t -= Time.deltaTime;
while (t < 0)
{
Utils.DestroyChildren(transform);
var nearList = MapUDPService.GetNearRiderData(pageIndex, pageSize, new double[] { playerController.Currentlatlong.x, playerController.Currentlatlong.y });
totalPages = MapUDPService.GetNearRiderCount();
for (int i = 0; i < nearList.Count(); i++)
{
Create(nearList[i]);
}
t = 1;
}
}
private int totalPages = 0;
private void OnEndDrag(BaseEventData arg0)
{
var scrollrect = scroll.GetComponent<ScrollRect>();
if (scrollrect.verticalNormalizedPosition <= 0)
{
var p = pageIndex + 1;
if (p * pageSize <= totalPages)
{
pageIndex++;
}
//RefreshList();
}
if (scrollrect.verticalNormalizedPosition >= (pageIndex == 0 ? 1.2 : 1))
{
var p = pageIndex - 1;
if (p > 0)
{
pageIndex--;
}
//if (pageIndex > 0)
// pageIndex--;
//RefreshList();
}
}
private void RefreshList()
{
var nearList = MapUDPService.GetNearRiderData(pageIndex, pageSize, new double[] { playerController.Currentlatlong.x, playerController.Currentlatlong.y });
for (int i = 0; i < nearList.Count(); i++)
{
if (bufferSize < pageSize)
{
Create(nearList[i]);
}
else
{
UpdateItem(nearList[i],i);
}
}
}
private void Create(NearRiderModel item)
{
//创建
GameObject prefabItem = item.IsSelf ? nearByMajorItem : nearByItem;
GameObject newObj = (GameObject)Instantiate(prefabItem, transform);
var nearByItemscript = newObj.GetComponent<NearByItemScript>();
nearByItemscript.setUserId(item.Id);
nearByItemscript.setName(item.Name);
nearByItemscript.setRatio(item.KGWeight+"W/KG");
nearByItemscript.setSpeed(item.Speed.ToString() + "KM/H");
nearByItemscript.setHead(item.Headimage);
nearByItemscript.setCountry(cyclingController.GetCountryImageByName(item.Country));
nearByItemscript.setDistance(item.Near.ToString() + "KM");
bufferSize++;
}
private void UpdateItem(NearRiderModel item,int index)
{
for (int i = 0; i < transform.childCount; i++)
{
var child = transform.GetChild(i);
if (child != null)
{
NearByItemScript nearByItemscript = child.GetComponent<NearByItemScript>();
if (nearByItemscript.UserId == item.Id)
{
nearByItemscript.setName(item.Name);
nearByItemscript.setRatio(item.KGWeight + "W/KG");
nearByItemscript.setSpeed(item.Speed.ToString() + "KM/H");
//nearByItemscript.setHead(item.Headimage);
//nearByItemscript.setCountry(item.CountryImg);
nearByItemscript.setDistance(item.Near.ToString() + "KM");
if (index != i)//重排序
{
child.SetSiblingIndex(index);
}
}
}
}
}
}
}

View File

@ -72,10 +72,14 @@ namespace Assets.Scripts.Apis
data = Newtonsoft.Json.JsonConvert.DeserializeObject<MapCompetitionDetailModel>(JsonConvert.SerializeObject(list.data))
};
}
//报名比赛
public JsonResult ApplyMapCompetition(int id)
//报名比赛
public async Task<JsonResult> ApplyMapCompetition(int id)
{
return Get<JsonResult>($"/MapCompetition/ApplyMapCompetition?id={ id }");
var param = new
{
id = id,
};
return await PostAsync<JsonResult>($"/MapCompetition/ApplyMapCompetition", param);
}
}
}

View File

@ -21,7 +21,7 @@
public double WeightKg { get; set; }
public double TripDistance { get; set; }
public double TotalDistance { get; set; }
public int? AverageHeartRate { get; set; }
public double? AverageHeartRate { get; set; }
public double BicycleWeight { get; set; }
public string NickName { get; set; }
public string Country { get; set; }

View File

@ -47,6 +47,7 @@ public static class App
public static IPEndPoint UdpAddress { get; private set; } = new IPEndPoint(IPAddress.Parse("192.168.0.97"), 11000);
public static IPEndPoint TcpAddress { get; private set; } = new IPEndPoint(IPAddress.Parse("192.168.0.97"), 21001);
public static UpdateModel UpdateObject { get; set; }
public static int CompetionId { get; set; }//比赛id
//public static string AppDownloadUrl { get; internal set; }
//public static string AppVersionCode { get; internal set; }
@ -69,13 +70,13 @@ public static class App
//currentCulture.NumberFormat.NumberDecimalSeparator = ".";
//Thread.CurrentThread.CurrentCulture = currentCulture;
//System.Globalization.CultureInfo.DefaultThreadCurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
#if !UNITY_EDITOR
// Host = "http://pf.juze.pro/";
// UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
// TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001);
Host = "https://wx.powerfun.com.cn/";
UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 11000);
TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 11001);
#endif
//#if !UNITY_EDITOR
//// Host = "http://pf.juze.pro/";
//// UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
//// TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001);
// Host = "https://wx.powerfun.com.cn/";
// UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 11000);
// TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 11001);
//#endif
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d89e303a3008b774e87b6ba0a35ea20b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7cecb30d95cebeb43b5768b505937c28
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,93 @@
using Assets.Scenes.Ride.Scripts.Model;
using Assets.Scripts;
using System;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class BaseListFactory : MonoBehaviour
{
protected AbstractPlayer playerController;
protected CyclingController cyclingController;
protected GameObject nearByItem;
protected GameObject nearByMajorItem;
private GameObject scroll;
private GameObject body;
protected int totalPages = 0;
protected int bufferSize = 0;
protected int pageIndex = 1;
protected int pageSize = 7;
private int preNum = 0;//前面的数量
private int offset = 8;//显示区域的数量
protected bool startMouse = false;
protected float t = 1f;
protected virtual void Awake()
{
scroll = transform.parent.parent.gameObject;
if (scroll != null)
{
UIManager.AddEvent(scroll, UnityEngine.EventSystems.EventTriggerType.EndDrag, OnEndDrag);
}
}
private void Update()
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
if (scroll.GetComponent<ScrollRect>().verticalNormalizedPosition <= 0 ||
scroll.GetComponent<ScrollRect>().verticalNormalizedPosition >= (pageIndex == 0 ? 1.2 : 1))
{
startMouse = true;
}
}
else
{
if (startMouse)
{
startMouse = false;
OnEndDrag(null);
}
}
t -= Time.deltaTime;
while (t < 0)
{
Utils.DestroyChildren(transform);
CreateList();
t = 1;
}
}
protected virtual void CreateList()
{
}
private void OnEndDrag(BaseEventData arg0)
{
var scrollrect = scroll.GetComponent<ScrollRect>();
if (scrollrect.verticalNormalizedPosition <= 0)
{
var p = pageIndex + 1;
if (p * pageSize <= totalPages)
{
pageIndex++;
}
}
if (scrollrect.verticalNormalizedPosition >= (pageIndex == 0 ? 1.2 : 1))
{
var p = pageIndex - 1;
if (p > 0)
{
pageIndex--;
}
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: be7bdc22e15ad254da04ebf9dc274fe5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -233,6 +233,7 @@ namespace Assets.Scenes.Ride.Scripts
private Transform player;
private MapRoute routeInstance;
public AbstractPlayer currentPlayer { get; set; }//当前选中用户
private float time = 1f;
private float? localY;
@ -243,6 +244,7 @@ namespace Assets.Scenes.Ride.Scripts
public void Init()
{
playerController = FindObjectOfType<PlayerController>();
currentPlayer = playerController;//默认当前用户为当前选中用户
mainController = FindObjectOfType<CyclingController>();
player = transform.parent.Find("Player");
var route = mainController.GetRoute();
@ -301,6 +303,8 @@ namespace Assets.Scenes.Ride.Scripts
ChangeView(null);
}
}
//移动摄像头和箭头位置
public void MoveCamera()
{
@ -392,7 +396,7 @@ namespace Assets.Scenes.Ride.Scripts
}
//暂停游戏
public void PauseRide(BaseEventData baseEventData)
public virtual void PauseRide(BaseEventData baseEventData)
{
mainController.SetPause();
count = 0;
@ -401,7 +405,7 @@ namespace Assets.Scenes.Ride.Scripts
startPanel.SetActive(true);
}
//保存游戏
public void SaveRide(BaseEventData baseEventData)
public virtual void SaveRide(BaseEventData baseEventData)
{
if (playerController.TotalTicks > 0 && !mainController.isQuit)
{
@ -415,7 +419,7 @@ namespace Assets.Scenes.Ride.Scripts
}
}
//不保存退出
public void CancelQuit(BaseEventData baseEventData)
public virtual void CancelQuit(BaseEventData baseEventData)
{
quitPanel.SetActive(false);
SceneManager.LoadScene("MainScene");
@ -431,7 +435,7 @@ namespace Assets.Scenes.Ride.Scripts
mainController.ChangeMapImageStyle(arrow.gameObject);
}
//结束游戏
public void StopRide(BaseEventData baseEventData)
public virtual void StopRide(BaseEventData baseEventData)
{
if (playerController.TotalTicks > 0)
{

View File

@ -0,0 +1,50 @@
using Assets.Scenes.Ride.Scripts.Model;
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace Assets.Scenes.Ride.Scripts
{
public class CompetitionRankingFactory : BaseListFactory
{
private List<CompetitionRankingSortModel> rankingList {get;set;}
protected override void Awake()
{
base.Awake();
cyclingController = FindObjectOfType<CyclingController>();
playerController = FindObjectOfType<PlayerController>();
nearByItem = Resources.Load<GameObject>("UI/Prefab/Ride/NearbyItem");
nearByMajorItem = Resources.Load<GameObject>("UI/Prefab/Ride/NearbyMajorItem");
}
protected override void CreateList()
{
//获取实时排名
CompetitionModel s = cyclingController.cyclingController as CompetitionModel;
var ss = s?.competitionRankingModel;
rankingList = ss?.Sorts;
if (rankingList == null) return;
totalPages = rankingList.Count();
for (int i = 0; i < rankingList.Count(); i++)
{
Create(rankingList[i]);
}
}
private void Create(CompetitionRankingSortModel item)
{
//创建
GameObject prefabItem = item.IsSelf ? nearByMajorItem : nearByItem;
GameObject newObj = (GameObject)Instantiate(prefabItem, transform);
var nearByItemscript = newObj.GetComponent<NearByItemScript>();
nearByItemscript.setUserId(item.UserId);
nearByItemscript.setName(item.Name);
nearByItemscript.setRatio(item.KGWeight+"W/KG");
nearByItemscript.setSpeed(item.Speed.ToString() + "KM/H");
//nearByItemscript.setHead(item.Headimage);
//nearByItemscript.setCountry(cyclingController.GetCountryImageByName(item.));
nearByItemscript.setDistance(item.Near.ToString() + "KM");
bufferSize++;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3a572f54bd2296f41a2b47567f33fd64
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,59 @@
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using Assets.Scripts;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
namespace Assets.Scenes.Ride.Scripts
{
public class CompetitionResultFactory: MonoBehaviour
{
CyclingController cyclingController;
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
var closeBtn = transform.Find("Close").gameObject;
UIManager.AddEvent(closeBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, Close);
}
float time = 1;
private void Update()
{
time -= Time.deltaTime;
while (time < 0)
{
Refresh();
time = 1;
}
}
public void Refresh()
{
if (cyclingController.cyclingController is CompetitionModel model)
{
var list = model?.competitionRankingModel?.Results;
if (list == null) return;
var parent = transform.Find("ScrollView/Viewport/Content");
Utils.DestroyChildren(parent);
foreach (var item in list)
{
var finalRankingItem = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/FinalRankingItem"), parent);
var finalRankingItemScript = finalRankingItem.GetComponent<FinalRankingItemScript>();
finalRankingItemScript.setRanking(item.Index.ToString());
finalRankingItemScript.setHeartRate(item.HeartRate.ToString("f0"));
finalRankingItemScript.setName(item.Name);
finalRankingItemScript.setPower(item.Power.ToString());
finalRankingItemScript.setRatio(item.WeightKg.ToString("f2"));
finalRankingItemScript.setTimer(item.TripTime);
}
}
}
private void Close(BaseEventData baseEventData)
{
this.gameObject.SetActive(false);
this.Destroy();
SceneManager.LoadScene("MainScene");
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c7fed0d77ca8dce4a85ed6f9a848355d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,125 @@
using UnityEngine;
using DG.Tweening;
using Assets.Scenes.Ride.Scripts.Model;
using UnityEngine.EventSystems;
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using UnityEngine.UI;
using Assets.Scripts;
using Assets.Scripts.Apis;
namespace Assets.Scenes.Ride.Scripts
{
public class CompetitionUIManager : BaseUIManager
{
protected override void Awake()
{
base.Awake();
}
GameObject countDownPanel;
Text title;
Text timer;
protected override void Start()
{
base.Start();
//创建倒计时面板
countDownPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CountDownPanel"), transform.Find("Panel"));
title = countDownPanel.transform.Find("Title").GetComponent<Text>();
timer = countDownPanel.transform.Find("Timer").GetComponent<Text>();
countDownPanel.SetActive(false);
ShowCurrentRanking();
}
protected override void Update()
{
base.Update();
CountDown();
}
//开始游戏触发事件
public void StartRide(BaseEventData baseEventData)
{
this.StartRide();
}
CompetitionModel competitionModel;
bool canStart = false;
//开始骑行-加个5秒钟倒计时
public override void StartRide()
{
competitionModel = mainController.cyclingController as CompetitionModel;
}
private void CountDown()
{
count = competitionModel?.StartCountdown()??0;
canStart = competitionModel?.CanStart()??false;
//比赛开始前倒计时
if (count >= 0)
{
//显示倒计时面板信息
showCountDown(count, "Get ready!");
}
//比赛开始
if (count<=0 && canStart)
{
mainController.SetStart();
countDownPanel.SetActive(false);
}
//比赛进行中
if (competitionModel != null)
{
//显示结果
if (competitionModel.mapCompetition?.HasRecord ?? false)
{
ShowResultList();
}
var s = competitionModel?.EndCountDown();
//显示关门时间
if (s.Value.Item2)
{
//显示倒计时面板信息
showCountDown(s.Value.Item1, "remaining");
if (s.Value.Item1 <= 0)
{
//自动保存,游戏设置结束
base.SaveRide(null);
}
}
//显示当前比赛进行多长时间了
timerTxt.text = competitionModel.ShowTime;
}
}
private void showCountDown(int count,string text)
{
countDownPanel.SetActive(true);
title.text = text;
timer.text = Helper.FormatTicks(count);
}
public override void ContinueRide()
{
MapCompetitionApi s = new MapCompetitionApi();
_ = s.ApplyMapCompetition(App.CompetionId);
mainController.SetCyclingModel(CyclingModel.Competition);
}
public override void PauseRide(BaseEventData baseEventData)
{
return;
}
//实时显示当前比赛排名
GameObject competitionRankingList;
public void ShowCurrentRanking()
{
competitionRankingList = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CompetitionRankingPanel"), transform.Find("Panel"));
}
GameObject competitionResultPanel;
//实时刷新显示比赛结果
public void ShowResultList()
{
if (competitionResultPanel == null)
{
competitionResultPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CompetitionResultPanel"), transform.Find("Panel"));
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2ef2d2135dbfedc418fd2a7a18a0a254
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -43,6 +43,7 @@ public class CyclingController : DeviceServiceMonoBase
public CyclingModel cyclingModel;//当前骑行模式
public BaseCycling cyclingController { get; set; }
private int routeId;
private int competitionId;
private MapApi mapApi;
public DateTime startTime;
@ -75,6 +76,8 @@ public class CyclingController : DeviceServiceMonoBase
//mapRoute = mapApi.GetById(routeId).data;
//miniMap = transform.Find("MiniMap").gameObject;//小地图
resultPanel = transform.Find("SingleUI/Panel/ResultPanel").gameObject;
competitionId = App.CompetionId;
//App.CompetionId = 0;//清空比赛参数
}
void OnDestroy()
@ -90,48 +93,33 @@ public class CyclingController : DeviceServiceMonoBase
onlineUserPrefab = Resources.Load<GameObject>("UI/Prefab/Ride/OnlinePlayer");
miniMapPlayerPrefab = Resources.Load<GameObject>("UI/Prefab/Ride/MiniMapPlayer");
target = transform.Find("Target");
miniMap = transform.Find("MiniMap").gameObject;//小地图
//进入倒计时
singleUIManager = UIObject.GetComponent<BaseUIManager>();
TrailRenderer trail = player.GetComponent<TrailRenderer>();
trail.Clear();
playerController = player.GetComponent<PlayerController>();
currentPlayer = playerController;//当前选中用户
loadingController = FindObjectOfType<LoadingController>();
loadingController.InjectController(this);
//开始loading
StartCoroutine(Init());
}
public void SetUIManager(PFUIPanel mainPanel, PFUIPanel model)
{
UIManager.Instance.MainPanel = mainPanel;//this.transform.Find("SingleUI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = model;// this.transform.Find("SingleUI/ModalPanel").GetComponent<PFUIPanel>();
//进入比赛
if (competitionId > 0)
{
StartCoroutine(InitRace());
return;
}
//进入单人骑行
if (routeId > 0)
{
StartCoroutine(Init());
return;
}
}
public void ReSetUIManager()
{
UIManager.Instance.MainPanel = this.transform.Find("SingleUI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("SingleUI/ModalPanel").GetComponent<PFUIPanel>();
}
public void AddEvent(GameObject sender, EventTriggerType eventType,UnityAction<BaseEventData> unityAction)
{
UIManager.AddEvent(sender, eventType, unityAction);
}
public void ShowDevice(PFUIPanel pFUIPanel)
{
UIManager.Show(UIManager.Instance.DevicePanel, pFUIPanel);
}
public Texture GetCountryImageByCode(string code)
{
return UIManager.Instance.loginRegOptions.GetCountryImage(code);
}
public Texture GetCountryImageByName(string name)
{
return UIManager.Instance.loginRegOptions.GetCountryImageByName(name);
}
private IEnumerator Init()
private IEnumerator Init()
{
yield return new WaitForSeconds(1);
mapRoute = mapApi.GetById(routeId).data;
miniMap = transform.Find("MiniMap").gameObject;//小地图
loadingController.Init(mapRoute);//初始化loading页面
loadingController.AddProcess(10);
InitData();//初始化数据
@ -139,6 +127,19 @@ public class CyclingController : DeviceServiceMonoBase
MapUDPService.Init();//初始化TCP
loadingController.AddProcess(10);
}
//初始比赛
private IEnumerator InitRace()
{
yield return new WaitForSeconds(1);
mapRoute = mapApi.GetById(routeId).data;
loadingController.Init(mapRoute);//初始化loading页面
loadingController.AddProcess(10);
InitRaceData();//初始化比赛数据
InitRaceGameObject();//初始化比赛场景
MapUDPService.Init();//初始化比赛TCP
loadingController.AddProcess(10);
}
//初始化数据
private void InitData()
{
@ -192,6 +193,50 @@ public class CyclingController : DeviceServiceMonoBase
}
}
private MapCompetition competition;
private void InitRaceData()
{
mapData = mapApi.GetData(routeId);//获取路书地理数据
route = new Route(mapData, mapRoute);
loadingController.AddProcess(10);
#region
MapCompetitionApi mapCompetitionApi = new MapCompetitionApi();
competition = mapCompetitionApi.GetById(competitionId).data;
selectParamModel = new RouteResultParam
{
CompetitionId = competitionId,
ContinueIndex = 0,
ContinueMark = "",
GlobalContinue = false,
EndDistance = 0,
RankingsId = new List<string>(),
OnlineUserId = 0,
RouteId = App.RouteIdParam
};
#endregion
//异步请求mapbox画出当前路书路线图
loadingController.DrawMapRoute(mapData);
//计算上次骑行距离调整地图中心点
double endDistance = selectParamModel.EndDistance;
coordiantes = Along(endDistance);
loadingController.AddProcess(10);
#region
var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", 0, 10, "");
if (list.result)
{
loadingController.CreateRankingList(list.data.list);
loadingController.AddProcess(10);
}
var shaowList = mapApi.GetShadowList(App.RouteIdParam, "", 0, 10);
if (shaowList.result)
{
mapRouteRankingList = shaowList.data.list;
}
#endregion
}
private Vector3 mapPos = Vector3.zero;
//加载人物和地图以及UI界面
private void InitGameObject()
@ -199,11 +244,24 @@ public class CyclingController : DeviceServiceMonoBase
map.gameObject.SetActive(true);
player.SetActive(true);
UIObject.SetActive(true);
singleUIManager = UIObject.AddComponent<SingleUIManager>();
miniMap.SetActive(true);
map.OnTileFinished += Map_OnTileFinished;
mapPos = map.transform.position;
}
private void InitRaceGameObject()
{
map.gameObject.SetActive(true);
player.SetActive(true);
UIObject.SetActive(true);
singleUIManager = UIObject.AddComponent<CompetitionUIManager>();
miniMap.SetActive(true);
map.OnTileFinished += Map_OnTileFinished;
mapPos = map.transform.position;
//SetCyclingModel(CyclingModel.Competition);
}
//private void Map_OnTileFinished(Mapbox.Unity.MeshGeneration.Data.UnityTile obj)
//{
// var playerController = player.GetComponent<PlayerController>();
@ -214,7 +272,6 @@ public class CyclingController : DeviceServiceMonoBase
public void SetCyclingModel(CyclingModel mode)
{
this.cyclingModel = mode;
switch (cyclingModel)
{
case CyclingModel.Single:
@ -225,26 +282,25 @@ public class CyclingController : DeviceServiceMonoBase
break;
//TODO:比赛模式
case CyclingModel.Competition:
cyclingController = new CompetitionModel(route, selectParamModel);
cyclingController = new CompetitionModel(route, selectParamModel, currentPlayer);
break;
}
GameStart();//游戏进入开始倒计时
GameStart();
InitPlayer();//初始化人物方向等
}
PlayerController playerController;
public AbstractPlayer currentPlayer;
//初始化人物位置角度
private void InitPlayer()
{
lockView = true;
TrailRenderer trail = player.GetComponent<TrailRenderer>();
playerController = player.GetComponent<PlayerController>();
Vector2d lastLatLon = Along(recorderData.EndDistance);
Vector3 currentPos = map.GeoToWorldPosition(lastLatLon);
currentPos.y += 1f;
player.transform.position = currentPos;
playerController.currentPos = currentPos;
trail.Clear();
Vector2d nextLatLon = Along(recorderData.EndDistance + 0.1);
//设定人物方向
var s = map.GeoToWorldPosition(lastLatLon);
@ -265,7 +321,7 @@ public class CyclingController : DeviceServiceMonoBase
public void GoContinueRide()
{
singleUIManager.ContinueRide();
singleUIManager.ContinueRide();
}
#region TCP相关
@ -352,6 +408,37 @@ public class CyclingController : DeviceServiceMonoBase
}
#endregion
public void SetUIManager(PFUIPanel mainPanel, PFUIPanel model)
{
UIManager.Instance.MainPanel = mainPanel;//this.transform.Find("SingleUI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = model;// this.transform.Find("SingleUI/ModalPanel").GetComponent<PFUIPanel>();
}
public void ReSetUIManager()
{
UIManager.Instance.MainPanel = this.transform.Find("SingleUI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("SingleUI/ModalPanel").GetComponent<PFUIPanel>();
}
public void AddEvent(GameObject sender, EventTriggerType eventType, UnityAction<BaseEventData> unityAction)
{
UIManager.AddEvent(sender, eventType, unityAction);
}
public void ShowDevice(PFUIPanel pFUIPanel)
{
UIManager.Show(UIManager.Instance.DevicePanel, pFUIPanel);
}
public Texture GetCountryImageByCode(string code)
{
return UIManager.Instance.loginRegOptions.GetCountryImage(code);
}
public Texture GetCountryImageByName(string name)
{
return UIManager.Instance.loginRegOptions.GetCountryImageByName(name);
}
#region
public AbstractMap map3d;

View File

@ -0,0 +1,89 @@
using Assets.Scripts;
using UnityEngine;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class FinalRankingItemScript : MonoBehaviour
{
private RawImage Head;
private RawImage Country;
private Text Name;
private Text Power;
private Text Timer;
private Text Ratio;//功体比
private Text Ranking;
private Text HeartRate;
private int _userId = 0;
public int UserId { get { return _userId; } }
private Texture countryTexture;
private void Awake()
{
Head = transform.Find("Head").GetComponent<RawImage>();
Country = transform.Find("Country").GetComponent<RawImage>();
Name = transform.Find("Name").GetComponent<Text>();
HeartRate = transform.Find("Heart").GetComponent<Text>();
Power = transform.Find("Power").GetComponent<Text>();
Timer = transform.Find("Timer").GetComponent<Text>();
Ratio = transform.Find("WKG").GetComponent<Text>();
Ranking = transform.Find("Ranking").GetComponent<Text>();
countryTexture = Resources.Load<Sprite>("Images/flag_China_Person").texture;
}
public void setRatio(string ratio)
{
Ratio.text = ratio +"W/KG";
}
public void setHead(string url)
{
Utils.DisplayImage(Head, url, true);
var rect = ((RectTransform)Head.transform).rect;
Material material = Instantiate(Resources.Load<Material>("UI/Material/RoundedCornersTextureMaterial"));
material.SetVector(Shader.PropertyToID("_WidthHeightRadius"), new Vector4(rect.width, rect.height, rect.height, 0));
Head.material = material;
}
public void setCountry(Texture texture)
{
Country.texture = texture;
}
public void setName(string name)
{
Name.text = name;
}
public void setPower(string power)
{
Power.text = power +"W";
}
public void setTimer(string timer)
{
Timer.text = timer;
}
public void setRanking(string ranking)
{
Ranking.text = ranking;
}
public void setHeartRate(string heartRate)
{
if (!heartRate.Equals("0"))
{
HeartRate.text = heartRate + "bpm";
}
else
{
HeartRate.text = "--bpm";
}
}
public void setUserId(int userId)
{
_userId = userId;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1e64a5b2fb6d4f3418094195460237d1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cab9cf5c3f47cbe498f0cab35b09125e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -67,7 +67,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
}
}
protected virtual string ShowTime
public virtual string ShowTime
{
get
{
@ -84,7 +84,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
//将当前用户的位置发送到udf服务
SendUserPositionToServer();
//OutModel outData = GetSelfTargetData(targetData);
//BeforeRunAfterPakcData(targetData);//执行前的函数
BeforeRunAfterPakcData();//执行前的函数
}
/// <summary>
@ -125,7 +125,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
/// 执行前,数据打包后
/// </summary>
/// <param name="outData"></param>
protected virtual void BeforeRunAfterPakcData(OutModel outData) { }
protected virtual void BeforeRunAfterPakcData() { }
protected double SpeedToDistance(double speed)
{
return Math.Round(speed / 3600, 5, MidpointRounding.AwayFromZero);

View File

@ -2,6 +2,7 @@
using Assets.Scripts;
using Assets.Scripts.Apis;
using Assets.Scripts.Apis.Models;
using Mapbox.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
@ -12,25 +13,28 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
{
public class CompetitionModel : BaseCycling
{
private Vector2d firstPoint { get; set; }
public CompetitionRankingModel competitionRankingModel { get; set; }
private MapCompetitionApi mapCompetitionApi;
private MapCompetition mapCompetition;
public MapCompetition mapCompetition;
private List<CompetitionRankingResultModel> mapWorkoutRecordRankings = new List<CompetitionRankingResultModel>();
/// <summary>
/// 第一个到终点的时间
/// </summary>
private DateTime? FirstEndTime;
private DateTime? FirstEndTime { get; set; }
public override bool CanPause => false;
protected override string ShowTime
public override string ShowTime
{
get
{
if (CanStart())
{
var second = Math.Ceiling((Now - mapCompetition.StartTime).TotalSeconds);
var second = Math.Ceiling((Now - mapCompetition.StartTime.ToLocalTime()).TotalSeconds);
var ts = TimeSpan.FromSeconds(second);
return $"{ (int)ts.TotalHours }:{ts:mm}:{ts:ss}";
@ -38,10 +42,11 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
return "00:00:00";
}
}
public CompetitionModel(Route route1, RouteResultParam param)
AbstractPlayer currentPlayer;
public CompetitionModel(Route route1, RouteResultParam param,AbstractPlayer player)
: base(route1, CyclingModel.Competition)
{
{
currentPlayer = player;//当前选中用户
mapCompetitionApi = new MapCompetitionApi();
//param.EndDistance = 18;
recorderData = new RecorderDataModel()
@ -50,7 +55,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
//BelongUserId = PubCommData.CurrentUser.Id,
Competitionid = param.CompetitionId??0,
ContinueIndex = param.ContinueIndex == null ? 0 : (int)param.ContinueIndex + 1,
ContinueMark = param.ContinueMark == null ? Guid.NewGuid().ToString() : param.ContinueMark,
ContinueMark = string.IsNullOrEmpty(param.ContinueMark) ? Guid.NewGuid().ToString() : param.ContinueMark,
EndDistance = param.EndDistance == 0 ? 0 : param.EndDistance,
IsCompleted = false,
IsNeedRanking = true,
@ -80,60 +85,38 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
{
rider.Point = new GeoJSON.Net.Geometry.GeographicPosition(this.route.RouteInstance.Point[0], this.route.RouteInstance.Point[1]);
}
riders.Add(rider);
//riders.Add(rider);//剔除自己
var result = mapCompetitionApi.GetById(param.CompetitionId??0);
if (result.result == false)
if (result.result == false || result.data == null)
{
return;
}
mapCompetition = result.data;
FirstEndTime = mapCompetition.FirstEndTime;
}
protected override void BeforeRunAfterPakcData(OutModel outData)
protected override void BeforeRunAfterPakcData()
{
outData.CanStart = CanStart();
outData.StartCountDown = StartCountdown();
var endCountDownResult = EndCountDown();
outData.EndCountDown = endCountDownResult.Item1;
outData.IsClosed = endCountDownResult.Item2;
#region
if (!FirstEndTime.HasValue)
{
var firstItem = base.realRiders.OrderByDescending(w => w.NextDistance).FirstOrDefault();
if (firstItem != null)
{
outData.FirstPoint = firstItem.Point;
}
}
#endregion
////如果骑行中,但是已经到结束时间
//if (outData.EndCountDown <= 0 && recorderData.CyclingState == CyclingStateEnum.Cycling)
//#region 设置第一名的坐标
//if (!FirstEndTime.HasValue)
//{
// base.CacheAnimate();
// var firstItem = base.realRiders.OrderByDescending(w => w.NextDistance).FirstOrDefault();
// if (firstItem != null)
// {
// firstPoint = new Vector2d(firstItem.Point.Latitude, firstItem.Point.Longitude);
// }
//}
var userList = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id)
.Where(d => d.CompetitionId == recorderData.Competitionid)
.OrderByDescending(u => u.IsCompleted).ThenByDescending(d => d.EndDistance);
//#endregion
var userList = MapUDPService.GetCompetitionOnlineUsers(recorderData.Competitionid).OrderByDescending(u => u.IsCompleted).ThenByDescending(d => d.EndDistance);
riders.RemoveAll(r => r.IsSelf == false);
int index = 0;
List<CompetitionRankingSortModel> sort = new List<CompetitionRankingSortModel>();
//标识后面的用户都是比我慢的用户
var slowerThenMe = false;
if (userList.Any())
{
var point = new double[] { outData.targetData._Lat, outData.targetData._Lon };
var self = userList.SingleOrDefault(r => r.IsSelf);
if (self != null)
{
point = self.Point;
}
var currentDistance = currentPlayer.TotalDistance;
foreach (var item in userList)
{
#region 线
@ -157,20 +140,8 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
}
index++;
double near = Math.Round(TurfHelper.GetDistances(point, item.Point), 2);
if (slowerThenMe)
{
near = near * -1;
}
if (item.IsSelf)
{
near = 0;
slowerThenMe = true;
}
//else if (index == 1)
//{
// near = near * -1;
//}
double near = Math.Round(item.EndDistance - currentDistance,2); //Math.Round(TurfHelper.GetDistances(point, item.Point), 2);
sort.Add(new CompetitionRankingSortModel
{
Index = index,
@ -229,12 +200,12 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
}
#endregion
outData.CompetitionRanking = new CompetitionRankingModel
competitionRankingModel = new CompetitionRankingModel
{
Sorts = sort,
MyRanking = sort.FindIndex(n => n.UserId == recorderData.BelongUserId) + 1,
Total = sort.Count,
Results = results
Sorts = sort,//骑行实时排名
MyRanking = sort.FindIndex(n => n.UserId == currentPlayer.UserId) + 1,//切换人物显示对应人物的排名
Total = sort.Count,//总人数
Results = results//比赛结果列表
};
}
@ -244,25 +215,62 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
/// <param name="targetData"></param>
public override void Run(TargetData targetData)
{
//base.BeforeRun(targetData);
if (recorderData.CyclingState == CyclingStateEnum.Prepare)
#region 线线
riders.RemoveAll(r => r.IsSelf == false);
var onlineUsers = MapUDPService.GetCompetitionOnlineUsers(mapCompetition.Id).Where(d => d.IsSelf == false)
.ToList();
foreach (var item in onlineUsers)
{
if (recorderData.EndDistance != 0)
riders.Add(new OnlineRiderModel()
{
currentDistance = recorderData.EndDistance;
}
else
{
currentDistance = 0;
}
}
else if (recorderData.CyclingState == CyclingStateEnum.Cycling)
{
currentDistance = recorderData.EndDistance + SpeedToDistance(targetData._Speed);
NickName = item.Name,
UserId = item.Id,
WxHeadImg = item.HeadImage,
Point = new GeoJSON.Net.Geometry.GeographicPosition(item.Point[0], item.Point[1]),
EndDistance = item.EndDistance,
PreDistance = item.PreDistance,
WeightKg = item.WeightKg,
});
}
#endregion
//TODO接力赛
////base.BeforeRun(targetData);
//if (recorderData.CyclingState == CyclingStateEnum.Prepare)
//{
// if (recorderData.EndDistance != 0)
// {
// currentDistance = recorderData.EndDistance;
// }
// else
// {
// currentDistance = 0;
// }
//}
//else if (recorderData.CyclingState == CyclingStateEnum.Cycling)
//{
// currentDistance = recorderData.EndDistance + SpeedToDistance(targetData._Speed);
//}
base.Run(targetData);
}
//显示结果当前用户保存或者产生第一名
public bool CanShowResult()
{
return mapCompetition?.HasRecord ?? false || mapCompetition ?.FirstEndTime != null;
}
//关门时间到了退出骑行场景
public bool CanQuit()
{
if (mapCompetition?.FirstEndTime.HasValue??false)
{
var closeDateTime = mapCompetition?.FirstEndTime.Value.ToLocalTime().AddMinutes(mapCompetition?.CloseTime??0 );
return Now >= closeDateTime;
}
return false;
}
public bool CanStart()
{
if (mapCompetition == null)
@ -284,7 +292,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
{
return false;
}
if (mapCompetition.StartTime <= Now && mapCompetition.EndTime > Now)
if (mapCompetition.StartTime.ToLocalTime() <= Now && mapCompetition.EndTime.ToLocalTime() > Now)
{
return true;
}
@ -295,8 +303,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
public int StartCountdown()
{
if (CanStart()) return 0;
return (int)Math.Floor((mapCompetition.StartTime - Now).TotalSeconds);
return (int)Math.Floor((mapCompetition.StartTime.ToLocalTime() - Now).TotalSeconds);
}
/// <summary>
/// 结束倒计时,bool值为true说明倒计时是关门时间
@ -306,7 +313,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
{
if (CanStart() == false) return (0, false);
//if (recorderData.IsCompleted) return 0;
var end1 = (int)Math.Floor((mapCompetition.EndTime - Now).TotalSeconds);
var end1 = (int)Math.Floor((mapCompetition.EndTime.ToLocalTime() - Now).TotalSeconds);
if (!FirstEndTime.HasValue)
{
return (end1, false);

View File

@ -238,6 +238,7 @@ namespace Assets.Scenes.Ride.Scripts.Model
if (result.result && Directory.Exists(path))
{
Helper.DelectDir(path);
Saved = true;
}
}
catch (Exception e)

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c7b3cc03af7b19e44b20d0b929a53d45
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,42 @@
using Assets.Scenes.Ride.Scripts.Model;
using System.Linq;
using UnityEngine;
namespace Assets.Scenes.Ride.Scripts
{
public class NearByFactory : BaseListFactory
{
protected override void Awake()
{
base.Awake();
cyclingController = FindObjectOfType<CyclingController>();
playerController = FindObjectOfType<PlayerController>();
nearByItem = Resources.Load<GameObject>("UI/Prefab/Ride/NearbyItem");
nearByMajorItem = Resources.Load<GameObject>("UI/Prefab/Ride/NearbyMajorItem");
}
protected override void CreateList()
{
var nearList = MapUDPService.GetNearRiderData(pageIndex, pageSize, new double[] { playerController.Currentlatlong.x, playerController.Currentlatlong.y });
totalPages = MapUDPService.GetNearRiderCount();
for (int i = 0; i < nearList.Count(); i++)
{
Create(nearList[i]);
}
}
private void Create(NearRiderModel item)
{
//创建
GameObject prefabItem = item.IsSelf ? nearByMajorItem : nearByItem;
GameObject newObj = (GameObject)Instantiate(prefabItem, transform);
var nearByItemscript = newObj.GetComponent<NearByItemScript>();
nearByItemscript.setUserId(item.Id);
nearByItemscript.setName(item.Name);
nearByItemscript.setRatio(item.KGWeight+"W/KG");
nearByItemscript.setSpeed(item.Speed.ToString() + "KM/H");
nearByItemscript.setHead(item.Headimage);
nearByItemscript.setCountry(cyclingController.GetCountryImageByName(item.Country));
nearByItemscript.setDistance(item.Near.ToString() + "KM");
bufferSize++;
}
}
}

View File

@ -14,8 +14,8 @@ namespace Assets.Scenes.Ride.Scripts
private Text OnlineUserNum;
private void Start()
{
Title = transform.Find("Title").GetComponent<Text>();
OnlineUserNum = transform.Find("NearByView/OnlineUserNum").GetComponent<Text>();
//Title = transform.Find("Title").GetComponent<Text>();
//OnlineUserNum = transform.Find("NearByView/OnlineUserNum").GetComponent<Text>();
}
float t = 1;
private void Update()
@ -23,7 +23,7 @@ namespace Assets.Scenes.Ride.Scripts
t -= Time.deltaTime;
while (t < 0)
{
OnlineUserNum.text = MapUDPService.GetNearRiderCount().ToString();
//OnlineUserNum.text = MapUDPService.GetNearRiderCount().ToString();
t = 1;
}
}

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