diff --git a/Assets/AddressableAssetsData.meta b/Assets/AddressableAssetsData.meta new file mode 100644 index 0000000000..7fab114c4f --- /dev/null +++ b/Assets/AddressableAssetsData.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cb61533ac941c4ffba6a90a1474521cd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset b/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset new file mode 100644 index 0000000000..75e4d47a2f --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dea69d41f90c6ea4fa55c27c1d60c145, type: 3} + m_Name: AddressableAssetGroupSortSettings + m_EditorClassIdentifier: + sortOrder: + - bbd793018c27748cca02d5de986048df diff --git a/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset.meta b/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset.meta new file mode 100644 index 0000000000..3cddbff55c --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f25174790dc404b198a56fce19a3db28 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset new file mode 100644 index 0000000000..428593ef52 --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -0,0 +1,115 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 468a46d0ae32c3544b7d98094e6448a9, type: 3} + m_Name: AddressableAssetSettings + m_EditorClassIdentifier: + m_DefaultGroup: bbd793018c27748cca02d5de986048df + m_currentHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_OptimizeCatalogSize: 0 + m_BuildRemoteCatalog: 0 + m_CatalogRequestsTimeout: 0 + m_DisableCatalogUpdateOnStart: 0 + m_InternalIdNamingMode: 0 + m_InternalBundleIdMode: 1 + m_AssetLoadMode: 0 + m_BundledAssetProviderType: + m_AssemblyName: + m_ClassName: + m_AssetBundleProviderType: + m_AssemblyName: + m_ClassName: + m_IgnoreUnsupportedFilesInBuild: 0 + m_UniqueBundleIds: 0 + m_EnableJsonCatalog: 0 + m_NonRecursiveBuilding: 1 + m_AllowNestedBundleFolders: 0 + m_CCDEnabled: 0 + m_maxConcurrentWebRequests: 3 + m_UseUWRForLocalBundles: 0 + m_BundleTimeout: 0 + m_BundleRetryCount: 0 + m_BundleRedirectLimit: -1 + m_SharedBundleSettings: 0 + m_SharedBundleSettingsCustomGroupIndex: 0 + m_ContiguousBundles: 1 + m_StripUnityVersionFromBundleBuild: 0 + m_DisableVisibleSubAssetRepresentations: 0 + m_BuiltInBundleNaming: 0 + mBuiltInBundleCustomNaming: + m_MonoScriptBundleNaming: 0 + m_CheckForContentUpdateRestrictionsOption: 0 + m_MonoScriptBundleCustomNaming: + m_RemoteCatalogBuildPath: + m_Id: + m_RemoteCatalogLoadPath: + m_Id: + m_ContentStateBuildPathProfileVariableName: + m_CustomContentStateBuildPath: + m_ContentStateBuildPath: + m_BuildAddressablesWithPlayerBuild: 0 + m_overridePlayerVersion: '[UnityEditor.PlayerSettings.bundleVersion]' + m_GroupAssets: + - {fileID: 11400000, guid: 15c7600774f5e4fa39799fa2fa5cddc7, type: 2} + m_BuildSettings: + m_LogResourceManagerExceptions: 1 + m_BundleBuildPath: Temp/com.unity.addressables/AssetBundles + m_ProfileSettings: + m_Profiles: + - m_InheritedParent: + m_Id: 5bcd8455921c84270accc11f3fbc6449 + m_ProfileName: Default + m_Values: + - m_Id: 1392a36db56e64f1e84fc2c8776507a5 + m_Value: + - m_Id: 6e7e9ef97e0344bc3a20970dda8e6337 + m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]' + - m_Id: 791eb35b6b84b40b3aea20b10014545d + m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]' + - m_Id: 807597afdaf784375bb64bbbb31b95c9 + m_Value: 'ServerData/[BuildTarget]' + - m_Id: b9b5fe2d75ce54f07965bef27c157d9e + m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]' + m_ProfileEntryNames: + - m_Id: 1392a36db56e64f1e84fc2c8776507a5 + m_Name: Remote.LoadPath + m_InlineUsage: 0 + - m_Id: 6e7e9ef97e0344bc3a20970dda8e6337 + m_Name: Local.BuildPath + m_InlineUsage: 0 + - m_Id: 791eb35b6b84b40b3aea20b10014545d + m_Name: BuildTarget + m_InlineUsage: 0 + - m_Id: 807597afdaf784375bb64bbbb31b95c9 + m_Name: Remote.BuildPath + m_InlineUsage: 0 + - m_Id: b9b5fe2d75ce54f07965bef27c157d9e + m_Name: Local.LoadPath + m_InlineUsage: 0 + m_ProfileVersion: 1 + m_LabelTable: + m_LabelNames: + - default + m_SchemaTemplates: [] + m_GroupTemplateObjects: + - {fileID: 11400000, guid: 81b373c8b738d4ed6aa6b29aaa18eb89, type: 2} + m_InitializationObjects: [] + m_CertificateHandlerType: + m_AssemblyName: + m_ClassName: + m_ActivePlayerDataBuilderIndex: 2 + m_DataBuilders: + - {fileID: 11400000, guid: b1b42ca706e094559b3cafc421a17adc, type: 2} + - {fileID: 11400000, guid: 3390a93e65f9e4276a8f8d988dab06d3, type: 2} + - {fileID: 11400000, guid: 879660329a5904e37a49853b73753435, type: 2} + m_ActiveProfileId: 5bcd8455921c84270accc11f3fbc6449 diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta b/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta new file mode 100644 index 0000000000..dca992bdfd --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ec2a0639b2d54a60b37f37b409b7d5c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates.meta b/Assets/AddressableAssetsData/AssetGroupTemplates.meta new file mode 100644 index 0000000000..5c19dfc50b --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72b5ae63e8c344d7d8c5cddab5348bf1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset new file mode 100644 index 0000000000..59ac02a3bc --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a3c5d64ac83548c09dd1678b9f6f1cd, type: 3} + m_Name: Packed Assets + m_EditorClassIdentifier: + m_SchemaObjects: + - {fileID: 2761359259105829908} + - {fileID: 3655121760924759167} + m_Description: Pack assets into asset bundles. + m_Settings: {fileID: 11400000, guid: 1ec2a0639b2d54a60b37f37b409b7d5c, type: 2} +--- !u!114 &2761359259105829908 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} + m_Name: BundledAssetGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 0} + m_InternalBundleIdMode: 1 + m_Compression: 1 + m_IncludeAddressInCatalog: 1 + m_IncludeGUIDInCatalog: 1 + m_IncludeLabelsInCatalog: 1 + m_InternalIdNamingMode: 0 + m_CacheClearBehavior: 0 + m_IncludeInBuild: 1 + m_BundledAssetProviderType: + m_AssemblyName: + m_ClassName: + m_StripDownloadOptions: 0 + m_ForceUniqueProvider: 0 + m_UseAssetBundleCache: 1 + m_UseAssetBundleCrc: 1 + m_UseAssetBundleCrcForCachedBundles: 1 + m_UseUWRForLocalBundles: 0 + m_Timeout: 0 + m_ChunkedTransfer: 0 + m_RedirectLimit: -1 + m_RetryCount: 0 + m_BuildPath: + m_Id: + m_LoadPath: + m_Id: + m_BundleMode: 0 + m_AssetBundleProviderType: + m_AssemblyName: + m_ClassName: + m_UseDefaultSchemaSettings: 0 + m_SelectedPathPairIndex: 0 + m_BundleNaming: 0 + m_AssetLoadMode: 0 +--- !u!114 &3655121760924759167 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} + m_Name: ContentUpdateGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 0} + m_StaticContent: 0 diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta new file mode 100644 index 0000000000..34eee462bb --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81b373c8b738d4ed6aa6b29aaa18eb89 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups.meta b/Assets/AddressableAssetsData/AssetGroups.meta new file mode 100644 index 0000000000..0999a33509 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0a4b760ecb9142b4a75c3421223330a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas.meta new file mode 100644 index 0000000000..e1e8e0bac4 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb1dd8c4e371b4d4ea048ab3a4acddbd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset new file mode 100644 index 0000000000..daf8b6ec8e --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} + m_Name: models_BundledAssetGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 11400000, guid: 15c7600774f5e4fa39799fa2fa5cddc7, type: 2} + m_InternalBundleIdMode: 1 + m_Compression: 1 + m_IncludeAddressInCatalog: 1 + m_IncludeGUIDInCatalog: 1 + m_IncludeLabelsInCatalog: 1 + m_InternalIdNamingMode: 0 + m_CacheClearBehavior: 0 + m_IncludeInBuild: 1 + m_BundledAssetProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider + m_StripDownloadOptions: 0 + m_ForceUniqueProvider: 0 + m_UseAssetBundleCache: 1 + m_UseAssetBundleCrc: 1 + m_UseAssetBundleCrcForCachedBundles: 1 + m_UseUWRForLocalBundles: 0 + m_Timeout: 0 + m_ChunkedTransfer: 0 + m_RedirectLimit: -1 + m_RetryCount: 0 + m_BuildPath: + m_Id: 6e7e9ef97e0344bc3a20970dda8e6337 + m_LoadPath: + m_Id: b9b5fe2d75ce54f07965bef27c157d9e + m_BundleMode: 0 + m_AssetBundleProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider + m_UseDefaultSchemaSettings: 0 + m_SelectedPathPairIndex: 0 + m_BundleNaming: 0 + m_AssetLoadMode: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset.meta new file mode 100644 index 0000000000..99dddbab1c --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 874254206b0164c3c9c5d440bd18f1d2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset new file mode 100644 index 0000000000..40caccfdad --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} + m_Name: models_ContentUpdateGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 11400000, guid: 15c7600774f5e4fa39799fa2fa5cddc7, type: 2} + m_StaticContent: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset.meta new file mode 100644 index 0000000000..0ac6525c63 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c22bf47e733b4bd18571ccb389a9d99 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/models.asset b/Assets/AddressableAssetsData/AssetGroups/models.asset new file mode 100644 index 0000000000..686e14594b --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/models.asset @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3} + m_Name: models + m_EditorClassIdentifier: + m_GroupName: models + m_GUID: bbd793018c27748cca02d5de986048df + m_SerializeEntries: + - m_GUID: 7daa10b47beb04798927c05cc7148951 + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u677E\u9F20/\u7EA2\u8272\u677E\u9F20/\u7EFF\u8272\u677E\u9F20" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + m_ReadOnly: 0 + m_Settings: {fileID: 11400000, guid: 1ec2a0639b2d54a60b37f37b409b7d5c, type: 2} + m_SchemaSet: + m_Schemas: + - {fileID: 11400000, guid: 874254206b0164c3c9c5d440bd18f1d2, type: 2} + - {fileID: 11400000, guid: 1c22bf47e733b4bd18571ccb389a9d99, type: 2} diff --git a/Assets/AddressableAssetsData/AssetGroups/models.asset.meta b/Assets/AddressableAssetsData/AssetGroups/models.asset.meta new file mode 100644 index 0000000000..250e0c928b --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/models.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15c7600774f5e4fa39799fa2fa5cddc7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders.meta b/Assets/AddressableAssetsData/DataBuilders.meta new file mode 100644 index 0000000000..5f869fa5d1 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83d094317c6ee467fb107004b05285fe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset new file mode 100644 index 0000000000..50d30dc58e --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88d21199f5d473f4db36845f2318f180, type: 3} + m_Name: BuildScriptFastMode + m_EditorClassIdentifier: + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta new file mode 100644 index 0000000000..8bd60cd90b --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b1b42ca706e094559b3cafc421a17adc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset new file mode 100644 index 0000000000..ec875f9435 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3e2e0ffa088c91d41a086d0b8cb16bdc, type: 3} + m_Name: BuildScriptPackedMode + m_EditorClassIdentifier: + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta new file mode 100644 index 0000000000..938b118213 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 879660329a5904e37a49853b73753435 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset new file mode 100644 index 0000000000..762884519c --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ad8c280d42ee0ed41a27db23b43dd2bf, type: 3} + m_Name: BuildScriptPackedPlayMode + m_EditorClassIdentifier: + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta new file mode 100644 index 0000000000..bca4b3661b --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3390a93e65f9e4276a8f8d988dab06d3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DefaultObject.asset b/Assets/AddressableAssetsData/DefaultObject.asset new file mode 100644 index 0000000000..9036370d4c --- /dev/null +++ b/Assets/AddressableAssetsData/DefaultObject.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a189bb168d8d90478a09ea08c2f3d72, type: 3} + m_Name: DefaultObject + m_EditorClassIdentifier: + m_AddressableAssetSettingsGuid: 1ec2a0639b2d54a60b37f37b409b7d5c diff --git a/Assets/AddressableAssetsData/DefaultObject.asset.meta b/Assets/AddressableAssetsData/DefaultObject.asset.meta new file mode 100644 index 0000000000..c0bdf3b301 --- /dev/null +++ b/Assets/AddressableAssetsData/DefaultObject.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10a66f9b645da4b5ba42fbf892b922ee +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta b/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta new file mode 100644 index 0000000000..333a9b1482 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d0c06c588e2a6442488a3542551fb243 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/NetworkManager.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/NetworkManager.cs index a93ec23bdd..86ce0a9476 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/NetworkManager.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/NetworkManager.cs @@ -307,15 +307,6 @@ namespace CSNetwork _receiveOctets.Capacity, token ); - - // if (bytesRead > 0) - // { - // _logger.Log(LogType.Info, $"ProcessReceivedData:: Last Byte: {_receiveOctets.RawBuffer[currentBufferLength + bytesRead - 1]}"); - // if (_previousLength > 0) - // _logger.Log(LogType.Info, $"ProcessReceivedData:: Buffer remaining data size from {_previousLength} to {currentBufferLength + bytesRead} --- Last byte: {_receiveOctets.RawBuffer[_previousLength - 1]}"); - // } - // - // _previousLength = currentBufferLength + bytesRead; // cache to check if the buffer is growing } catch (IOException ex) when (ex.InnerException is SocketException se diff --git a/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs b/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs new file mode 100644 index 0000000000..2c5ffd832e --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs @@ -0,0 +1,23 @@ +namespace BrewMonster.Scripts.Skills +{ + public enum enumSkillFitLevelState + { + SKILL_FIT_LEVEL, // ¼¼ÄÜÂú×ãµÈ¼¶¡¢ÐÞÕæ¡¢¾³½çÌõ¼þ / Skill meets level, cultivation, realm requirements + SKILL_NOT_FIT_LEVEL, // ¼¼Äܲ»Âú×ãµÈ¼¶¡¢ÐÞÕæ¡¢¾³½çÌõ¼þ / Skill does not meet level, cultivation, realm requirements + } + + public enum enumSkillLearnedState + { + SKILL_NOT_LEARNED, // ¼¼ÄÜδѧϰ / Skill not learned + SKILL_LEARNED, // ¼¼ÄÜÒÑѧϰ£¬µ«²»Âú¼¶ / Skill learned but not at max level + SKILL_FULL, // ¼¼ÄÜÒÑÂú¼¶ / Skill at max level + SKILL_OVERRIDDEN, // ¼¼ÄÜÒѱ»¸²¸Ç / Skill has been overridden + } + + public enum enumEvilGod + { + SKILL_BASE, // ÆÕͨ¼¼ÄÜ / Normal skill + SKILL_EVIL, // Ïɼ¼ÄÜ / Immortal skill + SKILL_GOD, // ħ¼¼ÄÜ / Demonic skill + } +} \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs.meta b/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs.meta new file mode 100644 index 0000000000..d83e6c5884 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0ac9cd34c55ab4c668b852e4e2d6a67c \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Skills/ElementSkill.cs b/Assets/PerfectWorld/Scripts/Skills/ElementSkill.cs new file mode 100644 index 0000000000..4806fdf564 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/ElementSkill.cs @@ -0,0 +1,211 @@ +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace BrewMonster.Scripts.Skills + { + public enum skill_type{ + TYPE_ATTACK = 1, // Attack // �������� + TYPE_BLESS = 2, // Blessing // ����ף�� + TYPE_CURSE = 3, // Curse // �������� + TYPE_SUMMON = 4, // Summon // ��Ʒ���� + TYPE_PASSIVE = 5, // Passive // ���� + TYPE_ENABLED = 6, // Enabled // �������� + TYPE_LIVE = 7, // Live // ���� + TYPE_JUMP = 8, // Jump // ˲�� + TYPE_PRODUCE = 9, // Production (Crafting) // ����(����) + TYPE_BLESSPET = 10, // Pet Blessing // ����ף�� + TYPE_NEUTRALBLESS = 11, // Neutral Blessing // ����ף�� + }; + + public enum range_type{ + TYPE_POINT = 0, // �� + TYPE_LINE = 1, // �� + TYPE_SELFSPHERE = 2, // ����Ϊ���ĵ��� + TYPE_TARGETSPHERE = 3, // Ŀ��Ϊ���ĵ��� + TYPE_TAPER = 4, // Ô²×¶ + TYPE_SLEF = 5, // ���� + }; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct LearnRequirement + { + public int level; // µÈ¼¶ÒªÇó // Level requirement + public int sp; // ¼¼Äܵã // Skill points + public int money; // ½ðÇ® // Money + public int profession; // Ö°Òµ // Profession + public int rank; // ½×¼¶±ð // Rank level + public int realm_level; // ¾³½çµÈ¼¶ // Realm level + } + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct PetRequirement + { + public int level; // µÈ¼¶¼¶±ð // Level requirement + public int sp; // ³èÎï¼¼Äܵã // Pet skill points + public int list; // ³èÎï¼¼ÄÜÁбí // Pet skill list + public int lsize; // Áбí´óС // List size + } + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct GoblinRequirement + { + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] + public int[] genius; // С¾«Áé¼¼ÄÜÌ츳 // Goblin skill talents + public int profession; // Ö°Òµ // Profession + public int sp; // ¾«ÁéÔªÆø // Spirit points + public int money; // ¾«Áé½ðÇ® // Money + public int level; // С¾«ÁéµÈ¼¶ // Goblin level + public int mp; // С¾«Á鵱ǰħ·¨µãÊý // Current magic points + } + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct ComboSkillState + { + public const int MAX_COMBO_ARG = 3; + public uint skillid; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_COMBO_ARG)] + public int[] arg; + } + + public struct UseRequirement + { + public int mp; //ħ�� // Magic points + public int ap; //ŭ��ֵ // Anger points + public int form; //����״̬ // Form state + public int weapon; //���� // Weapon + public int freepackage; //������ʣ����Ŀ // Remaining inventory slots + public int arrow; //װ����֧��Ŀ // Number of arrows loaded + public int move_env; //�ƶ����� // Movement environment + public bool is_combat; //�Ƿ�ս��״̬ // Whether in combat state + public int hp; //��ǰhp // Current HP + public int max_hp; //���hp // Maximum HP + // public ComboSkillState combo_state; //���������� // Combo skill state + }; + + public struct GoblinUseRequirement + { + public int mp; //����(Ԫ��) + public int ap; //����(����) + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] + public int[] genius; //С���鼼���츳�� + public int profession; //����ְҵ + public int level; //С����ȼ������ڼ����������ï¿? + public int move_env; //���˵�ǰ�ƶ����� + }; + + public class SkillStr + { + public virtual ushort[] Find(int id) {return new ushort[0];} + } + + public enum SKILL_STATE + { + SKILL_PERFORM, + SKILL_DONE, + } + public class ElementSkill + { + public const byte FORM_MASK_HIGH = 0xC0; + public const byte FORM_NORMAL = 0; //��ͨ��̬ + public const byte FORM_CLASS = 1; //ְҵ���� + public const byte FORM_BEASTIE = 2; //������ + public static uint NextSkill(uint id = 0) + { + //TODO: Implement this + return 0; + } + + // �������� + public virtual ushort[] GetName() { return null;} + public virtual byte[] GetNativeName() { return null;} + // ������ï¿?,��skill_type + public virtual byte GetType() { return 1; } + // ����ͼ�� + public virtual byte[] GetIcon() { return null; } + // ����˵�� + public virtual ushort[] GetIntroduction(string buf,int len,SkillStr table) { return new ushort[0]; } + // ����ְҵ���� + public virtual int GetCls() { return -1; } + // ������ȴʱ�䣬��λ���� + public virtual int GetCoolingTime() { return 5000; } + // ����ִ��ʱ�䣬��λ���� + public virtual int GetExecuteTime() { return 1000; } + // Ŀ����������, 0:����Ŀ�꣬1:��ҪĿ�꣬2:Ŀ�������Ê?��, 3:Ŀ�����Î?����, 4:Ŀ�����Î?���� + public virtual int GetTargetType(){return 0;} + // ������Ч�ͷž���: <-0.001����Ŀ�� -0.001-0.001 Ĭ�Ϲ������룬>0.001 �ͷž��� + public virtual float GetPrayRange(float range, float prayplus) { return 0; } + + + // �������漶�� + public virtual int GetRank() { return 0; } + // ѧϰn������Ҫ�����Ҽ��� + public virtual int GetRequiredLevel() { return 0;} + // ѧϰn��������Ҫ�ļ��ܵ� + public virtual int GetRequiredSp() { return 0;} + // ѧϰn����Ҫ�ļ����� + public virtual int GetRequiredBook() { return 0;} + // ѧϰ��Ҫ��Ǯ + public virtual int GetRequiredMoney() { return 0;} + // ѧϰ���󾳽�ȼï¿? + public virtual int GetRequiredRealmLevel() { return 0; } + // ǰ�Ἴ�� + public virtual Dictionary GetRequiredSkill() => new Dictionary(); + // ��ʾ˳�� + public virtual int GetShowOrder() { return 0; } + // ���ü��ܼ��� + public virtual int SetLevel(int level) { return 0; } + // ������󼶱ï¿? + public virtual int GetMaxLevel() { return 0; } + + // �Ƿ��������� + public virtual bool IsWarmup() { return false; } + // ʹ�ú��Ƿ��Զ����� + public virtual bool IsAutoAttack(){return false;} + // ˲������ + public virtual bool IsInstant(){return false;} + // �Ƿ�������ï¿? + public virtual bool IsDurative() { return false; } + // ɱ�˷�Χ������ + public virtual int GetRangeType() { return 0; } + // �ͷŻ��������С����桢ˮ�� + public virtual int GetCastEnv() { return 0; } + // ��ȡС����ѧϰ���ͷż��������츳�� + public virtual int GetRequiredGenius(int idSkill) { return 0; } + + // Ч���ļ��� + public virtual byte[] GetEffect() { return null;} + public virtual byte[] GetElseEffect() { return null;} + + // ʹ����ҪMP + public virtual int GetMpCost(){return 1;} + + // ʹ����ҪAP + public virtual int GetApCost(){return 0;} + + // ��֧���� + public virtual int GetArrowCost(){return 0;} + + // ���������ж� + public virtual bool ValidWeapon(int w) { return true; } + // 0, �ɹ���1��������ƥ�䣻2, mp���㣻3��λ�����������㣻4��������������ã£?5������ID, 6��δѡ��Ŀ�� + public int Condition(UseRequirement info) + { + return 0; + } + + public virtual bool IsAllowLand(){ return true; } + public virtual bool IsAllowWater(){ return true; } + public virtual bool IsAllowAir(){ return true; } + public virtual bool GetNotuseInCombat(){ return false; } + //�Ƿ��ƶ�ʩ�� + public virtual bool IsMovingSkill() { return false; } + // �����ܷ��ڵ�ǰ����״̬��ʹ�� + public bool IsValidForm(byte form) + { + byte form_type = (byte)((form & FORM_MASK_HIGH) >> 6); + return ((GetAllowForms() & (1 << form_type))!=0); + } + public virtual byte GetAllowForms() { return 0; } + public virtual bool Interrupt() { return true; } + } + } \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Skills/ElementSkill.cs.meta b/Assets/PerfectWorld/Scripts/Skills/ElementSkill.cs.meta new file mode 100644 index 0000000000..61ffd1d1a0 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/ElementSkill.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fc68b472f6584455b9960c566b282a3e \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Skills/skill.cs b/Assets/PerfectWorld/Scripts/Skills/skill.cs index 00d08e9011..c46ffed66d 100644 --- a/Assets/PerfectWorld/Scripts/Skills/skill.cs +++ b/Assets/PerfectWorld/Scripts/Skills/skill.cs @@ -1,15 +1,168 @@ -namespace PerfectWorld.Scripts.Skills +using System.Collections.Generic; + +namespace BrewMonster.Scripts.Skills { - class Range + public class Range { - public char type; // 0µã 1Ïß 2×ÔÉíÇò 3Ä¿±êÇò 4Ô²×¶ÐÎ 5×ÔÉí + /// 0=point 1=line 2=self sphere 3=target sphere 4=cone 5=self + public char type; // 0µã 1Ïß 2×ÔÉíÇò 3Ä¿±êÇò 4Ô²×¶ÐÎ 5×ÔÉí + + public bool IsPoint() { return type == 0; } + public bool IsLine() { return type == 1; } + public bool IsSelfBall() { return type == 2; } + public bool IsTargetBall() { return type == 3; } + public bool IsSector() { return type == 4; } + public bool IsSelf() { return type == 5; } + public bool NoTarget() { return type == 2 || type == 5; } + } - public class SkillStub + // ռλ¼¼ÄÜÀà // Placeholder Skill class + public class Skill : ElementSkill + { + } + + public abstract class SkillStub { - public uint ID; public const int MIN_LEVEL = 1; public const int MAX_LEVEL = 10; + + // Base info + public uint id; // Ψһ���ֱ�ʶ // Unique identifier + public int cls; // Ö°Òµ // Class/Profession + public ushort[] name; // �������� // Skill name + public byte[] nativename; // ������ // Native name + public byte[] icon; // ����ͼ�� // Skill icon + public int max_level; // ������󼶱ï¿? // Maximum level + public byte type; // ������ï¿? 1�������� 2�������� 3�����ٻ� 4���� 5���� // Skill type: 1-Normal 2-Special 3-Partner 4-Mount 5-Other + + // Execute condition + public bool allow_ride; // �����Ð? // Allow while riding + public short attr; // ����������, 1������2��3ľ��4ˮ��5��6�� ��ѡһ Ĭ�ϣ������� // Attribute: 1-Metal 2-Earth 3-Wood 4-Water 5-Fire 6-Special (Choose one, default none) + public int rank; // ���漶�� // Rank + public int eventflag; // Event flag + public byte is_senior; // Senior flag + public bool is_inherent; // �������ܣ�����ѧ������ // Inherent skill, cannot be learned + public bool is_movingcast; // �ƶ�ʩ�� // Can cast while moving + public int npcdelay; // NPC delay + public int showorder; // Display order + public byte allow_forms; // Allowed forms + public int apcost; // AP cost + public int apgain; // AP gain + public byte doenchant; // Do enchant + public byte dobless; // Do bless + public int arrowcost; // Arrow cost + public Dictionary pre_skills; + + // Execute condition + public bool allow_land; // ½µØÓÐЧ // Effective on land + public bool allow_air; // ¿ÕÖÐÓÐЧ // Effective in air + public bool allow_water; // Ë®ÖÐÓÐЧ // Effective in water + public bool notuse_in_combat; // Õ½¶·×´Ì¬²»¿ÉÓà // Cannot use in combat state + public int restrict_corpse; // Ö»¶ÔʬÌåÓÐЧ // Only effective on corpses + public bool restrict_change; // ÊÇ·ñ¿ÉÒÔ±äÉí // Whether can transform + public bool restrict_attach; // ÊÇ·ñ¿ÉÒÔ¸½Éí // Whether can possess + public bool auto_attack; // ʹÓúóÊÇ·ñ×Ô¶¯¹¥»÷ // Whether to auto attack after use + public char time_type; // ˲·¢ÀàÐÍ // Instant cast type + public char long_range; + public char posdouble; // λÖÃÑ¡Ôñ // Position selection + public int clslimit; // Ö°ÒµÏÞÖÆ // Class restriction + + public int commoncooldown; // ¹«¹²ÀäÈ´mask bit0-4 ¼¼ÄÜÀäÈ´0-4 bit5-9 ÎïÆ·ÀäÈ´0-4 + // Common cooldown mask bit0-4 skill cooldown 0-4 bit5-9 item cooldown 0-4 + public int commoncooldowntime; // Àäȴʱ¼ä£¬µ¥Î»ºÁÃë // Cooldown time in milliseconds + + public int itemcost; // ÊÍ·ÅʱÏûºÄÎïÆ· >0ÓÐЧ // Item cost when casting, effective if >0 + + // Á¬»÷Ïà¹Ø // Combo related + public int combosk_preskill; + public int combosk_interval; + public int combosk_nobreak; + + public byte[] effect; + public byte[] aerial_effect; + + public Range range; + public bool has_stateattack; + + public List restrict_weapons; + public static Dictionary map; + public static Dictionary GetMap() => map; + + public static Dictionary> inheritSkillMap = new(); + public static List GetInherentSkillList(uint cls) + { + return inheritSkillMap[cls]; + } + + public static Dictionary> comboSkillMap; + public static Dictionary> GetComboSkMap() => comboSkillMap; + + public static SkillStub GetStub(uint i) + { + return GetMap().TryGetValue(i, out var stub) ? stub : null; + } + + public static void InitStaticData() + { + var map = GetMap(); + foreach (var skill in map) + { + SkillStub sk = skill.Value; + if (sk.is_inherent) GetInherentSkillList((uint)sk.cls).Add(sk.id); + if (sk.combosk_preskill > 0) GetComboSkMap()[(uint)sk.combosk_preskill].Add(sk.id); + } + } + + public List GetPostComboSkill(uint id) + { + var m = GetComboSkMap(); + if (m.TryGetValue(id, out var list)) return list; + return null; + } + + // ÒÔÏÂΪ´ÓC++ת»»µÄ½Ó¿Ú // The following methods are converted from C++ + public uint GetId() { return id; } + public int GetCls() { return cls; } + public ushort[] GetName() { return name; } + public byte[] GetIcon() { return icon; } + public int GetMaxLevel() { return max_level; } + public Range GetRange() { return range; } + public int GetItemCost() { return itemcost; } + public bool IsMovingSkill() { return is_movingcast; } + public new byte GetType() { return type; } // Òþ²ØSystem.Object.GetType // Hide System.Object.GetType + + // ÔËÐÐʱÏà¹ØÐ麯Êý // Runtime-related virtual functions + public virtual int GetCoolingtime(Skill skill) { return 0; } + public virtual int GetRequiredSp(Skill skill) { return 0; } + public virtual int GetRequiredLevel(Skill skill) { return 0; } + public virtual int GetMaxAbility(Skill skill) { return 0; } + public virtual int GetRequiredItem(Skill skill) { return 0; } + public virtual int GetRequiredMoney(Skill skill) { return 0; } + public virtual int GetRequiredRealmLevel(Skill skill) { return 0; } + public virtual float GetPraydistance(Skill skill) { return 0f; } + public virtual float GetMpcost(Skill skill) { return 0f; } + public virtual int GetExecutetime(Skill skill) { return 1000; } + public virtual bool CheckHpCondition(int hp, int max_hp) { return true; } + public virtual bool CheckComboSkExtraCondition(Skill skill) { return true; } + public virtual int GetIntroduction(Skill skill, ushort[] descBuffer, int descBufferLen, ushort[] titleBuffer) { return 0; } + + // ÎäÆ÷ÓÐЧÐÔ¼ì²é // Validate weapon restriction + public bool ValidWeapon(int weapon) + { + if (restrict_weapons != null) + { + int i; + for (i = 0; i < restrict_weapons.Count; i++) + { + if (weapon == restrict_weapons[i]) + return true; + } + if (i > 0 && i >= restrict_weapons.Count) + return false; + } + return true; + } } } \ No newline at end of file