diff --git a/Assets/PerfectWorld/Prefab/Task/TaskTrace/DlgTaskTrace.prefab b/Assets/PerfectWorld/Prefab/Task/TaskTrace/DlgTaskTrace.prefab index f0695daa74..16656ee90f 100644 --- a/Assets/PerfectWorld/Prefab/Task/TaskTrace/DlgTaskTrace.prefab +++ b/Assets/PerfectWorld/Prefab/Task/TaskTrace/DlgTaskTrace.prefab @@ -38,7 +38,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 161.25, y: 0} - m_SizeDelta: {x: 322.5, y: 0} + m_SizeDelta: {x: 322.5, y: 300} m_Pivot: {x: 0.5, y: 1} --- !u!222 &9154858122360570458 CanvasRenderer: @@ -372,6 +372,8 @@ MonoBehaviour: m_pTxt_Desc: {fileID: 2531022629832384091} m_pBtnFinishTaskByContribution: {fileID: 0} m_pBtnContributionTaskHelp: {fileID: 0} + m_pToggleReceived: {fileID: 3754705535557026321} + m_pToggleNotReceived: {fileID: 6274674518893574845} --- !u!1 &2291589776560736050 GameObject: m_ObjectHideFlags: 0 @@ -449,7 +451,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 0 + m_Interactable: 1 m_TargetGraphic: {fileID: 8307833885626771741} toggleTransition: 1 graphic: {fileID: 1446671815119800730} diff --git a/Assets/PerfectWorld/Prefab/UI/Teamate.prefab b/Assets/PerfectWorld/Prefab/UI/Teamate.prefab index 2874187627..d13dfa6c1d 100644 --- a/Assets/PerfectWorld/Prefab/UI/Teamate.prefab +++ b/Assets/PerfectWorld/Prefab/UI/Teamate.prefab @@ -2741,19 +2741,28 @@ MonoBehaviour: m_ItemText: {fileID: 2918232694486320309} m_ItemImage: {fileID: 0} m_Value: 0 - m_MultiSelect: 1 + m_MultiSelect: 0 m_Options: m_Options: + - m_Text: All + m_Image: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} - m_Text: KK m_Image: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0} - m_Text: PS m_Image: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0} - - m_Text: Th.T + - m_Text: VS m_Image: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0} - - m_Text: TT + - m_Text: TiT + m_Image: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + - m_Text: ThT + m_Image: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + - m_Text: TK m_Image: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0} - m_Text: VM @@ -2762,19 +2771,13 @@ MonoBehaviour: - m_Text: VL m_Image: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0} - - m_Text: TK - m_Image: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0} - - m_Text: VS - m_Image: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0} - m_Text: KL m_Image: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0} - m_Text: ML m_Image: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0} - - m_Text: DA + - m_Text: Da m_Image: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0} - m_Text: NT @@ -8555,7 +8558,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Nothing + m_text: All m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} 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/AUICommon.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/AUICommon.cs index 49e29e4a5f..2cc27dfac0 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/AUICommon.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/AUICommon.cs @@ -321,52 +321,6 @@ namespace CSNetwork return sb.ToString(); } - /// - /// Chuyển đổi định dạng printf (C-style: %s, %d) sang string.Format (C#-style: {0}, {1}) - /// - public static string ConvertPrintfToCSharpFormat(string format) - { - if (string.IsNullOrEmpty(format)) return ""; - - StringBuilder sb = new StringBuilder(); - int argIndex = 0; - for (int i = 0; i < format.Length; i++) - { - if (format[i] == '%' && i + 1 < format.Length) - { - char next = format[i + 1]; - if (next == '%') // Trường hợp %% -> % - { - sb.Append('%'); - i++; - } - else - { - sb.Append('{').Append(argIndex++).Append('}'); - - i++; - // Nhảy qua các ký tự định dạng (ví dụ: %02d, %ls, %f) - while (i < format.Length && (char.IsDigit(format[i]) || format[i] == '.' || format[i] == 'l' || format[i] == 'u' || format[i] == 'd' || format[i] == 's' || format[i] == 'f' || format[i] == 'x')) - { - // Nếu gặp ký tự kết thúc định dạng (s, d, f, ...) thì dừng lại sau ký tự đó - char c = format[i]; - if (c == 's' || c == 'd' || c == 'f' || c == 'u' || c == 'x' || c == 'g') - { - // i++; // Đã ở đúng vị trí để vòng lặp cha thực hiện i++ tiếp theo - break; - } - i++; - } - } - } - else - { - sb.Append(format[i]); - } - } - return sb.ToString(); - } - /// /// [Port] CECGameUIMan::FilterInvalidTags (EC_GameUIMan.cpp:6424) /// Lọc bỏ các tag đặc biệt không hợp lệ trong nội dung chat nhận từ server. 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..8b4ba6c6a3 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(); @@ -1948,7 +1962,8 @@ namespace CSNetwork string szName = pHost.GetName(); char[] szText = new char[80]; AUICommon.AUI_ConvertChatString(ref szName, ref szText, false); - string fmt = AUICommon.ConvertPrintfToCSharpFormat(pStrTab.GetWideString((int)FixedMsg.FIXMSG_CHAT)); + Debug.Log($"[Cuong] {szText}"); + string fmt = AUIDialog.FormatPrintf(pStrTab.GetWideString((int)FixedMsg.FIXMSG_CHAT)); string str; try { str = string.Format(fmt, szName, szMsg); @@ -2043,8 +2058,8 @@ namespace CSNetwork string strMsg = Encoding.Unicode.GetString(p.Msg.ToArray()); string strSrcName = Encoding.Unicode.GetString(p.Name.ToArray()); - - string fmt = AUICommon.ConvertPrintfToCSharpFormat(pStrTab.GetWideString((int)FixedMsg.FIXMSG_CHAT)); + Debug.Log($"[Cuong] {strMsg}"); + string fmt = AUIDialog.FormatPrintf(pStrTab.GetWideString((int)FixedMsg.FIXMSG_CHAT)); string formatted; try { formatted = string.Format(fmt, strSrcName, strMsg); @@ -2194,13 +2209,14 @@ namespace CSNetwork { char[] szText = new char[80]; AUICommon.AUI_ConvertChatString(ref szName,ref szText, false); - - string fmt = AUICommon.ConvertPrintfToCSharpFormat(pStrTab.GetWideString((int)FixedMsg.FIXMSG_CHAT)); + Debug.Log($"[Cuong] {szText}"); + string fmt = AUIDialog.FormatPrintf(pStrTab.GetWideString((int)FixedMsg.FIXMSG_CHAT), szText); string str = string.Format( fmt, szName, szMsg ); + Debug.Log($"[Cuong] {str} {fmt}"); // [Port] Gọi AddChatMessage để hiển thị lên UI Chat Box. // AddChatMessage bên trong đã tự publish ChatMessageEvent (cho ChatPanelUI) // VÀ EventChatMessageOnTopPlayer (cho Head Bubble) nếu channel thuộc nhóm @@ -2217,8 +2233,7 @@ namespace CSNetwork if (pNPC != null) { - string str; - string template = AUICommon.ConvertPrintfToCSharpFormat(pStrTab.GetWideString((int)FixedMsg.FIXMSG_CHAT2)); + string template = AUIDialog.FormatPrintf(pStrTab.GetWideString((int)FixedMsg.FIXMSG_CHAT2)); string message = string.Format( template, @@ -2261,7 +2276,7 @@ namespace CSNetwork if (p.Channel == 0 /* CHANNEL_NORMAL */ || p.Channel == 1 /* CHANNEL_NORMALRE */) { // Format: "[Name] whispers to [You]: [Message]" - string fmt = AUICommon.ConvertPrintfToCSharpFormat(pStrTab.GetWideString((int)FixedMsg.FIXMSG_PRIVATECHAT1)); + string fmt = AUIDialog.FormatPrintf(pStrTab.GetWideString((int)FixedMsg.FIXMSG_PRIVATECHAT1)); BMLogger.Log($"[Cuong] OnPrtcPrivateChat {fmt}"); string formatted; try { 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/PerfectWorld/Scripts/Players/PlayerModelPreview.cs b/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs index 7724b5e1d1..d6a9a17567 100644 --- a/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs +++ b/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using BrewMonster.Scripts.Managers; using CSNetwork.Protocols.RPCData; +using Cysharp.Threading.Tasks; using UnityEngine; namespace BrewMonster.Scripts @@ -42,7 +43,10 @@ namespace BrewMonster.Scripts for (int i = 0; i < roleInfos.Count; i++) { RoleInfo role = roleInfos[i]; - GameObject model = await NPCManager.Instance.GetModelPlayer(role.occupation, role.gender); + GameObject model = await LoadPlayerModel(role); + + if (model == null) + continue; if (version != _loadVersion) { @@ -104,5 +108,202 @@ namespace BrewMonster.Scripts playerModels.Clear(); playerModelIds.Clear(); } + + private async UniTask LoadPlayerModel(RoleInfo role) + { + var elemendataman = BrewMonster.ElementDataManProvider.GetElementDataMan(); + GameObject prefab = await NPCManager.Instance.GetModelPlayer(role.occupation, role.gender); + if (prefab == null) + { + return null; + } + GameObject model = Instantiate(prefab); + var playerDefaultEquipments = model.GetComponentInChildren(); + if (playerDefaultEquipments == null) + { + return null; + } + DATA_TYPE DataType = default; + bool useDefaultUpper = true; + bool useDefaultLower = true; + bool useDefaultWrist = true; + bool useDefaultFoot = true; + + GRoleInventory equipment; + + for(int i = 0; i < role.equipment.Count; i++) + { + equipment = role.equipment[i]; + + var equipData = elemendataman.get_data_ptr((uint)equipment.id, ID_SPACE.ID_SPACE_ESSENCE, ref DataType); + + switch (DataType) + { + case DATA_TYPE.DT_WEAPON_ESSENCE: + var weaponData = (WEAPON_ESSENCE)equipData; + + string fileModelRight = AFile.NormalizePath(weaponData.FileModelRight, true).ToLower(); + string fileModelLeft = AFile.NormalizePath(weaponData.FileModelLeft, true).ToLower(); + + GameObject weaponPrefab = null; + if (!string.IsNullOrEmpty(fileModelRight)) + { + weaponPrefab = await AddressableManager.Instance.LoadPrefabAsync(fileModelRight); + var weaponObject = Instantiate(weaponPrefab); + if (weaponObject != null) + { + weaponObject.transform.SetParent(FindChildObjectRecursive(model.transform, CECPlayer._hh_right_hand_weapon).transform); + weaponObject.transform.localPosition = weaponPrefab.transform.localPosition; + weaponObject.transform.localRotation = weaponPrefab.transform.localRotation; + weaponObject.transform.localScale = Vector3.one; + weaponObject.SetActive(true); + } + } + + if (!string.IsNullOrEmpty(fileModelLeft)) + { + weaponPrefab = await AddressableManager.Instance.LoadPrefabAsync(fileModelLeft); + var weaponObject = Instantiate(weaponPrefab); + if (weaponObject != null) + { + weaponObject.transform.SetParent(FindChildObjectRecursive(model.transform, CECPlayer._hh_left_hand_weapon).transform); + weaponObject.transform.localPosition = weaponPrefab.transform.localPosition; + weaponObject.transform.localRotation = weaponPrefab.transform.localRotation; + weaponObject.transform.localScale = Vector3.one; + weaponObject.SetActive(true); + } + } + break; + case DATA_TYPE.DT_ARMOR_ESSENCE: + var pArmor = (ARMOR_ESSENCE)equipData; + var nLocation = pArmor.equip_location; + // BMLogger.Log($"ShowEquipments():: Armor Essence: {pArmor.RealName}"); + + var armorSkinPath = CECPlayer._GenEquipmentSkinPath(role.occupation, role.gender, pArmor.RealName); + if (!armorSkinPath.EndsWith(".ecm")) + { + armorSkinPath += ".ecm"; + } + var armorPrefab = await AddressableManager.Instance.LoadPrefabAsync(armorSkinPath); + if (armorPrefab != null) + { + var armorObject = Instantiate(armorPrefab); + armorObject.transform.SetParent(GetSkeletonBuilder(model)?.transform); + armorObject.transform.localPosition = Vector3.zero; + armorObject.transform.localRotation = Quaternion.identity; + armorObject.transform.localScale = Vector3.one; + + var skinnedMeshRenderer = armorObject.GetComponent(); + var skinnedMeshRenderereFromDataList = armorObject.GetComponentsInChildren(); + foreach (var skinnedMeshRenderereFromData in skinnedMeshRenderereFromDataList) + { + if (skinnedMeshRenderereFromData != null) + { + skinnedMeshRenderereFromData._skinnedMeshRenderer.bones = GetSkeletonBuilder(model).GetBones(skinnedMeshRenderereFromData.BoneNames); + skinnedMeshRenderereFromData._skinnedMeshRenderer.rootBone = skinnedMeshRenderereFromData._skinnedMeshRenderer.bones[^1]; + } + } + + // disable/enable the default equipment + switch (nLocation) + { + case (uint)CECPlayer.SkinIndex.SKIN_UPPER_BODY_INDEX: + useDefaultUpper = false; + break; + case (uint)CECPlayer.SkinIndex.SKIN_LOWER_INDEX: + useDefaultLower = false; + break; + case (uint)CECPlayer.SkinIndex.SKIN_WRIST_INDEX: + useDefaultWrist = false; + break; + case (uint)CECPlayer.SkinIndex.SKIN_FOOT_INDEX: + useDefaultFoot = false; + break; + } + } + break; + //TODO: Handle Wings later + // case DATA_TYPE.DT_WINGMANWING_ESSENCE: + // m_wingType = enumWingType.WINGTYPE_WING; + // //ChangeWing(pResult, static_cast(pEquip)->file_model); + // var pWingData = (WINGMANWING_ESSENCE)equipData; + // //string path1 = "models/players/通用装备/翅膀/天鹅之翼/天鹅之翼_Test.ecm"; + // //var pWingPrefab = await AddressableManager.Instance.LoadPrefabAsync(path1); + // var pWingPrefab = await AddressableManager.Instance.LoadPrefabAsync(pWingData.FileModel.ToLower().Replace('\\', '/')); + // //Transform parentWing = FindChildRecursive(_pPlayerModel.transform, "HH_chibang"); + // if(pWingPrefab != null) + // { + // var pflySwordObject = Instantiate(pWingPrefab).transform; + // pflySwordObject.parent = m_pPlayerCECModel.m_skeletonBuilder.GetHook("HH_chibang").transform; + // pflySwordObject.localPosition = Vector3.zero; + // pflySwordObject.localRotation = Quaternion.identity; + // pflySwordObject.localScale = Vector3.one; + + // m_Wing = pflySwordObject.transform; + + // m_Wing.gameObject.SetActive(false); + // } + // BMLogger.Log($"ShowEquipments():: Wingman Wing Essence: {pWingData.id} {pWingData.Name} -- {pWingData.FileModel}"); + // break; + default: + break; + + + + switch (equipment.pos) + { + case InventoryConst.EQUIPIVTR_BODY: + useDefaultUpper = false; + break; + case InventoryConst.EQUIPIVTR_LEG: + useDefaultLower = false; + break; + case InventoryConst.EQUIPIVTR_WRIST: + useDefaultWrist = false; + break; + case InventoryConst.EQUIPIVTR_FOOT: + useDefaultFoot = false; + break; + } + } + } + + playerDefaultEquipments.DefaultUpper.SetActive(useDefaultUpper); + playerDefaultEquipments.DefaultLower.SetActive(useDefaultLower); + playerDefaultEquipments.DefaultWirst.SetActive(useDefaultWrist); + playerDefaultEquipments.DefaultFoot.SetActive(useDefaultFoot); + return model; + } + + private GameObject FindChildObjectRecursive(Transform parent, string name) + { + foreach (Transform child in parent) + { + if (child.name == name) + { + return child.gameObject; + } + var childObject = FindChildObjectRecursive(child, name); + if (childObject != null) + { + return childObject; + } + } + return null; + } + + private SkeletonBuilder GetSkeletonBuilder(GameObject characterModel) + { + if (characterModel == null) + { + return null; + } + SkeletonBuilder skeletonBuilder = null; + if (skeletonBuilder == null) + { + skeletonBuilder = characterModel.GetComponentInChildren(); + } + return skeletonBuilder; + } } } diff --git a/Assets/PerfectWorld/Scripts/Task/TaskClient.cs b/Assets/PerfectWorld/Scripts/Task/TaskClient.cs index 398cdd7b3a..4cf1a68d30 100644 --- a/Assets/PerfectWorld/Scripts/Task/TaskClient.cs +++ b/Assets/PerfectWorld/Scripts/Task/TaskClient.cs @@ -587,6 +587,14 @@ namespace BrewMonster.Scripts.Task pTempl.ClearValidCount(); // OnServerNotify method signature may need adjustment for C# (ref/out parameters) pTempl.OnServerNotify(pTask, pEntry, pNotify, sz, pBuf); + + // TASK_SVR_NOTIFY_COMPLETE (reason 2): re-expand trace for this quest line (subtask chain advance). + // TASK_SVR_NOTIFY_COMPLETE(reason=2):子任务推进后重新挂接追踪链。 + if (pNotify.reason == TaskTemplConstants.TASK_SVR_NOTIFY_COMPLETE) + { + var gameUi = EC_Game.GetGameRun()?.GetUIManager()?.GetInGameUIMan() as CECGameUIMan; + gameUi?.RetraceTaskAfterServerNotifyComplete(pNotify.task); + } } // Helper method to get task template manager diff --git a/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs b/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs index eb0113d668..67909fd581 100644 --- a/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs +++ b/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs @@ -122,6 +122,7 @@ namespace BrewMonster.Scripts.Task.UI // private: private static List m_vecTasksUnFinish = new List(); private static List m_vecTasksCanFinish = new List(); + private static List m_vecTasksCanGet = new List(); // [中文] 目标坐标集合 // [English] Target coordinates collection @@ -378,6 +379,7 @@ namespace BrewMonster.Scripts.Task.UI m_pBtn_SearchQuest.interactable = true; m_pBtn_HaveQuest.interactable = false; UpdateTask(); + RefreshVecTasksCanGet(); } public void OnCommand_showtrace(string szCommand,bool state) { m_bShowTrace = state; @@ -401,6 +403,7 @@ namespace BrewMonster.Scripts.Task.UI vec_task.Remove((int)idTask); } } + Debug.Log($"[DlgTask] TraceTask: idTask={idTask}, task name={pTask.GetTaskTemplMan().GetTaskTemplByID((uint)idTask).GetName()}"); //get the position of idTask in pLst int position = pTask.GetFirstSubTaskPosition(idTask); while(position != -1) @@ -410,6 +413,60 @@ namespace BrewMonster.Scripts.Task.UI } ShowTraceDialog(); } + + /// + /// Add task to trace lists if traceable (no toggle). Used when seeding trace after TASK_DATA init; mirrors TraceTask minus remove/toggle. + /// 若可追踪则加入追踪列表(无切换)。在 TASK_DATA 初始化后填充追踪时用;逻辑对齐 TraceTask 但不移除/切换。 + /// + private void AddTaskToTraceListsNonToggle(uint idTask) + { + if (IsPQTaskOrSubTask((int)idTask)) + return; + CECTaskInterface pTask = GetHostPlayer()?.GetTaskInterface(); + if (pTask == null) + return; + bool bFinishedTask = pTask.CanFinishTask(idTask); + List vec_task = bFinishedTask ? m_vecTasksCanFinish : m_vecTasksUnFinish; + if (IsTaskTraceable(idTask)) + { + if (!vec_task.Contains((int)idTask)) + vec_task.Add((int)idTask); + } + int position = pTask.GetFirstSubTaskPosition(idTask); + while (position != -1) + { + int idSub = pTask.GetNextSub(ref position); + AddTaskToTraceListsNonToggle((uint)idSub); + } + } + + /// + /// After server task pack and templates are loaded (CECTaskInterface.Init finished), apply trace like USER_LAYOUT from server: + /// SyncTrace with a full dwTraceMask for the first 32 top-level slots, then add any further top-level tasks (mask is only 32 bits). + /// 服务端任务包与模板加载完成后调用:用满掩码对前 32 个顶层槽位 SyncTrace,再为更多顶层任务补充追踪(掩码仅 32 位)。 + /// + public void SyncTraceAfterTaskDataInit(CECTaskInterface pTask) + { + if (pTask == null || GetHostPlayer()?.GetTaskInterface() != pTask) + return; + + var ul = new USER_LAYOUT { bTraceAll = true }; + int n = (int)pTask.GetTaskCount(); + if (n > 0) + { + int bits = Mathf.Min(n, 32); + ul.dwTraceMask = bits >= 32 ? uint.MaxValue : ((1u << bits) - 1u); + } + + SyncTrace(ul, true); + + for (int i = 32; i < n; i++) + AddTaskToTraceListsNonToggle(pTask.GetTaskId((uint)i)); + + RefreshVecTasksCanGet(pTask); + RefreshTaskTrace(ul.bTraceAll); + } + public void ShowTraceDialog() { Debug.Log($"[DlgTask] ShowTraceDialog: m_bShowTrace={m_bShowTrace}"); @@ -422,6 +479,28 @@ namespace BrewMonster.Scripts.Task.UI EventBus.Publish(new UIEvent(UIEventType.HideTrace)); } } + + /// + /// TASK_SVR_NOTIFY_COMPLETE (reason 2): re-expand the quest trace from the top task (add-only, same subchain walk as TraceTask). + /// Using TraceTask() here would toggle entries off/on incorrectly; this re-seeds the active subtask chain after server advance. + /// 服务端 reason=2 任务推进/完成后,从顶层任务重新挂接追踪子链(与 TraceTask 同 walk,但只添加不切换)。 + /// + public void RetraceAfterTaskServerNotifyComplete(uint notifyTaskId, bool bShowTrace) + { + var pIface = GetHostPlayer()?.GetTaskInterface(); + if (pIface == null) + return; + ATaskTemplMan pMan = EC_Game.GetTaskTemplateMan(); + ATaskTempl t = pMan?.GetTaskTemplByID(notifyTaskId); + if (t == null) + return; + uint rootId = t.GetTopTask().GetID(); + if (rootId == 0) + return; + if (pIface.HasTask(rootId)) + AddTaskToTraceListsNonToggle(rootId); + RefreshTaskTrace(bShowTrace); + } public void OnCommand_focus(string szCommand="") { var pTree = m_pTv_Quest; var pItem = pTree?.GetSelectedItem(); @@ -506,6 +585,7 @@ namespace BrewMonster.Scripts.Task.UI int taskIdInt = (int)topTaskId; m_vecTasksCanFinish.Remove(taskIdInt); m_vecTasksUnFinish.Remove(taskIdInt); + RefreshVecTasksCanGet(); // Send notification to server to abandon the currently selected task TaskClient._notify_svr(pTask, (byte)ClientNotificationConstants.TASK_CLT_NOTIFY_CHECK_GIVEUP, (ushort)topTaskId); @@ -788,48 +868,62 @@ namespace BrewMonster.Scripts.Task.UI { CECHostPlayer host = GetHostPlayer(); CECTaskInterface pTask = host.GetTaskInterface(); - if( m_vecTasksCanFinish.Count > 0 ) - { - for(int i = 0; i < m_vecTasksCanFinish.Count; i++ ) - { - int idTask = m_vecTasksCanFinish[i]; - bool bCanFinish = pTask.CanFinishTask((uint)idTask); - bool bHasTask = pTask.HasTask((uint)idTask); - if(!bHasTask || !bCanFinish) - { - // 任务未完成,状态变化要删除 - m_vecTasksCanFinish.RemoveAt(i); - i--; - if (bHasTask && !bCanFinish) { - if (!m_vecTasksUnFinish.Contains(idTask)) - m_vecTasksUnFinish.Add(idTask); - } - } - } - } - if( m_vecTasksUnFinish.Count > 0 ) - { - for(int i = 0; i < m_vecTasksUnFinish.Count; i++ ) - { - int idTask = m_vecTasksUnFinish[i]; - bool bCanFinish = pTask.CanFinishTask((uint)idTask); - bool bHasTask = pTask.HasTask((uint)idTask); - if(!bHasTask || bCanFinish) - { - // �������û���ˣ�����״̬�仯Ҫ�Ƴ����� - m_vecTasksUnFinish.RemoveAt(i); - i--; - if (bHasTask && bCanFinish) { - if (!m_vecTasksCanFinish.Contains(idTask)) - m_vecTasksCanFinish.Add(idTask); - } - } - } - } + ShowType2 showType2 = pDlgTaskTrace.GetShowType2(); List tasks = new List(); - tasks.Capacity = m_vecTasksCanFinish.Count + m_vecTasksUnFinish.Count; - tasks.AddRange(m_vecTasksCanFinish); - tasks.AddRange(m_vecTasksUnFinish); + if(showType2 == ShowType2.ST_RECIEVED) + { + if( m_vecTasksCanFinish.Count > 0 ) + { + for(int i = 0; i < m_vecTasksCanFinish.Count; i++ ) + { + int idTask = m_vecTasksCanFinish[i]; + bool bCanFinish = pTask.CanFinishTask((uint)idTask); + bool bHasTask = pTask.HasTask((uint)idTask); + if(!bHasTask || !bCanFinish) + { + // 任务未完成,状态变化要删除 + m_vecTasksCanFinish.RemoveAt(i); + i--; + if (bHasTask && !bCanFinish) { + if (!m_vecTasksUnFinish.Contains(idTask)) + m_vecTasksUnFinish.Add(idTask); + } + } + } + } + if( m_vecTasksUnFinish.Count > 0 ) + { + for(int i = 0; i < m_vecTasksUnFinish.Count; i++ ) + { + int idTask = m_vecTasksUnFinish[i]; + bool bCanFinish = pTask.CanFinishTask((uint)idTask); + bool bHasTask = pTask.HasTask((uint)idTask); + if(!bHasTask || bCanFinish) + { + // �������û���ˣ�����״̬�仯Ҫ�Ƴ����� + m_vecTasksUnFinish.RemoveAt(i); + i--; + if (bHasTask && bCanFinish) { + if (!m_vecTasksCanFinish.Contains(idTask)) + m_vecTasksCanFinish.Add(idTask); + } + } + } + } + + tasks.Capacity = m_vecTasksCanFinish.Count + m_vecTasksUnFinish.Count; + tasks.AddRange(m_vecTasksCanFinish); + tasks.AddRange(m_vecTasksUnFinish); + } + else if(showType2 == ShowType2.ST_NOT_RECIEVED) + { + // Re-run GetAvailableTasks every trace refresh; m_vecTasksCanGet was only filled on quest UI events and stayed stale. + // 每次追踪刷新重新计算可接任务;原先仅在任务界面事件里更新列表,游戏中会一直停留在开局数据。 + RefreshVecTasksCanGet(pTask); + tasks.Capacity = m_vecTasksCanGet.Count; + tasks.AddRange(m_vecTasksCanGet); + } + List titlle_list = new List(); List titletask_list = new List(); //Dictionary title_map = new Dictionary(); @@ -1129,6 +1223,11 @@ namespace BrewMonster.Scripts.Task.UI // TaskTemplLst ttl; List ttl = new List(); // TaskTemplLst -> List pMan.GetAvailableTasks(pTask, ttl); + // Mirror available-to-accept IDs for trace / other systems (same set as tree nodes). + // 与可接任务树节点一致,填充可接任务 ID 列表供追踪等系统使用。 + m_vecTasksCanGet.Clear(); + for (int j = 0; j < ttl.Count; j++) + m_vecTasksCanGet.Add((int)ttl[j].GetID()); if( ttl.Count <= 0 ) return true; for(int i = 0; i < ttl.Count; i++ ) @@ -1198,6 +1297,11 @@ namespace BrewMonster.Scripts.Task.UI } } } + + // Search view already rebuilt m_vecTasksCanGet inside SearchForTask(-1). + // 搜索页在 SearchForTask 内已更新 m_vecTasksCanGet。 + if (m_iType == 0) + RefreshVecTasksCanGet(); return result; } @@ -1227,6 +1331,7 @@ namespace BrewMonster.Scripts.Task.UI // store m_bShowTrace flag instead of bTraceAll flag m_bShowTrace = pul.bTraceAll; + RefreshVecTasksCanGet(); } else { @@ -1303,6 +1408,23 @@ namespace BrewMonster.Scripts.Task.UI #region PRIVATE METHODS + /// + /// Rebuild m_vecTasksCanGet from ATaskTemplMan.GetAvailableTasks (same source as Search quest tree). + /// 用 GetAvailableTasks 重建可接任务 ID 列表,与可接任务搜索树数据源一致。 + /// + private void RefreshVecTasksCanGet(CECTaskInterface pTaskIfKnown = null) + { + m_vecTasksCanGet.Clear(); + CECTaskInterface pTask = pTaskIfKnown ?? GetHostPlayer()?.GetTaskInterface(); + if (pTask == null) return; + ATaskTemplMan pMan = EC_Game.GetTaskTemplateMan(); + if (pMan == null) return; + List ttl = new List(); + pMan.GetAvailableTasks(pTask, ttl); + for (int i = 0; i < ttl.Count; i++) + m_vecTasksCanGet.Add((int)ttl[i].GetID()); + } + private bool OnInitDialog() { // m_pTxt_QuestNO = (PAUILABEL)GetDlgItem("Txt_QuestNO"); diff --git a/Assets/PerfectWorld/Scripts/Task/UI/DlgTaskTrace.cs b/Assets/PerfectWorld/Scripts/Task/UI/DlgTaskTrace.cs index 428960e24e..02be1aa6f4 100644 --- a/Assets/PerfectWorld/Scripts/Task/UI/DlgTaskTrace.cs +++ b/Assets/PerfectWorld/Scripts/Task/UI/DlgTaskTrace.cs @@ -20,6 +20,13 @@ namespace BrewMonster.Scripts.Task.UI ST_TITLE, // ��ʾ�ѽӳƺ����� ST_CONTRIBUTION, // ��ʾ���������ѵĹ��׶����� } + //New show type in Unity version + public enum ShowType2 + { + ST_NONE, + ST_RECIEVED, + ST_NOT_RECIEVED, + } public class DlgTaskTrace : DlgNameLink { static string COLOR_YELLOW = ""; @@ -34,8 +41,11 @@ namespace BrewMonster.Scripts.Task.UI // [SerializeField] protected Button m_pBtnChat; [SerializeField] protected Button m_pBtnFinishTaskByContribution; [SerializeField] protected Button m_pBtnContributionTaskHelp; + [SerializeField] protected Toggle m_pToggleReceived; + [SerializeField] protected Toggle m_pToggleNotReceived; protected int m_nLastTracedTasks; // ����ʾ���ݶ�Ӧ��׷��������������ijЩ����������������б����л��� protected ShowType m_nLastShowType; // ����ʾ���ݶ�Ӧ���б����� + protected ShowType2 m_nLastShowType2; protected int m_nTraceWorldID; // ����ʾ��Ϣ��׷����Ϣ��Ӧ�ĵ�ͼID protected int m_iContributionCurrentPage; protected int m_iContributionTotalPage; @@ -69,13 +79,29 @@ namespace BrewMonster.Scripts.Task.UI } public override void Show(bool value) { + // RefreshTaskTrace calls Show(true) every tick while visible; do not reset filter or re-wire toggles then. + // RefreshTaskTrace 每帧对已显示窗口调用 Show(true);勿重置“已接/可接”筛选,也勿重复注册 Toggle。 + bool wasActive = gameObject.activeSelf; gameObject.SetActive(value); m_bShow = value; + if (value && !wasActive) + m_nLastShowType2 = ShowType2.ST_RECIEVED; + // Remove-before-Add in OnShowDialogue keeps this safe when RefreshTaskTrace calls Show(true) every frame. OnShowDialogue(); } public override void OnShowDialogue() { base.OnShowDialogue(); + if (m_pToggleReceived != null && m_pToggleNotReceived != null) + { + m_pToggleReceived.onValueChanged.RemoveListener(OnToggleReceivedValueChanged); + m_pToggleNotReceived.onValueChanged.RemoveListener(OnToggleNotReceivedValueChanged); + if (m_bShow) + { + m_pToggleReceived.onValueChanged.AddListener(OnToggleReceivedValueChanged); + m_pToggleNotReceived.onValueChanged.AddListener(OnToggleNotReceivedValueChanged); + } + } //m_pTxt_Desc = dynamic_cast(GetDlgItem("Txt_Link_Trace")); //if(m_pTxt_Desc) m_pTxt_Desc->SetForceRenderScroll(false); //m_pChk_Collapse = dynamic_cast(GetDlgItem("Chk_Collapse")); @@ -96,6 +122,20 @@ namespace BrewMonster.Scripts.Task.UI // ); // ����׷�ٽ�����ʾĬ���б� } + public void OnToggleReceivedValueChanged(bool value) + { + if(value) + { + m_nLastShowType2 = ShowType2.ST_RECIEVED; + } + } + public void OnToggleNotReceivedValueChanged(bool value) + { + if(value) + { + m_nLastShowType2 = ShowType2.ST_NOT_RECIEVED; + } + } public void OnShowDialog() { GameObject pObjRadio = transform.Find("Rdo_Quest3").gameObject; @@ -316,6 +356,10 @@ namespace BrewMonster.Scripts.Task.UI { return m_nLastShowType; } + public ShowType2 GetShowType2() + { + return m_nLastShowType2; + } void PrepareRebuildTaskTrace(){ m_Buffer = new StringRef(); m_Buffer.Value = ""; @@ -541,6 +585,10 @@ namespace BrewMonster.Scripts.Task.UI var pTempl = pTaskMan.GetTaskTemplByID((uint)id); var pEntry = pActiveLst.GetEntry((uint)id); if (pTempl != null) { + // 任务名与描述都为空时不显示(数据缺失或损坏) / Hide when both name and description are empty (missing or corrupt data) + if (string.IsNullOrWhiteSpace(pTempl.GetName()) && string.IsNullOrWhiteSpace(pTempl.GetDescription())) + return; + int contribution = 0; // �������׶ȵ�����ֻ�ڶ���������ʾ����ֵ if (hasContributionAward) { @@ -635,17 +683,15 @@ namespace BrewMonster.Scripts.Task.UI if (withName) { AppendText(strIndentIn); - string strNum = index.ToString(); - strNum = string.Format("{0}", index); string strName = pTemp.GetName(); DeleteColorStr(strName); - strName = strNum + " " + strName; + strName = " " + strName; TaskNameHoverCommand cmd = new TaskNameHoverCommand(m_Buffer, strName, idTask, tsi.m_ulErrCode != 0, bCanContributionFinish); BindLinkCommand(m_pTxt_Desc.tmp, strName, cmd); if (contribution != 0) { int colorIndex = contribution > 0 ? 11288 : 11291; - strNum = string.Format(" {0} {1}", GetStringFromTable(colorIndex), contribution); - AppendText(strNum); + strName = string.Format(" {0} {1}", GetStringFromTable(colorIndex), contribution); + AppendText(strName); } AppendText("\n"); } diff --git a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgArrangeTeam.cs b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgArrangeTeam.cs index a7a49536a3..130d78b3e2 100644 --- a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgArrangeTeam.cs +++ b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgArrangeTeam.cs @@ -58,7 +58,7 @@ namespace BrewMonster.UI #endif } - private void Start() + private new void Start() { BindButtonListeners(); } @@ -109,10 +109,22 @@ namespace BrewMonster.UI private void BindProfDropdown() { - if (m_pDropdown_Prof != null) m_pDropdown_Prof.interactable = false; + if (m_pDropdown_Prof == null) return; + m_pDropdown_Prof.onValueChanged.RemoveListener(OnProfessionDropdownChanged); + m_pDropdown_Prof.onValueChanged.AddListener(OnProfessionDropdownChanged); } - private void UnbindProfDropdown() { } + private void UnbindProfDropdown() + { + if (m_pDropdown_Prof == null) return; + m_pDropdown_Prof.onValueChanged.RemoveListener(OnProfessionDropdownChanged); + } + + private void OnProfessionDropdownChanged(int _) + { + UpdateProfDropdownCaption(); + UpdateTeam(true); + } private void CloseProfFilterPanel() { } @@ -150,14 +162,34 @@ namespace BrewMonster.UI private void EnsureProfDropdownHasCaption() { if (m_pDropdown_Prof == null) return; - if (m_pDropdown_Prof.options.Count == 0) - m_pDropdown_Prof.AddOptions(new List { "Profession" }); + if (m_pDropdown_Prof.options.Count != 0) return; + + var opts = new List(); + opts.Add("All"); + var gameRun = EC_Game.GetGameRun(); + for (int i = 0; i < (int)Profession.NUM_PROFESSION; i++) + { + string name = gameRun?.GetProfName(i); + opts.Add(string.IsNullOrEmpty(name) ? $"Prof {i}" : name); + } + m_pDropdown_Prof.AddOptions(opts); } /// Selected profession filter: null = show all. private HashSet GetSelectedProfessionSet() { - return null; + if (m_pDropdown_Prof == null) return null; + + // Dropdown mapping: + // 0 = All (no filter) + // 1..NUM_PROFESSION = specific profession (value-1) + int v = m_pDropdown_Prof.value; + if (v <= 0) return null; + + int prof = v - 1; + if (prof < 0 || prof >= (int)Profession.NUM_PROFESSION) return null; + + return new HashSet { prof }; } /// Refresh teammate list, optional nearby list, and button states. diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/EC_GameUIMan.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/EC_GameUIMan.cs index 6107162c18..62074575da 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/EC_GameUIMan.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/EC_GameUIMan.cs @@ -193,6 +193,18 @@ namespace BrewMonster.UI return m_pDlgTask.UpdateQuestView(); } } + + /// + /// Call after CECTaskInterface.Init completes (TASK_DATA). Restores/applies quest trace via DlgTask.SyncTrace and refreshes minimion. + /// 在 CECTaskInterface.Init(TASK_DATA)完成后调用,通过 DlgTask.SyncTrace 应用任务追踪并刷新小窗。 + /// + public void OnHostTaskDataInitialized(CECTaskInterface pTask) + { + if (m_pDlgTask == null || pTask == null) + return; + m_pDlgTask.SyncTraceAfterTaskDataInit(pTask); + } + public DialogScriptTableObject GetDialogResource() { return m_dialogResouce; @@ -406,6 +418,18 @@ namespace BrewMonster.UI } } + /// + /// TASK_SVR_NOTIFY_COMPLETE (reason 2): refresh quest trace after server advances subtasks. + /// 服务端任务完成/推进通知后刷新任务追踪。 + /// + public void RetraceTaskAfterServerNotifyComplete(ushort taskId) + { + if (m_pDlgTask == null) + return; + bool showTrace = IsDialogShow("Win_QuestMinion"); + m_pDlgTask.RetraceAfterTaskServerNotifyComplete((uint)taskId, showTrace); + } + public void ShowErrorMsg(string pszMsg, string pszName) { diff --git a/Assets/PerfectWorld/Scripts/UI/NPCShopUIManager.cs b/Assets/PerfectWorld/Scripts/UI/NPCShopUIManager.cs index 07100688db..cbcc47aac5 100644 --- a/Assets/PerfectWorld/Scripts/UI/NPCShopUIManager.cs +++ b/Assets/PerfectWorld/Scripts/UI/NPCShopUIManager.cs @@ -29,6 +29,7 @@ public class NPCShopUIManager : AUIDialog [Header("Texts")] public TextMeshProUGUI itemDetailNameText; + public TextMeshProUGUI itemMoneyText; public TextOutlet itemDescriptionText; public TextMeshProUGUI itemsBuyAmountText; public TextMeshProUGUI itemsBuyTotalMoneyText; @@ -391,47 +392,45 @@ public class NPCShopUIManager : AUIDialog // Initialize buy array with at least one option shopItem.buy = new GShopBuyOption[4]; // GShopItem supports up to 4 buy options - // Get item name and price based on type - string itemName = "Unknown"; - int shopPrice = 0; - - switch (itemDataType) + // Resolve display name/price in a type-agnostic way. + // Some element types come back as DATA_TYPE values we don't special-case here (arrows, flyswords, fashion, etc). + string itemName = EC_IvtrItemUtils.Instance.ResolveItemName(unchecked((int)good.id)); + if (string.IsNullOrWhiteSpace(itemName)) + itemName = $"Item_{good.id}"; + + static int ExtractInt(object data, params string[] fieldOrPropNames) { - case DATA_TYPE.DT_WEAPON_ESSENCE: - var weaponEssence = (WEAPON_ESSENCE)itemData; - itemName = weaponEssence.Name; - shopPrice = weaponEssence.shop_price; - break; - case DATA_TYPE.DT_ARMOR_ESSENCE: - var armorEssence = (ARMOR_ESSENCE)itemData; - itemName = armorEssence.Name; - shopPrice = armorEssence.shop_price; - break; - case DATA_TYPE.DT_MEDICINE_ESSENCE: - var medicineEssence = (MEDICINE_ESSENCE)itemData; - itemName = ByteToStringUtils.UshortArrayToUnicodeString(medicineEssence.name); - shopPrice = medicineEssence.shop_price; - break; - case DATA_TYPE.DT_DECORATION_ESSENCE: - var decorationEssence = (DECORATION_ESSENCE)itemData; - itemName = ByteToStringUtils.UshortArrayToUnicodeString(decorationEssence.name); - shopPrice = decorationEssence.shop_price; - break; - case DATA_TYPE.DT_STONE_ESSENCE: - var stoneEssence = (STONE_ESSENCE)itemData; - itemName = ByteToStringUtils.UshortArrayToUnicodeString(stoneEssence.name); - shopPrice = stoneEssence.shop_price; - break; - case DATA_TYPE.DT_MATERIAL_ESSENCE: - var materialEssence = (MATERIAL_ESSENCE)itemData; - itemName = ByteToStringUtils.UshortArrayToUnicodeString(materialEssence.name); - shopPrice = materialEssence.shop_price; - break; - default: - itemName = $"Item_{good.id}"; - break; + if (data == null || fieldOrPropNames == null || fieldOrPropNames.Length == 0) + return 0; + + var t = data.GetType(); + for (int i = 0; i < fieldOrPropNames.Length; i++) + { + string name = fieldOrPropNames[i]; + if (string.IsNullOrEmpty(name)) + continue; + + var field = t.GetField(name, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase); + if (field != null && field.FieldType == typeof(int)) + { + try { return (int)field.GetValue(data); } catch { } + } + + var prop = t.GetProperty(name, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase); + if (prop != null && prop.PropertyType == typeof(int) && prop.CanRead) + { + try { return (int)prop.GetValue(data); } catch { } + } + } + + return 0; } - + + // Prefer shop_price; fall back to base price if that's all we have. + int shopPrice = ExtractInt(itemData, "shop_price"); + if (shopPrice <= 0) + shopPrice = ExtractInt(itemData, "price"); + shopItem.name = itemName; // Set price from contribution cost or shop price @@ -582,6 +581,15 @@ public class NPCShopUIManager : AUIDialog itemDetailNameText.text = currentItem.name; } + if (itemMoneyText != null) + { + uint money = GetCurrentUnitPrice(); + if(money > 0) + itemMoneyText.text = $"Giá {money.ToString()} Ngân lượng"; + else + itemMoneyText.text = BuyUiEmptyValue; + } + buyCount = BuyCountMin; UpdateBuyPriceTexts(); @@ -1145,7 +1153,9 @@ public class NPCShopUIManager : AUIDialog } if (tmp != null) { - tmp.text = EC_Utility.FormatForTextMeshPro(value ?? string.Empty); + string formatTextDeail = EC_Utility.FormatForTextMeshPro(value ?? string.Empty); + formatTextDeail.Replace("", ""); + tmp.text = formatTextDeail; } } } diff --git a/Assets/Prefabs/UI/DialogNPCShop.prefab b/Assets/Prefabs/UI/DialogNPCShop.prefab index f937f7d716..8cf065be4f 100644 --- a/Assets/Prefabs/UI/DialogNPCShop.prefab +++ b/Assets/Prefabs/UI/DialogNPCShop.prefab @@ -1416,14 +1416,14 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_Color: {r: 0, g: 0, b: 0, 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Sprite: {fileID: 21300000, guid: ef3296c82b3934a24b288ac6309eb7a7, type: 3} m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 @@ -2337,6 +2337,8 @@ MonoBehaviour: - {fileID: 9087947546155311648} equipmentPackButtons: [] fashionPackButtons: [] + tabItemButton: {fileID: 0} + tabTaskButton: {fileID: 0} detailPanelRoot: {fileID: 1203170638860719746} detailPanelOffset: {x: 20, y: 0} hideDetailOnStart: 1 @@ -7119,14 +7121,14 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_Color: {r: 0, g: 0, b: 0, 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Sprite: {fileID: 21300000, guid: ef3296c82b3934a24b288ac6309eb7a7, type: 3} m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 @@ -11287,14 +11289,14 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_Color: {r: 0, g: 0, b: 0, 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Sprite: {fileID: 21300000, guid: ef3296c82b3934a24b288ac6309eb7a7, type: 3} m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 @@ -13106,6 +13108,7 @@ MonoBehaviour: contentMidSell: {fileID: 5285943178504563476} item_info: {fileID: 3637242207861637912} itemDetailNameText: {fileID: 2529529646566217934} + itemMoneyText: {fileID: 2517942723267868233} itemDescriptionText: legacy: {fileID: 0} tmp: {fileID: 5329995747664012504} 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 new file mode 100644 index 0000000000..9c49539b9d --- /dev/null +++ b/Assets/Prefabs/UI/TachItem.prefab @@ -0,0 +1,2103 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &166949795612361576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8393719582339513194} + - component: {fileID: 806753545182199774} + - component: {fileID: 2769446639278108615} + m_Layer: 0 + m_Name: bg_quality + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8393719582339513194 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166949795612361576} + 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: 295246734357199623} + m_Father: {fileID: 2686034966224864345} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -39.6963, y: 2} + m_SizeDelta: {x: -248.6407, y: -92.9541} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &806753545182199774 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166949795612361576} + m_CullTransparentMesh: 1 +--- !u!114 &2769446639278108615 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166949795612361576} + 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: -1232333643, guid: ec27ed54261f3214daa1f797f852dea1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &579337683965805573 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 159798369371858546} + - component: {fileID: 7750482669452752948} + - component: {fileID: 3547569590989452508} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &159798369371858546 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 579337683965805573} + 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: 6144153233748337796} + 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: 4.5} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7750482669452752948 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 579337683965805573} + m_CullTransparentMesh: 1 +--- !u!114 &3547569590989452508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 579337683965805573} + 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: "H\u1EE7y" + 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: 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: 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 &1489353167213793324 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8610591285452454930} + - component: {fileID: 8531884857545442818} + m_Layer: 0 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8610591285452454930 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + 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: + - {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: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8531884857545442818 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489353167213793324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &2576090437737777596 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7773690687607372942} + - component: {fileID: 9195962637466046701} + - component: {fileID: 250438428830977409} + - component: {fileID: 2268825337156595045} + m_Layer: 0 + m_Name: btn_confirm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7773690687607372942 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2576090437737777596} + 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: 3340155829902359148} + m_Father: {fileID: 8092312229060933107} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 165.1, y: 67.8} + m_SizeDelta: {x: 180, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9195962637466046701 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2576090437737777596} + m_CullTransparentMesh: 1 +--- !u!114 &250438428830977409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2576090437737777596} + 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: cadaa4515a135fc4daea75ef69781885, 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 &2268825337156595045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2576090437737777596} + 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: 250438428830977409} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3418157808119061651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6144153233748337796} + - component: {fileID: 5619726965594391630} + - component: {fileID: 8652802100601151784} + - component: {fileID: 6444751654224717423} + m_Layer: 0 + m_Name: btn_cancle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6144153233748337796 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3418157808119061651} + 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: 159798369371858546} + m_Father: {fileID: 8092312229060933107} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 414.1, y: 67.8} + m_SizeDelta: {x: 180, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5619726965594391630 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3418157808119061651} + m_CullTransparentMesh: 1 +--- !u!114 &8652802100601151784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3418157808119061651} + 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: 3d6f24ccfc5f6a04c906452b72db7f10, 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 &6444751654224717423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3418157808119061651} + 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: 8652802100601151784} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3477086262316584653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2686034966224864345} + - component: {fileID: 2943432783290088565} + - component: {fileID: 7844258203869518024} + m_Layer: 0 + m_Name: content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2686034966224864345 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3477086262316584653} + 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: 9185050832575356015} + - {fileID: 8393719582339513194} + - {fileID: 926957764450146436} + - {fileID: 7350993695601326241} + m_Father: {fileID: 8092312229060933107} + 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: 1.5954, y: -22.2708} + m_SizeDelta: {x: 525.5868, y: 153.0565} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2943432783290088565 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3477086262316584653} + m_CullTransparentMesh: 1 +--- !u!114 &7844258203869518024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3477086262316584653} + 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: 829249651, guid: 04c54fc4dc009004580bdcdf6cca4e1d, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3871669694031851535 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8092312229060933107} + - component: {fileID: 1340197513715463517} + - component: {fileID: 2330433127735763713} + m_Layer: 0 + m_Name: Main + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8092312229060933107 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3871669694031851535} + 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: 1843085086356650502} + - {fileID: 8506554322885474972} + - {fileID: 2686034966224864345} + - {fileID: 7773690687607372942} + - {fileID: 6144153233748337796} + - {fileID: 6595684191528312298} + m_Father: {fileID: 5779842851872854736} + 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.0000038146973} + m_SizeDelta: {x: 587.7721, y: 449.9436} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1340197513715463517 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3871669694031851535} + m_CullTransparentMesh: 1 +--- !u!114 &2330433127735763713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3871669694031851535} + 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: a8e13487bc7a0264699f5c6a14bf2359, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &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 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5779842851872854736} + - component: {fileID: 6902685938640205749} + - component: {fileID: 7633385218540700758} + m_Layer: 0 + m_Name: TachItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5779842851872854736 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4980456610223425353} + 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: 8092312229060933107} + m_Father: {fileID: 0} + 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 &6902685938640205749 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4980456610223425353} + m_CullTransparentMesh: 1 +--- !u!114 &7633385218540700758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4980456610223425353} + 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: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5155235611077681928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1843085086356650502} + - component: {fileID: 7535770428277531582} + - component: {fileID: 4095200776013759998} + m_Layer: 0 + m_Name: title_text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1843085086356650502 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5155235611077681928} + 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: 8092312229060933107} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 6.5987, y: -25} + m_SizeDelta: {x: 371.5674, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7535770428277531582 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5155235611077681928} + m_CullTransparentMesh: 1 +--- !u!114 &4095200776013759998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5155235611077681928} + 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: "Nh\u1EADp s\u1ED1 l\u01B0\u1EE3ng" + 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: 35 + m_fontSizeBase: 35 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + 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 &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 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6595684191528312298} + - component: {fileID: 1788733087380108845} + - component: {fileID: 1211022025088380643} + - component: {fileID: 1916228653064467631} + m_Layer: 0 + m_Name: btn_close + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6595684191528312298 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6092625594424804559} + 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: 8092312229060933107} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -52, y: -57} + m_SizeDelta: {x: 70, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1788733087380108845 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6092625594424804559} + m_CullTransparentMesh: 1 +--- !u!114 &1211022025088380643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6092625594424804559} + 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: 8d11c16dec0c10f48b043ef00c2decb7, 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 &1916228653064467631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6092625594424804559} + 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: 1211022025088380643} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6398411132410693723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3340155829902359148} + - component: {fileID: 4810169975117126728} + - component: {fileID: 2218898486829895941} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3340155829902359148 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6398411132410693723} + 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: 7773690687607372942} + 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: 4.5} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4810169975117126728 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6398411132410693723} + m_CullTransparentMesh: 1 +--- !u!114 &2218898486829895941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6398411132410693723} + 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: "X\xE1c nh\u1EADn" + 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: 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: 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 &6418173351018318823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8506554322885474972} + - component: {fileID: 1194641779356620248} + - component: {fileID: 8117016670769678650} + m_Layer: 0 + m_Name: text_content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8506554322885474972 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6418173351018318823} + 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: 8092312229060933107} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 175, y: -129} + m_SizeDelta: {x: 254.4397, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1194641779356620248 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6418173351018318823} + m_CullTransparentMesh: 1 +--- !u!114 &8117016670769678650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6418173351018318823} + 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: "S\u1ED1 l\u01B0\u1EE3ng t\xE1ch" + 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: 4291032319 + m_fontColor: {r: 1, g: 0.9568628, b: 0.76470596, 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: 1 + m_VerticalAlignment: 256 + 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 &7271252754274582177 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7350993695601326241} + - component: {fileID: 383957741521176949} + - component: {fileID: 7031586665996516530} + - component: {fileID: 9175459919676808336} + m_Layer: 0 + m_Name: btn_max + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7350993695601326241 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7271252754274582177} + 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: 2686034966224864345} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 474.9, y: 0} + m_SizeDelta: {x: 70, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &383957741521176949 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7271252754274582177} + m_CullTransparentMesh: 1 +--- !u!114 &7031586665996516530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7271252754274582177} + 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: 19258564455aeab49a22de61ffcab8da, 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 &9175459919676808336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7271252754274582177} + 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: 7031586665996516530} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &7771491902921492930 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 926957764450146436} + - component: {fileID: 5422267437565491453} + - component: {fileID: 7548906186306059466} + - component: {fileID: 617999410739726095} + m_Layer: 0 + m_Name: btn_incre + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &926957764450146436 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7771491902921492930} + 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: 2686034966224864345} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 401.60004, y: 0} + m_SizeDelta: {x: 70, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5422267437565491453 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7771491902921492930} + m_CullTransparentMesh: 1 +--- !u!114 &7548906186306059466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7771491902921492930} + 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: 29df1c73a2205824986ab177fdf92232, 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 &617999410739726095 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7771491902921492930} + 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: 7548906186306059466} + 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 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9185050832575356015} + - component: {fileID: 8897815712572553535} + - component: {fileID: 4154652456399738139} + - component: {fileID: 3752555281223092697} + m_Layer: 0 + m_Name: btn_reduce + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9185050832575356015 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739994066086687747} + 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: 2686034966224864345} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 46.4, y: -0.0000019073486} + m_SizeDelta: {x: 70, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8897815712572553535 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739994066086687747} + m_CullTransparentMesh: 1 +--- !u!114 &4154652456399738139 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739994066086687747} + 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: ca15a59d9a24755449dc495dc4095619, 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 &3752555281223092697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739994066086687747} + 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: 4154652456399738139} + m_OnClick: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Prefabs/UI/TachItem.prefab.meta b/Assets/Prefabs/UI/TachItem.prefab.meta new file mode 100644 index 0000000000..72e819ef85 --- /dev/null +++ b/Assets/Prefabs/UI/TachItem.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 51e96aded6737254d81e1407089a11a7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: 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 diff --git a/Assets/Scripts/CECHostPlayer.Task.cs b/Assets/Scripts/CECHostPlayer.Task.cs index dcc5169bb0..0a13f07447 100644 --- a/Assets/Scripts/CECHostPlayer.Task.cs +++ b/Assets/Scripts/CECHostPlayer.Task.cs @@ -107,6 +107,11 @@ namespace BrewMonster // GET_ALL_DATA end flag tasks were here in C++ (LoadConfigData), omitted in C# UnityGameSession.LoadConfigData(); + // Quest trace lists + minimion: apply SyncTrace once active tasks and templates are ready. + // 任务追踪:在任务数据与模板就绪后调用 SyncTrace 同步追踪列表与小窗。 + var pGameUI = EC_Game.GetGameRun()?.GetUIManager()?.GetInGameUIMan(); + pGameUI?.OnHostTaskDataInitialized(m_pTaskInterface); + // if (UpdateEquipSkills()) UpdateEquipSkillCoolDown(); // methods not ported yet } else if (header == CommandID.TASK_VAR_DATA) diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 9d94d64bc5..bd12ed5487 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -649,7 +649,7 @@ namespace BrewMonster cmd_pickup_money pCmd = GPDataTypeHelper.FromBytes(data); AddMoneyAmount(pCmd.amount); CECGameRun pGameRun = EC_Game.GetGameRun(); - pGameRun.AddFixedMessage((int)FixedMsg.FIXMSG_PICKUPMONEY); + pGameRun.AddFixedMessage((int)FixedMsg.FIXMSG_PICKUPMONEY, pCmd.amount); BubbleText((int)BubbleTextType.BUBBLE_MONEY, (uint)pCmd.amount); } diff --git a/Assets/Scripts/ChatInputHandler.cs b/Assets/Scripts/ChatInputHandler.cs index 09226d7ebf..b696e24255 100644 --- a/Assets/Scripts/ChatInputHandler.cs +++ b/Assets/Scripts/ChatInputHandler.cs @@ -457,7 +457,7 @@ namespace BrewMonster.Scripts.ChatUI // Tránh truyền "&target&" vì kết quả sẽ là "&&target&&" → regex chỉ match "target" // nhưng để lại & dư ở ngoài → UI hiển thị "&target&" thay vì link sạch. CECStringTab pStrTab = EC_Game.GetFixedMsgs(); - string fmt = AUICommon.ConvertPrintfToCSharpFormat(pStrTab.GetWideString((int)FixedMsg.FIXMSG_PRIVATECHAT2)); + string fmt = AUIDialog.FormatPrintf(pStrTab.GetWideString((int)FixedMsg.FIXMSG_PRIVATECHAT2)); string localMsg; try { diff --git a/Assets/Scripts/EC_GameRun.cs b/Assets/Scripts/EC_GameRun.cs index 0932be7aba..71b267d14b 100644 --- a/Assets/Scripts/EC_GameRun.cs +++ b/Assets/Scripts/EC_GameRun.cs @@ -773,23 +773,19 @@ public partial class CECGameRun : ITickable return; } - // Format the message with provided arguments + // fixed_msg.txt uses printf-style (%d, %s); not C# {0} placeholders string szFormattedMsg; try { if (args != null && args.Length > 0) - { - szFormattedMsg = string.Format(szFixMsg, args); - } + szFormattedMsg = AUIDialog.FormatPrintf(szFixMsg, args); else - { szFormattedMsg = szFixMsg; - } } - catch (System.FormatException ex) + catch (Exception ex) { Debug.LogError($"[AddFixedMessage] Format error for message {iMsg}: {ex.Message}"); - szFormattedMsg = szFixMsg; // Use unformatted message as fallback + szFormattedMsg = szFixMsg; } // Try to add to in-game UI chat @@ -828,23 +824,19 @@ public partial class CECGameRun : ITickable return; } - // Format the message with provided arguments + // fixed_msg.txt uses printf-style (%d, %s); not C# {0} placeholders string szFormattedMsg; try { if (args != null && args.Length > 0) - { - szFormattedMsg = string.Format(szFixMsg, args); - } + szFormattedMsg = AUIDialog.FormatPrintf(szFixMsg, args); else - { szFormattedMsg = szFixMsg; - } } - catch (System.FormatException ex) + catch (Exception ex) { Debug.LogError($"[AddFixedChannelMsg] Format error for message {iMsg}: {ex.Message}"); - szFormattedMsg = szFixMsg; // Use unformatted message as fallback + szFormattedMsg = szFixMsg; } // Try to add to in-game UI chat with specific channel