diff --git a/Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs b/Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs index 271fd142a9..101a4f021e 100644 --- a/Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs +++ b/Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs @@ -14,6 +14,8 @@ namespace BrewMonster.Scripts.ChatUI { [Header("MiniChat")] public Button onOpenChatPanelButton; + [Tooltip("Dialog name registered in CECUIManager/CECGameUIMan for full chat panel.")] + [SerializeField] string chatDialogName = "Win_Chat"; [Tooltip("Parent cho các dòng tin xem trước (nên có VerticalLayoutGroup).")] public RectTransform miniChatContent; [Tooltip("ScrollRect bọc mini chat (null = không cuộn). Nếu để trống, Awake sẽ thử GetComponentInParent từ miniChatContent.")] @@ -78,6 +80,10 @@ namespace BrewMonster.Scripts.ChatUI void OnOpenChatPanelButtonClicked() { + // Open through CECUIManager stack so current top UI/popup is hidden consistently. + if (!string.IsNullOrEmpty(chatDialogName) && CECUIManager.Instance != null) + CECUIManager.Instance.ShowUI(chatDialogName); + EventBus.Publish(new OpenChatPanelRequestedEvent()); } diff --git a/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs b/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs index eca6c7a647..c3de5e5d25 100644 --- a/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs +++ b/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs @@ -11,7 +11,7 @@ public class NPCVisual : MonoBehaviour protected CECNPC.INFO m_NPCInfo; [SerializeField] private Queue _animationQueue = new Queue(); [SerializeField] private AnimancerState _currentState; - private bool debugNamePlateBounds = true; + private bool debugNamePlateBounds = false; private const float fadeTime = .2f; private const FadeMode FadeMode = Animancer.FadeMode.FixedDuration; @@ -181,7 +181,7 @@ public class NPCVisual : MonoBehaviour var currentBounds = new Bounds(worldCenter, worldSize); if (debugNamePlateBounds) { - Debug.Log($"[Cuong] [NPCVisual] smr={renderer.name} localCenter={meshBounds.center} localSize={meshBounds.size} worldCenter={worldCenter} worldSize={worldSize} worldMaxY={currentBounds.max.y}"); + BMLogger.Log($"[Cuong] [NPCVisual] smr={renderer.name} localCenter={meshBounds.center} localSize={meshBounds.size} worldCenter={worldCenter} worldSize={worldSize} worldMaxY={currentBounds.max.y}"); } if (!hasAnySkinnedMesh) diff --git a/Assets/PerfectWorld/Scripts/Skills/SkillStubs1/skill88.cs b/Assets/PerfectWorld/Scripts/Skills/SkillStubs1/skill88.cs index 0d74af7434..772149e8b5 100644 --- a/Assets/PerfectWorld/Scripts/Skills/SkillStubs1/skill88.cs +++ b/Assets/PerfectWorld/Scripts/Skills/SkillStubs1/skill88.cs @@ -86,9 +86,9 @@ namespace BrewMonster public Skill88Stub() : base(88) { cls = 1; - name = "ӿȪ"; - nativename = "ӿȪ"; - icon = "ӿȪ"; + name = "涌泉"; + nativename = "涌泉"; + icon = "涌泉"; max_level = 10; type = 1; apcost = 0; @@ -109,11 +109,43 @@ namespace BrewMonster long_range = 0; restrict_corpse = 0; allow_forms = 1; - effect = "ӿȪ"; + effect = "涌泉"; doenchant = 1; dobless = 0; commoncooldown = 0; commoncooldowntime = 0; + m_szFlyGfxPath = string.Empty; + m_szHitGrndGfxPath = string.Empty; + m_szHitGfxPath = "策划联入/人物技能/飞行/涌泉中招.gfx"; + m_szFlySfxPath = string.Empty; + m_szHitGrndSfxPath = string.Empty; + m_szHitSfxPath = "skill/02mage/涌泉_c"; + + // GFX Movement and Behavior Parameters / GFX移动和行为参数 + m_MoveMode = (GfxMoveMode)0; + m_TargetMode = (GfxTargetMode)0; + m_AttFlyMode = (GfxAttackMode)0; + m_AttHitMode = (GfxAttackMode)0; + m_dwFlyTime = 0; + m_bTraceTarget = false; + m_FlyClusterCount = 1; + m_FlyClusterInterval = 0; + m_HitClusterCount = 1; + m_HitClusterInterval = 0; + m_bOneHit = true; + m_bFadeOut = false; + m_bRelScl = true; + m_fDefTarScl = 1.8f; + + // Area parameters (commented out) / 区域参数(已注释) + // m_bArea = false; + // m_Shape = (EmitShape)0; + // m_vSize = new Vector3(0.0f, 0.0f, 0.0f); + + // Param (commented out) / 参数(已注释) + // m_paramType = (GfxSkillValType)1; + // m_param = new GFX_SKILL_PARAM(); + // m_param.nVal = 0; restrict_weapons.Add(0); restrict_weapons.Add(292); range = new Range(); diff --git a/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillSubList.cs b/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillSubList.cs index 027e8af95c..dd156bb996 100644 --- a/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillSubList.cs +++ b/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillSubList.cs @@ -129,7 +129,7 @@ namespace BrewMonster.UI { CreateOneRankDlg(taoistRank); } - totalSPText.text = " Nguyên Thần: " +GetHostPlayer().GetBasicProps().iSP.ToString() + ""; + } // ��ʼ�����������ڶԻ���һ���Է�����ڴ� / Initialize rank sub-dialogs once to avoid realloc @@ -190,6 +190,7 @@ namespace BrewMonster.UI FitSize(); ShowLastSelectedSkill(); } + totalSPText.text = " Nguyên Thần: " + GetHostPlayer().GetBasicProps().iSP.ToString() + ""; } // ��鵯��ħ״̬ / Reset when switching between god/evil diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs index 6ffdda0042..25babd77e4 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs @@ -39,7 +39,6 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay { if (skillbutton == null) { - Debug.LogError("Skill Button is not assigned in AUIImagePicture"); return; } skillbutton.onClick.RemoveAllListeners(); @@ -98,7 +97,12 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay Debug.LogError("Skill Image is not assigned in AUIImagePicture"); return; } - skillbutton.interactable = true; + + if (skillbutton != null) + { + skillbutton.interactable = true; + } + disPlayImage.color = Color.white; disPlayImage.sprite = sprite; disPlayImage.gameObject.SetActive(true); @@ -222,18 +226,13 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay continue; } - if (TrySetSkillGroupIconByNIcon(index, comboSkills[index].nIcon)) + if (TrySetDefaultSkillGroupIcon()) { return true; } } _skillGroupIndex = resolvedGroup; - if (TrySetDefaultSkillGroupIcon()) - { - return true; - } - Clear(); return false; } diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIToggleAssignSlot.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIToggleAssignSlot.cs index cb88015b6e..49965d096e 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIToggleAssignSlot.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIToggleAssignSlot.cs @@ -104,7 +104,7 @@ namespace BrewMonster continue; } - if (TrySetSkillGroupIconByNIcon(groupIndex, comboSkills[groupIndex].nIcon)) + if (TrySetDefaultSkillGroupIcon()) { return true; } @@ -114,6 +114,24 @@ namespace BrewMonster return false; } + private bool TrySetDefaultSkillGroupIcon() + { + var uiMan = EC_Game.GetGameRun()?.GetUIManager()?.GetInGameUIMan(); + if (uiMan == null) + { + return false; + } + + var icon = uiMan.GetIcon(DefaultComboIcon, EC_GAMEUI_ICONS.ICONS_SKILLGRP); + if (icon == null) + { + return false; + } + + SetImage(icon); + return true; + } + private bool TrySetSkillGroupIconByNIcon(int groupIndex, int nIcon) { _skillGroupIndex = groupIndex; diff --git a/Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs b/Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs index a6140ff294..420c0d55a1 100644 --- a/Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs +++ b/Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs @@ -144,6 +144,7 @@ namespace BrewMonster private void OnClickedConfirmCombo() { + _skillSetUpComboWidget.ShowCurrentCombos(); if (_currentSelectComboSlot != null && _skillSetUpComboWidget.CurrentComboSetting.comboSkill[_currentSelectComboSlot.GetSlotIndex].idSkill == null) { diff --git a/Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs b/Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs index eb9370f160..3bd01534b9 100644 --- a/Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs +++ b/Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs @@ -104,7 +104,7 @@ namespace BrewMonster _btnLoopAttack.OnClickedSkillSlot -= OnSelectedSkillToAsign; } - private void ShowCurrentCombos() + public void ShowCurrentCombos() { // setting.comboSkill[GetData() - 1].nIcon = (byte)m_nIcon; if (Setting.comboSkill == null || _combosList.Count != Setting.comboSkill.Length) diff --git a/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab b/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab index 1a0d3159d4..a0ea2466b1 100644 --- a/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab +++ b/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab @@ -112,7 +112,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 104, y: -5} - m_SizeDelta: {x: 290, y: 0} + m_SizeDelta: {x: 600, y: 0} m_Pivot: {x: 0, y: 1} --- !u!222 &7228077960814023056 CanvasRenderer: @@ -252,9 +252,9 @@ MonoBehaviour: m_IgnoreLayout: 0 m_MinWidth: 290 m_MinHeight: -1 - m_PreferredWidth: -1 + m_PreferredWidth: 600 m_PreferredHeight: -1 - m_FlexibleWidth: 603.72 + m_FlexibleWidth: 600 m_FlexibleHeight: -1 m_LayoutPriority: 1 --- !u!1 &6627717456258223658 diff --git a/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab b/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab index 53715a1e13..3ed9074659 100644 --- a/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab +++ b/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab @@ -371,8 +371,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: -175.64499, y: 151.8} - m_SizeDelta: {x: -1148.71, y: 227} + m_AnchoredPosition: {x: -157.2, y: 151.8} + m_SizeDelta: {x: -1235.6001, y: 227} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &5093099212117339368 CanvasRenderer: diff --git a/Assets/Prefabs/UI/SkillUI.prefab b/Assets/Prefabs/UI/SkillUI.prefab index 72df38ec75..6516114311 100644 --- a/Assets/Prefabs/UI/SkillUI.prefab +++ b/Assets/Prefabs/UI/SkillUI.prefab @@ -943,7 +943,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 335.91, y: -507.53912} + m_AnchoredPosition: {x: 335.91, y: -431.53912} m_SizeDelta: {x: 651.82, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2731969899170380074