Merge pull request 'update code dlgPetList' (#198) from feature/fix-teamate into develop

Reviewed-on: https://git.pthub.vn/Unity/perfect-world-unity/pulls/198
This commit is contained in:
hainh
2026-03-05 08:37:39 +00:00
4 changed files with 178 additions and 44 deletions
@@ -1,4 +1,4 @@
using BrewMonster.Network;
using BrewMonster.Network;
using BrewMonster.Scripts.Pet;
using CSNetwork.GPDataType;
using ModelRenderer.Scripts.GameData;
@@ -282,7 +282,7 @@ namespace BrewMonster.UI
// CECPetCorral pPetCorral = GetHostPlayer().GetPetCorral();
// int nSlot = slot - 1;
// nSlot += m_nPageIndex* CDLGPETLIST_SLOT_MAX;
// // ·ÉÐÐ-¡·Æï³Ë
// // ·ÉÐÐ-¡·Æï³Ë
// if (GetHostPlayer().GetActionSwitcher() != null && GetHostPlayer().GetActionSwitcher().OnFlyToRideAction(nSlot))
// return;
@@ -311,34 +311,60 @@ namespace BrewMonster.UI
[SerializeField] private DlgPetListBox m_prefabPetSlot;
[SerializeField] private Transform m_container;
[Header("Common UI")]
[SerializeField] private Button m_pBtnClose;
[SerializeField] private Button[] m_pBtn_Tab;
[SerializeField] private GameObject[] m_mask_off_pBtn_Tab;
[Header("Button")]
[SerializeField] private Button m_btnClose;
[SerializeField] private Button m_btnHome;
[SerializeField] private Button m_btnOut;
[Header("Pet Decs")]
[SerializeField] private Image m_iconPet;
[SerializeField] private TMP_Text m_namePet;
[SerializeField] private TMP_Text m_levelPet;
[SerializeField] private TMP_Text m_expPet;
[SerializeField] private Sprite m_spriteDefault_Icon;
private List<DlgPetListBox> m_spawnedSlots = new List<DlgPetListBox>();
private int m_nPageIndex = 0;
private CECPetData m_currentSelectedPet;
private int m_currentSelectSlotIndex;
public void OnInitDialog()
{
if (!IsShow()) Show(true);
m_pBtnClose.onClick.RemoveAllListeners();
m_pBtnClose.onClick.AddListener(() => Show(false));
m_btnClose.onClick.RemoveAllListeners();
m_btnClose.onClick.AddListener(() => Show(false));
for (int i = 0; i < m_pBtn_Tab.Length; i++)
if (m_btnHome != null)
{
int index = i;
m_pBtn_Tab[i].onClick.RemoveAllListeners();
m_pBtn_Tab[i].onClick.AddListener(() => OnClickBtnTab(index));
m_btnHome.onClick.RemoveAllListeners();
m_btnHome.onClick.AddListener(() =>
{
if (m_currentSelectSlotIndex >= 0)
{
OnCommandRecall();
}
});
}
OnClickBtnTab(0);
if(m_btnOut != null)
{
m_btnOut.onClick.RemoveAllListeners();
m_btnOut.onClick.AddListener(() =>
{
if (m_currentSelectSlotIndex >= 0)
{
OnCommandSummon(m_currentSelectSlotIndex);
}
});
}
}
public override bool Render()
{
UpdateList();
UpdateButtonStates();
return base.Render();
}
@@ -375,18 +401,89 @@ namespace BrewMonster.UI
private void OnSlotClicked(int slotIndex, bool isActivePet)
{
if (isActivePet)
CECPetCorral pPetCorral = GetHostPlayer()?.GetPetCorral();
if(pPetCorral == null)
return;
CECPetData pPetData = pPetCorral.GetPetData(slotIndex);
if (pPetData != null)
{
OnCommandRecall();
m_currentSelectSlotIndex = slotIndex;
UpdatePetDetails(pPetData);
UpdateButtonStates();
}
}
private void UpdatePetDetails(CECPetData pPet)
{
if (pPet == null)
{
m_namePet.text = "___";
m_levelPet.text = "___";
m_expPet.text = "___";
if(m_spriteDefault_Icon != null)
m_iconPet.sprite = m_spriteDefault_Icon;
return;
}
m_currentSelectedPet = pPet;
m_namePet.text = pPet.GetName();
m_levelPet.text = $"Cấp {pPet.GetLevel()}";
int currentExp = pPet.GetExp();
int maxExp = pPet.GetMaxExp();
m_expPet.text = $"EXP: {currentExp} / {maxExp}";
UpdatePetIcon(pPet.GetTemplateID());
}
private void UpdatePetIcon(int templateID)
{
var pDB = ElementDataManProvider.GetElementDataMan();
DATA_TYPE dataType = new DATA_TYPE();
object pDBEssence = pDB.get_data_ptr((uint)templateID, ID_SPACE.ID_SPACE_ESSENCE, ref dataType);
if (pDBEssence != null)
{
PET_ESSENCE pPET = (PET_ESSENCE)pDBEssence;
string strFile = Path.GetFileNameWithoutExtension(pPET.FileIcon).ToLower();
m_iconPet.sprite = EC_Game.GetGameRun().GetUIManager().GetSpriteInListIvtr(strFile);
}
else
{
OnCommandSummon(slotIndex);
if(m_spriteDefault_Icon != null)
m_iconPet.sprite = m_spriteDefault_Icon;
}
}
private void UpdateButtonStates()
{
if (m_currentSelectSlotIndex < 0)
{
if(m_btnHome != null)
m_btnHome.interactable = false;
if(m_btnOut != null)
m_btnOut.interactable = false;
return;
}
CECPetCorral pPetCorral = GetHostPlayer()?.GetPetCorral();
if(pPetCorral == null)
return;
int operatingState = GetHostPlayer().IsOperatingPet();
bool isActivePet = (pPetCorral.GetActivePetIndex() == m_currentSelectSlotIndex);
bool canOperate = (operatingState == 0);
if(m_btnHome != null)
m_btnHome.interactable = isActivePet && canOperate;
if(m_btnOut != null)
m_btnOut.interactable = !isActivePet && canOperate;
}
public void OnCommandSummon(int nSlot)
{
if(nSlot < 0)
return;
var actionSwitcher = GetHostPlayer().GetActionSwitcher();
if (actionSwitcher != null && actionSwitcher.OnFlyToRideAction(nSlot))
return;
@@ -398,20 +495,5 @@ namespace BrewMonster.UI
{
GetHostPlayer().RecallPet();
}
public void OnClickBtnTab(int index)
{
m_nPageIndex = index;
for (int i = 0; i < m_pBtn_Tab.Length; i++)
{
if (i < m_mask_off_pBtn_Tab.Length)
{
m_mask_off_pBtn_Tab[i].SetActive(i != m_nPageIndex);
}
}
UpdateList();
}
}
}
@@ -22,17 +22,18 @@ namespace BrewMonster
private bool m_isActivePet;
private int m_operatingState;
private Action<int, bool> m_onClickCallback;
private CECPetData m_petData;
public void SetData(CECPetData pPet, int actualSlot, bool isActivePet, int operatingState, Action<int, bool> onClickSlot)
{
if (pPet == null)
{
Show(false);
Show(false);
return;
}
Show(true);
m_slotIndex = actualSlot;
m_isActivePet = isActivePet;
m_operatingState = operatingState;
@@ -76,5 +77,10 @@ namespace BrewMonster
m_iconPet.sprite = m_spriteDefault_Icon;
}
}
public CECPetData GetPetData()
{
return m_petData;
}
}
}
+12 -11
View File
@@ -353,7 +353,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "C\u1EA5p 10"
m_text: ___
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
@@ -565,7 +565,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: EXP 3/50
m_text: ___
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
@@ -592,7 +592,7 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 35.05
m_fontSize: 39.15
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
@@ -1466,13 +1466,14 @@ MonoBehaviour:
imageProgress: {fileID: 0}
m_prefabPetSlot: {fileID: 4659787501825667672, guid: 1f24da0ec1a703b4e9650d69ec4ceff2, type: 3}
m_container: {fileID: 6146182060371184350}
m_pBtnClose: {fileID: 8122086289517642079}
m_pBtn_Tab:
- {fileID: 0}
- {fileID: 0}
m_mask_off_pBtn_Tab:
- {fileID: 0}
- {fileID: 0}
m_btnClose: {fileID: 8122086289517642079}
m_btnHome: {fileID: 2385823678917970113}
m_btnOut: {fileID: 3388903545038814812}
m_iconPet: {fileID: 3806612095625030478}
m_namePet: {fileID: 3493020700139178670}
m_levelPet: {fileID: 7602645980480065390}
m_expPet: {fileID: 1618158093982489839}
m_spriteDefault_Icon: {fileID: 21300000, guid: a5366f3bce011c046902e39b6bd3a077, type: 3}
--- !u!1 &5447703489185023651
GameObject:
m_ObjectHideFlags: 0
@@ -2122,7 +2123,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "T\u1EED S\u1EAFc Linh H\u1ED3 "
m_text: ___
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
+45
View File
@@ -12,6 +12,7 @@ GameObject:
- component: {fileID: 7165189893168129209}
- component: {fileID: 1118867773330876107}
- component: {fileID: 4659787501825667672}
- component: {fileID: 7552159391515501642}
m_Layer: 5
m_Name: box_pet
m_TagString: Untagged
@@ -97,6 +98,50 @@ MonoBehaviour:
m_textPetName: {fileID: 5449806950497928055}
m_textLevel: {fileID: 8984627373247379662}
m_spriteDefault_Icon: {fileID: 21300000, guid: a5366f3bce011c046902e39b6bd3a077, type: 3}
--- !u!114 &7552159391515501642
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 348038655157736426}
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: 1118867773330876107}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &2001492326850316061
GameObject:
m_ObjectHideFlags: 0