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.
208 lines
7.3 KiB
C#
208 lines
7.3 KiB
C#
using Game.Battle;
|
|
|
|
namespace Game
|
|
{
|
|
public class PageHud : UIPageBase<ViewHud>
|
|
{
|
|
public int TargetCache = 0;
|
|
public PageHud()
|
|
{
|
|
}
|
|
protected override void OnCreate()
|
|
{
|
|
CreateUI(true);
|
|
}
|
|
protected override void OnDestroy()
|
|
{
|
|
}
|
|
protected override void OnOpen()
|
|
{
|
|
// UIManager.instance.Open(EUIPage.BlessList);
|
|
// UIManager.instance.Open(EUIPage.Combo);
|
|
UIManager.Instance.Open(EuiPage.HeadBar);
|
|
UIManager.Instance.Open(EuiPage.Weapon);
|
|
|
|
EventManager.Instance.AddEvent<PEntityAlive>(EEvent.EntityAlive, OnEntityAlive);
|
|
EventManager.Instance.AddEvent<PEntityHit>(EEvent.EntityHit, OnEntityHit);
|
|
EventManager.Instance.AddEvent<string>(EEvent.ShowLevelName, OnShowLevelName);
|
|
}
|
|
protected override void OnClose()
|
|
{
|
|
EventManager.Instance.RemoveEvent<PEntityAlive>(EEvent.EntityAlive, OnEntityAlive);
|
|
EventManager.Instance.RemoveEvent<PEntityHit>(EEvent.EntityHit, OnEntityHit);
|
|
EventManager.Instance.RemoveEvent<string>(EEvent.ShowLevelName, OnShowLevelName);
|
|
}
|
|
private void OnEntityAlive(PEntityAlive param)
|
|
{
|
|
if (TargetCache == 0)
|
|
{
|
|
return;
|
|
}
|
|
var entity = param.Entity;
|
|
if (!param.IsAlive && entity == TargetCache)
|
|
{
|
|
BindMonsterInfo(null);
|
|
}
|
|
}
|
|
private void OnEntityHit(PEntityHit param)
|
|
{
|
|
if (!param.IsSkill)
|
|
{
|
|
return;
|
|
}
|
|
var entity = Util.GetEntity(param.Target);
|
|
if (!entity.hp.IsAlive)
|
|
{
|
|
return;
|
|
}
|
|
if (entity.Team() != ETeam.Monster)
|
|
{
|
|
return;
|
|
}
|
|
if (TargetCache != param.Entity)
|
|
{
|
|
BindMonsterInfo(entity);
|
|
}
|
|
}
|
|
private void OnShowLevelName(string levelName)
|
|
{
|
|
View.m_showLevelName.selectedIndex = 1;
|
|
var uiLevelName = View.m_UI_LevelName;
|
|
uiLevelName.m_Name.text = levelName;
|
|
uiLevelName.m_showName.Play();
|
|
}
|
|
|
|
protected override void OnCreateBind()
|
|
{
|
|
var master = Util.GetMaster();
|
|
BindHp(master); //绑定血条
|
|
BindShield(master); //绑定护盾条
|
|
BindInteract(master); //绑定交互UI
|
|
}
|
|
public override void Update()
|
|
{
|
|
}
|
|
private void BindHp(GameEntity entity)
|
|
{
|
|
var hp = entity.hp;
|
|
var uiPlayer = View.m_UI_Player;
|
|
BindData(hp.Hp, (_, now) =>
|
|
{
|
|
uiPlayer.m_bar_blood.value = now;
|
|
uiPlayer.m_t_blood.text = $"{now}";
|
|
});
|
|
BindData(hp.HpMax, (_, now) =>
|
|
{
|
|
uiPlayer.m_bar_blood.max = now;
|
|
uiPlayer.m_t_bloodThrough.text = $"{now}";
|
|
});
|
|
|
|
}
|
|
private void BindShield(GameEntity entity)
|
|
{
|
|
|
|
}
|
|
private void BindInteract(GameEntity entity)
|
|
{
|
|
var combo = entity.combo;
|
|
BindData(combo.TargetInteract, (_, now) =>
|
|
{
|
|
View.m_showInteract.selectedIndex = (now != 0 ? 1 : 0);
|
|
});
|
|
}
|
|
|
|
private void BindMonsterInfo(GameEntity entity)
|
|
{
|
|
var entityPre = Util.GetEntity(TargetCache);
|
|
if (entityPre != null)
|
|
{
|
|
var hp = entityPre.hp;
|
|
var buff = entityPre.buff;
|
|
UnbindData(hp.HpMax);
|
|
UnbindData(hp.Hp);
|
|
UnbindData(hp.ShieldMax);
|
|
UnbindData(hp.Shield);
|
|
UnbindData(buff.BuffMap);
|
|
foreach (var item in buff.BuffMap)
|
|
{
|
|
var buffData = item.Value;
|
|
UnbindData(buffData.TimeLeft);
|
|
UnbindData(buffData.Level);
|
|
}
|
|
}
|
|
if (entity != null)
|
|
{
|
|
var uiMonster = View.m_UI_Monster;
|
|
var hp = entity.hp;
|
|
var buff = entity.buff;
|
|
uiMonster.m_monsterName.text = entity.iD.Data.BasicCfg.Name;
|
|
|
|
BindData(hp.HpMax, (_, now) =>
|
|
{
|
|
uiMonster.m_bloodBarEnemy.m_sub.max = now;
|
|
uiMonster.m_bloodBarEnemy.m_tween.max = now;
|
|
});
|
|
BindData(hp.Hp, (_, now) =>
|
|
{
|
|
uiMonster.m_bloodBarEnemy.m_sub.value = now;
|
|
uiMonster.m_bloodBarEnemy.m_tween.TweenValue(now - 1, 0.5f);
|
|
});
|
|
BindData(hp.ShieldMax, (_, now) =>
|
|
{
|
|
uiMonster.m_shieldBarEnemy.m_sub.max = now;
|
|
uiMonster.m_shieldBarEnemy.m_tween.max = now;
|
|
uiMonster.m_showshield.selectedIndex = now > 0 ? 1 : 0;
|
|
});
|
|
BindData(hp.Shield, (_, now) =>
|
|
{
|
|
uiMonster.m_shieldBarEnemy.m_sub.value = now;
|
|
uiMonster.m_shieldBarEnemy.m_tween.TweenValue(now - 1, 0.5f);
|
|
uiMonster.m_showshield.selectedIndex = now > 0 ? 1 : 0;
|
|
});
|
|
BindData(buff.BuffMap, (_, now) =>
|
|
{
|
|
uiMonster.m_buff.RemoveChildrenToPool();
|
|
foreach (var item in now)
|
|
{
|
|
if (!item.Value.IsShow)
|
|
{
|
|
continue;
|
|
}
|
|
var obj = uiMonster.m_buff.AddItemFromPool() as Viewc_buffItem;
|
|
var buffData = item.Value;
|
|
obj.m_buffIcon.texture = Texture(buffData.BuffCfg.Buff.Icon);
|
|
ReBindData(buffData.TimeLeft, (_, now) =>
|
|
{
|
|
obj.m_mask.fillAmount = now / buffData.TimeMax;
|
|
});
|
|
ReBindData(buffData.Level, (_, now) =>
|
|
{
|
|
obj.m_level.text = $"{now}";
|
|
});
|
|
}
|
|
});
|
|
TargetCache = entity.ID();
|
|
}
|
|
View.m_showMonsterInfo.selectedIndex = entity == null ? 0 : 1;
|
|
|
|
}
|
|
protected override void OnInput(PPlayerInput context)
|
|
{
|
|
if (context.Action == EKeyActionType.Press)
|
|
{
|
|
if (context.Key == EFunctionKey.Test1)
|
|
{
|
|
UIManager.Instance.Open(EuiPage.SkillGm);
|
|
}
|
|
if (context.Key == EFunctionKey.Bag)
|
|
{
|
|
UIManager.Instance.Open(EuiPage.Bag);
|
|
}
|
|
if (context.Key == EFunctionKey.Menu)
|
|
{
|
|
UIManager.Instance.Open(EuiPage.GmPanel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |