2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

213 lines
7.5 KiB
C#

using Game.Common;
namespace Game
{
public class PageSkillGm : UIPageBase<ViewSkillGM>
{
private string _mSkillNow = "";
private string _mBlessNow = "";
public PageSkillGm()
{
}
protected override void OnCreate()
{
CreateUI(true);
InitSkill();
InitBless();
}
protected override void OnDestroy()
{
}
protected override void OnOpen()
{
RefreshSkillList();
RefreshSkillDesc();
}
protected override void OnClose()
{
}
public override void Update()
{
}
protected override void OnInput(PPlayerInput context)
{
if (context.Action == EKeyActionType.Press)
{
if (context.Key == EFunctionKey.Test1 || context.Key == EFunctionKey.Menu)
{
UIManager.Instance.Close();
}
}
}
private void InitSkill()
{
var master = Util.GetMaster();
var skillCfgDatas = Util.GetSkillMasterConfigDataAll();
foreach (var skillCfgData in skillCfgDatas)
{
var skillCfg = skillCfgData.Template;
var skillCfgSkill = skillCfg.Skill;
var skillId = skillCfgData.TechnicalName;
var skillBtn = View.m_skillList.AddItemFromPool() as ViewSkillButton;
skillBtn.m_SkillIDText.text = skillCfgData.TechnicalName;
skillBtn.m_SkillNameText.text = skillCfgSkill.Name;
skillBtn.onClick.Clear();
skillBtn.onClick.Add(() =>
{
if (!Util.HasSkill(master, skillId))
Util.AddSkill(master, skillId);
else
Util.RemoveSkill(master, skillId);
RefreshSkillList();
});
skillBtn.onRollOver.Clear();
skillBtn.onRollOver.Add(() =>
{
_mSkillNow = skillId;
RefreshSkillDesc();
});
skillBtn.onRollOut.Clear();
skillBtn.onRollOut.Add(() =>
{
_mSkillNow = "";
RefreshSkillDesc();
});
}
View.m_ClearBtn.onClick.Clear();
View.m_ClearBtn.onClick.Add(() =>
{
Util.ClearCombo(master);
RefreshSkillList();
});
RefreshSkillList();
}
private void RefreshSkillList()
{
var master = Util.GetMaster();
var skillNowText = "当前技能:";
foreach (var item in View.m_skillList.GetChildren())
{
var skillBtn = item as ViewSkillButton;
var c1 = skillBtn.GetController("c1");
var skillID = skillBtn.m_SkillIDText.text;
var hasSkill = Util.HasSkill(master, skillID);
c1.selectedIndex = hasSkill ? 1 : 0;
if (hasSkill)
{
skillNowText += " " + skillID;
}
}
View.m_skillNowText.text = skillNowText;
}
private void RefreshSkillDesc()
{
var describeNew = "";
if (!string.IsNullOrEmpty(_mSkillNow))
{
var skillCfgData = Util.GetSkillMasterConfigData(_mSkillNow);
var skillCfg = skillCfgData.Template;
var skillCfgSkill = skillCfg.Skill;
var skillCfgCombo = skillCfg.SkillCombo;
if (skillCfg != null)
{
describeNew += $"[{skillCfgData.TechnicalName}]\n";
describeNew += $"{skillCfgSkill.Name}\n\n";
describeNew += $"姿态: {skillCfgCombo.StanceStart} -> {skillCfgCombo.StanceEnd}\n";
describeNew += $" {(EComboStance)(skillCfgCombo.StanceStart)} -> {(EComboStance)(skillCfgCombo.StanceEnd)}\n";
var asset = TimelineManager.Instance.EnsureGetSkillTimeline(skillCfgSkill.Timeline);
describeNew += $"时间轴: {skillCfgSkill.Timeline} ({asset != null})\n";
}
}
View.m_SkillDescText.text = describeNew;
}
private void InitBless()
{
var master = Util.GetMaster();
var blessCfgList = Util.GetBlessConfigDataAll();
foreach (var blessCfgData in blessCfgList)
{
var blessCfg = blessCfgData.Template;
var blessCfgSkill = blessCfg.Bless;
var blessId = blessCfgData.TechnicalName;
var blessBtn = View.m_blessList.AddItemFromPool() as ViewSkillButton;
blessBtn.m_SkillIDText.text = blessCfgData.TechnicalName;
blessBtn.m_SkillNameText.text = blessCfgSkill.Name;
blessBtn.m_SkillIcon.texture = Texture(blessCfgSkill.Icon);
blessBtn.onClick.Clear();
blessBtn.onClick.Add(() =>
{
if (!Util.HasBless(master, blessId))
Util.AddBless(master, blessId);
else
Util.RemoveBless(master, blessId);
RefreshBlessList();
});
blessBtn.onRollOver.Clear();
blessBtn.onRollOver.Add(() =>
{
_mBlessNow = blessId;
RefreshBlessDesc();
});
blessBtn.onRollOut.Clear();
blessBtn.onRollOut.Add(() =>
{
_mBlessNow = "";
RefreshBlessDesc();
});
}
View.m_ClearBlessBtn.onClick.Clear();
View.m_ClearBlessBtn.onClick.Add(() =>
{
Util.RemoveAllBless(master);
RefreshBlessList();
});
RefreshBlessList();
}
private void RefreshBlessList()
{
var master = Util.GetMaster();
var blessSet = master.bag.AllBless;
var blessNowText = "当前祝福:";
foreach (var item in View.m_blessList.GetChildren())
{
var blessBtn = item as ViewSkillButton;
var c1 = blessBtn.GetController("c1");
var blessID = blessBtn.m_SkillIDText.text;
var hasBless = blessSet.ContainsKey(blessID);
c1.selectedIndex = hasBless ? 1 : 0;
if (hasBless)
{
blessNowText += " " + blessID;
}
}
View.m_blessNowText.text = blessNowText;
}
private void RefreshBlessDesc()
{
var describeNew = "";
if (!string.IsNullOrEmpty(_mBlessNow))
{
var blessCfg = Util.GetBlessConfigData(_mBlessNow);
if (blessCfg != null)
{
describeNew += $"[{blessCfg.TechnicalName}]\n";
describeNew += $"{blessCfg.Template.Bless.Name}\n\n";
}
}
View.m_SkillDescText.text = describeNew;
}
}
}