Merge pull request 'feature/fix-teamate' (#200) from feature/fix-teamate into develop
Reviewed-on: https://git.pthub.vn/Unity/perfect-world-unity/pulls/200
This commit is contained in:
@@ -0,0 +1,220 @@
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.Scripts.Pet;
|
||||
using CSNetwork.GPDataType;
|
||||
using ModelRenderer.Scripts.GameData;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BrewMonster.UI
|
||||
{
|
||||
public class DlgPetDetail : AUIDialog
|
||||
{
|
||||
[SerializeField] private Image m_iconPet;
|
||||
[SerializeField] private TMP_Text m_textPetName;
|
||||
[SerializeField] private TMP_Text m_textLevel;
|
||||
[SerializeField] private TMP_Text m_textExp;
|
||||
[SerializeField] private TMP_Text m_descPet;
|
||||
[SerializeField] private Sprite m_spriteDefault_Icon;
|
||||
|
||||
private int m_nSlot;
|
||||
|
||||
public void UpdatePet(int nSlot)
|
||||
{
|
||||
if (nSlot != -1)
|
||||
{
|
||||
m_nSlot = nSlot;
|
||||
Show(true);
|
||||
UpdatePetInternal();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdatePetInternal()
|
||||
{
|
||||
var pDB = ElementDataManProvider.GetElementDataMan();
|
||||
if(pDB == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var host = CECGameRun.Instance?.GetHostPlayer();
|
||||
if (host == null)
|
||||
return;
|
||||
|
||||
var pPetCorral = host.GetPetCorral();
|
||||
if(pPetCorral == null)
|
||||
return;
|
||||
|
||||
var pPet = pPetCorral.GetPetData(m_nSlot);
|
||||
if(pPet == null)
|
||||
return;
|
||||
|
||||
int nLevel = pPet.GetLevel();
|
||||
m_textPetName.text = pPet.GetName();
|
||||
|
||||
m_textPetName.text = pPet.GetName();
|
||||
m_textLevel.text = "Cấp " + nLevel.ToString();
|
||||
m_textExp.text = "EXP " + $"{pPet.GetExp()} / {pPet.GetMaxExp()}";
|
||||
|
||||
DATA_TYPE dataType = DATA_TYPE.DT_INVALID;
|
||||
var petEssenceData = pDB.get_data_ptr((uint)pPet.GetTemplateID(), ID_SPACE.ID_SPACE_ESSENCE, ref dataType);
|
||||
|
||||
if (petEssenceData != null && dataType == DATA_TYPE.DT_PET_ESSENCE)
|
||||
{
|
||||
var pPetEssence = (PET_ESSENCE)petEssenceData;
|
||||
|
||||
UpdatePetIcon(pPetEssence);
|
||||
|
||||
if (pPet.GetClass() == (int)GP_PET_TYPE.GP_PET_CLASS_MOUNT ||
|
||||
pPet.GetClass() == (int)GP_PET_TYPE.GP_PET_CLASS_COMBAT ||
|
||||
pPet.GetClass() == (int)GP_PET_TYPE.GP_PET_CLASS_EVOLUTION)
|
||||
{
|
||||
string description = BuildPetDescription(pPet, pPetEssence, nLevel);
|
||||
m_descPet.text = description;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(m_spriteDefault_Icon != null)
|
||||
m_iconPet.sprite = m_spriteDefault_Icon;
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdatePetIcon(PET_ESSENCE pPetEssence)
|
||||
{
|
||||
if (m_iconPet == null)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
string strFile = Path.GetFileNameWithoutExtension(pPetEssence.FileIcon).ToLower();
|
||||
var sprite = EC_Game.GetGameRun().GetUIManager().GetSpriteInListIvtr(strFile);
|
||||
|
||||
if (sprite != null)
|
||||
{
|
||||
m_iconPet.sprite = sprite;
|
||||
m_iconPet.enabled = true;
|
||||
m_iconPet.color = Color.white;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_iconPet.sprite = m_spriteDefault_Icon;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError($"[DlgPetDetail] Error loading pet icon: {ex.Message}");
|
||||
m_iconPet.sprite = m_spriteDefault_Icon;
|
||||
}
|
||||
}
|
||||
|
||||
private string BuildPetDescription(CECPetData pPet, PET_ESSENCE pEssence, int nLevel)
|
||||
{
|
||||
string desc = "";
|
||||
|
||||
// Loyalty
|
||||
int intimacy = pPet.GetIntimacy();
|
||||
string loyaltyLevel = GetLoyaltyLevel(intimacy);
|
||||
desc += $"Lòng trung thành: {loyaltyLevel} ({intimacy})\n";
|
||||
|
||||
// Hunger
|
||||
int hunger = pPet.GetHunger();
|
||||
string hungerLevel = GetHungerLevel(hunger);
|
||||
desc += $"Đói: {hungerLevel} \n";
|
||||
|
||||
// Move Speed
|
||||
float speed = pEssence.speed_a + pEssence.speed_b * (nLevel - 1);
|
||||
desc += $"Tốc độ di chuyển: {speed:F2}\n";
|
||||
|
||||
// Required Level
|
||||
desc += $"Cấp yêu cầu: {pEssence.level_require}\n";
|
||||
|
||||
return desc;
|
||||
|
||||
}
|
||||
|
||||
private string GetLoyaltyLevel(int intimacy)
|
||||
{
|
||||
if (intimacy <= 50)
|
||||
{
|
||||
return " Nho hon bang 50";
|
||||
}
|
||||
else if(intimacy <= 150)
|
||||
{
|
||||
return "Bang 50 den 150";
|
||||
}
|
||||
else if (intimacy <= 500)
|
||||
{
|
||||
return "Bang 300 den 500";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Lon hon bang 500";
|
||||
}
|
||||
}
|
||||
|
||||
private string GetHungerLevel(int hunger)
|
||||
{
|
||||
if(hunger == (int)CECPetData.ePetData_HUNGER_LEVEL.HUNGER_LEVEL_0)
|
||||
{
|
||||
return "Chet doi";
|
||||
}
|
||||
else if(hunger == (int)CECPetData.ePetData_HUNGER_LEVEL.HUNGER_LEVEL_1)
|
||||
{
|
||||
return "Rat doi";
|
||||
}
|
||||
else if (hunger == (int)CECPetData.ePetData_HUNGER_LEVEL.HUNGER_LEVEL_2)
|
||||
{
|
||||
return "doi";
|
||||
}
|
||||
else if (hunger == (int)CECPetData.ePetData_HUNGER_LEVEL.HUNGER_LEVEL_4)
|
||||
{
|
||||
return "binh thuong";
|
||||
}
|
||||
else if (hunger == (int)CECPetData.ePetData_HUNGER_LEVEL.HUNGER_LEVEL_7)
|
||||
{
|
||||
return "no";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "rat no";
|
||||
}
|
||||
}
|
||||
|
||||
private void ClearPetDetail()
|
||||
{
|
||||
if(m_textPetName != null)
|
||||
{
|
||||
m_textPetName.text = "___";
|
||||
}
|
||||
if(m_textLevel != null)
|
||||
{
|
||||
m_textLevel.text = "___";
|
||||
}
|
||||
if(m_textExp != null)
|
||||
{
|
||||
m_textExp.text = "___";
|
||||
}
|
||||
if (m_iconPet != null && m_spriteDefault_Icon != null)
|
||||
{
|
||||
m_iconPet.sprite = m_spriteDefault_Icon;
|
||||
}
|
||||
if(m_descPet != null)
|
||||
{
|
||||
m_descPet.text = "___";
|
||||
}
|
||||
}
|
||||
|
||||
//public override bool Render()
|
||||
//{
|
||||
// if (m_nSlot >= 0)
|
||||
// {
|
||||
// UpdatePetInternal();
|
||||
// }
|
||||
// return base.Render();
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce0ac818dfef5e04e92aa1ed022893bd
|
||||
@@ -316,18 +316,12 @@ namespace BrewMonster.UI
|
||||
[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;
|
||||
|
||||
[Header("References")]
|
||||
[SerializeField] private DlgPetDetail m_dlgPetDetail;
|
||||
|
||||
private List<DlgPetListBox> m_spawnedSlots = new List<DlgPetListBox>();
|
||||
private int m_nPageIndex = 0;
|
||||
private CECPetData m_currentSelectedPet;
|
||||
private int m_currentSelectSlotIndex;
|
||||
private int m_currentSelectSlotIndex = -1;
|
||||
|
||||
public void OnInitDialog()
|
||||
{
|
||||
@@ -408,51 +402,15 @@ namespace BrewMonster.UI
|
||||
if (pPetData != null)
|
||||
{
|
||||
m_currentSelectSlotIndex = slotIndex;
|
||||
UpdatePetDetails(pPetData);
|
||||
UpdateButtonStates();
|
||||
|
||||
if (m_dlgPetDetail != null)
|
||||
{
|
||||
m_dlgPetDetail.UpdatePet(slotIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
if(m_spriteDefault_Icon != null)
|
||||
m_iconPet.sprite = m_spriteDefault_Icon;
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateButtonStates()
|
||||
{
|
||||
|
||||
@@ -236,18 +236,18 @@ RectTransform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 606266655932021657}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
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: 1624473230281581442}
|
||||
- {fileID: 6586898985852894528}
|
||||
m_Father: {fileID: 7889082681244863727}
|
||||
m_Father: {fileID: 2996968374502470470}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0}
|
||||
m_AnchorMax: {x: 0.5, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 54.85501}
|
||||
m_AnchoredPosition: {x: 486.0603, y: 87.08179}
|
||||
m_SizeDelta: {x: 548, y: 109.71002}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7484416968689902533
|
||||
@@ -1469,11 +1469,7 @@ MonoBehaviour:
|
||||
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}
|
||||
m_dlgPetDetail: {fileID: 1175093797040640902}
|
||||
--- !u!1 &5447703489185023651
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1485,8 +1481,9 @@ GameObject:
|
||||
- component: {fileID: 7889082681244863727}
|
||||
- component: {fileID: 1820092494333766511}
|
||||
- component: {fileID: 5179896020678852059}
|
||||
- component: {fileID: 1175093797040640902}
|
||||
m_Layer: 5
|
||||
m_Name: right_petInfo
|
||||
m_Name: pet_detail_info
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -1509,7 +1506,6 @@ RectTransform:
|
||||
- {fileID: 2365663903306128583}
|
||||
- {fileID: 5708822584962701248}
|
||||
- {fileID: 8882903949157006170}
|
||||
- {fileID: 6165010831916478045}
|
||||
m_Father: {fileID: 2996968374502470470}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0.5}
|
||||
@@ -1555,6 +1551,26 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &1175093797040640902
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5447703489185023651}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ce0ac818dfef5e04e92aa1ed022893bd, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
skillNameText: {fileID: 0}
|
||||
imageProgress: {fileID: 0}
|
||||
m_iconPet: {fileID: 3806612095625030478}
|
||||
m_textPetName: {fileID: 3493020700139178670}
|
||||
m_textLevel: {fileID: 7602645980480065390}
|
||||
m_textExp: {fileID: 1618158093982489839}
|
||||
m_descPet: {fileID: 164215783080885169}
|
||||
m_spriteDefault_Icon: {fileID: 21300000, guid: 8b997e886fff00540b9c069a9dff12af, type: 3}
|
||||
--- !u!1 &6029267655065740123
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1680,6 +1696,7 @@ RectTransform:
|
||||
- {fileID: 232399539067632254}
|
||||
- {fileID: 7889082681244863727}
|
||||
- {fileID: 3045035826663144425}
|
||||
- {fileID: 6165010831916478045}
|
||||
m_Father: {fileID: 5951834544630940226}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
|
||||
Reference in New Issue
Block a user