diff --git a/Assets/ModelRenderer/Art/Models/models/weapons/人物/刀剑/双手双剑/子母剑/子母剑_右.prefab b/Assets/ModelRenderer/Art/Models/models/weapons/人物/刀剑/双手双剑/子母剑/子母剑_右.prefab index a714c71c4e..66da39859d 100644 --- a/Assets/ModelRenderer/Art/Models/models/weapons/人物/刀剑/双手双剑/子母剑/子母剑_右.prefab +++ b/Assets/ModelRenderer/Art/Models/models/weapons/人物/刀剑/双手双剑/子母剑/子母剑_右.prefab @@ -26,13 +26,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7683706845393114874} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0.365, y: -0.002, z: -0.002} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!33 &2133889840078759797 MeshFilter: m_ObjectHideFlags: 0 diff --git a/Assets/ModelRenderer/Art/Models/models/weapons/人物/刀剑/双手双剑/子母剑/子母剑_左.prefab b/Assets/ModelRenderer/Art/Models/models/weapons/人物/刀剑/双手双剑/子母剑/子母剑_左.prefab index 6a2822b6ee..6954966b5d 100644 --- a/Assets/ModelRenderer/Art/Models/models/weapons/人物/刀剑/双手双剑/子母剑/子母剑_左.prefab +++ b/Assets/ModelRenderer/Art/Models/models/weapons/人物/刀剑/双手双剑/子母剑/子母剑_左.prefab @@ -26,13 +26,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1062321236472470772} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0.365, y: -0.002, z: -0.002} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!33 &3655013707296471465 MeshFilter: m_ObjectHideFlags: 0 diff --git a/Assets/ModelRenderer/Art/Models/models/weapons/人物/斧锤/双手双斧/闪华斧/闪华斧.prefab b/Assets/ModelRenderer/Art/Models/models/weapons/人物/斧锤/双手双斧/闪华斧/闪华斧.prefab index 29ca14ed5c..adb24198a2 100644 --- a/Assets/ModelRenderer/Art/Models/models/weapons/人物/斧锤/双手双斧/闪华斧/闪华斧.prefab +++ b/Assets/ModelRenderer/Art/Models/models/weapons/人物/斧锤/双手双斧/闪华斧/闪华斧.prefab @@ -26,13 +26,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3330708356810309571} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0.388, y: -0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!33 &666975227472843166 MeshFilter: m_ObjectHideFlags: 0 diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index edd0d403d5..70942446f6 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -36,6 +36,11 @@ namespace BrewMonster [SerializeField] internal INFO m_PlayerInfo; public CECModel m_pPlayerCECModel; protected GameObject m_pPlayerModel => m_pPlayerCECModel.m_pPlayerModel; + public bool IsPlayerModelReady + { + get; + protected set; + } protected float rotationSpeed = 5; internal int m_iMoveMode; // Player's move mode [SerializeField] internal int m_idSelTarget; @@ -331,6 +336,9 @@ namespace BrewMonster m_pModels[(int)PLAYERMODEL_TYPE.PLAYERMODEL_MAJOR] = m_pPlayerModel; m_iShape = 0; + // Set the player model ready flag + IsPlayerModelReady = true; + // Update visual components after model is set (with delay to ensure NamedAnimancerComponent is available) // 设置模型后更新视觉组件(延迟以确保NamedAnimancerComponent可用) StartCoroutine(UpdateVisualComponentsDelayed()); diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs index 611cd7572c..2eda123d70 100644 --- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs @@ -723,20 +723,21 @@ namespace BrewMonster.Network private void OnFriendRequestReceived(uint xid, int srcroleid, string askerName) { string name = string.IsNullOrEmpty(askerName) ? ("Player " + srcroleid) : askerName; - CECUIManager.Instance?.ShowMessageBox( + CECUIManager.Instance?.ShowMessageBoxYesAndNo( title: "Friend Request", message: $"{name} wants to add you as a friend.", - messageBoxType: MessageBoxType.BothYesNoButton, + dlg: null, onClickedYes: () => Friend_AddResponse(xid, agree: true), onClickedNo: () => Friend_AddResponse(xid, agree: false)); } private void OnAddFriendResultReceived(byte retcode, string message) { - CECUIManager.Instance?.ShowMessageBox( + CECUIManager.Instance?.ShowMessageBoxYes( title: retcode == 0 ? "Friend added" : "Add friend failed", message: message, - messageBoxType: MessageBoxType.YesButton); + dlg: null, + null); } private void OnUnexpectedDisconnect() diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index a71761b689..f9878ddd59 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -533,7 +533,7 @@ namespace BrewMonster } } - public void OnMsgPlayerEquipData(ECMSG Msg) + public async void OnMsgPlayerEquipData(ECMSG Msg) { // using namespace S2C; @@ -567,7 +567,17 @@ namespace BrewMonster } // // Change equipment - ChangeEquipments(bReset, crc, iAddMask, iDelMask, aAdded); + // ChangeEquipments(bReset, crc, iAddMask, iDelMask, aAdded); + await QueueChangeEquipments(bReset, crc, iAddMask, iDelMask, aAdded); + } + + private async UniTask QueueChangeEquipments(bool bReset, int crc, long iAddMask, long iDelMask, int[] aAddedEquip) + { + while (!IsPlayerModelReady) + { + await UniTask.DelayFrame(1); + } + ChangeEquipments(bReset, crc, iAddMask, iDelMask, aAddedEquip); } /// diff --git a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs index 79ccccb026..32890746ec 100644 --- a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs +++ b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs @@ -1,4 +1,4 @@ -using BrewMonster.Network; +using BrewMonster.Network; using BrewMonster.Scripts.Managers; using BrewMonster.UI; using PerfectWorld.Scripts.Managers; @@ -37,12 +37,13 @@ namespace BrewMonster [Header("Buttons and Money")] [SerializeField] private TextMeshProUGUI m_TxtMoney; + [SerializeField] private Button m_useItem; [SerializeField] private Button m_BtnMergeOrReset; [SerializeField] private Button m_BtnCancel; [SerializeField] private Button m_BtnClose; [SerializeField] private Sprite khung_item; - [SerializeField] private Transform itemInventoryRoot; + [SerializeField] private GameObject itemInventoryRoot; private EC_IvtrItem m_SelectedEquip; private EC_IvtrItem m_SelectedMaterial; @@ -58,31 +59,14 @@ namespace BrewMonster public override void Awake() { base.Awake(); - RegisterDrop(m_SlotFirstParent, OnDropEquip); RegisterClick(m_SlotFirstParent, OnClickEquipSlot); if (m_Mode == InstallMode.Enchase && m_SlotSecondParent != null) { - RegisterDrop(m_SlotSecondParent, OnDropMaterial); RegisterClick(m_SlotSecondParent, OnClickMaterialSlot); } } - public override void Update() - { -#if UNITY_EDITOR || UNITY_STANDALONE - if (Input.GetMouseButtonDown(0)) - { - CheckHidePanel(Input.mousePosition); - } -#else - if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) - { - CheckHidePanel(Input.GetTouch(0).position); - } -#endif - } - public override void OnEnable() { base.OnEnable(); @@ -91,6 +75,7 @@ namespace BrewMonster m_BtnMergeOrReset.onClick.AddListener(OnClickedMergeOrReset); m_BtnCancel.onClick.AddListener(OnCommandCancel); m_BtnClose.onClick.AddListener(OnCommandCancel); + m_useItem.onClick.AddListener(OnUseItemClicked); m_install_price = -1; if (m_SlotSecondParent != null) m_SlotSecondParent.gameObject.SetActive(m_Mode == InstallMode.Enchase); @@ -104,6 +89,7 @@ namespace BrewMonster m_BtnMergeOrReset.onClick.RemoveListener(OnClickedMergeOrReset); m_BtnCancel.onClick.RemoveListener(OnCommandCancel); m_BtnClose.onClick.RemoveListener(OnCommandCancel); + m_useItem.onClick.RemoveListener(OnUseItemClicked); } private void RestoreInventoryColors() @@ -147,23 +133,6 @@ namespace BrewMonster return list[slot]; } - private void RegisterDrop(Transform target, Action callback) - { - var trigger = target.GetComponent(); - if (trigger == null) - trigger = target.gameObject.AddComponent(); - - trigger.triggers.Clear(); - - var entry = new EventTrigger.Entry - { - eventID = EventTriggerType.Drop - }; - entry.callback.AddListener((data) => { callback((PointerEventData)data); }); - - trigger.triggers.Add(entry); - } - private void RegisterClick(Transform target, Action callback) { if (target == null) return; @@ -199,117 +168,6 @@ namespace BrewMonster } } - private EC_IvtrItem GetItemFromDrag(PointerEventData eventData) - { - if (eventData.pointerDrag == null) - return null; - - var btn = eventData.pointerDrag.GetComponent