diff --git a/Assets/NetworkLib/Debug/netstandard2.1/CSNetwork.dll b/Assets/NetworkLib/Debug/netstandard2.1/CSNetwork.dll index 2dcbc66e36..5577fab086 100644 Binary files a/Assets/NetworkLib/Debug/netstandard2.1/CSNetwork.dll and b/Assets/NetworkLib/Debug/netstandard2.1/CSNetwork.dll differ diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs b/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs index ee3af86ae5..463e9229ad 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs @@ -1,7 +1,10 @@ +using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.Reflection; +using BrewMonster.Network; +using BrewMonster; namespace PerfectWorld.Scripts.Managers { @@ -24,6 +27,7 @@ namespace PerfectWorld.Scripts.Managers [SerializeField] private TextOutlet expireText; [SerializeField] private TextOutlet crcText; [SerializeField] private TextOutlet contentLenText; + [SerializeField] private Button equipButton; [Header("Inventory Settings")] [SerializeField] private bool autoRefresh = true; @@ -33,6 +37,11 @@ namespace PerfectWorld.Scripts.Managers private InventoryModel model; private InventoryView view; + + // Current selected item for equip/unequip operations + private byte currentSelectedPackage; + private int currentSelectedSlot; + private InventoryItemData currentSelectedItem; private const byte PKG_INVENTORY = 0; private const byte PKG_EQUIPMENT = 1; @@ -79,6 +88,11 @@ namespace PerfectWorld.Scripts.Managers var data = model.GetInventoryData(package); if (data != null && data.TryGetValue(slot, out var itemData)) { + // Store current selection for equip/unequip operations + currentSelectedPackage = package; + currentSelectedSlot = slot; + currentSelectedItem = itemData; + FillDetailPanel(package, itemData); } else @@ -112,6 +126,144 @@ namespace PerfectWorld.Scripts.Managers refreshInterval = Mathf.Max(0.1f, interval); } + public void OnEquipButtonClicked() + { + if (currentSelectedItem == null) + { + Debug.LogWarning("[InventoryUI] No item selected for equip/unequip operation"); + return; + } + + if (currentSelectedPackage == PKG_INVENTORY) + { + // Equipping from inventory + EquipItem(); + } + else if (currentSelectedPackage == PKG_EQUIPMENT) + { + // Unequipping from equipment + UnequipItem(); + } + else + { + Debug.LogWarning($"[InventoryUI] Equip/Unequip not supported for package {currentSelectedPackage}"); + } + } + + private void EquipItem() + { + if (currentSelectedItem == null) return; + + // For equipping, we need to find an empty equipment slot + // The equip location should be determined by the item type or use a default + byte equipLocation = GetEquipLocationForItem(currentSelectedItem.TemplateId); + if (equipLocation == 0) + { + Debug.LogWarning($"[InventoryUI] Could not determine equip location for item {currentSelectedItem.TemplateId}"); + return; + } + + // Call RequestEquipItemAsync with inventory slot and equip location + UnityGameSession.RequestEquipItemAsync((byte)currentSelectedSlot, equipLocation, () => + { + Debug.Log($"[InventoryUI] Equip request sent for item {currentSelectedItem.TemplateId} from slot {currentSelectedSlot} to equip location {equipLocation}"); + // Refresh inventory after equip + RefreshAll(); + }); + } + + private void UnequipItem() + { + if (currentSelectedItem == null) return; + + // Find empty slot in PACK_INVENTORY + int emptySlot = FindEmptyInventorySlot(); + if (emptySlot == -1) + { + Debug.LogWarning("[InventoryUI] No empty slots available in inventory for unequipping"); + return; + } + + // For unequipping, the equip location is the current equipment slot + // We can use the slot number as the equip location + byte equipLocation = (byte)currentSelectedSlot; + + // Call RequestEquipItemAsync with empty inventory slot and current equip location + UnityGameSession.RequestEquipItemAsync((byte)emptySlot, equipLocation, () => + { + Debug.Log($"[InventoryUI] Unequip request sent for item {currentSelectedItem.TemplateId} from equip location {equipLocation} to inventory slot {emptySlot}"); + // Refresh inventory after unequip + RefreshAll(); + }); + } + + private byte GetEquipLocationForItem(int templateId) + { + // Simple approach: use the template ID to determine equip location + // This is a basic mapping - you may need to adjust based on your game's logic + try + { + // Try to get equip location from ESSENCE data first + var edm = ElementDataManProvider.GetElementDataMan(); + if (edm != null) + { + uint id = unchecked((uint)templateId); + object data = edm.get_data_ptr(id, ID_SPACE.ID_SPACE_ESSENCE); + if (data != null) + { + var equipLocationField = data.GetType().GetField("equip_location", BindingFlags.Public | BindingFlags.Instance); + if (equipLocationField != null && equipLocationField.FieldType == typeof(uint)) + { + uint equipLocation = (uint)equipLocationField.GetValue(data); + Debug.Log($"[InventoryUI] Found equip_location {equipLocation} for template {templateId}"); + return (byte)equipLocation; + } + } + } + + // Fallback: use a simple mapping based on template ID ranges + // This is a basic implementation - adjust based on your game's item system + Debug.Log($"[InventoryUI] Using fallback equip location for template {templateId}"); + return GetDefaultEquipLocation(templateId); + } + catch (Exception ex) + { + Debug.LogWarning($"[InventoryUI] Error getting equip location for template {templateId}: {ex.Message}"); + return GetDefaultEquipLocation(templateId); + } + } + + private byte GetDefaultEquipLocation(int templateId) + { + // Basic equip location mapping based on template ID + // Adjust these ranges based on your game's item system + if (templateId >= 1000 && templateId < 2000) return 1; // Weapon + if (templateId >= 2000 && templateId < 3000) return 2; // Armor + if (templateId >= 3000 && templateId < 4000) return 3; // Accessory + if (templateId >= 4000 && templateId < 5000) return 4; // Ring + if (templateId >= 5000 && templateId < 6000) return 5; // Necklace + + // Default to slot 1 if no specific mapping + Debug.Log($"[InventoryUI] Using default equip location 1 for template {templateId}"); + return 1; + } + + private int FindEmptyInventorySlot() + { + var inventoryData = model.GetInventoryData(PKG_INVENTORY); + if (inventoryData == null) return -1; + + // Find first empty slot (assuming slots are numbered 0, 1, 2, ...) + for (int i = 0; i < 100; i++) // Assuming max 100 inventory slots + { + if (!inventoryData.ContainsKey(i)) + { + return i; + } + } + return -1; + } + // === MVC: Model === private class InventoryModel { @@ -168,8 +320,7 @@ namespace PerfectWorld.Scripts.Managers bool hasItem = items != null && items.TryGetValue(slot, out itemData); button.onClick.RemoveAllListeners(); int capturedSlot = slot; - button.onClick.AddListener(() => onClick(package, capturedSlot)); - + button.onClick.AddListener(() => onClick(package, capturedSlot)); // Optional visual tweaks based on state/count var image = button.GetComponent(); if (image != null) @@ -238,9 +389,62 @@ namespace PerfectWorld.Scripts.Managers crcText?.Set(item.Crc.ToString()); contentLenText?.Set((item.Content?.Length ?? 0).ToString()); + // Setup equip button + SetupEquipButton(package, item); + ShowDetailPanel(true); } + private void SetupEquipButton(byte package, InventoryItemData item) + { + if (equipButton == null) return; + + // Clear previous listeners + equipButton.onClick.RemoveAllListeners(); + equipButton.onClick.AddListener(OnEquipButtonClicked); + + // Set button text and visibility based on package + var buttonText = equipButton.GetComponentInChildren(); + if (buttonText == null) + { + var tmpText = equipButton.GetComponentInChildren(); + if (tmpText != null) + { + if (package == PKG_INVENTORY) + { + tmpText.text = "Equip"; + equipButton.gameObject.SetActive(true); + } + else if (package == PKG_EQUIPMENT) + { + tmpText.text = "UnEquip"; + equipButton.gameObject.SetActive(true); + } + else + { + equipButton.gameObject.SetActive(false); + } + } + } + else + { + if (package == PKG_INVENTORY) + { + buttonText.text = "Equip"; + equipButton.gameObject.SetActive(true); + } + else if (package == PKG_EQUIPMENT) + { + buttonText.text = "UnEquip"; + equipButton.gameObject.SetActive(true); + } + else + { + equipButton.gameObject.SetActive(false); + } + } + } + private static string GetPackageName(byte pkg) { switch (pkg) diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs index adbb0c2b9a..ed1efb9a0a 100644 --- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs @@ -128,6 +128,11 @@ namespace BrewMonster.Network Instance._gameSession.RequestInventoryAsync(byPackage, callback); } + public static void RequestEquipItemAsync(byte iIvtrIdx, byte iEquipIdx, Action callback = null) + { + Instance._gameSession.RequestEquipItem(iIvtrIdx, iEquipIdx, callback); + } + public static void RequestAllInventoriesAsync(Action callback = null, params byte[] packages) { if (packages == null || packages.Length == 0) diff --git a/Assets/Prefabs/InventoryUI.prefab b/Assets/Prefabs/InventoryUI.prefab index 7be46ba5d2..9160c69e99 100644 --- a/Assets/Prefabs/InventoryUI.prefab +++ b/Assets/Prefabs/InventoryUI.prefab @@ -555,6 +555,147 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &633515748786992396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5275130098495308601} + - component: {fileID: 7874153745862569389} + - component: {fileID: 112648634020396885} + - component: {fileID: 3332719603249310962} + m_Layer: 5 + m_Name: PreviewCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5275130098495308601 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 633515748786992396} + 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: 6778274724352405780} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!20 &7874153745862569389 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 633515748786992396} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 8 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: da151233895139942837a2c0c07e5c4a, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &112648634020396885 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 633515748786992396} + m_Enabled: 1 +--- !u!114 &3332719603249310962 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 633515748786992396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 --- !u!1 &685363479191399138 GameObject: m_ObjectHideFlags: 0 @@ -1986,6 +2127,142 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &1284290816170441003 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2466161328052096029} + - component: {fileID: 6463394684454733508} + - component: {fileID: 8953421006885282374} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2466161328052096029 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1284290816170441003} + 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: 7848525089621781280} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.000061035156, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6463394684454733508 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1284290816170441003} + m_CullTransparentMesh: 1 +--- !u!114 &8953421006885282374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1284290816170441003} + 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: Button + 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: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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: 24 + m_fontSizeBase: 24 + 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 &1320368067972250102 GameObject: m_ObjectHideFlags: 0 @@ -4707,6 +4984,7 @@ RectTransform: - {fileID: 174663297343150196} - {fileID: 292490913284592957} - {fileID: 2929521460947899744} + - {fileID: 7848525089621781280} m_Father: {fileID: 5834405183358786743} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -4735,7 +5013,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0.392} + 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 @@ -7820,6 +8098,8 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 6778274724352405780} + - component: {fileID: 5765354275366674162} + - component: {fileID: 6707240765686952970} m_Layer: 5 m_Name: character_preview m_TagString: Untagged @@ -7838,7 +8118,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 5275130098495308601} m_Father: {fileID: 3289674559629147232} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -7846,6 +8127,41 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 361.6641, y: 589.65} m_Pivot: {x: 1, y: 1} +--- !u!222 &5765354275366674162 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5468137454250289500} + m_CullTransparentMesh: 1 +--- !u!114 &6707240765686952970 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5468137454250289500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: da151233895139942837a2c0c07e5c4a, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 --- !u!1 &5473020210238587200 GameObject: m_ObjectHideFlags: 0 @@ -8485,13 +8801,7 @@ MonoBehaviour: - {fileID: 1194055256143897199} - {fileID: 1194055256143897199} - {fileID: 486249631205428665} - fashionPackButtons: - - {fileID: 5698708560429622283} - - {fileID: 486249631205428665} - - {fileID: 8959369485179892334} - - {fileID: 959734950479411724} - - {fileID: 961650114002827304} - - {fileID: 235698874153373406} + fashionPackButtons: [] detailPanelRoot: {fileID: 2900449705256812174} hideDetailOnStart: 1 nameText: @@ -8521,9 +8831,7 @@ MonoBehaviour: contentLenText: legacy: {fileID: 0} tmp: {fileID: 8920679592020680426} - essenceDataText: - legacy: {fileID: 0} - tmp: {fileID: 1530847087536925506} + equipButton: {fileID: 472698755110594484} autoRefresh: 1 refreshInterval: 1 --- !u!1 &5959049729314796227 @@ -9627,6 +9935,127 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &6337357843872489054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7848525089621781280} + - component: {fileID: 1737545770821452063} + - component: {fileID: 175496166755478291} + - component: {fileID: 472698755110594484} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7848525089621781280 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6337357843872489054} + 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: 2466161328052096029} + m_Father: {fileID: 7205431771786927886} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 81.9021, y: -24.5103} + m_SizeDelta: {x: 163.8041, y: 49.0205} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1737545770821452063 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6337357843872489054} + m_CullTransparentMesh: 1 +--- !u!114 &175496166755478291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6337357843872489054} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &472698755110594484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6337357843872489054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 175496166755478291} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &6377806151830969588 GameObject: m_ObjectHideFlags: 0