diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs b/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs index d3d90979a5..f3773eb874 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs @@ -39,6 +39,19 @@ namespace BrewMonster.Scripts.Managers [SerializeField] private Button equipButton; [SerializeField] private Button dropButton; + [Header("Stack Split UI (assign in Inspector)")] + [SerializeField] private GameObject splitPanelRoot; + [SerializeField] private TMPro.TMP_InputField splitAmountText; + [SerializeField] private Button splitConfirmButton; + [SerializeField] private Button splitCloseButton; + [SerializeField] private Button splitOpenButton; + [SerializeField] private Button splitIncreaseButton; + [SerializeField] private Button splitDecreaseButton; + [SerializeField] private Button splitMaxButton; + + private int _splitAmount = 1; + private int _splitMaxAmount = 1; + [Header("Inventory Settings")] [SerializeField] private bool autoRefresh = true; [SerializeField] private float refreshInterval = 1.0f; @@ -112,6 +125,7 @@ namespace BrewMonster.Scripts.Managers model = new InventoryModel(); view = new InventoryView(); WireBagTabButtons(); + WireSplitUI(); //if (currentDragImage == null) //{ @@ -135,6 +149,7 @@ namespace BrewMonster.Scripts.Managers { ShowDetailPanel(false); } + ShowSplitPanel(false); // Apply any pending currency values captured before the UI became active ApplyPendingCurrency(); } @@ -145,9 +160,125 @@ namespace BrewMonster.Scripts.Managers ApplyPendingCurrency(); UpdateCharacterInfo(); ShowDetailPanel(false); + ShowSplitPanel(false); RefreshAll(); } + private void WireSplitUI() + { + if (splitOpenButton != null) + { + splitOpenButton.onClick.RemoveAllListeners(); + splitOpenButton.onClick.AddListener(OpenSplitPanelForSelection); + } + if (splitConfirmButton != null) + { + splitConfirmButton.onClick.RemoveAllListeners(); + splitConfirmButton.onClick.AddListener(ConfirmSplit); + } + if (splitCloseButton != null) + { + splitCloseButton.onClick.RemoveAllListeners(); + splitCloseButton.onClick.AddListener(() => ShowSplitPanel(false)); + } + + if (splitIncreaseButton != null) + { + splitIncreaseButton.onClick.RemoveAllListeners(); + splitIncreaseButton.onClick.AddListener(() => SetSplitAmount(_splitAmount + 1)); + } + + if (splitDecreaseButton != null) + { + splitDecreaseButton.onClick.RemoveAllListeners(); + splitDecreaseButton.onClick.AddListener(() => SetSplitAmount(_splitAmount - 1)); + } + + if (splitMaxButton != null) + { + splitMaxButton.onClick.RemoveAllListeners(); + splitMaxButton.onClick.AddListener(() => SetSplitAmount(_splitMaxAmount)); + } + + if (splitAmountText != null) + { + splitAmountText.onValueChanged.RemoveAllListeners(); + splitAmountText.onValueChanged.AddListener(OnSplitAmountInputChanged); + } + } + + private void ShowSplitPanel(bool show) + { + if (splitPanelRoot != null) + splitPanelRoot.SetActive(show); + } + + /// + /// Call this from your UI (or bind it to a button) to open the split panel for current selection. + /// + public void OpenSplitPanelForSelection() + { + if (currentSelectedItem == null || currentSelectedPackage != PKG_INVENTORY) + { + Debug.LogWarning("[InventoryUI] OpenSplitPanelForSelection: select an inventory stack first"); + return; + } + + int total = currentSelectedItem.m_iCount; + if (total <= 1) + { + Debug.LogWarning("[InventoryUI] OpenSplitPanelForSelection: item count <= 1"); + return; + } + + _splitMaxAmount = Math.Max(1, total - 1); + _splitAmount = Mathf.Clamp(_splitAmount, 1, _splitMaxAmount); + UpdateSplitAmountUI(); + ShowSplitPanel(true); + } + + private void SetSplitAmount(int amount) + { + _splitAmount = Mathf.Clamp(amount, 1, Math.Max(1, _splitMaxAmount)); + UpdateSplitAmountUI(); + } + + private void UpdateSplitAmountUI() + { + if (splitAmountText != null) + splitAmountText.SetTextWithoutNotify(_splitAmount.ToString()); + + if (splitIncreaseButton != null) + splitIncreaseButton.interactable = _splitAmount < _splitMaxAmount; + if (splitDecreaseButton != null) + splitDecreaseButton.interactable = _splitAmount > 1; + if (splitMaxButton != null) + splitMaxButton.interactable = _splitAmount < _splitMaxAmount; + } + + private void OnSplitAmountInputChanged(string raw) + { + if (!int.TryParse(raw, out int v)) + return; + + v = Mathf.Clamp(v, 1, Math.Max(1, _splitMaxAmount)); + if (v == _splitAmount) + return; + + _splitAmount = v; + UpdateSplitAmountUI(); + } + + private void ConfirmSplit() + { + int amount = _splitAmount; + if (amount <= 0) return; + if (SeparateSelectedStack(amount)) + { + ShowSplitPanel(false); + } + } + private void WireBagTabButtons() { if (tabItemButton != null) @@ -596,6 +727,69 @@ namespace BrewMonster.Scripts.Managers RefreshAll(); } + /// + /// Separate part of the currently selected stack into a new empty slot (C2S MOVE_IVTR_ITEM with partial count). + /// Your UI can call this directly once you've picked the split amount. + /// + public bool SeparateSelectedStack(int splitAmount, int preferredEmptySlot = -1) + { + if (currentSelectedItem == null) + { + Debug.LogWarning("[InventoryUI] SeparateSelectedStack: no item selected"); + return false; + } + + // This client-side move command is for the main inventory pack (IVTRTYPE_PACK) like the original client. + // Task pack / other packs may need different commands depending on server implementation. + if (currentSelectedPackage != PKG_INVENTORY) + { + Debug.LogWarning($"[InventoryUI] SeparateSelectedStack: unsupported package {currentSelectedPackage} (only PKG_INVENTORY supported)"); + return false; + } + + int total = currentSelectedItem.m_iCount; + if (total <= 1) + { + Debug.LogWarning("[InventoryUI] SeparateSelectedStack: item count <= 1"); + return false; + } + + if (splitAmount <= 0 || splitAmount >= total) + { + Debug.LogWarning($"[InventoryUI] SeparateSelectedStack: invalid splitAmount={splitAmount}, total={total}"); + return false; + } + + int emptySlot = preferredEmptySlot >= 0 ? preferredEmptySlot : FindEmptySlotInPackage(PKG_INVENTORY); + if (emptySlot < 0) + { + Debug.LogWarning("[InventoryUI] SeparateSelectedStack: no empty slot available"); + return false; + } + + // Send MOVE_IVTR_ITEM(src, dest, count). When dest is empty and count < stack, server will split. + UnityGameSession.RequestMoveIvtrItem((byte)currentSelectedSlot, (byte)emptySlot, (uint)splitAmount); + + // UI will update when S2C item operation arrives; this is a best-effort immediate refresh for responsiveness. + RefreshAll(); + return true; + } + + private int FindEmptySlotInPackage(byte package) + { + var host = CECGameRun.Instance?.GetHostPlayer(); + var inv = host?.GetInventory(package); + if (inv == null) return -1; + + int size = inv.GetSize(); + for (int i = 0; i < size; i++) + { + if (inv.GetItem(i, false) == null) + return i; + } + return -1; + } + private int FindEmptyInventorySlot() { @@ -1128,18 +1322,18 @@ namespace BrewMonster.Scripts.Managers //if item is @EC_IvtrEquip and is not equipped, show equip button if(item is EC_IvtrEquip) { - tmpText.text = "Equip"; + tmpText.text = "Trang bị"; equipButton.gameObject.SetActive(true); } else { - tmpText.text = "Use"; + tmpText.text = "Sử dụng"; equipButton.gameObject.SetActive(true); } } else if (package == PKG_EQUIPMENT) { - tmpText.text = "UnEquip"; + tmpText.text = "Tháo"; equipButton.gameObject.SetActive(true); } else @@ -1154,18 +1348,18 @@ namespace BrewMonster.Scripts.Managers { if(item is EC_IvtrEquip) { - buttonText.text = "Equip"; + buttonText.text = "Trang bị"; equipButton.gameObject.SetActive(true); } else { - buttonText.text = "Use"; + buttonText.text = "Sử dụng"; equipButton.gameObject.SetActive(true); } } else if (package == PKG_EQUIPMENT) { - buttonText.text = "UnEquip"; + buttonText.text = "Tháo"; equipButton.gameObject.SetActive(true); } else @@ -1192,7 +1386,7 @@ namespace BrewMonster.Scripts.Managers { if (package == PKG_INVENTORY || package == PKG_EQUIPMENT) { - tmpText.text = "Drop"; + tmpText.text = "Vứt"; dropButton.gameObject.SetActive(true); } else @@ -1205,7 +1399,7 @@ namespace BrewMonster.Scripts.Managers { if (package == PKG_INVENTORY || package == PKG_EQUIPMENT) { - buttonText.text = "Drop"; + buttonText.text = "Vứt"; dropButton.gameObject.SetActive(true); } else diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs index aaa747621a..0d3f910666 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs @@ -418,6 +418,27 @@ namespace CSNetwork.C2SCommand return SerializeCommand(CommandID.DROP_EQUIP_ITEM, cmd); } + public static Octets CreateExchangeIvtrItem(byte index1, byte index2) + { + var cmd = new CMD_ExchangeInventoryItem + { + index1 = index1, + index2 = index2 + }; + return SerializeCommand(CommandID.EXG_IVTR_ITEM, cmd); + } + + public static Octets CreateMoveIvtrItem(byte src, byte dest, uint count) + { + var cmd = new CMD_MoveInventoryItem + { + src = src, + dest = dest, + count = count + }; + return SerializeCommand(CommandID.MOVE_IVTR_ITEM, cmd); + } + public static Octets CreatePickupItem(int idItem, int tid) { var cmd = new CMD_Pickup diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index 7fa763edc0..934c224f0b 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -440,6 +440,20 @@ namespace CSNetwork SendProtocol(gamedatasendRequest); } + public void RequestExchangeIvtrItem(byte index1, byte index2) + { + gamedatasend gamedatasendRequest = new gamedatasend(); + gamedatasendRequest.Data = C2SCommandFactory.CreateExchangeIvtrItem(index1, index2); + SendProtocol(gamedatasendRequest); + } + + public void RequestMoveIvtrItem(byte src, byte dest, uint count) + { + gamedatasend gamedatasendRequest = new gamedatasend(); + gamedatasendRequest.Data = C2SCommandFactory.CreateMoveIvtrItem(src, dest, count); + SendProtocol(gamedatasendRequest); + } + public void RequestPickupItem(int idItem, int tid) { gamedatasend gamedatasendRequest = new gamedatasend(); diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs index 464a342d32..11bed0f7f2 100644 --- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs @@ -443,6 +443,16 @@ namespace BrewMonster.Network { Instance._gameSession.RequestDropIvtrItem(index, amount); } + + public static void RequestExchangeIvtrItem(byte index1, byte index2) + { + Instance._gameSession.RequestExchangeIvtrItem(index1, index2); + } + + public static void RequestMoveIvtrItem(byte src, byte dest, uint count) + { + Instance._gameSession.RequestMoveIvtrItem(src, dest, count); + } public static void LoadConfigData() { Instance._gameSession.LoadConfigData(); diff --git a/Assets/Prefabs/UI/InventoryUI.prefab b/Assets/Prefabs/UI/InventoryUI.prefab index 07f8932d4d..3c85b6f1db 100644 --- a/Assets/Prefabs/UI/InventoryUI.prefab +++ b/Assets/Prefabs/UI/InventoryUI.prefab @@ -12438,6 +12438,7 @@ RectTransform: - {fileID: 4137397199301223842} - {fileID: 6801399374756499883} - {fileID: 7205431771786927886} + - {fileID: 2409990490665478014} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -12572,6 +12573,14 @@ MonoBehaviour: tmp: {fileID: 6020258894941961325} equipButton: {fileID: 472698755110594484} dropButton: {fileID: 540159372834342487} + splitPanelRoot: {fileID: 3772330938303001319} + splitAmountText: {fileID: 3418403519615399396} + splitConfirmButton: {fileID: 7942200720793983179} + splitCloseButton: {fileID: 7769815641486000385} + splitOpenButton: {fileID: 8357517184490870543} + splitIncreaseButton: {fileID: 8779682634462917281} + splitDecreaseButton: {fileID: 4996709440620641399} + splitMaxButton: {fileID: 1013848439096781118} autoRefresh: 1 refreshInterval: 1 showEquipmentDetails: 1 @@ -19862,6 +19871,187 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1001 &8161685697759622574 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5834405183358786743} + m_Modifications: + - target: {fileID: 4980456610223425353, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_Name + value: TachItem + objectReference: {fileID: 0} + - target: {fileID: 4980456610223425353, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7763429162104525692, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + propertyPath: m_text + value: "\u200B" + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 51e96aded6737254d81e1407089a11a7, type: 3} +--- !u!114 &1013848439096781118 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 9175459919676808336, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + m_PrefabInstance: {fileID: 8161685697759622574} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &2409990490665478014 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5779842851872854736, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + m_PrefabInstance: {fileID: 8161685697759622574} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3418403519615399396 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6788255073064960074, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + m_PrefabInstance: {fileID: 8161685697759622574} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &3772330938303001319 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4980456610223425353, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + m_PrefabInstance: {fileID: 8161685697759622574} + m_PrefabAsset: {fileID: 0} +--- !u!114 &4996709440620641399 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3752555281223092697, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + m_PrefabInstance: {fileID: 8161685697759622574} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &7769815641486000385 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1916228653064467631, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + m_PrefabInstance: {fileID: 8161685697759622574} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &7942200720793983179 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2268825337156595045, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + m_PrefabInstance: {fileID: 8161685697759622574} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &8779682634462917281 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 617999410739726095, guid: 51e96aded6737254d81e1407089a11a7, type: 3} + m_PrefabInstance: {fileID: 8161685697759622574} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &8542071282636773511 PrefabInstance: m_ObjectHideFlags: 0 @@ -19870,6 +20060,22 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 5834405183358786743} m_Modifications: + - target: {fileID: 636299721907915661, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 636299721907915661, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 636299721907915661, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchoredPosition.x + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 636299721907915661, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchoredPosition.y + value: -0 + objectReference: {fileID: 0} - target: {fileID: 1546246053547542409, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -19900,7 +20106,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1546246053547542409, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 948.02 objectReference: {fileID: 0} - target: {fileID: 1546246053547542409, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} propertyPath: m_LocalPosition.x @@ -19950,10 +20156,54 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 4552886554498063383, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_text + value: "T\xE1ch" + objectReference: {fileID: 0} - target: {fileID: 6830833846243993097, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} propertyPath: m_Name value: item_info objectReference: {fileID: 0} + - target: {fileID: 6830833846243993097, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7209086543831860202, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7209086543831860202, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7209086543831860202, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchoredPosition.x + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 7209086543831860202, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchoredPosition.y + value: -928.02 + objectReference: {fileID: 0} + - target: {fileID: 8894405194986632892, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8894405194986632892, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8894405194986632892, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_SizeDelta.y + value: 928.02 + objectReference: {fileID: 0} + - target: {fileID: 8894405194986632892, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchoredPosition.x + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 8894405194986632892, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + propertyPath: m_AnchoredPosition.y + value: -464.01 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -20008,3 +20258,14 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 1546246053547542409, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} m_PrefabInstance: {fileID: 8542071282636773511} m_PrefabAsset: {fileID: 0} +--- !u!114 &8357517184490870543 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 391906676374785928, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3} + m_PrefabInstance: {fileID: 8542071282636773511} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/UI/TachItem.prefab b/Assets/Prefabs/UI/TachItem.prefab index d5a438ba8e..9c49539b9d 100644 --- a/Assets/Prefabs/UI/TachItem.prefab +++ b/Assets/Prefabs/UI/TachItem.prefab @@ -30,7 +30,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1934939145226002541} + - {fileID: 295246734357199623} m_Father: {fileID: 2686034966224864345} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -212,7 +212,7 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &894788836633281064 +--- !u!1 &1489353167213793324 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -220,134 +220,50 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1934939145226002541} - - component: {fileID: 5074986348698612117} - - component: {fileID: 5978202290804500404} + - component: {fileID: 8610591285452454930} + - component: {fileID: 8531884857545442818} m_Layer: 0 - m_Name: text_number + m_Name: Text Area m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &1934939145226002541 +--- !u!224 &8610591285452454930 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894788836633281064} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 1489353167213793324} + 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: 8393719582339513194} + m_Children: + - {fileID: 4375832102542078559} + - {fileID: 4748207534506730926} + m_Father: {fileID: 295246734357199623} 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: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5074986348698612117 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894788836633281064} - m_CullTransparentMesh: 1 ---- !u!114 &5978202290804500404 +--- !u!114 &8531884857545442818 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894788836633281064} + m_GameObject: {fileID: 1489353167213793324} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, 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: 7 - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} - m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, 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: 40 - m_fontSizeBase: 40 - 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} + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} --- !u!1 &2576090437737777596 GameObject: m_ObjectHideFlags: 0 @@ -750,6 +666,142 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3932098572470255547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4748207534506730926} + - component: {fileID: 5532138509753463214} + - component: {fileID: 7763429162104525692} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4748207534506730926 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3932098572470255547} + 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: 8610591285452454930} + 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5532138509753463214 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3932098572470255547} + m_CullTransparentMesh: 1 +--- !u!114 &7763429162104525692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3932098572470255547} + 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: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4284338687 + m_fontColor: {r: 1, g: 0.8196079, b: 0.3647059, 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: 36 + m_fontSizeBase: 36 + 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: 3 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + 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 &4980456610223425353 GameObject: m_ObjectHideFlags: 0 @@ -962,6 +1014,184 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5438907599000945554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 295246734357199623} + - component: {fileID: 3359618412281988663} + - component: {fileID: 2296601238422341143} + - component: {fileID: 6788255073064960074} + m_Layer: 0 + m_Name: InputField (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &295246734357199623 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5438907599000945554} + 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: 8610591285452454930} + m_Father: {fileID: 8393719582339513194} + 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.00054932, y: -0.000034809} + m_SizeDelta: {x: 276.95, y: 60.102} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3359618412281988663 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5438907599000945554} + m_CullTransparentMesh: 1 +--- !u!114 &2296601238422341143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5438907599000945554} + 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: 10911, 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 &6788255073064960074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5438907599000945554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, 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: 2296601238422341143} + m_TextViewport: {fileID: 8610591285452454930} + m_TextComponent: {fileID: 7763429162104525692} + m_Placeholder: {fileID: 1370983989863409945} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_KeepTextSelectionVisible: 0 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + isAlert: 0 + m_InputValidator: {fileID: 0} + m_ShouldActivateOnSelect: 1 --- !u!1 &6092625594424804559 GameObject: m_ObjectHideFlags: 0 @@ -1594,6 +1824,163 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &8521039444396045772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4375832102542078559} + - component: {fileID: 357101576901380026} + - component: {fileID: 1370983989863409945} + - component: {fileID: 7905134767392487851} + m_Layer: 0 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4375832102542078559 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521039444396045772} + 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: 8610591285452454930} + 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &357101576901380026 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521039444396045772} + m_CullTransparentMesh: 1 +--- !u!114 &1370983989863409945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521039444396045772} + 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: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + 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: 21 + m_fontSizeBase: 21 + 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: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + 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!114 &7905134767392487851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521039444396045772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &8739994066086687747 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/UI/item_info.prefab b/Assets/Prefabs/UI/item_info.prefab index efc7fa542f..1443c576db 100644 --- a/Assets/Prefabs/UI/item_info.prefab +++ b/Assets/Prefabs/UI/item_info.prefab @@ -37,7 +37,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 20, y: -464.01} - m_SizeDelta: {x: 400, y: 928.02} + m_SizeDelta: {x: 400, y: 0} m_Pivot: {x: 0, y: 0.5} --- !u!222 &4376431126769957786 CanvasRenderer: @@ -584,6 +584,263 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5176462084121257164 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6900679650323527362} + - component: {fileID: 6199238498013377944} + - component: {fileID: 6207433149234425199} + - component: {fileID: 391906676374785928} + m_Layer: 5 + m_Name: Button (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6900679650323527362 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5176462084121257164} + 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: 902438409941943524} + m_Father: {fileID: 636299721907915661} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 547.334, y: -173} + m_SizeDelta: {x: 171, y: 64} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6199238498013377944 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5176462084121257164} + m_CullTransparentMesh: 1 +--- !u!114 &6207433149234425199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5176462084121257164} + 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: 8f24853d9cfea43389e8fb3101ffaae1, 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!114 &391906676374785928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5176462084121257164} + 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: 6207433149234425199} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5326319689215368846 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 902438409941943524} + - component: {fileID: 5055926984262207787} + - component: {fileID: 4552886554498063383} + 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 &902438409941943524 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5326319689215368846} + 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: 6900679650323527362} + 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: 2.5} + m_SizeDelta: {x: -16, y: -15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5055926984262207787 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5326319689215368846} + m_CullTransparentMesh: 1 +--- !u!114 &4552886554498063383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5326319689215368846} + 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: 0 + 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: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 31b77628c21b17e45a6577a3d3d5aef0, 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: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 8192 + 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 &5721094068644211543 GameObject: m_ObjectHideFlags: 0 @@ -725,7 +982,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &1546246053547542409 RectTransform: m_ObjectHideFlags: 0 @@ -871,6 +1128,7 @@ RectTransform: m_Children: - {fileID: 1900527214026617767} - {fileID: 4639188770757162324} + - {fileID: 6900679650323527362} m_Father: {fileID: 1546246053547542409} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} diff --git a/Assets/Scripts/CECHostPlayer.Inventory.cs b/Assets/Scripts/CECHostPlayer.Inventory.cs index 5b415847e2..b542a8b890 100644 --- a/Assets/Scripts/CECHostPlayer.Inventory.cs +++ b/Assets/Scripts/CECHostPlayer.Inventory.cs @@ -369,6 +369,81 @@ namespace BrewMonster int cmd = Convert.ToInt32(Msg.dwParam2); switch (cmd) { + case CommandID.EXG_IVTR_ITEM: + { + // S2C::cmd_exg_ivtr_item { byte index1; byte index2; } + if (data == null || data.Length < 2) + { + Debug.LogWarning("[Inventory] EXG_IVTR_ITEM: Invalid data length"); + break; + } + + byte index1 = data[0]; + byte index2 = data[1]; + + if (m_pPack != null) + { + m_pPack.ExchangeItem(index1, index2); + + var pItem1 = m_pPack.GetItem(index1, false); + if (pItem1 != null) + { + pItem1.Package = InventoryConst.IVTRTYPE_PACK; + pItem1.Slot = index1; + } + + var pItem2 = m_pPack.GetItem(index2, false); + if (pItem2 != null) + { + pItem2.Package = InventoryConst.IVTRTYPE_PACK; + pItem2.Slot = index2; + } + } + + var ui = GameObject.FindFirstObjectByType(); + ui?.RefreshAll(); + break; + } + + case CommandID.MOVE_IVTR_ITEM: + { + // S2C::cmd_move_ivtr_item { byte src; byte dest; uint count; } + if (data == null || data.Length < 6) + { + Debug.LogWarning("[Inventory] MOVE_IVTR_ITEM: Invalid data length"); + break; + } + + byte src = data[0]; + byte dest = data[1]; + uint count = BitConverter.ToUInt32(data, 2); + + if (m_pPack != null) + { + // Client-side mirror of server operation. + // When dest is empty and count < stack, this becomes "separate/split stack". + m_pPack.MoveItem(src, dest, (int)count); + + var pItemSrc = m_pPack.GetItem(src, false); + if (pItemSrc != null) + { + pItemSrc.Package = InventoryConst.IVTRTYPE_PACK; + pItemSrc.Slot = src; + } + + var pItemDest = m_pPack.GetItem(dest, false); + if (pItemDest != null) + { + pItemDest.Package = InventoryConst.IVTRTYPE_PACK; + pItemDest.Slot = dest; + } + } + + var ui = GameObject.FindFirstObjectByType(); + ui?.RefreshAll(); + break; + } + case CommandID.PLAYER_DROP_ITEM: { // Parse the drop item data from the server response