/// #pkgName FGUI包名
/// #panelName UIPanel名字
/// #UIName = $"{#pkgName}{#panelName}" UIKey名字
/// 该脚本由模板创建
/// created by cb 2024
using System.Collections.Generic;
using FL.Data;
using XGame.Database;
using XGame.Framework.UI;
namespace FL.FGUI
{
///
/// UI逻辑处理类
///
///
public partial class PartnerSbDetailNestedCtrl : UIController
{
protected override void OnEnable(object intent)
{
AddUIListenres();
}
protected override void OnDisable()
{
RemoveUIListenres();
}
#region UI事件
private void AddUIListenres() { }
private void RemoveUIListenres() { }
#endregion
private int _sbId;
public void ShowUI(int id)
{
_sbId = id;
if (_sbId == 0)
{
VM.ItemBase.Disable();
VM.IsEmpty.selectedIndex = 1;
return;
}
VM.ItemBase.Enable(null);
VM.IsEmpty.selectedIndex = 0;
var table = PartnerTableRepo.Get(_sbId);
XGame.Framework.Assert.IsNotNull(table, $"圣兵表不存在,id:{_sbId}");
VM.NameLabel.text = table.Name;
var attr = PartnersData.Instance.GetPartnerAttrByTableId(_sbId);
var level = attr?.Level ?? 1;
var star = attr?.RisingStarLv ?? 1;
var upStarTable = partnerStarUpTableRepo.GetPartnerStarTable(_sbId, star);
XGame.Framework.Assert.IsNotNull(
upStarTable,
$"圣兵升星表不存在,id:{_sbId},level:{star}"
);
VM.SpPbar.max = upStarTable.StarUpCost;
VM.SpPbar.value = ItemData.Instance.GetItemNum(upStarTable.PetId);
//
ShowStar(star);
//
ShowSkillBaseInfo(table.Skill[0]);
//
ShowAttr(level);
//
VM.ElementLoader.url = AddressableDefine.SbElementType(((int)table.Element));
VM.TypeLoader.url = AddressableDefine.SbTypeIcon(table.Type);
//
VM.AttrLabel.text = $"+{table.Own_attr[1] / 100f}%";
var item = ItemBase.Create(_sbId);
VM.ItemBase.Ctrl.ShowUI(item);
}
private void ShowStar(int star)
{
var starStep = PartnersService.Instance.GetStarStep(star);
var starLv = PartnersService.Instance.GetStarLv(star);
var list = new List();
for (int i = 0; i < starLv; i++)
{
list.Add(starStep);
}
VM.StarList.BindDatas(list);
}
private void ShowAttr(int level)
{
var lvTable = partnerLvUpAttrTableRepo.GetPartnerLvUpAttrTable(_sbId, level);
XGame.Framework.Assert.IsNotNull(lvTable, $"圣兵等级不存在,id:{_sbId},level:{level}");
var partnerTable = PartnerTableRepo.Get(_sbId);
XGame.Framework.Assert.IsNotNull(partnerTable, $"圣兵表不存在,id:{_sbId}");
var map = new Dictionary();
for (int i = 0; i < partnerTable.Base_attr.Length; i += 2)
{
map.Add(partnerTable.Base_attr[i], partnerTable.Base_attr[i + 1]);
}
var atkVal = map.GetValueOrDefault((int)EAttributeType.PetDmg, 0);
var atkSpeed = map.GetValueOrDefault((int)EAttributeType.PetSpeed, 0);
for (int i = 0; i < lvTable.Attr.Length; i += 2)
{
var type = lvTable.Attr[i];
if (type == (int)EAttributeType.PetDmg)
{
atkVal += lvTable.Attr[i + 1];
}
else if (type == (int)EAttributeType.PetSpeed)
{
atkSpeed += lvTable.Attr[i + 1];
}
}
//var attributeInfo = AttrDescTableRepo.Get(attrType);
string descAtk = atkVal > 0 ? atkVal.ToRealFloat().ToString("F1") : "0";
VM.AtkValLabel.text = descAtk;
string descSpeed = atkSpeed > 0 ? atkSpeed.ToRealFloat().ToString("F1") : "0";
VM.SpeedValLabel.text = descSpeed;
}
///
/// 基础技能描述
///
///
private void ShowSkillBaseInfo(int skillId)
{
var skillInfo = SkillTableRepo.Get(skillId);
XGame.Framework.Assert.IsNotNull(skillInfo, $"技能表不存在,id{skillId}");
VM.DescLabel.text = skillInfo.Desc;
}
}
}