diff --git a/.gitignore b/.gitignore index e2bb03bc7e..ebac7aaa5a 100644 --- a/.gitignore +++ b/.gitignore @@ -97,5 +97,4 @@ InitTestScene*.unity* # Auto-generated scenes by play mode tests /[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity* -ProjectSettings/EditorBuildSettings.asset -ProjectSettings/ProjectSettings.asset +.idea diff --git a/.idea/.idea.perfect-world-unity/.idea/indexLayout.xml b/.idea/.idea.perfect-world-unity/.idea/indexLayout.xml deleted file mode 100644 index 7b08163ceb..0000000000 --- a/.idea/.idea.perfect-world-unity/.idea/indexLayout.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/.idea.perfect-world-unity/.idea/projectSettingsUpdater.xml b/.idea/.idea.perfect-world-unity/.idea/projectSettingsUpdater.xml deleted file mode 100644 index ef20cb08cd..0000000000 --- a/.idea/.idea.perfect-world-unity/.idea/projectSettingsUpdater.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/.idea.perfect-world-unity/.idea/workspace.xml b/.idea/.idea.perfect-world-unity/.idea/workspace.xml deleted file mode 100644 index 85b3df73df..0000000000 --- a/.idea/.idea.perfect-world-unity/.idea/workspace.xml +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1757057210233 - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset index 8f362706ab..f54bae7284 100644 --- a/Assets/AddressableAssetsData/AddressableAssetSettings.asset +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -15,7 +15,7 @@ MonoBehaviour: m_DefaultGroup: 712e3991f28e549e7a56ee582a977810 m_currentHash: serializedVersion: 2 - Hash: 00000000000000000000000000000000 + Hash: b784dddf0899262809f507f77ce90583 m_OptimizeCatalogSize: 0 m_BuildRemoteCatalog: 0 m_CatalogRequestsTimeout: 0 diff --git a/Assets/NetworkLib.meta b/Assets/NetworkLib.meta new file mode 100644 index 0000000000..5b4e6dc27e --- /dev/null +++ b/Assets/NetworkLib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95c82a23114631b428b9fff51c373a39 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NetworkLib/Debug.meta b/Assets/NetworkLib/Debug.meta new file mode 100644 index 0000000000..a8ef706c49 --- /dev/null +++ b/Assets/NetworkLib/Debug.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bac3638b875256b479fb1e463c6e213d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NetworkLib/Debug/netstandard2.1.meta b/Assets/NetworkLib/Debug/netstandard2.1.meta new file mode 100644 index 0000000000..d87e17ade3 --- /dev/null +++ b/Assets/NetworkLib/Debug/netstandard2.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 464b57f0bb61a1143a27580c5fe83dca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Prefab.meta b/Assets/PerfectWorld/Prefab.meta new file mode 100644 index 0000000000..bd48c05ec2 --- /dev/null +++ b/Assets/PerfectWorld/Prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd9dd347b6fd0d0448728c426759cd2e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Prefab/HUD.prefab b/Assets/PerfectWorld/Prefab/HUD.prefab new file mode 100644 index 0000000000..f4aace2cc8 --- /dev/null +++ b/Assets/PerfectWorld/Prefab/HUD.prefab @@ -0,0 +1,1142 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &517904720983784571 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4368626321871940460} + - component: {fileID: 2266026641417794312} + - component: {fileID: 5335503683694560306} + m_Layer: 5 + m_Name: ManaImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4368626321871940460 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517904720983784571} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3992890073798626326} + m_Father: {fileID: 6806681442789174374} + 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: 40.1, y: -13.9} + m_SizeDelta: {x: 244, y: 13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2266026641417794312 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517904720983784571} + m_CullTransparentMesh: 1 +--- !u!114 &5335503683694560306 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517904720983784571} + 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: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7bf1ef4f98c0dee419cfb9127e7e5818, type: 3} + m_Type: 0 + 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 &974102734944724072 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8575537839465846660} + - component: {fileID: 9173523129545024395} + - component: {fileID: 3984476637502251390} + m_Layer: 5 + m_Name: ExpText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8575537839465846660 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 974102734944724072} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5777532589522199890} + 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, y: 0} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9173523129545024395 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 974102734944724072} + m_CullTransparentMesh: 1 +--- !u!114 &3984476637502251390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 974102734944724072} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 100% + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1206081263085839492 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4940661028721112619} + - component: {fileID: 1308048038456201286} + - component: {fileID: 8867137494968155958} + m_Layer: 5 + m_Name: LevelText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4940661028721112619 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206081263085839492} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8118804085881780215} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 3.6} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1308048038456201286 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206081263085839492} + m_CullTransparentMesh: 1 +--- !u!114 &8867137494968155958 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206081263085839492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 105 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 25 + m_fontSizeBase: 25 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1327388134249139498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2197988886818318685} + - component: {fileID: 1084018795101285839} + - component: {fileID: 6006331445413644439} + m_Layer: 5 + m_Name: AvatatarUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2197988886818318685 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327388134249139498} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2891120192736919771} + m_Father: {fileID: 6806681442789174374} + 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, y: 5.9} + m_SizeDelta: {x: 461, y: 133} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1084018795101285839 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327388134249139498} + m_CullTransparentMesh: 1 +--- !u!114 &6006331445413644439 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327388134249139498} + 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: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: aa88fae966836174fa9e918a12cf3f3b, type: 3} + m_Type: 0 + 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 &2621599687005268648 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 534925566466250660} + - component: {fileID: 6407790034284267145} + - component: {fileID: 8086917028654197348} + m_Layer: 5 + m_Name: HealthImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &534925566466250660 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2621599687005268648} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2224911469552029187} + m_Father: {fileID: 6806681442789174374} + 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: 62.3, y: 6.3} + m_SizeDelta: {x: 274, y: 13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6407790034284267145 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2621599687005268648} + m_CullTransparentMesh: 1 +--- !u!114 &8086917028654197348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2621599687005268648} + 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: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 320a54deb1692314bb12d0ed72635ad1, type: 3} + m_Type: 0 + 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 &3087718937344452328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8118804085881780215} + - component: {fileID: 7423197018078382773} + - component: {fileID: 2198421068187600632} + m_Layer: 5 + m_Name: LevelImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8118804085881780215 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3087718937344452328} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4940661028721112619} + m_Father: {fileID: 6806681442789174374} + 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: -213.8, y: -23.2} + m_SizeDelta: {x: 62, y: 62} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7423197018078382773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3087718937344452328} + m_CullTransparentMesh: 1 +--- !u!114 &2198421068187600632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3087718937344452328} + 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: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: a034057f2077d9d4d9408ee854ce6a60, type: 3} + m_Type: 0 + 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 &3311234641760367388 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5777532589522199890} + - component: {fileID: 4576936668814888857} + - component: {fileID: 3414706020273276291} + m_Layer: 5 + m_Name: ExpImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5777532589522199890 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3311234641760367388} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8575537839465846660} + m_Father: {fileID: 6806681442789174374} + 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: 2.3, y: -33.9} + m_SizeDelta: {x: 199, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4576936668814888857 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3311234641760367388} + m_CullTransparentMesh: 1 +--- !u!114 &3414706020273276291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3311234641760367388} + 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: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 61e9943fc4f2c7b418919d61e58f415c, type: 3} + m_Type: 0 + 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 &4131166278565359271 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2891120192736919771} + - component: {fileID: 4940149776777522924} + - component: {fileID: 1464374634028484465} + m_Layer: 5 + m_Name: NamePlayerText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2891120192736919771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4131166278565359271} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2197988886818318685} + 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: 30.7, y: 27.8} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4940149776777522924 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4131166278565359271} + m_CullTransparentMesh: 1 +--- !u!114 &1464374634028484465 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4131166278565359271} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Hoang + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 30 + m_fontSizeBase: 30 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: -70.62712, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4823752405346273106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6806681442789174374} + - component: {fileID: 3549955056024652669} + - component: {fileID: 5615975604488516553} + m_Layer: 5 + m_Name: HUD + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6806681442789174374 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4823752405346273106} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2197988886818318685} + - {fileID: 534925566466250660} + - {fileID: 4368626321871940460} + - {fileID: 5777532589522199890} + - {fileID: 8118804085881780215} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 275.1, y: -110.3} + m_SizeDelta: {x: 461, y: 133} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3549955056024652669 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4823752405346273106} + m_CullTransparentMesh: 1 +--- !u!114 &5615975604488516553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4823752405346273106} + 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} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + 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 &4933898273451627870 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2224911469552029187} + - component: {fileID: 503557315038355089} + - component: {fileID: 6583662924878292146} + m_Layer: 5 + m_Name: HealthText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2224911469552029187 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4933898273451627870} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 534925566466250660} + 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, y: 0} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &503557315038355089 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4933898273451627870} + m_CullTransparentMesh: 1 +--- !u!114 &6583662924878292146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4933898273451627870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 1500/1500 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8054530446250643719 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3992890073798626326} + - component: {fileID: 4604439120824836270} + - component: {fileID: 5872129684784782099} + m_Layer: 5 + m_Name: ManaText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3992890073798626326 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8054530446250643719} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4368626321871940460} + 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, y: 0} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4604439120824836270 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8054530446250643719} + m_CullTransparentMesh: 1 +--- !u!114 &5872129684784782099 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8054530446250643719} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 1500/1500 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/PerfectWorld/Prefab/HUD.prefab.meta b/Assets/PerfectWorld/Prefab/HUD.prefab.meta new file mode 100644 index 0000000000..4bc6da36ca --- /dev/null +++ b/Assets/PerfectWorld/Prefab/HUD.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 76408ccdbeb4c654291462fcff24a8c5 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Prefab/HUDNPC.prefab b/Assets/PerfectWorld/Prefab/HUDNPC.prefab new file mode 100644 index 0000000000..0e939974bb --- /dev/null +++ b/Assets/PerfectWorld/Prefab/HUDNPC.prefab @@ -0,0 +1,689 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1273460584854605297 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8841982213385894347} + - component: {fileID: 1981970930610958667} + - component: {fileID: 2949641406655472012} + m_Layer: 5 + m_Name: AvatarNPCFrame + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8841982213385894347 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273460584854605297} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7601428160728630082} + 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: -160, y: -42} + m_SizeDelta: {x: 123, y: 123} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1981970930610958667 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273460584854605297} + m_CullTransparentMesh: 1 +--- !u!114 &2949641406655472012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273460584854605297} + 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: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: db18cbc4c576c7145862557ebdd51721, type: 3} + m_Type: 0 + 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 &5010991128992349155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7601428160728630082} + - component: {fileID: 9105272519104429228} + m_Layer: 5 + m_Name: HUDNPC + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7601428160728630082 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5010991128992349155} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.8888889, y: 0.8888889, z: 0.8888889} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7183588826468540253} + - {fileID: 8841982213385894347} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -50} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9105272519104429228 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5010991128992349155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d072871c8791e284dbad61ce13ba6887, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &5230218528339883288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7183588826468540253} + - component: {fileID: 6172505155667263140} + - component: {fileID: 3698845693087953935} + m_Layer: 5 + m_Name: InfoNPCFrame + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7183588826468540253 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5230218528339883288} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3267022032878559059} + - {fileID: 32787377066272636} + - {fileID: 1333050478342715942} + m_Father: {fileID: 7601428160728630082} + 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: 22, y: -42.000004} + m_SizeDelta: {x: 336, y: 95} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6172505155667263140 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5230218528339883288} + m_CullTransparentMesh: 1 +--- !u!114 &3698845693087953935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5230218528339883288} + 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: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 82ad58252b552294bafd78600e329adf, type: 3} + m_Type: 0 + 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 &7164650417342813199 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3267022032878559059} + - component: {fileID: 3703095907353088660} + - component: {fileID: 391766345810538963} + m_Layer: 5 + m_Name: HealthNPCBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3267022032878559059 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7164650417342813199} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6650353791342631994} + m_Father: {fileID: 7183588826468540253} + 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, y: 28.5} + m_SizeDelta: {x: 313, y: 21} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3703095907353088660 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7164650417342813199} + m_CullTransparentMesh: 1 +--- !u!114 &391766345810538963 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7164650417342813199} + 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: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 9ef86922851818c4e9e58040f51c491f, type: 3} + m_Type: 0 + 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 &7483462528009603224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6650353791342631994} + - component: {fileID: 8071545074518398122} + - component: {fileID: 8148604647689649493} + m_Layer: 5 + m_Name: HealthText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6650353791342631994 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7483462528009603224} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3267022032878559059} + 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, y: 0} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8071545074518398122 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7483462528009603224} + m_CullTransparentMesh: 1 +--- !u!114 &8148604647689649493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7483462528009603224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 100% + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 22 + m_fontSizeBase: 22 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8058160227183985436 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 32787377066272636} + - component: {fileID: 6237368962895350952} + - component: {fileID: 8459104239633154731} + m_Layer: 5 + m_Name: NPCNameText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &32787377066272636 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8058160227183985436} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7183588826468540253} + 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, y: -1.6} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6237368962895350952 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8058160227183985436} + m_CullTransparentMesh: 1 +--- !u!114 &8459104239633154731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8058160227183985436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Chu tiem tap hoa + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278301439 + m_fontColor: {r: 1, g: 0.6982597, b: 0.0047169924, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 23 + m_fontSizeBase: 23 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8340737021475261245 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1333050478342715942} + - component: {fileID: 1511151077524208679} + - component: {fileID: 7225922753763360209} + m_Layer: 5 + m_Name: StatText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1333050478342715942 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8340737021475261245} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7183588826468540253} + 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, y: -26} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1511151077524208679 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8340737021475261245} + m_CullTransparentMesh: 1 +--- !u!114 &7225922753763360209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8340737021475261245} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "Kh\xF4ng" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/PerfectWorld/Prefab/HUDNPC.prefab.meta b/Assets/PerfectWorld/Prefab/HUDNPC.prefab.meta new file mode 100644 index 0000000000..12ef22c3a9 --- /dev/null +++ b/Assets/PerfectWorld/Prefab/HUDNPC.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7130d91d43d72c145a379b373c8c27b0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Prefab/UI.meta b/Assets/PerfectWorld/Prefab/UI.meta new file mode 100644 index 0000000000..1545e4c037 --- /dev/null +++ b/Assets/PerfectWorld/Prefab/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64cc3f3f3f7aa254c9df21dc1a27b5ed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scene/Boostrap.unity b/Assets/PerfectWorld/Scene/Boostrap.unity index 3b2550c1df..202bdef669 100644 --- a/Assets/PerfectWorld/Scene/Boostrap.unity +++ b/Assets/PerfectWorld/Scene/Boostrap.unity @@ -1,592 +1,3 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 10 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 13 - m_BakeOnSceneLoad: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 1 - m_PVRFilteringGaussRadiusAO: 1 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 3 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - buildHeightMesh: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &105404090 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 105404091} - - component: {fileID: 105404092} - m_Layer: 0 - m_Name: Boostrap - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &105404091 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 105404090} - serializedVersion: 2 - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &105404092 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 105404090} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2781611f0f83bf54290a9ec600543440, type: 3} - m_Name: - m_EditorClassIdentifier: - _nextSceneName: LoginScene ---- !u!1001 &506356661 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 132536, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_Name - value: IngameDebugConsole - objectReference: {fileID: 0} - - target: {fileID: 11490438, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_IgnoreReversedGraphics - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 22426080, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22426080, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 958269219681220773, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 2369662702609791303, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 4760950775166374324, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 5379786813386287946, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 6275684029659916475, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 7682126221316033537, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 7917212057380179541, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 8026934286120355878, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 8276117061088563291, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - - target: {fileID: 8949468901311314302, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - propertyPath: 'm_ActiveFontFeatures.Array.data[0]' - value: 1801810542 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} ---- !u!1 &591506935 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 591506937} - - component: {fileID: 591506936} - - component: {fileID: 591506938} - m_Layer: 0 - m_Name: GameSession - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &591506936 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 591506935} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c9177aa9fcd28a94b9042f8a89fdac2d, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &591506937 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 591506935} - serializedVersion: 2 - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &591506938 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 591506935} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 96073aa22df0eda49b4d56c0580aa806, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1654552490 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1654552492} - - component: {fileID: 1654552491} - m_Layer: 0 - m_Name: AutoIniializer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1654552491 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1654552490} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ddf01aaf66ec43f2bc9deda891a457d3, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1654552492 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1654552490} - serializedVersion: 2 - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1660057539 &9223372036854775807 -SceneRoots: - m_ObjectHideFlags: 0 - m_Roots: - - {fileID: 1654552492} - - {fileID: 591506937} - - {fileID: 105404091} - - {fileID: 506356661} +version https://git-lfs.github.com/spec/v1 +oid sha256:d367fa56162cf045cb9f046aa3953821a7011bb15c33b5a2beaaba5283f5e2d9 +size 21448 diff --git a/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs b/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs index 64372d9cd9..b3bea36612 100644 --- a/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs +++ b/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs @@ -45,11 +45,19 @@ namespace BrewMonster.Scripts { return _loadedAssets[assetPath].Result; } - - var handle = Addressables.LoadAssetAsync(assetPath); - await handle.Task; - _loadedAssets[assetPath] = handle; - return handle.Result; + + try + { + var handle = Addressables.LoadAssetAsync(assetPath); + await handle.Task; + _loadedAssets[assetPath] = handle; + return handle.Result; + } + catch (System.Exception e) + { + BMLogger.LogError(e.StackTrace); + return null; + } } /// diff --git a/Assets/PerfectWorld/Scripts/Boostrap/BoostrapSceneController.cs b/Assets/PerfectWorld/Scripts/Boostrap/BoostrapSceneController.cs index 668a6dd21d..9b9882fe21 100644 --- a/Assets/PerfectWorld/Scripts/Boostrap/BoostrapSceneController.cs +++ b/Assets/PerfectWorld/Scripts/Boostrap/BoostrapSceneController.cs @@ -17,7 +17,11 @@ namespace BrewMonster private void LoadNextScene() { +#if TESTFAST + SceneManager.LoadSceneAsync(_nextSceneName,LoadSceneMode.Additive); +#else SceneManager.LoadScene(_nextSceneName); +#endif } } } \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Common/LookAtCamera.cs b/Assets/PerfectWorld/Scripts/Common/LookAtCamera.cs index a4a88a30ed..c6eb6a94ab 100644 --- a/Assets/PerfectWorld/Scripts/Common/LookAtCamera.cs +++ b/Assets/PerfectWorld/Scripts/Common/LookAtCamera.cs @@ -17,7 +17,7 @@ public class LookAtCamera : MonoBehaviour [Tooltip("Kiểu xoay theo hướng camera.")] public LookMode mode = LookMode.LookAt; - void LateUpdate() + private void Start() { if (targetCamera == null) { @@ -27,6 +27,9 @@ public class LookAtCamera : MonoBehaviour if (targetCamera == null && Camera.main != null) targetCamera = Camera.main; } + } + void LateUpdate() + { if (targetCamera == null) return; @@ -34,6 +37,7 @@ public class LookAtCamera : MonoBehaviour { case LookMode.LookAt: transform.LookAt(targetCamera.transform); + transform.Rotate(0, 180f, 0); // 👈 đảo mặt để chữ quay đúng hướng break; case LookMode.LookAway: diff --git a/Assets/PerfectWorld/Scripts/GameData/EC_RoleType.cs b/Assets/PerfectWorld/Scripts/GameData/EC_RoleType.cs index 2bcb97ce76..d8e7ee6313 100644 --- a/Assets/PerfectWorld/Scripts/GameData/EC_RoleType.cs +++ b/Assets/PerfectWorld/Scripts/GameData/EC_RoleType.cs @@ -53,7 +53,7 @@ public struct ROLEEXTPROP public ROLEEXTPROP_ATK ak; public ROLEEXTPROP_DEF df; - int max_ap; + public int max_ap; public ROLEEXTPROP(bool initialize = true) { bs = new ROLEEXTPROP_BASE(); diff --git a/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs b/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs index 8dfc5b0c3d..c85f8e82a8 100644 --- a/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs +++ b/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs @@ -281,11 +281,8 @@ public class CECNPCMan : IMsgHandler { case CommandID.NPC_INFO_LIST: { - - // msg.dwParam1 chính là buffer chứa placeholder data (không có header cmd_npc_info_list) - cmd_npc_info_list pCmd = MemoryMarshal.Read( - ((byte[])msg.dwParam1).AsSpan()); + cmd_npc_info_list pCmd = MemoryMarshal.Read(((byte[])msg.dwParam1).AsSpan()); int offset = Marshal.OffsetOf("placeholder").ToInt32(); byte[] buffer = (byte[])msg.dwParam1; @@ -340,6 +337,7 @@ public class CECNPCMan : IMsgHandler } case CommandID.NPC_INFO_00: { + BMLogger.LogError("HoangDev: NPCMAN NPC_INFO_00"); var buffer = (byte[])msg.dwParam1; cmd_npc_info_00 pCmd = GPDataTypeHelper.FromBytes(buffer); //cmd_npc_info_00 pCmd = MemoryMarshal.Read(buffer.AsSpan(0, cmd_npc_info_00.)); @@ -352,6 +350,7 @@ public class CECNPCMan : IMsgHandler bp.iCurHP = pCmd.iHP; ep.bs.max_hp = pCmd.iMaxHP; pNPC.SetSelectedTarget(pCmd.iTargetID); + EventBus.Publish(new NPCINFO(pNPC.GetName(),pCmd.iHP,pCmd.iMaxHP)); } break; } @@ -440,7 +439,6 @@ public class CECNPCMan : IMsgHandler tid = 4249; dataType = edm.get_data_type((uint)tid, ID_SPACE.ID_SPACE_ESSENCE); } - BMLogger.LogError("HoangDev: CreateNPC TID = " + tid.ToString() + " DataType= " + (DATA_TYPE)dataType + " bPet: "+ bPet); if (bPet) { //pNPC = new CECPet(this); diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs index f8531917e2..3f4af13bfb 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs @@ -413,7 +413,7 @@ namespace BrewMonster.Scripts { if (pWorkMove.GetAutoMove()) { - //pWorkMove.Finish(); + pWorkMove.Finish(); } else { @@ -606,6 +606,67 @@ namespace BrewMonster.Scripts StartAwaitingWorks(); } } + + public bool IsFollowing() + { + return IsWorkRunning(CECHPWork.Host_work_ID.WORK_FOLLOW); + } + + public bool IsMovingToPosition() + { + return IsWorkRunning(CECHPWork.Host_work_ID.WORK_MOVETOPOS); + } + + public bool IsTracing() + { + return IsWorkRunning(CECHPWork.Host_work_ID.WORK_TRACEOBJECT); + } + + bool IsWorkRunning(int iWorkID) + { + bool result = false; + if (ValidatePriority(m_iCurPriority)) + { + WorkList workList = m_WorkStack[m_iCurPriority]; + if(workList != null) + { + for (int i = 0; i < workList.Count; ++i) + { + if (iWorkID == workList[i].GetWorkID()) + { + result = true; + break; + } + } + } + } + return result; + } + + public void FinishRunningWork(int idWork) + { + if (!IsWorkRunning(idWork)) + { + return; + } + WorkList workList = m_WorkStack[m_iCurPriority]; + if(workList != null) + { + for (int i = 0; i < workList.Count;) + { + if (workList[i].GetWorkID() != idWork) + { + ++i; + continue; + } + KillWork(m_iCurPriority, i); + } + if (workList == null) + { + StartAwaitingWorks(); + } + } + } } public abstract class CECHPWorkPostTickCommand diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs index 14ad942f18..20a1ccd25c 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs @@ -62,7 +62,7 @@ namespace BrewMonster.Scripts m_vMoveDest = vMoveDest; m_bHaveDest = true; m_bGliding = false; - //m_pHost->SetAdjustOrient(false); // 2014-9-10 ÐìÎıò£ºÔÚ CECHPWorkMove ´´½¨µÄʱºò¶¼»áµ÷Óô˺¯Êý£¬»áµ¼ÖÂÆäËüʱ»úͨ¹ý SetDestDirAndUp µ÷ÓöÔÈËÎïµÄ³¯Ïòµ÷ÕûʧЧ¡£ + //m_pHost.SetAdjustOrient(false); // 2014-9-10 ÐìÎıò£ºÔÚ CECHPWorkMove ´´½¨µÄʱºò¶¼»áµ÷Óô˺¯Êý£¬»áµ¼ÖÂÆäËüʱ»úͨ¹ý SetDestDirAndUp µ÷ÓöÔÈËÎïµÄ³¯Ïòµ÷ÕûʧЧ¡£ // ÖØÏÖ·½·¨Îª£ºÔÂÏÉ¡°ÍûÔÂÓ½¡±¼¼ÄÜÊͷźó¡¢ÂíÉϰ´×¡'A'»ò'D'µÈÒÆ¶¯¼ü²¢Þôס²»·Å£¬½«µ¼ÖÂÈËÎïÊ©·¨·½ÏòÆ«ÀëÄ¿±ê¶ø³¯ÏòÒÆ¶¯·½Ïò£¨Ðè¶à´Î³¢ÊÔ£© //Çå¿ÕÈÎÎñÐÅÏ¢ @@ -92,7 +92,7 @@ namespace BrewMonster.Scripts else if (IsAutoPF()) { // TO DO: fix later - //m_vCurDir = CECIntelligentRoute::Instance().GetCurDest() - m_pHost->GetPos(); + //m_vCurDir = CECIntelligentRoute::Instance().GetCurDest() - m_pHost.GetPos(); //m_vCurDir.y = 0.0f; //m_vCurDir.Normalize(); //if (m_bUseAutoMoveDialog) @@ -181,7 +181,7 @@ namespace BrewMonster.Scripts // if (m_iNPCTempleId) // { // CECNPC pNPC = g_pGame.GetGameRun().GetWorld().GetNPCMan().FindNPCByTempleID(m_iNPCTempleId); - // if (pNPC && m_pHost.SelectTarget(pNPC->GetNPCID())) + // if (pNPC && m_pHost.SelectTarget(pNPC.GetNPCID())) // { // CECHPWorkTrace pWork = m_pWorkMan.CreateNPCTraceWork(pNPC, m_iTaskId); // if (pWork) @@ -203,15 +203,15 @@ namespace BrewMonster.Scripts // if (!m_pHost.IsJumping() && !m_pHost.IsPlayingAction(CECPlayer::ACT_TRICK_RUN) && // m_pHost.m_iMoveMode != CECPlayer::MOVE_SLIDE && !m_bMeetSlide) // { - // int iAction = m_pHost->GetMoveStandAction(true); + // int iAction = m_pHost.GetMoveStandAction(true); // m_pHost.PlayAction(iAction, false); // } // Tick_Walk(fDeltaTime); //} - //else // (m_pHost->m_iMoveEnv == CECPlayer::MOVEENV_AIR || m_pHost->m_iMoveEnv == CECPlayer::MOVEENV_WATER) + //else // (m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_AIR || m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_WATER) //{ - // m_pHost->ResetJump(); + // m_pHost.ResetJump(); // // Play appropriate actions // if (!m_bGliding) @@ -273,9 +273,33 @@ namespace BrewMonster.Scripts bool IsAutoPF() { return m_iDestType == Types.DEST_AUTOPF; } // Finish work - void Finish() + public void Finish() { + m_bFinished = true; + Cancel(); + // Close 'Win_AutoPlay' dialog if it exists + //CECGameUIMan* pGameUI = g_pGame.GetGameRun().GetUIManager().GetInGameUIMan(); + //pGameUI.AutoMoveShowDialog(false); + + if (m_bUseAutoMoveDialog) + { + if (m_bAutoLand) + { + m_bAutoLand = false; + //if (g_pGame.GetGameRun().GetHostPlayer().IsFlying()) + // g_pGame.GetGameRun().GetHostPlayer().CmdFly(false); + } + + m_bUseAutoMoveDialog = false; + m_fAutoHeight = -1.0f; + m_bAutoFly = false; + m_bReachedHeight = true; + } + + //Çå¿ÕÈÎÎñ×·×ÙÊý¾Ý + m_iNPCTempleId = 0; + m_iTaskId = 0; } void SetTaskNPCInfo(int tid, int taskid) @@ -288,8 +312,8 @@ namespace BrewMonster.Scripts //int tid, taskid; //tid = m_iNPCTempleId; //taskid = m_iTaskId; - //CECGameUIMan* pGameUI = g_pGame->GetGameRun()->GetUIManager()->GetInGameUIMan(); - //pGameUI->SetAutoMoveShowDialogTarget((int)m_vMoveDest.x, (int)m_vMoveDest.z); + //CECGameUIMan* pGameUI = g_pGame.GetGameRun().GetUIManager().GetInGameUIMan(); + //pGameUI.SetAutoMoveShowDialogTarget((int)m_vMoveDest.x, (int)m_vMoveDest.z); //SetDestination(CECHPWorkMove::DEST_2D, m_vMoveDest); //SetTaskNPCInfo(tid, taskid); //SetUseAutoMoveDialog(true); @@ -346,12 +370,12 @@ namespace BrewMonster.Scripts // bool bSwitchTo2D(true); // while (true) // { - // if (m_pHost->IsFlying()) + // if (m_pHost.IsFlying()) // { // break; // } - // CECHostBrushTest brushTester(m_pHost->GetPos(), m_pHost->m_CDRInfo.vExtent, m_pHost->m_CDRInfo.fStepHeight); - // if (CECIntelligentRoute::Instance().Search(m_pHost->GetPos(), m_vMoveDest, &brushTester) != CECIntelligentRoute::enumSearchSuccess) + // CECHostBrushTest brushTester(m_pHost.GetPos(), m_pHost.m_CDRInfo.vExtent, m_pHost.m_CDRInfo.fStepHeight); + // if (CECIntelligentRoute::Instance().Search(m_pHost.GetPos(), m_vMoveDest, &brushTester) != CECIntelligentRoute::enumSearchSuccess) // { // break; // } diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkTrace.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkTrace.cs index d1b38189aa..d15c4ca942 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkTrace.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkTrace.cs @@ -152,11 +152,11 @@ public abstract class CECTracedObject fTouchRadius = pNPC.GetTouchRadius(); return m_pHost.CanTouchTarget(vHostPos, vTargetPos, fTouchRadius, iTouchReason, fMaxCut); } - //else if (GPDataTypeHelper.ISMATTERID(m_iObjectId)) - //{ - // CECMatter pMatter = (pObject) as CECMatter; - // return pMatter.CalcDist(vHostPos, true) < pMatter.GetGatherDist(); - //} + else if (GPDataTypeHelper.ISMATTERID(m_iObjectId)) + { + //CECMatter pMatter = (pObject) as CECMatter; + //return pMatter.CalcDist(vHostPos, true) < pMatter.GetGatherDist(); + } break; } return false; @@ -527,7 +527,7 @@ public class CECHPWorkTrace : CECHPWork // Change trace target //void ChangeTarget(int idTarget, int iReason, bool bUseAutoPF=false); - // É趨traceobject + // �趨traceobject public void SetTraceTarget(CECTracedObject pTraceObj, bool bUseAutoPF = false) { ResetUseAutoPF(bUseAutoPF); @@ -603,11 +603,11 @@ public class CECHPWorkTrace : CECHPWork { OnTouchTarget(); return true; - //if (m_pTraceObject.CanTouchFrom(m_pHost.GetPos())) - //{ - // OnTouchTarget(); - // return true; - //} + if (m_pTraceObject.CanTouchFrom(m_pHost.GetPos() + new A3DVECTOR3(0f, m_pHost.m_CDRInfo.vExtent.y, 0f))) + { + OnTouchTarget(); + return true; + } } } m_bCheckTouch = true; @@ -786,13 +786,13 @@ public class CECHPWorkTrace : CECHPWork protected bool m_bMoreClose; // Move close flag protected bool m_bForceAttack; // Force attack flag protected CECSkill m_pPrepSkill; // Skill prepared to be casted - protected bool m_bActionDone; // Ä¿±êÐÐΪ³É¹¦·¢³ö + protected bool m_bActionDone; // Ŀ����Ϊ�ɹ����� protected bool m_bShouldResetUseAutoPF; protected bool m_bUseAutoPFResetValue; protected bool m_bUseAutoPF; // Use CECIntelligentRoute::Search - protected uint m_dwAutoPFNextCheckTime; // Ï´μì²éʱ¼ä + protected uint m_dwAutoPFNextCheckTime; // �´μ��ʱ�� - protected CECTracedObject m_pTraceObject; // ¶¨ÒåtraceÄ¿±ê¶ÔÏó + protected CECTracedObject m_pTraceObject; // ����traceĿ����� // Operations @@ -829,6 +829,7 @@ public class CECHPWorkTrace : CECHPWork vCurPos = m_pHost.m_MoveCtrl.GroundMove(m_vCurDirH, m_pHost.GetGroundSpeed(), fDeltaTime); if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3) { + Debug.LogError("SendStopMoveCmd"); m_pHost.m_MoveCtrl.SetSlideLock(true); m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), m_pHost.GetGroundSpeed(), (int)GPMoveMode.GP_MOVE_SLIDE); m_bFinished = true; @@ -840,6 +841,7 @@ public class CECHPWorkTrace : CECHPWork //{ // CECIntelligentRoute::Instance().OnPlayerPosChange(vCurPos); //} + Debug.LogError("SendMoveCmd"); m_pHost.m_MoveCtrl.SendMoveCmd(vCurPos, 2, GPDataTypeHelper.g_vOrigin, EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity), (int)GPMoveMode.GP_MOVE_SLIDE); } } @@ -875,7 +877,7 @@ public class CECHPWorkTrace : CECHPWork } vCurPos = m_pHost.m_MoveCtrl.GroundMove(m_vCurDirH, m_pHost.GetGroundSpeed(), fDeltaTime, m_pHost.m_fVertSpeed); - Debug.LogError(vCurPos); + m_pHost.SetPos(EC_Utility.ToVector3(vCurPos)); //if (GetUseAutoPF() && CECIntelligentRoute::Instance().IsMoveOn()) //{ @@ -892,11 +894,15 @@ public class CECHPWorkTrace : CECHPWork if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3) { - // m_pHost.m_MoveCtrl.SendStopMoveCmd(vCurPos, m_pHost.GetGroundSpeed(), iMoveMode); + Debug.LogError("SendStopMoveCmd"); + m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), m_pHost.GetGroundSpeed(), iMoveMode); PressCancel(); } else + { + Debug.LogError("SendMoveCmd"); m_pHost.m_MoveCtrl.SendMoveCmd(vCurPos, 0, vTargetPos, EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity), iMoveMode); + } } else // m_bMeetSlide == true { diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs index b2d1402019..4a4609027c 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs @@ -30,6 +30,7 @@ namespace PerfectWorld.Scripts.Managers if (Msg.iSubID == 0) { if (GameController.Instance == null) return true; + if (GameController.Instance.GetHostPlayer() == null) return true; GameController.Instance.GetHostPlayer().ProcessMessage(Msg); } else if (Msg.iSubID < 0) diff --git a/Assets/PerfectWorld/Scripts/Move/CECHostMove.cs b/Assets/PerfectWorld/Scripts/Move/CECHostMove.cs index 46e401f0b8..a74a9fdf34 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECHostMove.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECHostMove.cs @@ -9,6 +9,7 @@ using System.Collections.Generic; using System.Runtime.ConstrainedExecution; using System.Security.Cryptography; using System.Text; +using BrewMonster; using UnityEngine; public class CECHostMove @@ -144,6 +145,7 @@ public class CECHostMove } public void SendMoveCmd(in Vector3 vCurPos, in Vector3 vVel, int iMoveMode, bool bForceSend = false) { + Vector3 vMoveDir = vVel; float fSpeed = vMoveDir.magnitude; SendMoveCmd(vCurPos, fSpeed, iMoveMode, bForceSend); @@ -168,7 +170,6 @@ public class CECHostMove void SendMoveCmd(in Vector3 vCurPos, float fSpeed, int iMoveMode, bool bForceSend) { - if (m_bStop) { // m_CmdTimeCnt.Reset(); diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index 1fd54cfcd3..5a78826190 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -20,103 +20,105 @@ public abstract class CECPlayer : CECObject [SerializeField] internal INFO m_PlayerInfo; protected GameObject _pPlayerModel; protected float rotationSpeed = 5; - internal int m_iMoveMode; // Player's move mode + internal int m_iMoveMode; // Player's move mode internal int m_idSelTarget; protected int m_iShape; // Ñ¡ÖÃÄ¿±êµÄID - protected uint m_dwStates; // Player's basic states + protected uint m_dwStates; // Player's basic states protected uint m_uAttackType; protected int[] m_aEquips; - protected ROLEEXTPROP m_ExtProps; // Extend properties + protected ROLEEXTPROP m_ExtProps; // Extend properties protected int m_iFashionWeaponType; - protected float m_fTouchRad = 0.3f; // Touch radius + protected float m_fTouchRad = 0.3f; // Touch radius protected bool m_bWeaponAttached; - protected int m_iBattleCamp = Player_camp_in_battle.GP_BATTLE_CAMP_NONE; // Battle this player belongs to - byte m_factionPVPMask; // pvp mask - protected uint m_dwResFlags; // pvp mask + protected bool m_bFight; + protected int m_iBattleCamp = Player_camp_in_battle.GP_BATTLE_CAMP_NONE; // Battle this player belongs to + byte m_factionPVPMask; // pvp mask + protected uint m_dwResFlags; // pvp mask protected ROLEBASICPROP m_BasicProps; - public int m_iMoveEnv = Move_environment.MOVEENV_GROUND; // Move environment + public int m_iMoveEnv = Move_environment.MOVEENV_GROUND; // Move environment public bool m_bWalkRun; - public A3DAABB m_aabbServer = new A3DAABB(); // Óë·þÎñÆ÷±£³ÖÒ»ÖµÄaabb£¬ ²»ÊÜËõ·ÅÓ°Ãì - public A3DAABB m_aabb = new A3DAABB(); // Player's aabb£¬ÓÃÓÚÃÔʾµÄaabb£¬ÊÜËõ·ÅÓ°Ãì - public int m_iProfession; // Profession + public A3DAABB m_aabbServer = new A3DAABB(); // Óë·þÎñÆ÷±£³ÖÒ»ÖµÄaabb£¬ ²»ÊÜËõ·ÅÓ°Ãì + public A3DAABB m_aabb = new A3DAABB(); // Player's aabb£¬ÓÃÓÚÃÔʾµÄaabb£¬ÊÜËõ·ÅÓ°Ãì + public int m_iProfession; // Profession public float m_fScaleBySkill; - public int m_iGender; // Gender + public int m_iGender; // Gender protected bool m_bFashionMode; public bool m_bShowWeapon; private QueueActionEvent queueActionEvent; + protected static PLAYER_LEVELEXP_CONFIG _player_levelup_exp; protected int NUM_WEAPON_TYPE = 15; public static readonly int[] m_sciStateIDForStateAction = { 117 }; - public MOVECONST m_MoveConst; // Const used when moving control + public MOVECONST m_MoveConst; // Const used when moving control public MOVECONST[] aMoveConsts = new MOVECONST[PROFESSION.NUM_PROFESSION * GENDER.NUM_GENDER] - { - // ÎäÃÀ - // fStepHei fMinAirHei fMinWaterHei fShoreDepth fWaterSurf - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // ·¨Ê¦ - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // Î×ʦ - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // Ñý¾« - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // ÑýÊÞ - new MOVECONST(0.8f, 1.6f, 0.3f, 1.8f, 0.7f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - // ´Ì¿à - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // Óðâ - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // ÓðÃé - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // ½£Ãé - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // ÷ÈÃé - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // Ò¹Ó° - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - // ÔÂÃÉ - new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), - new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), - }; + { + // ÎäÃÀ + // fStepHei fMinAirHei fMinWaterHei fShoreDepth fWaterSurf + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // ·¨Ê¦ + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // Î×ʦ + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // Ñý¾« + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // ÑýÊÞ + new MOVECONST(0.8f, 1.6f, 0.3f, 1.8f, 0.7f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + // ´Ì¿à + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // Óðâ + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // ÓðÃé + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // ½£Ãé + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // ÷ÈÃé + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // Ò¹Ó° + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + // ÔÂÃÉ + new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f), + new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), + }; public A3DVECTOR3[] aExts = new A3DVECTOR3[PROFESSION.NUM_PROFESSION * GENDER.NUM_GENDER] { - new A3DVECTOR3(0.4f, 0.9f, 0.4f), // ÎäÃÀ - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ·¨Ê¦ - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Î×ʦ - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Ñý¾« - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.5f, 1.05f, 0.5f), // ÑýÊÞ - new A3DVECTOR3(0.3f, 0.9f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ´Ì¿à - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Óðâ - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÓðÃé - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ½£Ãé - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÷ÈÃé - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Ò¹Ó° - new A3DVECTOR3(0.3f, 0.85f, 0.3f), - new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÔÂÃÉ - new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.4f, 0.9f, 0.4f), // ÎäÃÀ + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ·¨Ê¦ + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Î×ʦ + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Ñý¾« + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.5f, 1.05f, 0.5f), // ÑýÊÞ + new A3DVECTOR3(0.3f, 0.9f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ´Ì¿à + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Óðâ + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÓðÃé + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ½£Ãé + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÷ÈÃé + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Ò¹Ó° + new A3DVECTOR3(0.3f, 0.85f, 0.3f), + new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÔÂÃÉ + new A3DVECTOR3(0.3f, 0.85f, 0.3f), }; protected void Awake() @@ -126,14 +128,20 @@ public abstract class CECPlayer : CECObject m_aEquips = new int[(int)IndexOfIteminEquipmentInventory.SIZE_ALL_EQUIPIVTR]; queueActionEvent = new QueueActionEvent("", null, false, null); } - public void SetUpPlayer() + + public virtual void SetUpPlayer() { m_dwResFlags = 0; + m_iFashionWeaponType = -1; + m_uAttackType = DEFAULT_ACTION_TYPE; + AttachWeapon(); } + public void SetPlayerInfor(INFO playinfo) { m_PlayerInfo = playinfo; } + public INFO GetPlayInfo() { return m_PlayerInfo; @@ -151,12 +159,25 @@ public abstract class CECPlayer : CECObject public static void InitStaticRes() { BuildActionList(); + DATA_TYPE dt = default; + _player_levelup_exp = (PLAYER_LEVELEXP_CONFIG)ElementDataManProvider.GetElementDataMan() + .get_data_ptr(202, ID_SPACE.ID_SPACE_CONFIG, ref dt); } - public bool IsDead() { return (m_dwStates & PlayerNPCState.GP_STATE_CORPSE) != 0; } + public bool IsDead() + { + return (m_dwStates & PlayerNPCState.GP_STATE_CORPSE) != 0; + } - public bool IsValidAction(int iIndex) { return (iIndex >= 0 && iIndex < (int)PLAYER_ACTION_TYPE.ACT_MAX) ? true : false; } - public int GetCharacterID() { return m_PlayerInfo.cid; } + public bool IsValidAction(int iIndex) + { + return (iIndex >= 0 && iIndex < (int)PLAYER_ACTION_TYPE.ACT_MAX) ? true : false; + } + + public int GetCharacterID() + { + return m_PlayerInfo.cid; + } private static void BuildActionList() @@ -189,7 +210,6 @@ public abstract class CECPlayer : CECObject { if (!actionMap.TryAdd(data.ActionName, data)) { - } } } @@ -215,20 +235,25 @@ public abstract class CECPlayer : CECObject } } } + public bool PlayAction(int iAction, bool bRestart = true, int iTransTime = 200, bool bQueue = false) { return PlayActionWithConfig(iAction, 0, bRestart, iTransTime, bQueue); } - public bool PlayActionWithConfig(int iAction, int actionConfigID, bool bRestart = true, int iTransTime = 200, bool bQueue = false) + + public bool PlayActionWithConfig(int iAction, int actionConfigID, bool bRestart = true, int iTransTime = 200, + bool bQueue = false) { if (iAction < 0 || iAction >= (int)PLAYER_ACTION_TYPE.ACT_MAX) { return false; } + if (actionConfigID > 0) { DATA_TYPE dt = DATA_TYPE.DT_INVALID; - var p = ElementDataManProvider.GetElementDataMan().get_data_ptr((uint)actionConfigID, ID_SPACE.ID_SPACE_CONFIG, ref dt); + var p = ElementDataManProvider.GetElementDataMan() + .get_data_ptr((uint)actionConfigID, ID_SPACE.ID_SPACE_CONFIG, ref dt); if (dt == DATA_TYPE.DT_PLAYER_ACTION_INFO_CONFIG) { PLAYER_ACTION actionConfig; @@ -238,13 +263,14 @@ public abstract class CECPlayer : CECObject } else { - } } + return PlayActionWithConfig(iAction, m_PlayerActions[iAction], bRestart, iTransTime, bQueue); } + public bool PlayActionWithConfig(int iAction, in PLAYER_ACTION actionConfig, - bool bRestart = true, int iTransTime = 200, bool bQueue = false) + bool bRestart = true, int iTransTime = 200, bool bQueue = false) { PLAYER_ACTION action = actionConfig; @@ -252,154 +278,162 @@ public abstract class CECPlayer : CECObject EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szAct)); return true; } + public static void Dispose() { _default_actions = null; _turning_actions = null; } + public struct PLAYER_ACTION { public PLAYER_ACTION_TYPE type; public PLAYER_ACTION_INFO_CONFIG data; }; - public INFO GetPlayerInfo() { return m_PlayerInfo; } + + public INFO GetPlayerInfo() + { + return m_PlayerInfo; + } + public enum PLAYER_ACTION_TYPE { // 0 - ACT_STAND = 0, // Äứng - ACT_FIGHTSTAND, // Äứng chiến đấu - ACT_WALK, // Äi bá»™ - ACT_RUN, // Chạy - ACT_JUMP_START, // Bắt đầu nhảy + ACT_STAND = 0, // Äứng + ACT_FIGHTSTAND, // Äứng chiến đấu + ACT_WALK, // Äi bá»™ + ACT_RUN, // Chạy + ACT_JUMP_START, // Bắt đầu nhảy // 5 - ACT_JUMP_LOOP, // Nhảy trên không lặp lại - ACT_JUMP_LAND, // Nhảy tiếp đất - ACT_SWIM, // BÆ¡i - ACT_HANGINWATER, // LÆ¡ lá»­ng trong nước - ACT_TAKEOFF, // Cất cánh (should be ACT_TAKEOFF_WING) + ACT_JUMP_LOOP, // Nhảy trên không lặp lại + ACT_JUMP_LAND, // Nhảy tiếp đất + ACT_SWIM, // BÆ¡i + ACT_HANGINWATER, // LÆ¡ lá»­ng trong nước + ACT_TAKEOFF, // Cất cánh (should be ACT_TAKEOFF_WING) // 10 - ACT_HANGINAIR, // Treo trên không (should be ACT_HANGINAIR_WING) - ACT_FLY, // Bay (should be ACT_FLY_WING) - ACT_FLYDOWN, // Bay xuống cao (should be ACT_FLYDOWN_WING_HIGH) - ACT_FLYDOWN_WING_LOW, // Bay xuống thấp (should be ACT_FLYDOWN_WING_LOW) - ACT_LANDON, // Hạ cánh (should be ACT_LAND_WING) + ACT_HANGINAIR, // Treo trên không (should be ACT_HANGINAIR_WING) + ACT_FLY, // Bay (should be ACT_FLY_WING) + ACT_FLYDOWN, // Bay xuống cao (should be ACT_FLYDOWN_WING_HIGH) + ACT_FLYDOWN_WING_LOW, // Bay xuống thấp (should be ACT_FLYDOWN_WING_LOW) + ACT_LANDON, // Hạ cánh (should be ACT_LAND_WING) // 15 - ACT_TAKEOFF_SWORD, // Kiếm bay - cất cánh - ACT_HANGINAIR_SWORD, // Kiếm bay - treo không trung - ACT_FLY_SWORD, // Kiếm bay - tiến tá»›i - ACT_FLYDOWN_SWORD_HIGH, // Kiếm bay - rÆ¡i cao - ACT_FLYDOWN_SWORD_LOW, // Kiếm bay - rÆ¡i thấp + ACT_TAKEOFF_SWORD, // Kiếm bay - cất cánh + ACT_HANGINAIR_SWORD, // Kiếm bay - treo không trung + ACT_FLY_SWORD, // Kiếm bay - tiến tá»›i + ACT_FLYDOWN_SWORD_HIGH, // Kiếm bay - rÆ¡i cao + ACT_FLYDOWN_SWORD_LOW, // Kiếm bay - rÆ¡i thấp // 20 - ACT_LANDON_SWORD, // Kiếm bay - hạ cánh - ACT_SITDOWN, // Ngồi - ACT_SITDOWN_LOOP, // Ngồi lặp lại - ACT_STANDUP, // Äứng dậy - ACT_WOUNDED, // Bị thương + ACT_LANDON_SWORD, // Kiếm bay - hạ cánh + ACT_SITDOWN, // Ngồi + ACT_SITDOWN_LOOP, // Ngồi lặp lại + ACT_STANDUP, // Äứng dậy + ACT_WOUNDED, // Bị thương // 25 - ACT_GROUNDDIE, // Chết trên mặt đất - ACT_GROUNDDIE_LOOP, // Chết trên đất (loop) - ACT_WATERDIE, // Chết trong nước - ACT_WATERDIE_LOOP, // Chết trong nước (loop) - ACT_AIRDIE_ST, // Chết trên không (bắt đầu) + ACT_GROUNDDIE, // Chết trên mặt đất + ACT_GROUNDDIE_LOOP, // Chết trên đất (loop) + ACT_WATERDIE, // Chết trong nước + ACT_WATERDIE_LOOP, // Chết trong nước (loop) + ACT_AIRDIE_ST, // Chết trên không (bắt đầu) // 30 - ACT_AIRDIE, // Chết trên không (loop rÆ¡i) - ACT_AIRDIE_ED, // Chết trên không (chạm đất) - ACT_AIRDIE_LAND_LOOP, // Chết rÆ¡i đất (loop) - ACT_REVIVE, // Hồi sinh - ACT_CUSTOMIZE, // Äá»™ng tác tùy chỉnh + ACT_AIRDIE, // Chết trên không (loop rÆ¡i) + ACT_AIRDIE_ED, // Chết trên không (chạm đất) + ACT_AIRDIE_LAND_LOOP, // Chết rÆ¡i đất (loop) + ACT_REVIVE, // Hồi sinh + ACT_CUSTOMIZE, // Äá»™ng tác tùy chỉnh // 35 - ACT_STRIKEBACK, // Bị đánh lùi - ACT_STRIKEDOWN, // Bị đánh ngã - ACT_STRIKEDOWN_LOOP, // Bị đánh ngã (loop) - ACT_STRIKEDOWN_STANDUP, // Bị đánh ngã rồi đứng dậy - ACT_PICKUP, // Nhặt đồ + ACT_STRIKEBACK, // Bị đánh lùi + ACT_STRIKEDOWN, // Bị đánh ngã + ACT_STRIKEDOWN_LOOP, // Bị đánh ngã (loop) + ACT_STRIKEDOWN_STANDUP, // Bị đánh ngã rồi đứng dậy + ACT_PICKUP, // Nhặt đồ // 40 - ACT_PICKUP_LOOP, // Nhặt đồ (loop) - ACT_PICKUP_STANDUP, // Nhặt đồ đứng dậy - ACT_PICKUP_MATTER, // Nhặt vật thể - ACT_GAPE, // Há miệng - ACT_LOOKAROUND, // Nhìn quanh + ACT_PICKUP_LOOP, // Nhặt đồ (loop) + ACT_PICKUP_STANDUP, // Nhặt đồ đứng dậy + ACT_PICKUP_MATTER, // Nhặt vật thể + ACT_GAPE, // Há miệng + ACT_LOOKAROUND, // Nhìn quanh // 45 - ACT_PLAYWEAPON, // Vung vÅ© khí - ACT_EXP_WAVE, // Vẫy tay - ACT_EXP_NOD, // Gật đầu - ACT_EXP_SHAKEHEAD, // Lắc đầu - ACT_EXP_SHRUG, // Nhún vai + ACT_PLAYWEAPON, // Vung vÅ© khí + ACT_EXP_WAVE, // Vẫy tay + ACT_EXP_NOD, // Gật đầu + ACT_EXP_SHAKEHEAD, // Lắc đầu + ACT_EXP_SHRUG, // Nhún vai // 50 - ACT_EXP_LAUGH, // Cưá»i lá»›n - ACT_EXP_ANGRY, // Tức giận - ACT_EXP_STUN, // Choáng - ACT_EXP_DEPRESSED, // Buồn bã - ACT_EXP_KISSHAND, // Hôn tay + ACT_EXP_LAUGH, // Cưá»i lá»›n + ACT_EXP_ANGRY, // Tức giận + ACT_EXP_STUN, // Choáng + ACT_EXP_DEPRESSED, // Buồn bã + ACT_EXP_KISSHAND, // Hôn tay // 55 - ACT_EXP_SHY, // Ngại ngùng - ACT_EXP_SALUTE, // Chào - ACT_EXP_SITDOWN, // Ngồi xuống - ACT_EXP_SITDOWN_LOOP, // Ngồi xuống (loop) - ACT_EXP_SITDOWN_STANDUP, // Ngồi xuống rồi đứng dậy + ACT_EXP_SHY, // Ngại ngùng + ACT_EXP_SALUTE, // Chào + ACT_EXP_SITDOWN, // Ngồi xuống + ACT_EXP_SITDOWN_LOOP, // Ngồi xuống (loop) + ACT_EXP_SITDOWN_STANDUP, // Ngồi xuống rồi đứng dậy // 60 - ACT_EXP_ASSAULT, // Tấn công - ACT_EXP_THINK, // Suy nghÄ© - ACT_EXP_DEFIANCE, // Thách thức - ACT_EXP_VICTORY, // Chiến thắng - ACT_EXP_KISS, // Hôn + ACT_EXP_ASSAULT, // Tấn công + ACT_EXP_THINK, // Suy nghÄ© + ACT_EXP_DEFIANCE, // Thách thức + ACT_EXP_VICTORY, // Chiến thắng + ACT_EXP_KISS, // Hôn // 65 - ACT_EXP_KISS_LOOP, // Hôn (loop) - ACT_EXP_KISS_END, // Kết thúc hôn - ACT_ATTACK_1, // Tấn công 1 - ACT_ATTACK_2, // Tấn công 2 - ACT_ATTACK_3, // Tấn công 3 + ACT_EXP_KISS_LOOP, // Hôn (loop) + ACT_EXP_KISS_END, // Kết thúc hôn + ACT_ATTACK_1, // Tấn công 1 + ACT_ATTACK_2, // Tấn công 2 + ACT_ATTACK_3, // Tấn công 3 // 70 - ACT_ATTACK_4, // Tấn công 4 - ACT_ATTACK_TOSS, // Ném vÅ© khí - ACT_TRICK_RUN, // Chiêu khi chạy - ACT_TRICK_JUMP, // Chiêu khi nhảy - ACT_FLY_GLIDE, // Lượn + ACT_ATTACK_4, // Tấn công 4 + ACT_ATTACK_TOSS, // Ném vÅ© khí + ACT_TRICK_RUN, // Chiêu khi chạy + ACT_TRICK_JUMP, // Chiêu khi nhảy + ACT_FLY_GLIDE, // Lượn // 75 - ACT_FLY_GLIDE_SWORD, // Kiếm bay - lượn - ACT_EXP_FIGHT, // Tư thế chiến đấu - ACT_EXP_ATTACK1, // Tấn công diá»…n xuất 1 - ACT_EXP_ATTACK2, // Tấn công diá»…n xuất 2 - ACT_EXP_ATTACK3, // Tấn công diá»…n xuất 3 + ACT_FLY_GLIDE_SWORD, // Kiếm bay - lượn + ACT_EXP_FIGHT, // Tư thế chiến đấu + ACT_EXP_ATTACK1, // Tấn công diá»…n xuất 1 + ACT_EXP_ATTACK2, // Tấn công diá»…n xuất 2 + ACT_EXP_ATTACK3, // Tấn công diá»…n xuất 3 // 80 - ACT_EXP_ATTACK4, // Tấn công diá»…n xuất 4 - ACT_EXP_DEFENCE, // Phòng thá»§ - ACT_EXP_FALL, // Té ngã - ACT_EXP_FALLONGROUND, // Ngã xuống đất - ACT_EXP_LOOKAROUND, // Nhìn quanh + ACT_EXP_ATTACK4, // Tấn công diá»…n xuất 4 + ACT_EXP_DEFENCE, // Phòng thá»§ + ACT_EXP_FALL, // Té ngã + ACT_EXP_FALLONGROUND, // Ngã xuống đất + ACT_EXP_LOOKAROUND, // Nhìn quanh // 85 - ACT_EXP_DANCE, // Nhảy múa - ACT_EXP_FASHIONWEAPON, // Äá»™ng tác vÅ© khí thá»i trang - ACT_USEITEM, // Dùng item - ACT_USEITMELOOP, // Dùng item (loop) - ACT_TWO_KISS, // Hôn đôi + ACT_EXP_DANCE, // Nhảy múa + ACT_EXP_FASHIONWEAPON, // Äá»™ng tác vÅ© khí thá»i trang + ACT_USEITEM, // Dùng item + ACT_USEITMELOOP, // Dùng item (loop) + ACT_TWO_KISS, // Hôn đôi // 90 - ACT_USING_TARGET_ITEM, // Dùng đạo cụ - ACT_SWIM_FOR_MOVESKILL, // BÆ¡i trong lúc dùng skill di chuyển + ACT_USING_TARGET_ITEM, // Dùng đạo cụ + ACT_SWIM_FOR_MOVESKILL, // BÆ¡i trong lúc dùng skill di chuyển ACT_MAX, - ACT_CASTSKILL // Chỉ là placeholder cho skill actions + ACT_CASTSKILL // Chỉ là placeholder cho skill actions } + public void PlayAttackEffect(int idTarget, int idSkill, int skillLevel, int nDamage, - uint dwModifier, int nAttackSpeed, ref int piAttackTime , int nSection = 0) + uint dwModifier, int nAttackSpeed, ref int piAttackTime, int nSection = 0) { if (!IsAllResReady()) return; @@ -413,7 +447,8 @@ public abstract class CECPlayer : CECObject { // ¿´¿´ÊDz»ÊÇÔ¶³ÌÎäÆ÷ DATA_TYPE dt = default; - WEAPON_ESSENCE? pWeapon = (WEAPON_ESSENCE)ElementDataManProvider.GetElementDataMan().get_data_ptr((uint)idWeapon, ID_SPACE.ID_SPACE_ESSENCE, ref dt); + WEAPON_ESSENCE? pWeapon = (WEAPON_ESSENCE)ElementDataManProvider.GetElementDataMan() + .get_data_ptr((uint)idWeapon, ID_SPACE.ID_SPACE_ESSENCE, ref dt); if (dt == DATA_TYPE.DT_WEAPON_ESSENCE && pWeapon != null && pWeapon.Value.require_projectile != 0) { @@ -437,9 +472,9 @@ public abstract class CECPlayer : CECObject if (pAttack != null) { if (!IsDead() && (dwModifier & (uint)MOD.MOD_RETORT) == 0 - && (dwModifier & (uint)MOD.MOD_ATTACK_AURA) == 0 - && PlayAttackAction(nAttackSpeed, ref piAttackTime, pAttack) - && (dwModifier & (uint)MOD.MOD_BEAT_BACK) == 0) + && (dwModifier & (uint)MOD.MOD_ATTACK_AURA) == 0 + && PlayAttackAction(nAttackSpeed, ref piAttackTime, pAttack) + && (dwModifier & (uint)MOD.MOD_BEAT_BACK) == 0) { } else @@ -515,14 +550,17 @@ public abstract class CECPlayer : CECObject { EventBus.PublishChannel(m_PlayerInfo.cid, new CleearComActFlagAllRankNodesEvent(v)); } + public struct CleearComActFlagAllRankNodesEvent { public bool v; + public CleearComActFlagAllRankNodesEvent(bool value) { v = value; } } + public bool PlayAttackAction(int nAttackSpeed, ref int attackTime, CECAttackEvent attackEvent) { //attackTime = 0; @@ -533,7 +571,7 @@ public abstract class CECPlayer : CECObject int nRand = UnityEngine.Random.Range(0, 4); string szAct = string.Empty; - //int weapon_type = GetShowingWeaponType(); + int weapon_type = GetShowingWeaponType(); int nTime1 = 0, nTime2 = 0; int iAction = (int)PLAYER_ACTION_TYPE.ACT_ATTACK_1 + nRand; @@ -648,28 +686,33 @@ public abstract class CECPlayer : CECObject return true; } + public void SetApplyDamage(bool isApplyDamage, CECAttackEvent cECAttackEvent) { cECAttackEvent.m_bSignaled = isApplyDamage; } + public void ShowWeaponByConfig(PLAYER_ACTION_INFO_CONFIG p) { m_bShowWeapon = p.hide_weapon != 0 ? false : true; //ShowWeapon(m_bShowWeapon); } + public int GetShowingWeaponType() { int weapon_type = 0; - if (CanShowFashionWeapon((int)m_uAttackType, m_iFashionWeaponType) && m_aEquips[(int)IndexOfIteminEquipmentInventory.EQUIPIVTR_FASHION_WEAPON] != 0) + if (CanShowFashionWeapon((int)m_uAttackType, m_iFashionWeaponType) && + m_aEquips[(int)IndexOfIteminEquipmentInventory.EQUIPIVTR_FASHION_WEAPON] != 0) { - weapon_type = (m_iFashionWeaponType == DEFAULT_ACTION_TYPE || !IsWeaponAttached()) ? - 10 : m_iFashionWeaponType; + weapon_type = (EC_Utility.BinaryEquals(m_iFashionWeaponType, DEFAULT_ACTION_TYPE) || !IsWeaponAttached()) + ? 10 + : m_iFashionWeaponType; } else { - weapon_type = (m_uAttackType == DEFAULT_ACTION_TYPE || !IsWeaponAttached()) ? - 10 : (int)m_uAttackType; + weapon_type = (EC_Utility.BinaryEquals(m_uAttackType, DEFAULT_ACTION_TYPE) || !IsWeaponAttached()) ? 10 : (int)m_uAttackType; } + return weapon_type; } @@ -677,11 +720,61 @@ public abstract class CECPlayer : CECObject { return m_bWeaponAttached; } - public bool InFashionMode() { return m_bFashionMode; } + bool AttachWeapon(){ + bool result = (false); + + /*while (GetPlayerModel() && (GetLeftHandWeapon() || GetRightHandWeapon())){ + A3DSkinModel *pSkinModel = GetPlayerModel()->GetA3DSkinModel(); + if (!pSkinModel || + !pSkinModel->GetSkeleton()){ + break; + } + if (!pSkinModel->GetSkeletonHook(GetLeftWeaponHookPos(m_weaponHangerPos),true) || + !pSkinModel->GetSkeletonHook(GetRightWeaponHookPos(m_weaponHangerPos),true)){ + break; + } + if (GetLeftHandWeapon()){ + GetPlayerModel()->AddChildModel( + _left_hand_weapon, + false, + GetLeftWeaponHookPos(m_weaponHangerPos), + GetLeftHandWeapon(), + GetLeftWeaponOwnHookPos(GetLeftHandWeapon())); + } + if (GetRightHandWeapon()){ + GetPlayerModel()->AddChildModel( + _right_hand_weapon, + false, + GetRightWeaponHookPos(m_weaponHangerPos), + GetRightHandWeapon(), + GetRightWeaponOwnHookPos(GetRightHandWeapon())); + } + ALog log; + log.Init("EC.log", "My Application Log"); + + // Anywhere in your code where you want to see the call flow: + log.Log("[HoangDev]Checking execution flow at this point:"); + log.LogStackTrace(); + + log.Release(); + m_bWeaponAttached = true; + result = true; + break; + }*/ + m_bWeaponAttached = true; + result = true; + return result; + } + public bool InFashionMode() + { + return m_bFashionMode; + } + public bool CanShowFashionWeapon(int weapon_type, int fashion_weapon_type) { return IsFashionWeaponTypeFit(weapon_type, fashion_weapon_type) && InFashionMode(); } + public bool IsFashionWeaponTypeFit(int weapon_type, int fashion_weapon_type) { if (fashion_weapon_type < 0 || fashion_weapon_type >= NUM_WEAPON_TYPE) return false; @@ -691,9 +784,11 @@ public abstract class CECPlayer : CECObject BMLogger.LogError("CECPlayer::GetFashionConfig, Failed to load fashion weapon config"); return false; } + int fashion_weapon_mask = (int)pConfig.Value.action_mask[fashion_weapon_type]; return (fashion_weapon_mask & (1 << GetWeaponType(weapon_type))) != 0; } + public FASHION_WEAPON_CONFIG GetFashionConfig() { FASHION_WEAPON_CONFIG? pFashionConfig = null; @@ -705,16 +800,30 @@ public abstract class CECPlayer : CECObject if (tid != 0) { - pFashionConfig = (FASHION_WEAPON_CONFIG)pDataMan.get_data_ptr(tid, ID_SPACE.ID_SPACE_CONFIG, ref DataType); + pFashionConfig = + (FASHION_WEAPON_CONFIG)pDataMan.get_data_ptr(tid, ID_SPACE.ID_SPACE_CONFIG, ref DataType); BMLogger.LogError($"HoangDev : get_data_ptr {pFashionConfig.GetType()}"); } } + return pFashionConfig.Value; } - public int GetSelectedTarget() { return m_idSelTarget; } - public float GetTouchRadius() { return m_fTouchRad; } + + public int GetSelectedTarget() + { + return m_idSelTarget; + } + + public float GetTouchRadius() + { + return m_fTouchRad; + } + // Is player in battle - public bool IsInBattle() { return m_iBattleCamp != Player_camp_in_battle.GP_BATTLE_CAMP_NONE; } + public bool IsInBattle() + { + return m_iBattleCamp != Player_camp_in_battle.GP_BATTLE_CAMP_NONE; + } // Check whether specified npc in a same battle camp public bool InSameBattleCamp(CECNPC pNPC) @@ -726,14 +835,30 @@ public abstract class CECPlayer : CECObject return true; } + public const uint DEFAULT_ACTION_TYPE = 0xFFFFFFFF; - public static int GetWeaponType(int iWeaponType) { return iWeaponType == DEFAULT_ACTION_TYPE ? 10 : iWeaponType; } + + public static int GetWeaponType(int iWeaponType) + { + return iWeaponType == DEFAULT_ACTION_TYPE ? 10 : iWeaponType; + } + public bool IsInFactionPVP() => (m_factionPVPMask & 0x01) != 0; public bool CanAttackFactionPVPMineCar() => (m_factionPVPMask & 0x02) != 0; public bool CanAttackFactionPVPMineBase() => (m_factionPVPMask & 0x04) != 0; + public int GetLevelUpExp(int iLevel) + { + return _player_levelup_exp.exp[iLevel - 1]; + //return iLevel * iLevel * 500; + } + // Get basic properties - public ROLEBASICPROP GetBasicProps() { return m_BasicProps; } + public ROLEBASICPROP GetBasicProps() + { + return m_BasicProps; + } + public override void TurnFaceTo(int idTarget, float dwTime = 200) { if (idTarget != 0) @@ -742,17 +867,21 @@ public abstract class CECPlayer : CECObject { return; } + if (IsWorkMoveRunning() /*&& !IsPlayingCastingSkillAndMoveActions()*/) - { // ÒÆ¶¯Ê±Ò»°ãÓ¦ÃæÃòÒÆ¶¯·½Ãò¡¢Ö»ÔÚÒÆ¶¯Ê©·¨ÖòÅתÃò + { + // ÒÆ¶¯Ê±Ò»°ãÓ¦ÃæÃòÒÆ¶¯·½Ãò¡¢Ö»ÔÚÒÆ¶¯Ê©·¨ÖòÅתÃò return; } } + var target = EC_ManMessageMono.Instance?.GetObject(idTarget, 0)?.gameObject.transform; if (target == null) { BMLogger.LogError("HoangDev: ko có transform "); return; } + Vector3 direction = (target.position - transform.position).normalized; direction.y = 0f; int turnSpeed = 5; @@ -769,10 +898,12 @@ public abstract class CECPlayer : CECObject ); } } + public virtual bool IsWorkMoveRunning() { return false; } + /* public bool IsPlayingCastingSkillAndMoveActions() { return IsPlayingCastingSkillAction() && IsPlayingMoveAction(); @@ -849,6 +980,7 @@ public abstract class CECPlayer : CECObject return iAction; } + public void Damaged(int nDamage, uint dwModifier = 0, int skill = 0) { BMLogger.LogError($"HoangDev: Damaged nDamage={nDamage} "); @@ -893,7 +1025,7 @@ public abstract class CECPlayer : CECObject PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED); DamageTextManager.Instance.ShowDamageText( - transform.position,nDamage, Color.yellow, 1.0f); + transform.position, nDamage, Color.yellow, 1.0f); /* if (dwModifier & CECAttackEvent::MOD_IMMUNE) BubbleText(BUBBLE_IMMUNE, 0); else if (dwModifier & CECAttackEvent::MOD_REBOUND) @@ -911,6 +1043,7 @@ public abstract class CECPlayer : CECObject BubbleText(BUBBLE_HITMISSED, 0);*/ } } + public bool OnDamaged(int skill) { var atkMan = CECAttacksMan.Instance; @@ -930,6 +1063,7 @@ public abstract class CECPlayer : CECObject return false; } + bool GetSkillStateActionName(int skill, int state, string name1, string name2) { /* for (int i = 0; i < (int)m_SkillStateActionVec.size(); i++) @@ -947,19 +1081,37 @@ public abstract class CECPlayer : CECObject public float GetGroundSpeed() { // return m_bWalkRun ? g_pGame.GetConfigs().GetHostRunSpeed() : m_ExtProps.mv.walk_speed; + return 5f; return m_bWalkRun ? m_ExtProps.mv.run_speed : m_ExtProps.mv.walk_speed; } // Get move environment - public int GetMoveEnv() { return m_iMoveEnv; } - public bool IsShapeChanged() { return m_iShape != 0; } - public int GetWeaponID() { return m_aEquips[(int)IndexOfIteminEquipmentInventory.EQUIPIVTR_WEAPON] & 0xffff; } - public bool IsAllResReady() { return (m_dwResFlags & (uint)PlayerResourcesReadyFlag.RESFG_ALL) == (uint)PlayerResourcesReadyFlag.RESFG_ALL; } + public int GetMoveEnv() + { + return m_iMoveEnv; + } + + public bool IsShapeChanged() + { + return m_iShape != 0; + } + + public int GetWeaponID() + { + return m_aEquips[(int)IndexOfIteminEquipmentInventory.EQUIPIVTR_WEAPON] & 0xffff; + } + + public bool IsAllResReady() + { + return (m_dwResFlags & (uint)PlayerResourcesReadyFlag.RESFG_ALL) == (uint)PlayerResourcesReadyFlag.RESFG_ALL; + } // Get character ID } + public struct PlayActionEvent { public string AnimationName; + public PlayActionEvent(string animationName) { this.AnimationName = animationName; @@ -972,14 +1124,18 @@ public class QueueActionEvent public Action SetFlag; public CECAttackEvent AttackEvent; public bool IsHitAnim; - public QueueActionEvent(string animationName, Action setFlag, bool isHitAnim, CECAttackEvent attackEvent) + + public QueueActionEvent(string animationName, Action setFlag, bool isHitAnim, + CECAttackEvent attackEvent) { this.AnimationName = animationName; SetFlag = setFlag; IsHitAnim = isHitAnim; AttackEvent = attackEvent; } - public void SetData(string animationName, Action setFlag, bool isHitAnim, CECAttackEvent attackEvent) + + public void SetData(string animationName, Action setFlag, bool isHitAnim, + CECAttackEvent attackEvent) { this.AnimationName = animationName; SetFlag = setFlag; @@ -987,12 +1143,14 @@ public class QueueActionEvent AttackEvent = attackEvent; } } + [Serializable] public struct INFO { - public int cid; // Character ID - public int crc_c; // customized data crc - public int crc_e; // Equipment data crc + public int cid; // Character ID + public int crc_c; // customized data crc + public int crc_e; // Equipment data crc + public INFO(int cid, int crc_c, int crc_) { this.cid = cid; @@ -1000,6 +1158,7 @@ public struct INFO this.crc_e = crc_; } } + public enum PlayerResourcesReadyFlag { @@ -1009,12 +1168,13 @@ public enum PlayerResourcesReadyFlag RESFG_ASSEMBLED = 0x08, RESFG_ALL = 0x0f, }; -public static class Duel_state // Duel state + +public static class Duel_state // Duel state { public const int DUEL_ST_NONE = 0, - DUEL_ST_PREPARE = 1, - DUEL_ST_INDUEL = 2, - DUEL_ST_STOPPING = 3; + DUEL_ST_PREPARE = 1, + DUEL_ST_INDUEL = 2, + DUEL_ST_STOPPING = 3; } //// Move mode diff --git a/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs b/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs index b1991728a5..c108730425 100644 --- a/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs +++ b/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs @@ -11,10 +11,11 @@ namespace BrewMonster.Scripts public static class EC_CDR { // Cho phép CECHostMove gán mask theo scene (giữ linh hoạt nhưng không phá cấu trúc) - public static LayerMask BrushMask { get; set; } = ~0; - public static LayerMask TerrainMask { get; set; } = ~0; + public static LayerMask BrushMask { get; set; } = 1<<7; + public static LayerMask TerrainMask { get; set; } = 1<<6; const float LOCAL_EPSILON = 1e-5f; + //[Flags] public class CDR_EVN { @@ -86,37 +87,44 @@ namespace BrewMonster.Scripts } // == Thay CollideWithEnv (C++) bằng BoxCast == - static bool CollideWithEnv_BoxCast(Vector3 vStart, Vector3 vDelta, Vector3 vExt, - LayerMask mask, - out RaycastHit hit, out float fFraction, out Vector3 vHitNormal, out bool bStartSolid, - float skin = 0.01f) - { - hit = default; - vHitNormal = Vector3.up; - bStartSolid = false; - fFraction = 1.0f; + //static bool CollideWithEnv_BoxCast(Vector3 vStart, Vector3 vDelta, Vector3 vExt, + // LayerMask mask, + // out RaycastHit hit, out float fFraction, out Vector3 vHitNormal, out bool bStartSolid, + // float skin = 0.01f) + //{ + // hit = default; + // vHitNormal = Vector3.up; + // bStartSolid = false; + // fFraction = 0.0f; - float dist = vDelta.magnitude; - if (dist <= 1e-6f) return false; + // float dist = vDelta.magnitude; + // if (dist <= 1e-6f) return false; - // start-in-solid - var overlapped = Physics.OverlapBox(vStart, vExt - Vector3.one * skin, Quaternion.identity, mask, QueryTriggerInteraction.Ignore); - if (overlapped != null && overlapped.Length > 0) - { - bStartSolid = true; - return true; - } + // var hasHit = Physics.Raycast(vStart, vDelta,out hit, dist, mask); + // if (hasHit) + // { + // bStartSolid = true; + // fFraction = (t - 5E-4f) / vDelta.Normalize(); + // return true; + // } + // // start-in-solid + // var overlapped = Physics.OverlapBox(vStart, vExt - Vector3.one * skin, Quaternion.identity, mask, QueryTriggerInteraction.Ignore); + // if (overlapped != null && overlapped.Length > 0) + // { + // bStartSolid = true; + // return true; + // } - // sweep AABB - Vector3 dir = vDelta / Mathf.Max(dist, 1e-6f); - if (Physics.BoxCast(vStart, vExt - Vector3.one * skin, dir, out hit, Quaternion.identity, dist, mask, QueryTriggerInteraction.Ignore)) - { - fFraction = Mathf.Clamp01(hit.distance / Mathf.Max(dist, 1e-6f)); - vHitNormal = hit.normal; - return true; - } - return false; - } + // // sweep AABB + // Vector3 dir = vDelta / Mathf.Max(dist, 1e-6f); + // if (Physics.BoxCast(vStart, vExt - Vector3.one * skin, dir, out hit, Quaternion.identity, dist, mask, QueryTriggerInteraction.Ignore)) + // { + // fFraction = Mathf.Clamp01(hit.distance / Mathf.Max(dist, 1e-6f)); + // vHitNormal = hit.normal; + // return true; + // } + // return false; + //} // == Thay RetrieveSupportPlane (C++) bằng Raycast xuống == static bool DoGroundProbe(Vector3 vStart, Vector3 vExt, float fDeltaY, LayerMask mask, @@ -159,16 +167,28 @@ namespace BrewMonster.Scripts bool bJump = (fYVel > 0.5f); Vector3 vVelocity = CDRInfo.fSpeed * new Vector3(CDRInfo.vXOZVelDir.x, 0f, CDRInfo.vXOZVelDir.z) + fYVel * Vector3.up; + + if (bFreeFall) { vVelocity += -CDRInfo.fGravityAccel * CDRInfo.t * Vector3.up; fYVel += -CDRInfo.fGravityAccel * CDRInfo.t; } - Vector3 vVelDir = vVelocity; float fVelSpeed = vVelDir.magnitude; - if (fVelSpeed > 1e-6f) vVelDir /= fVelSpeed; else vVelDir = Vector3.zero; - if (!bFreeFall) fVelSpeed = Mathf.Min(fVelSpeed, VEL_MAX_SPEED); + //vVelDir = vVelDir.normalized; + if (fVelSpeed > 1e-6f) + { + vVelDir /= fVelSpeed; + } + else + { + vVelDir = Vector3.zero; + } + if (!bFreeFall) + { + fVelSpeed = Mathf.Min(fVelSpeed, VEL_MAX_SPEED); + } vVelocity = vVelDir * fVelSpeed; float dtp = Vector3.Dot(vVelDir, CDRInfo.vTPNormal); @@ -190,96 +210,98 @@ namespace BrewMonster.Scripts int nTry = 0; LayerMask mask = UsedMask_Ground(); - while (nTry < 4) + while (nTry < 1) { vDelta = vVelocity * fTime; float fDeltaDist = vDelta.magnitude; - if (fDeltaDist < DIST_EPSILON) break; + //if (fDeltaDist < DIST_EPSILON) break; // TO DO: fix later beacuse logic in CollideWithEnv_BoxCast is wrong //bool hasHit = CollideWithEnv_BoxCast(vStart, vDelta, vExt, mask, // out RaycastHit hit, out float fFraction, out Vector3 hitNormal, out bool bStartSolid); - bool hasHit = false, bStartSolid = false; - float fFraction = 0f; - Vector3 hitNormal = Vector3.zero; + Vector3 posFoot = vStart - Vector3.up * vExt.y; + Debug.DrawLine(vStart, posFoot + vVelocity, Color.yellow, 10f); + bool bClear = !Physics.Raycast(posFoot, (posFoot + vVelocity).normalized, out RaycastHit hit, fDeltaDist, mask); nTry++; - - if (bStartSolid) - { - CDRInfo.fMoveDist = 0f; - if (CDRInfo.vTPNormal.y < CDRInfo.fSlopeThresh) CDRInfo.vTPNormal = Vector3.up; - return; - } - - if (!hasHit) + if (bClear) { vFinalPos = vStart + vDelta; + Debug.DrawLine(vStart, vFinalPos, Color.red, 10f); CDRInfo.fMoveDist += fDeltaDist; break; } + Debug.LogError("Hit"); + //if (bStartSolid) + //{ + // CDRInfo.fMoveDist = 0f; + // if (CDRInfo.vTPNormal.y < CDRInfo.fSlopeThresh) CDRInfo.vTPNormal = Vector3.up; + // return; + //} - vStart += vDelta * fFraction; - CDRInfo.fMoveDist += (fDeltaDist * fFraction); - fTime -= fTime * fFraction; - vNormal = hitNormal; + + vStart = hit.point + Vector3.up * vExt.y; + vFinalPos = vStart; + //CDRInfo.fMoveDist += (fDeltaDist * fFraction); + //fTime -= fTime * fFraction; + //vNormal = hitNormal; // Step-up (giữ tinh thần bản gốc) if (!bFreeFall && !bTryPull && !bJump) { - float skin = 0.01f; - Vector3 vStartUp = vStart + new Vector3(0f, CDRInfo.fStepHeight, 0f); - bool upBlocked = Physics.CheckBox(vStartUp, vExt - Vector3.one * skin, Quaternion.identity, mask, QueryTriggerInteraction.Ignore); - if (!upBlocked) + //float skin = 0.01f; + posFoot = vStart - Vector3.up * vExt.y; + Vector3 vStartUp = new Vector3(0f, CDRInfo.fStepHeight, 0f); + bPull = !Physics.Raycast(posFoot, (posFoot + vStartUp).normalized, out hit, mask); + if (bPull) { + vStart += Vector3.up * CDRInfo.fStepHeight; + posFoot = vStart - Vector3.up * vExt.y; Vector3 vDelta2 = vVelocity; - bool hasHit2 = CollideWithEnv_BoxCast(vStartUp, vDelta2, vExt, mask, - out RaycastHit hit2, out float frac2, out Vector3 hitNormal2, out bool bStartSolid2); - if (hasHit2) vDelta2 *= frac2; - - if (vDelta2.sqrMagnitude >= (vExt.x * vExt.x * 4f)) + bool bMove = !Physics.Raycast(posFoot, (posFoot + vVelocity).normalized, out hit, mask); + if (!bMove) { - vStart = vStartUp; - vDelta = vDelta2; - - float distAll = vVelocity.magnitude; - float distMoved = vDelta.magnitude; - if (distAll > 1e-6f) fTime *= Mathf.Clamp01(distMoved / Mathf.Max(distAll, 1e-6f)); - - bPull = true; + //vDelta2 *= frac2; + vFinalPos = hit.point + Vector3.up * vExt.y; } + + //if (vDelta2.sqrMagnitude < (vExt.x * vExt.x * 4f)) + //{ + // vStart -= Vector3.up * CDRInfo.fStepHeight; + // bPull = false; + //} } bTryPull = true; } - if (!bPull) - { - if (vVelocity.sqrMagnitude > 1e-12f) - { - vVelDir = vVelocity.normalized; - fVelSpeed = vVelocity.magnitude * (1f - nTry * 0.1f); + //if (!bPull) + //{ + // if (vVelocity.sqrMagnitude > 1e-12f) + // { + // vVelDir = vVelocity.normalized; + // fVelSpeed = vVelocity.magnitude * (1f - nTry * 0.1f); - dtp = Vector3.Dot(vNormal, vVelDir); - float fRelSpeed = Mathf.Min(fVelSpeed, 5.0f); + // dtp = Vector3.Dot(vNormal, vVelDir); + // float fRelSpeed = Mathf.Min(fVelSpeed, 5.0f); - if (dtp >= 0f && dtp < 1e-4f) - { - vVelocity += vNormal * VEL_REFLECT * fRelSpeed; - } - else - { - vVelocity = (vVelDir - vNormal * dtp) * fVelSpeed - vNormal * dtp * VEL_REFLECT * fRelSpeed; - } - } + // if (dtp >= 0f && dtp < 1e-4f) + // { + // vVelocity += vNormal * VEL_REFLECT * fRelSpeed; + // } + // else + // { + // vVelocity = (vVelDir - vNormal * dtp) * fVelSpeed - vNormal * dtp * VEL_REFLECT * fRelSpeed; + // } + // } - if (fYVel > VEL_EPSILON) - { - if (vNormal.y >= CDRInfo.fSlopeThresh || vNormal.y < -NORMAL_EPSILON) fYVel = 0f; - } - else if (fYVel < -VEL_EPSILON) - { - if (vNormal.y >= CDRInfo.fSlopeThresh) fYVel = 0f; - } - } + // if (fYVel > VEL_EPSILON) + // { + // if (vNormal.y >= CDRInfo.fSlopeThresh || vNormal.y < -NORMAL_EPSILON) fYVel = 0f; + // } + // else if (fYVel < -VEL_EPSILON) + // { + // if (vNormal.y >= CDRInfo.fSlopeThresh) fYVel = 0f; + // } + //} } // “vertical ground trace†– thay RetrieveSupportPlane diff --git a/Assets/PerfectWorld/Scripts/NPC/CECMonster.cs b/Assets/PerfectWorld/Scripts/NPC/CECMonster.cs index 85556a90cf..7c54f2570e 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECMonster.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECMonster.cs @@ -38,7 +38,6 @@ public class CECMonster : CECNPC if ((info.state & (int)PlayerNPCState.GP_STATE_NPC_NAME) == 0) { m_strName = Encoding.Unicode.GetString(MemoryMarshal.AsBytes(m_pDBEssence.name)); - BMLogger.LogError("info.state MOnster :" + m_strName); m_npcUI.SetName(m_strName); } diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs index 92e1870f40..9c63ba0cb2 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs @@ -24,7 +24,6 @@ public class CECNPC : CECObject protected float m_fDistToHostH; protected OtherPlayer_Move_Info m_cdr; protected float m_fTouchRad = 1f; - protected ROLEBASICPROP m_BasicProps; protected Vector3 m_vMoveDir; protected int m_iPassiveMove; protected bool m_bStopMove; @@ -41,6 +40,7 @@ public class CECNPC : CECObject protected bool m_bAboutToDie; protected Vector3 m_vStopDir; protected ROLEEXTPROP m_ExtProps; + protected ROLEBASICPROP m_BasicProps; protected CECNPCModelPolicy m_pNPCModelPolicy; protected CECPolicyAction m_pPolicyAction; public int m_iMMIndex; @@ -51,6 +51,8 @@ public class CECNPC : CECObject protected static CECStringTab m_ActionNames; +/* public string NameNPC => m_strName; + public string ROLEBASICPROP => m_strName;*/ public virtual void SetUpCECNPC(CECNPCMan pNPCMan) @@ -59,10 +61,13 @@ public class CECNPC : CECObject m_vServerPos = new Vector3(); m_iCID = (int)Class_ID.OCID_NPC; } + + public string GetName() + { + return m_strName; + } public virtual bool Init(int tid, in info_npc info, ReadOnlySpan packet, int infoOffset) { - BMLogger.LogError($" CECNPC.Init "+ info.state); - m_NPCInfo.nid = info.nid; m_NPCInfo.tid = tid; m_NPCInfo.vis_tid = info.vis_tid; @@ -788,15 +793,18 @@ public class CECNPC : CECObject { return; } - - var nameMonster = Path.GetFileNameWithoutExtension(szModelFile); - var model = NPCBuilder.Instance.GetModelByName(nameMonster); - if (model == null) return; + BMLogger.LogError($" CECNPC.QueueLoadNPCModel szModelFile= {szModelFile.ToLower()} "); + var model = NPCBuilder.Instance.GetModelByPath(szModelFile.ToLower()); + if (model == null) { + + model = GameObject.CreatePrimitive(PrimitiveType.Capsule); + BMLogger.LogError($" CECNPC.QueueLoadNPCModel model == null szModelFile= {szModelFile} "); + } var monsterModel = Instantiate(model, transform); monsterModel.SetActive(true); var npcVisual = GetComponent(); - npcVisual.InitNPCEventDoneHandler(m_NPCInfo); + npcVisual?.InitNPCEventDoneHandler(m_NPCInfo); //QueueECModelForLoad(MTL_ECM_NPC, GetNPCInfo().nid, GetBornStamp(), GetServerPos(), szModelFile, tid); } @@ -818,7 +826,6 @@ public class CECNPC : CECObject { tid = GetNPCInfo().tid; } - BMLogger.LogError("HoangDev: GetVisibleModel NPC TID=" + tid + ", ModelFile=" + szModelFile); return tid > 0; } public bool GetModelFile(int tid, out string szModelFile) diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPCServer.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPCServer.cs index ee58eed2f3..45ac186c69 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPCServer.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPCServer.cs @@ -1,6 +1,8 @@ using BrewMonster; using CSNetwork.GPDataType; using System; +using System.Runtime.InteropServices; +using System.Text; using UnityEngine; using static CECNPC; @@ -37,7 +39,6 @@ public class CECNPCServer : CECNPC m_fTouchRad = m_pMonEssence.Value.size; m_BasicProps.iLevel = m_pMonEssence.Value.level; - BMLogger.LogError("HoangDev: CECNPCServer CECNPCServer QueueLoadNPCModel = "); QueueLoadNPCModel(); /* float fExt = m_fTouchRad * 1.5f; @@ -47,9 +48,8 @@ public class CECNPCServer : CECNPC // If NPC doesn't have specific name, use the name in database if ((info.state & (int)PlayerNPCState.GP_STATE_NPC_NAME) == 0) { - m_strName = m_pMonEssence.Value.name.ToString(); - /* if (m_pPateName) - m_pPateName->SetText(m_strName, false);*/ + m_strName = Encoding.Unicode.GetString(MemoryMarshal.AsBytes(m_pDBEssence.Value.name)); + m_npcUI.SetName(m_strName); } transform.forward = EC_Utility.glb_DecompressDirH(info.dir); diff --git a/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs b/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs index 787ece1912..82c7811dc4 100644 --- a/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs +++ b/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs @@ -9,7 +9,8 @@ using BrewMonster; #if UNITY_EDITOR -using Animancer; // B�?o đ�?m b�?n có Animancer package +using Animancer; +using BrewMonster.Scripts; // B�?o đ�?m b�?n có Animancer package #endif public class NPCBuilder : MonoSingleton @@ -36,11 +37,9 @@ public class NPCBuilder : MonoSingleton .ToDictionary(g => g.Key, g => g.First()); } - public GameObject GetModelByName(string name) + public GameObject GetModelByPath(string path) { - return modelNPCDic != null && modelNPCDic.TryGetValue(name, out var model) - ? model - : null; + return AddressableManager.Instance.LoadPrefabAsync(path).Result; } #if UNITY_EDITOR diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs index b1422cce07..46b334ebe3 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs @@ -771,6 +771,21 @@ namespace CSNetwork.GPDataType //TO DO: Check Valid } + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_self_info_00 + { + public short sLevel; + public byte State; + public byte Level2; + public int iHP; + public int iMaxHP; + public int iMP; + public int iMaxMP; + public int iExp; + public int iSP; + public int iAP; + public int iMaxAP; + }; [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct info_player_1 @@ -1204,11 +1219,13 @@ namespace CSNetwork.GPDataType return true; } } + public struct cmd_npc_visible_tid_notify { public int nid; public int vis_tid; }; + public struct cmd_npc_info_00 { public int idNPC; @@ -1336,5 +1353,18 @@ namespace CSNetwork.GPDataType { public int idTarget; }; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_host_notify_root + { + public A3DVECTOR3 pos; + public byte type; + }; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_host_dispel_root + { + public byte type; + }; } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index 5f30345c24..d1be236edd 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -22,7 +22,8 @@ namespace CSNetwork { public class GameSession : IDisposable { - private static IPrefixedLogger _logger = LoggerFactory.GetLogger(nameof(GameSession)); // Get class-specific logger + private static IPrefixedLogger + _logger = LoggerFactory.GetLogger(nameof(GameSession)); // Get class-specific logger private NetworkManager _networkManager; private string _host; @@ -31,8 +32,10 @@ namespace CSNetwork private string _password; private int _currentUserId = -1; // To store the UserID after successful login private int m_iCharID; - private int m_idLastSelTarget = 0; // ID of selected item last time + private int m_idLastSelTarget = 0; // ID of selected item last time + CECStringTab m_ErrorMsgs; + // State management for async operations and callbacks private Action _loginCallback; private Action> _roleListCallback; @@ -41,6 +44,16 @@ namespace CSNetwork private RoleInfo _selectedRole; public bool IsConnected => _networkManager?.IsConnected ?? false; +#if UNITY_EDITOR + public bool isDebug; + public bool IsDebug + { + get => isDebug; + set => isDebug = value; + } +#endif + + public GameSession() { _networkManager = new NetworkManager(); @@ -55,6 +68,7 @@ namespace CSNetwork _logger = LoggerFactory.GetCustomLogger(path, nameof(GameSession) + GetHashCode(), LoggerType.File); _networkManager.SetLogPath(path); } + /// /// Connects to the game server asynchronously. /// @@ -68,6 +82,7 @@ namespace CSNetwork _logger.Log(LogType.Warning, "ConnectAsync called but already connected."); return; } + _host = host; _port = port; _logger.Log(LogType.Info, $"Attempting to connect to {_host}:{_port}..."); @@ -80,7 +95,8 @@ namespace CSNetwork } else { - _logger.Log(LogType.Warning, "Connection failed after ConnectAsync completed (check NetworkManager logs/events)."); + _logger.Log(LogType.Warning, + "Connection failed after ConnectAsync completed (check NetworkManager logs/events)."); } } catch (Exception ex) @@ -111,6 +127,7 @@ namespace CSNetwork callback?.Invoke(false); return; } + if (_loginCallback != null) { _logger.Log(LogType.Warning, "LoginAsync called while another login is already in progress."); @@ -138,15 +155,18 @@ namespace CSNetwork callback?.Invoke(null); return; } + if (_currentUserId == -1) { _logger.Log(LogType.Warning, "GetRoleListAsync called but not logged in."); callback?.Invoke(null); return; } + if (_roleListCallback != null) { - _logger.Log(LogType.Warning, "GetRoleListAsync called while another role list retrieval is already in progress."); + _logger.Log(LogType.Warning, + "GetRoleListAsync called while another role list retrieval is already in progress."); callback?.Invoke(null); return; } @@ -157,6 +177,11 @@ namespace CSNetwork RequestRoleListInternal(); } + public RoleInfo GetRoleInfo() + { + return _selectedRole; + } + public void SelectRoleAsync(RoleInfo role, Action callback) { _selectedRole = role; @@ -167,8 +192,8 @@ namespace CSNetwork Roleid = role.roleid, Flag = 0 }); - } + public void EnterWorldAsync(RoleInfo role, Action callback) { SendProtocol(new enterworld() @@ -177,12 +202,14 @@ namespace CSNetwork Provider_link_id = 0, }, callback); } + public void RequestDropIvtrItem(byte index, int amount) { gamedatasend gamedatasendRequest = new gamedatasend(); gamedatasendRequest.Data = C2SCommandFactory.CreateDropIvtrItem(index, amount); SendProtocol(gamedatasendRequest); } + public void RequestDropEquipItem(byte index) { gamedatasend gamedatasendRequest = new gamedatasend(); @@ -196,6 +223,7 @@ namespace CSNetwork gamedatasendRequest.Data = C2SCommandFactory.CreatePickupItem(idItem, tid); SendProtocol(gamedatasendRequest); } + public void RequestInventoryAsync(byte byPackage, Action callback) { gamedatasend gamedatasendRequest = new gamedatasend(); @@ -209,6 +237,7 @@ namespace CSNetwork gamedatasendRequest.Data = C2SCommandFactory.CreateQueryPlayerCash(); SendProtocol(gamedatasendRequest); } + public void RequestCheckSecurityPassWd(string password) { gamedatasend gamedatasendRequest = new gamedatasend(); @@ -229,6 +258,7 @@ namespace CSNetwork gamedatasendRequest.Data = CSNetwork.C2SCommand.C2SCommandFactory.CreateGetMallShopping(count, goodsArray); SendProtocol(gamedatasendRequest); } + public void RequestOwnItemInfoAsync( byte byPackage, byte bySlot, @@ -242,7 +272,8 @@ namespace CSNetwork Action callback) { gamedatasend gamedatasendRequest = new gamedatasend(); - gamedatasendRequest.Data = C2SCommandFactory.CreateOwnItemInfo(byPackage, bySlot, type, expire_date, state, count, crc, content_length, content); + gamedatasendRequest.Data = C2SCommandFactory.CreateOwnItemInfo(byPackage, bySlot, type, expire_date, state, + count, crc, content_length, content); SendProtocol(gamedatasendRequest, callback); } @@ -251,7 +282,8 @@ namespace CSNetwork { if (IsConnected) { - _logger.Log(LogType.Debug, $"Sending protocol: {protocol.GetType().Name} (Detail: {protocol.ToString})"); + _logger.Log(LogType.Debug, + $"Sending protocol: {protocol.GetType().Name} (Detail: {protocol.ToString})"); _networkManager.Send(protocol); complete?.Invoke(); } @@ -265,13 +297,11 @@ namespace CSNetwork private void OnProtocolReceived(Protocol protocol) { - _logger.Log(LogType.Debug, $"Received protocol: {protocol.GetType().Name} (Type: {protocol.Type})"); if (protocol is null) return; - // Route protocol to appropriate handler switch (protocol.GetPType()) { @@ -331,11 +361,16 @@ namespace CSNetwork pDataBuf[i - lenghtHeader] = protocol.Data.ByteArray[i]; } } + var pCmdHeader = BitConverter.ToUInt16(byteArrHeader); //sss - //BMLogger.LogError($"### GameDataSend: CMDID {pCmdHeader}"); +#if UNITY_EDITOR + if (isDebug) + { + BMLogger.LogError($"### GameDataSend: CMDID {pCmdHeader}"); + } +#endif int iHostID = _selectedRole.roleid; - //BMLogger.LogError($"### GameDataSend: " + pCmdHeader); switch (pCmdHeader) { @@ -355,7 +390,8 @@ namespace CSNetwork case CommandID.PLAYER_INFO_00: case CommandID.SELF_INFO_1: // OnMsgPlayerInfo(-1, pDataBuf, pCmdHeader); - EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERINFO, (int)MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader, iHostID, _selectedRole); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERINFO, (int)MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, + pCmdHeader, iHostID, _selectedRole); break; case CommandID.OBJECT_MOVE: int lenghtDataType = Marshal.SizeOf(); @@ -363,31 +399,38 @@ namespace CSNetwork int idObjMove = BitConverter.ToInt32(arrByteData); if (ISPLAYERID(idObjMove)) { - EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERMOVE, (int)MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader, iHostID); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERMOVE, (int)MANAGER_INDEX.MAN_PLAYER, -1, + pDataBuf, pCmdHeader, iHostID); } else if (ISNPCID(idObjMove)) { - EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCMOVE, (int)MANAGER_INDEX.MAN_NPC, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCMOVE, (int)MANAGER_INDEX.MAN_NPC, 0, pDataBuf, + pCmdHeader); } + break; case CommandID.OBJECT_STOP_MOVE: + { + int id1 = GPDataTypeHelper.FromBytes(pDataBuf); + if (ISPLAYERID(id1)) { - int id1 = GPDataTypeHelper.FromBytes(pDataBuf); - if (ISPLAYERID(id1)) - { - EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERSTOPMOVE, (int)MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader); - } - else if (ISNPCID(id1)) - { - EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCSTOPMOVE, (int)MANAGER_INDEX.MAN_NPC, 0, pDataBuf, pCmdHeader); - } - break; + EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERSTOPMOVE, (int)MANAGER_INDEX.MAN_PLAYER, -1, + pDataBuf, pCmdHeader); } + else if (ISNPCID(id1)) + { + EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCSTOPMOVE, (int)MANAGER_INDEX.MAN_NPC, 0, pDataBuf, + pCmdHeader); + } + + break; + } case CommandID.OWN_IVTR_DATA: - case CommandID.OWN_IVTR_DETAIL_DATA: + case CommandID.OWN_IVTR_DETAIL_DATA: case CommandID.GET_OWN_MONEY: case CommandID.CHANGE_IVTR_SIZE: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_IVTRINFO, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader, iHostID); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_IVTRINFO, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader, iHostID); break; case CommandID.EXG_IVTR_ITEM: case CommandID.MOVE_IVTR_ITEM: @@ -397,49 +440,61 @@ namespace CSNetwork case CommandID.MOVE_EQUIP_ITEM: case CommandID.UNFREEZE_IVTR_SLOT: case CommandID.PLAYER_EQUIP_TRASHBOX_ITEM: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_ITEMOPERATION, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_ITEMOPERATION, (int)MANAGER_INDEX.MAN_PLAYER, 0, + pDataBuf, pCmdHeader); break; case CommandID.PLAYER_CASH: { - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_IVTRINFO, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader, iHostID); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_IVTRINFO, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader, iHostID); break; } case CommandID.MATTER_INFO_LIST: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_MM_MATTERINFO, (int)MANAGER_INDEX.MAN_MATTER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_MM_MATTERINFO, (int)MANAGER_INDEX.MAN_MATTER, 0, pDataBuf, + pCmdHeader); break; case CommandID.MATTER_ENTER_WORLD: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_MM_MATTERENTWORLD, (int)MANAGER_INDEX.MAN_MATTER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_MM_MATTERENTWORLD, (int)MANAGER_INDEX.MAN_MATTER, 0, + pDataBuf, pCmdHeader); break; - case CommandID.PICKUP_ITEM: + case CommandID.PICKUP_ITEM: case CommandID.HOST_OBTAIN_ITEM: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_PICKUPITEM, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_PICKUPITEM, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader); break; case CommandID.MATTER_PICKUP: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PICKUPMATTER, (int)MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader); - break; + EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PICKUPMATTER, (int)MANAGER_INDEX.MAN_PLAYER, -1, + pDataBuf, pCmdHeader); + break; case CommandID.PICKUP_MONEY: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_PICKUPMONEY, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_PICKUPMONEY, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader); break; case CommandID.HOST_CORRECT_POS: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_CORRECTPOS, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader, iHostID); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_CORRECTPOS, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader, iHostID); break; case CommandID.OWN_ITEM_INFO: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_OWNITEMINFO, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader, iHostID); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_OWNITEMINFO, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader, iHostID); break; case CommandID.NPC_ENTER_SLICE: case CommandID.NPC_INFO_LIST: case CommandID.NPC_INFO_00: case CommandID.NPC_ENTER_WORLD: case CommandID.NPC_VISIBLE_TID_NOTIFY: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCINFO, (int)MANAGER_INDEX.MAN_NPC, 0, pDataBuf, pCmdHeader, dwDataSize); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCINFO, (int)MANAGER_INDEX.MAN_NPC, 0, pDataBuf, + pCmdHeader, dwDataSize); break; case CommandID.TASK_DATA: case CommandID.TASK_VAR_DATA: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_TASKDATA, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader, dwDataSize); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_TASKDATA, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader, dwDataSize); break; case CommandID.BE_HURT: case CommandID.HURT_RESULT: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_HURTRESULT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_HURTRESULT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader); break; case CommandID.OBJECT_ATTACK_RESULT: //int id = GPDataTypeHelper.FromBytes(pDataBuf); @@ -447,38 +502,39 @@ namespace CSNetwork //BMLogger.LogError($"OBJECT_ATTACK_RESULT: npc ? " + ISNPCID(id)); if (ISPLAYERID(pCmdAtk.attacker_id)) - EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERATKRESULT, MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERATKRESULT, MANAGER_INDEX.MAN_PLAYER, -1, + pDataBuf, pCmdHeader); else if (ISNPCID(pCmdAtk.attacker_id)) - EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCATKRESULT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCATKRESULT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader); break; case CommandID.HOST_ATTACKRESULT: _logger.Info($"HOST_ATTACKRESULT: " + pCmdHeader); - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_ATKRESULT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_ATKRESULT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader); break; case CommandID.HOST_ATTACKED: _logger.Info($"HOST_ATTACKED: " + pCmdHeader); - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_ATTACKED, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_ATTACKED, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader); break; case CommandID.ERROR_MESSAGE: _logger.Info($"### GameDataSend: ERROR_MESSAGE: {BitConverter.ToInt32(pDataBuf, 0)}"); - cmd_error_msg pCmd = GPDataTypeHelper.FromBytes(pDataBuf); + cmd_error_msg pCmd = GPDataTypeHelper.FromBytes(pDataBuf); BMLogger.LogError("hOANGdEV : ERROR_MESSAGE pCmd.iMessage!=0 " + pCmd.iMessage); - if (pCmd.iMessage!=0) + if (pCmd.iMessage != 0) { - string szMsg = m_ErrorMsgs.GetWideString(pCmd.iMessage); - if (string.IsNullOrEmpty( szMsg)) - BMLogger.LogError("SERVER - unknown error !"); + if (string.IsNullOrEmpty(szMsg)) + BMLogger.LogError("SERVER - unknown error !"); //else if (pCmd.iMessage != 2) - //g_pGame->GetGameRun()->AddChatMessage(szMsg, GP_CHAT_MISC); - + //g_pGame->GetGameRun()->AddChatMessage(szMsg, GP_CHAT_MISC); } if (pCmd.iMessage == 2) { - // Attack target is too far //pGameRun->PostMessage(MSG_HST_TARGETISFAR, MAN_PLAYER, 0, (DWORD)pDataBuf, pCmdHeader->cmd); } @@ -499,15 +555,18 @@ namespace CSNetwork } else if (pCmd.iMessage == 108 /*&& pGameRun->GetHostPlayer()->IsInKingService()*/) { - /* CECGameUIMan* pGameUI = pGameRun->GetUIManager()->GetInGameUIMan(); - if (pGameUI) - pGameUI->EndNPCService();*/ + /* CECGameUIMan* pGameUI = pGameRun->GetUIManager()->GetInGameUIMan(); + if (pGameUI) + pGameUI->EndNPCService();*/ } - else if (pCmd.iMessage == 108 /*&& pGameRun->GetHostPlayer()->GetOfflineShopCtrl()->GetNPCSevFlag() != COfflineShopCtrl::NPCSEV_NULL*/) + else if + (pCmd.iMessage == + 108 /*&& pGameRun->GetHostPlayer()->GetOfflineShopCtrl()->GetNPCSevFlag() != COfflineShopCtrl::NPCSEV_NULL*/ + ) { - /* CECGameUIMan* pGameUI = pGameRun->GetUIManager()->GetInGameUIMan(); - if (pGameUI) - pGameUI->EndNPCService();*/ + /* CECGameUIMan* pGameUI = pGameRun->GetUIManager()->GetInGameUIMan(); + if (pGameUI) + pGameUI->EndNPCService();*/ } else if (pCmd.iMessage == 175) { @@ -523,7 +582,8 @@ namespace CSNetwork case CommandID.SELECT_TARGET: case CommandID.UNSELECT: - EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_SELTARGET, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_SELTARGET, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader); break; case CommandID.NPC_DIED: case CommandID.NPC_DIED2: @@ -531,18 +591,23 @@ namespace CSNetwork EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCDIED, MANAGER_INDEX.MAN_NPC, 0, pDataBuf, pCmdHeader); break; case CommandID.OBJECT_DISAPPEAR: - { - int lenghtDataType1 = Marshal.SizeOf(); - byte[] arrByteData1 = GetBytes(pDataBuf, lenghtDataType1, 0); - int idObjMove1 = BitConverter.ToInt32(arrByteData1); - if (ISPLAYERID(idObjMove1)) - EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERDISAPPEAR, MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader); - else if (ISNPCID(idObjMove1)) - EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCDISAPPEAR, MANAGER_INDEX.MAN_NPC, 0, pDataBuf, pCmdHeader); - - break; - } + { + int lenghtDataType1 = Marshal.SizeOf(); + byte[] arrByteData1 = GetBytes(pDataBuf, lenghtDataType1, 0); + int idObjMove1 = BitConverter.ToInt32(arrByteData1); + if (ISPLAYERID(idObjMove1)) + EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERDISAPPEAR, MANAGER_INDEX.MAN_PLAYER, -1, + pDataBuf, pCmdHeader); + else if (ISNPCID(idObjMove1)) + EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCDISAPPEAR, MANAGER_INDEX.MAN_NPC, 0, pDataBuf, + pCmdHeader); + break; + } + case CommandID.SELF_INFO_00: + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_INFO00, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, + pCmdHeader); + break; } } @@ -550,7 +615,6 @@ namespace CSNetwork { if (iSubID == 0) { - } else if (iSubID < 0) { @@ -561,24 +625,25 @@ namespace CSNetwork { byteArray[i] = data[i]; } + int cid = BitConverter.ToInt32(byteArray); switch (pCmdHeader) { case CommandID.PLAYER_INFO_1: case CommandID.PLAYER_ENTER_WORLD: case CommandID.PLAYER_ENTER_SLICE: + { + if (cid != iHostID) { - if (cid != iHostID) - { - _logger.Info("### OnMsgPlayerInfo: ElsePlayer join"); - } - break; + _logger.Info("### OnMsgPlayerInfo: ElsePlayer join"); } + + break; + } } } else { - } } @@ -686,7 +751,8 @@ namespace CSNetwork return; } - _logger.Log(LogType.Debug, $"Received RoleListResponse. Handle: {response.handle}, Result: {response.result}, Count: {response.rolelist.Count}"); + _logger.Log(LogType.Debug, + $"Received RoleListResponse. Handle: {response.handle}, Result: {response.result}, Count: {response.rolelist.Count}"); if (response.result == 0) { @@ -771,10 +837,12 @@ namespace CSNetwork _networkManager.Dispose(); _networkManager = null; } + _loginCallback = null; _roleListCallback = null; _accumulatedRoles = null; } + disposedValue = true; } } @@ -789,8 +857,10 @@ namespace CSNetwork { return id != 0 && (id & 0x80000000) == 0; } + public bool ISNPCID(int id) => ((id & unchecked((int)0x80000000)) != 0) - && ((id & 0x40000000) == 0); + && ((id & 0x40000000) == 0); + private byte[] GetBytes(byte[] bytes, int length, int index) { byte[] arrByteData = new byte[length]; @@ -798,25 +868,30 @@ namespace CSNetwork { arrByteData[i] = bytes[i + index]; } + return arrByteData; } + public void c2s_CmdPlayerMove(in Vector3 vCurPos, in Vector3 vDest, - int iTime, float fSpeed, int iMoveMode, ushort wStamp) + int iTime, float fSpeed, int iMoveMode, ushort wStamp) { gamedatasend gamedatasend = new gamedatasend(); - gamedatasend.Data = C2SCommandFactory.CreatePlayerMove(vCurPos, vDest, (ushort)iTime, fSpeed, (byte)iMoveMode, wStamp); + gamedatasend.Data = + C2SCommandFactory.CreatePlayerMove(vCurPos, vDest, (ushort)iTime, fSpeed, (byte)iMoveMode, wStamp); SendProtocol(gamedatasend); } + public void c2s_SendCmdStopMove(in Vector3 vDest, float fSpeed, int iMoveMode, - byte byDir, ushort wStamp, int iTime) + byte byDir, ushort wStamp, int iTime) { - gamedatasend gamedatasend = new gamedatasend(); - gamedatasend.Data = C2SCommandFactory.CreatePlayerStop(vDest, fSpeed, (byte)iMoveMode, byDir, wStamp, (ushort)iTime); + gamedatasend.Data = + C2SCommandFactory.CreatePlayerStop(vDest, fSpeed, (byte)iMoveMode, byDir, wStamp, (ushort)iTime); SendProtocol(gamedatasend); } + public void SendChatData(byte cChannel, in string szMsg, int iPack, int iSlot) { publicchat publicChat = new publicchat(); @@ -828,7 +903,12 @@ namespace CSNetwork _logger.Log(LogType.Warning, $"HoangDev : publicChat {publicChat}"); SendProtocol(publicChat); } - private void SetCharacterID(int iCharID) { m_iCharID = iCharID; } + + private void SetCharacterID(int iCharID) + { + m_iCharID = iCharID; + } + private void OnPrtcChatMessage(Protocol pProtocol, bool bCalledagain) { chatmessage p = (chatmessage)pProtocol; @@ -842,7 +922,11 @@ namespace CSNetwork public struct ChatMessageEvent { public string context; - public ChatMessageEvent(string context) { this.context = context; } + + public ChatMessageEvent(string context) + { + this.context = context; + } } public void c2s_SendCmdGetAllData(bool byPack, bool byEquip, bool byTask) @@ -897,4 +981,4 @@ namespace CSNetwork } } } -} +} \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs index 5fbd6667e8..d493a1d2ba 100644 --- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs @@ -29,6 +29,19 @@ namespace BrewMonster.Network private string _username = ""; private string _password = ""; +#if UNITY_EDITOR + public bool isDebg; + private bool lastDebug; + public void OnValidate() + { + if (isDebg != lastDebug) + { + _gameSession.IsDebug = isDebg; + lastDebug = isDebg; + } + } +#endif + protected override void Awake() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); @@ -105,7 +118,10 @@ namespace BrewMonster.Network DontDestroyOnLoad(gameObject); } - + public RoleInfo GetRoleInfo() + { + return _gameSession.GetRoleInfo(); + } /// Make sure username and password is set before calling this method private async Task ConnectAsync(string ip, int port) { diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index bc50295ed8..a558ade04e 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -160,14 +160,12 @@ namespace PerfectWorld.Scripts.Player float fMoveDelta = A3d_Magnitude(vPos - vCurPos); if (Math.Abs(fMoveDelta - 0f) <= float.Epsilon || fMoveDelta >= fDist) //!fMoveDelta <=> (Math.Abs(fMoveDelta - 0f) <= float.Epsilon) Compare with 0 { - BrewMonster.BMLogger.Log($"HoangDev : SetPosServer({m_vServerPos}) 1;"); SetPos(m_vServerPos); PlayAction(GetMoveStandAction(false), true, 1, false); bRet = true; } else { - BrewMonster.BMLogger.Log($"HoangDev : SetPos({vPos}) 1;"); SetPos(vPos); } } @@ -191,11 +189,9 @@ namespace PerfectWorld.Scripts.Player ); vPos = MoveStep(vDir, m_fMoveSpeed, fDeltaTime); SetPos(vPos); - BrewMonster.BMLogger.Log("HoangDev : SetPos(vPos) 1;"); float fDist = A3d_Magnitude(m_vServerPos - vCurPos); if (fDist >= MAX_LAGDIST) { - BrewMonster.BMLogger.Log("HoangDev : SetPos(m_vServerPos) 2;"); SetPos(m_vServerPos); return true; } diff --git a/Assets/PerfectWorld/Scripts/UI/HUDNPC.cs b/Assets/PerfectWorld/Scripts/UI/HUDNPC.cs new file mode 100644 index 0000000000..fd4316bd9f --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/HUDNPC.cs @@ -0,0 +1,19 @@ +using TMPro; +using UnityEngine; + +namespace BrewMonster +{ + public class HUDNPC : MonoBehaviour + { + [SerializeField] private TextMeshProUGUI _healthText; + [SerializeField] private TextMeshProUGUI _nameText; + [SerializeField] private TextMeshProUGUI _statText; + + public void SetText(string healthText, string nameText, string statText) + { + _healthText.text = healthText; + _nameText.text = nameText; + _statText.text = statText; + } + } +} diff --git a/Assets/PerfectWorld/Scripts/UI/HUDNPC.cs.meta b/Assets/PerfectWorld/Scripts/UI/HUDNPC.cs.meta new file mode 100644 index 0000000000..697d2e1da0 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/HUDNPC.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d072871c8791e284dbad61ce13ba6887 \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs b/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs new file mode 100644 index 0000000000..884598b890 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs @@ -0,0 +1,42 @@ +using System; +using CSNetwork.GPDataType; +using TMPro; +using UnityEngine; + +namespace BrewMonster +{ + public class HUDPlayer : MonoBehaviour + { + public TextMeshProUGUI healthText; + public TextMeshProUGUI manaText; + public TextMeshProUGUI expText; + public TextMeshProUGUI nameText; + public TextMeshProUGUI levelText; + + public float neededExp; + private void Awake() + { + EventBus.Subscribe(UpdateHostPlayerInfoUI); + EventBus.Subscribe(UpdateNameHostPlayer); + EventBus.Subscribe(UpdateNeededExp); + } + + private void UpdateNeededExp(EXPToUpLevel obj) + { + neededExp = obj.NeededExp; + } + + private void UpdateNameHostPlayer(InfoHostPlayer obj) + { + nameText.text = obj.NameHostPlayer; + } + + private void UpdateHostPlayerInfoUI(cmd_self_info_00 obj) + { + healthText.text = $"{obj.iHP}/{obj.iMaxHP}"; + manaText.text = $"{obj.iMP}/{obj.iMaxMP}"; + expText.text = $"{((float)obj.iExp/neededExp)*100}%"; + levelText.text = $"{obj.sLevel}"; + } + } +} \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs.meta b/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs.meta new file mode 100644 index 0000000000..1ba0472aea --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 706d0ac515335b446be8840000ff0fab \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs index e6e114b825..e089a3e701 100644 --- a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs +++ b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs @@ -56,6 +56,7 @@ namespace BrewMonster.UI _usernameInputField.text = "test004"; _passwordInputField.text = "123456"; } + if (Input.GetKeyUp(KeyCode.Tab)) { _usernameInputField.text = "test002"; @@ -75,7 +76,7 @@ namespace BrewMonster.UI PlayerPrefs.SetString("password", password); PlayerPrefs.Save(); await UnityGameSession.Login(username, password, OnLoginComplete); - _selectCharacterScreen.gameObject.SetActive(true); + _selectCharacterScreen.gameObject.SetActive(true); } /// @@ -89,6 +90,7 @@ namespace BrewMonster.UI BMLogger.LogError("Login failed"); return; } + UnityGameSession.GetRoleListAsync(OnGetRoleListComplete); } @@ -111,7 +113,7 @@ namespace BrewMonster.UI private void OnSelectRoleComplete(RoleInfo roleInfo) { - context.Post(_ => + context.Post(_ => { isDoneWorldRender = false; isDoneNPCRender = false; @@ -122,7 +124,15 @@ namespace BrewMonster.UI return; } }; - string nameScene = "NPCRender"; +#if TESTFAST + string nameScene = "LoginScene"; + SceneManager.UnloadSceneAsync(nameScene); + isDoneNPCRender = true; + isDoneWorldRender = true; + actLoadChar?.Invoke(); + UnityGameSession.EnterWorldAsync(roleInfo, OnEnterWorldComplete); +#else + string nameScene = "NPCRender"; UnityGameSession.Instance.LoadScene(nameScene, LoadSceneMode.Single, (value) => { isDoneNPCRender = value; @@ -136,8 +146,8 @@ namespace BrewMonster.UI UnityGameSession.EnterWorldAsync(roleInfo, OnEnterWorldComplete); }); +#endif }, null); - } private async void OnEnterWorldComplete() @@ -159,7 +169,7 @@ namespace BrewMonster.UI // _inventoryUI.DisplayInventory(inventoryData); //} - #if UNITY_EDITOR +#if UNITY_EDITOR private void OnValidate() { if (_usernameInputField == null) @@ -167,17 +177,19 @@ namespace BrewMonster.UI // find childrend with name "username" _usernameInputField = transform.Find("username").GetComponent(); } + if (_passwordInputField == null) { // find childrend with name "password" _passwordInputField = transform.Find("password").GetComponent(); } + if (_loginButton == null) { // find childrend with name "LoginBtn" _loginButton = transform.Find("LoginBtn").GetComponent