2
0
Fork 0

headbar 血条和交互条分开

master
cd 2 years ago
parent 8ede1380f1
commit 45ca5330af

@ -20,10 +20,14 @@ namespace Game
private readonly Dictionary<int, List<UIPoolItem<ViewHitBuff>>> _hitBuffDict = private readonly Dictionary<int, List<UIPoolItem<ViewHitBuff>>> _hitBuffDict =
new Dictionary<int, List<UIPoolItem<ViewHitBuff>>>(); new Dictionary<int, List<UIPoolItem<ViewHitBuff>>>();
private readonly Dictionary<int, UIPoolItem<ViewInteract>> _interactDict =
new Dictionary<int, UIPoolItem<ViewInteract>>();
protected override void OnCreate() protected override void OnCreate()
{ {
CreateUI(false); CreateUI(false);
} }
protected override void OnOpen() protected override void OnOpen()
{ {
//打开时创建所有非主角实体的血条 //打开时创建所有非主角实体的血条
@ -37,6 +41,7 @@ namespace Game
SetHpBar(entity.ID(), true); SetHpBar(entity.ID(), true);
SetHitNum(entity.ID(), true); SetHitNum(entity.ID(), true);
SetInteract(entity.ID(), true);
} }
EventManager.Instance.AddEvent<PEntityAlive>(EEvent.EntityAlive, OnEntityAlive); EventManager.Instance.AddEvent<PEntityAlive>(EEvent.EntityAlive, OnEntityAlive);
@ -93,7 +98,7 @@ namespace Game
{ {
var headBarItem = kvp.Value; var headBarItem = kvp.Value;
var posScreen = GetScreenPos(Util.EntityViewPos(entity)); var posScreen = GetScreenPos(Util.EntityViewPos(entity));
headBarItem.MComponent.SetPosition(posScreen.x, posScreen.y - 80, posScreen.z); headBarItem.Component.SetPosition(posScreen.x, posScreen.y - 80, posScreen.z);
} }
} }
@ -106,7 +111,7 @@ namespace Game
var posScreen = GetScreenPos(Util.EntityViewPos(entity)); var posScreen = GetScreenPos(Util.EntityViewPos(entity));
foreach (var item in hitNumList) foreach (var item in hitNumList)
{ {
item.MComponent.SetPosition(posScreen.x, posScreen.y, posScreen.z); item.Component.SetPosition(posScreen.x, posScreen.y, posScreen.z);
} }
} }
} }
@ -120,10 +125,20 @@ namespace Game
var posScreen = GetScreenPos(Util.EntityViewPos(entity)); var posScreen = GetScreenPos(Util.EntityViewPos(entity));
foreach (var item in hitNumList) foreach (var item in hitNumList)
{ {
item.MComponent.SetPosition(posScreen.x, posScreen.y - 40, posScreen.z); item.Component.SetPosition(posScreen.x, posScreen.y - 40, posScreen.z);
} }
} }
} }
foreach (var kvp in _interactDict)
{
var entity = Util.GetEntity(kvp.Key);
if (entity != null)
{
var interactItem = kvp.Value;
var posScreen = GetScreenPos(Util.EntityViewPos(entity));
interactItem.Component.SetPosition(posScreen.x, posScreen.y - 80, posScreen.z);
}
}
} }
/// <summary> /// <summary>
@ -157,7 +172,7 @@ namespace Game
if (hp.DmgShowTime <= 0) if (hp.DmgShowTime <= 0)
{ {
hp.DmgShowTime = 0; hp.DmgShowTime = 0;
var lastItem = hitNumList[hitNumList.Count - 1].MComponent as ViewHitNum; var lastItem = hitNumList[hitNumList.Count - 1].Component as ViewHitNum;
lastItem.m_step2.Play(); lastItem.m_step2.Play();
if (GameRandom.Roll(0.5f)) if (GameRandom.Roll(0.5f))
{ {
@ -178,7 +193,7 @@ namespace Game
} }
var item = hitNumList[i]; var item = hitNumList[i];
var hitInfo = hitNumList[i].MComponent as ViewHitNum; var hitInfo = hitNumList[i].Component as ViewHitNum;
if (!hitInfo.m_step2.playing) if (!hitInfo.m_step2.playing)
{ {
item.Destroy(); item.Destroy();
@ -212,7 +227,7 @@ namespace Game
for (int i = hitNumList.Count - 1; i >= 0; i--) for (int i = hitNumList.Count - 1; i >= 0; i--)
{ {
var item = hitNumList[i]; var item = hitNumList[i];
var hitInfo = hitNumList[i].MComponent as ViewHitBuff; var hitInfo = hitNumList[i].Component as ViewHitBuff;
if (entity.pause.IsPause) if (entity.pause.IsPause)
{ {
hitInfo.m_step1.SetPaused(true); hitInfo.m_step1.SetPaused(true);
@ -239,6 +254,43 @@ namespace Game
SetHpBar(param.Entity, param.IsAlive); SetHpBar(param.Entity, param.IsAlive);
SetHitNum(param.Entity, param.IsAlive); SetHitNum(param.Entity, param.IsAlive);
SetInteract(param.Entity, param.IsAlive);
}
private void SetInteract(int entityID, bool isAlive = true)
{
var entity = Util.GetEntity(entityID);
if (!entity.hasInteract)
{
return;
}
if (isAlive)
{
if (!_interactDict.ContainsKey(entityID))
{
var interactBar = UIManager.Instance.Creator.CreateUIItem<ViewInteract>(ViewInteract.URL);
_interactDict[entityID] = interactBar;
var interactComp = interactBar.Component;
var interact = entity.interact;
BindData(interact.IsActive,
(_, now) => { interactComp.m_showInteract.selectedIndex = now ? 1 : 0; });
BindData(interact.IsTarget,
(_, now) => { interactComp.m_isTarget.selectedIndex = now ? 1 : 0; });
}
}
else
{
if (_interactDict.ContainsKey(entityID))
{
_interactDict[entityID].Destroy();
_interactDict.Remove(entityID);
var interact = entity.interact;
UnbindData(interact.IsActive);
UnbindData(interact.IsTarget);
}
}
} }
private void SetHitNum(int entityID, bool isAlive = true) private void SetHitNum(int entityID, bool isAlive = true)
@ -274,9 +326,8 @@ namespace Game
private void SetHpBar(int entityID, bool isAlive = true) private void SetHpBar(int entityID, bool isAlive = true)
{ {
var entity = Util.GetEntity(entityID); var entity = Util.GetEntity(entityID);
if (entity.IsMaster()) if (!entity.hasHp)
{ {
//排除主角
return; return;
} }
@ -287,7 +338,7 @@ namespace Game
//创建血条UI //创建血条UI
var hpBar = UIManager.Instance.Creator.CreateUIItem<Viewc_blood>(Viewc_blood.URL); var hpBar = UIManager.Instance.Creator.CreateUIItem<Viewc_blood>(Viewc_blood.URL);
_hpBarDict[entityID] = hpBar; _hpBarDict[entityID] = hpBar;
var hpComp = hpBar.MComponent; var hpComp = hpBar.Component;
if (entity.hasHp) if (entity.hasHp)
{ {
var hp = entity.hp; var hp = entity.hp;
@ -352,14 +403,6 @@ namespace Game
} }
}); });
} }
if (entity.hasInteract)
{
var interact = entity.interact;
BindData(interact.IsActive, (_, now) => { hpComp.m_showInteract.selectedIndex = now ? 1 : 0; });
BindData(interact.IsTarget,
(_, now) => { hpComp.m_Interact.m_isTarget.selectedIndex = now ? 1 : 0; });
}
} }
} }
else else
@ -387,13 +430,6 @@ namespace Game
UnbindData(ai.IsHungryFull); UnbindData(ai.IsHungryFull);
UnbindData(ai.AttackPermit); UnbindData(ai.AttackPermit);
} }
if (entity.hasInteract)
{
var interact = entity.interact;
UnbindData(interact.IsActive);
UnbindData(interact.IsTarget);
}
} }
} }
} }
@ -422,14 +458,14 @@ namespace Game
{ {
hp.LastDmg = dmg; hp.LastDmg = dmg;
var hitNum = UIManager.Instance.Creator.CreateUIItem<ViewHitNum>(ViewHitNum.URL); var hitNum = UIManager.Instance.Creator.CreateUIItem<ViewHitNum>(ViewHitNum.URL);
var item = hitNum.MComponent as ViewHitNum; var item = hitNum.Component as ViewHitNum;
hitList.Add(hitNum); hitList.Add(hitNum);
targetItem = item; targetItem = item;
} }
else else
{ {
hp.LastDmg += dmg; hp.LastDmg += dmg;
targetItem = hitList[hitList.Count - 1].MComponent as ViewHitNum; targetItem = hitList[hitList.Count - 1].Component as ViewHitNum;
} }
targetItem.m_num.text = $"{hp.LastDmg}"; targetItem.m_num.text = $"{hp.LastDmg}";
@ -447,7 +483,7 @@ namespace Game
var hitList = _hitBuffDict[entityID]; var hitList = _hitBuffDict[entityID];
var hitNum = UIManager.Instance.Creator.CreateUIItem<ViewHitBuff>(ViewHitBuff.URL); var hitNum = UIManager.Instance.Creator.CreateUIItem<ViewHitBuff>(ViewHitBuff.URL);
hitList.Add(hitNum); hitList.Add(hitNum);
var item = hitNum.MComponent as ViewHitBuff; var item = hitNum.Component as ViewHitBuff;
item.m_name.text = text; item.m_name.text = text;
item.m_step1.Play(); item.m_step1.Play();
} }

@ -5,14 +5,14 @@ namespace Game
public class UIPoolItem : ObjectPoolItemBase { } public class UIPoolItem : ObjectPoolItemBase { }
public class UIPoolItem<T> : UIPoolItem where T : GComponent, new() public class UIPoolItem<T> : UIPoolItem where T : GComponent, new()
{ {
public T MComponent; public T Component;
protected override void OnCreate() protected override void OnCreate()
{ {
MComponent.visible = true; Component.visible = true;
} }
protected override void OnDestroy() protected override void OnDestroy()
{ {
MComponent.visible = false; Component.visible = false;
} }
} }
public class UIPoolManager : ObjectPoolBase<UIPoolManager> public class UIPoolManager : ObjectPoolBase<UIPoolManager>
@ -25,10 +25,10 @@ namespace Game
var contentItem = UIPackage.GetItemByURL(url); var contentItem = UIPackage.GetItemByURL(url);
var pkgName = contentItem.owner.name; var pkgName = contentItem.owner.name;
var compName = contentItem.name; var compName = contentItem.name;
string typeName = $"{contentItem.owner.name}_{contentItem.name}"; var typeName = $"{contentItem.owner.name}_{contentItem.name}";
var poolObj = Create<UIPoolItem<T>>(typeName, (item) => var poolObj = Create<UIPoolItem<T>>(typeName, (item) =>
{ {
item.MComponent = CreateUIComponent(pkgName, compName) as T; item.Component = CreateUIComponent(pkgName, compName) as T;
}); });
return poolObj; return poolObj;
} }

@ -12,6 +12,7 @@ namespace Game.Battle
public Viewc_blood m_c_blood; public Viewc_blood m_c_blood;
public ViewHitNum m_c_hitNum; public ViewHitNum m_c_hitNum;
public ViewHitBuff m_c_hitBuff; public ViewHitBuff m_c_hitBuff;
public ViewInteract m_c_Interact;
public const string URL = "ui://2qo7xpdcoi571q"; public const string URL = "ui://2qo7xpdcoi571q";
@ -33,6 +34,7 @@ namespace Game.Battle
m_c_blood = (Viewc_blood)this.GetChild("c_blood"); m_c_blood = (Viewc_blood)this.GetChild("c_blood");
m_c_hitNum = (ViewHitNum)this.GetChild("c_hitNum"); m_c_hitNum = (ViewHitNum)this.GetChild("c_hitNum");
m_c_hitBuff = (ViewHitBuff)this.GetChild("c_hitBuff"); m_c_hitBuff = (ViewHitBuff)this.GetChild("c_hitBuff");
m_c_Interact = (ViewInteract)this.GetChild("c_Interact");
} }
} }
} }

@ -8,6 +8,7 @@ namespace Game.Battle
public partial class ViewInteract : GComponent public partial class ViewInteract : GComponent
{ {
public Controller m_isTarget; public Controller m_isTarget;
public Controller m_showInteract;
public GLoader m_n18; public GLoader m_n18;
public const string URL = "ui://2qo7xpdco85f57"; public const string URL = "ui://2qo7xpdco85f57";
@ -26,6 +27,7 @@ namespace Game.Battle
base.ConstructFromXML(xml); base.ConstructFromXML(xml);
m_isTarget = this.GetController("isTarget"); m_isTarget = this.GetController("isTarget");
m_showInteract = this.GetController("showInteract");
m_n18 = (GLoader)this.GetChild("n18"); m_n18 = (GLoader)this.GetChild("n18");
} }
} }

@ -12,7 +12,6 @@ namespace Game.Battle
public Controller m_showExtra; public Controller m_showExtra;
public Controller m_moduleType; public Controller m_moduleType;
public Controller m_attackStatus; public Controller m_attackStatus;
public Controller m_showInteract;
public ViewbloodBarEnemy m_bloodBarEnemy; public ViewbloodBarEnemy m_bloodBarEnemy;
public ViewshieldBarEnemy m_shieldBarEnemy; public ViewshieldBarEnemy m_shieldBarEnemy;
public ViewstunBarEnemy m_stunBarEnemy; public ViewstunBarEnemy m_stunBarEnemy;
@ -21,7 +20,6 @@ namespace Game.Battle
public GTextField m_n14; public GTextField m_n14;
public GGraph m_n15; public GGraph m_n15;
public GImage m_n17; public GImage m_n17;
public ViewInteract m_Interact;
public const string URL = "ui://2qo7xpdcjrii21"; public const string URL = "ui://2qo7xpdcjrii21";
@ -43,7 +41,6 @@ namespace Game.Battle
m_showExtra = this.GetController("showExtra"); m_showExtra = this.GetController("showExtra");
m_moduleType = this.GetController("moduleType"); m_moduleType = this.GetController("moduleType");
m_attackStatus = this.GetController("attackStatus"); m_attackStatus = this.GetController("attackStatus");
m_showInteract = this.GetController("showInteract");
m_bloodBarEnemy = (ViewbloodBarEnemy)this.GetChild("bloodBarEnemy"); m_bloodBarEnemy = (ViewbloodBarEnemy)this.GetChild("bloodBarEnemy");
m_shieldBarEnemy = (ViewshieldBarEnemy)this.GetChild("shieldBarEnemy"); m_shieldBarEnemy = (ViewshieldBarEnemy)this.GetChild("shieldBarEnemy");
m_stunBarEnemy = (ViewstunBarEnemy)this.GetChild("stunBarEnemy"); m_stunBarEnemy = (ViewstunBarEnemy)this.GetChild("stunBarEnemy");
@ -52,7 +49,6 @@ namespace Game.Battle
m_n14 = (GTextField)this.GetChild("n14"); m_n14 = (GTextField)this.GetChild("n14");
m_n15 = (GGraph)this.GetChild("n15"); m_n15 = (GGraph)this.GetChild("n15");
m_n17 = (GImage)this.GetChild("n17"); m_n17 = (GImage)this.GetChild("n17");
m_Interact = (ViewInteract)this.GetChild("Interact");
} }
} }
} }

@ -2,7 +2,7 @@
"hidden_packages": [], "hidden_packages": [],
"active_doc": [ "active_doc": [
"2qo7xpdc", "2qo7xpdc",
"teeb53" "jrii24"
], ],
"expanded_nodes": [ "expanded_nodes": [
"6tegmf7n", "6tegmf7n",

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<component size="80,80" pivot="0.5,0.5" anchor="true"> <component size="80,80" pivot="0.5,0.5" anchor="true">
<controller name="isTarget" pages="0,,1," selected="0"/> <controller name="isTarget" pages="0,,1," selected="0"/>
<controller name="showInteract" pages="0,,1," selected="1"/>
<displayList> <displayList>
<loader id="n18_o85f" name="n18" xy="40,40" pivot="0.5,0.5" anchor="true" size="80,80" alpha="0.5" rotation="0.5" url="ui://2qo7xpdco85f58" align="center" vAlign="middle" fill="scale"> <loader id="n18_o85f" name="n18" xy="40,40" pivot="0.5,0.5" anchor="true" size="80,80" alpha="0.5" rotation="0.5" url="ui://2qo7xpdco85f58" align="center" vAlign="middle" fill="scale">
<gearDisplay controller="showInteract" pages="1"/>
<gearSize controller="isTarget" pages="0,1" values="80,80,1,1|80,80,1.2,1.2" tween="true"/> <gearSize controller="isTarget" pages="0,1" values="80,80,1,1|80,80,1.2,1.2" tween="true"/>
<gearLook controller="isTarget" pages="0" values="0.5,0.5,0,1" default="1,0,0,1" tween="true"/> <gearLook controller="isTarget" pages="0" values="0.5,0.5,0,1" default="1,0,0,1" tween="true"/>
</loader> </loader>

@ -2,18 +2,17 @@
<component size="100,80" pivot="0.5,0.5" anchor="true"> <component size="100,80" pivot="0.5,0.5" anchor="true">
<controller name="showshield" pages="0,fasle,1,true" selected="0"/> <controller name="showshield" pages="0,fasle,1,true" selected="0"/>
<controller name="showhp" pages="0,false,1,true" selected="0"/> <controller name="showhp" pages="0,false,1,true" selected="0"/>
<controller name="showExtra" pages="0,,1," selected="0"/> <controller name="showExtra" pages="0,,1," selected="1"/>
<controller name="moduleType" pages="0,,1,,2," selected="0"/> <controller name="moduleType" pages="0,,1,,2," selected="2"/>
<controller name="attackStatus" pages="0,,1,,2," selected="0"/> <controller name="attackStatus" pages="0,,1,,2," selected="0"/>
<controller name="showInteract" pages="0,,1," selected="1"/>
<displayList> <displayList>
<component id="n3_jrii" name="bloodBarEnemy" src="jrii24" fileName="Headbar/Comp/bloodBarEnemy.xml" xy="50,40"> <component id="n3_jrii" name="bloodBarEnemy" src="jrii24" fileName="HeadBar/Comp/bloodBarEnemy.xml" xy="50,40">
<gearDisplay controller="showhp" pages="1"/> <gearDisplay controller="showhp" pages="1"/>
</component> </component>
<component id="n16_teeb" name="shieldBarEnemy" src="jv7z4y" fileName="Headbar/Comp/shieldBarEnemy.xml" xy="50,40"> <component id="n16_teeb" name="shieldBarEnemy" src="jv7z4y" fileName="HeadBar/Comp/shieldBarEnemy.xml" xy="50,40">
<gearDisplay controller="showshield" pages="1"/> <gearDisplay controller="showshield" pages="1"/>
</component> </component>
<component id="n11_cg0f" name="stunBarEnemy" src="cg0f4u" fileName="Headbar/Comp/test/stunBarEnemy.xml" xy="20,49" size="59,4"> <component id="n11_cg0f" name="stunBarEnemy" src="cg0f4u" fileName="HeadBar/Comp/test/stunBarEnemy.xml" xy="20,49" size="59,4">
<gearDisplay controller="showExtra" pages="1"/> <gearDisplay controller="showExtra" pages="1"/>
<ProgressBar value="50" max="100"/> <ProgressBar value="50" max="100"/>
</component> </component>
@ -23,11 +22,11 @@
<item/> <item/>
<item/> <item/>
</list> </list>
<component id="n13_x75m" name="hungryBarEnemy" src="x75m4v" fileName="Headbar/Comp/test/hungryBarEnemy.xml" xy="-8,81" size="44,5" rotation="270"> <component id="n13_x75m" name="hungryBarEnemy" src="x75m4v" fileName="HeadBar/Comp/test/hungryBarEnemy.xml" xy="-8,81" size="44,5" rotation="270">
<gearDisplay controller="showExtra" pages="1"/> <gearDisplay controller="showExtra" pages="1"/>
<ProgressBar value="50" max="100"/> <ProgressBar value="50" max="100"/>
</component> </component>
<text id="n14_x75m" name="n14" xy="12,57" size="75,27" fontSize="20" color="#ffffff" align="center" vAlign="middle" autoSize="none" shadowColor="#000000" shadowOffset="3,3" text="观战"> <text id="n14_x75m" name="n14" xy="12,57" size="75,27" fontSize="20" color="#0099ff" align="center" vAlign="middle" autoSize="none" shadowColor="#333333" shadowOffset="3,3" text="远程">
<gearDisplay controller="showExtra" pages="1"/> <gearDisplay controller="showExtra" pages="1"/>
<gearColor controller="moduleType" pages="1,2" values="#ffff00,#000000|#0099ff,#333333" default="#ffffff,#000000"/> <gearColor controller="moduleType" pages="1,2" values="#ffff00,#000000|#0099ff,#333333" default="#ffffff,#000000"/>
<gearText controller="moduleType" pages="0,1,2" values="观战|近战|远程"/> <gearText controller="moduleType" pages="0,1,2" values="观战|近战|远程"/>
@ -40,8 +39,5 @@
<gearDisplay controller="showshield" pages="1"/> <gearDisplay controller="showshield" pages="1"/>
<relation target="n16_teeb" sidePair="right-left"/> <relation target="n16_teeb" sidePair="right-left"/>
</image> </image>
<component id="n18_o85f" name="Interact" src="o85f57" fileName="Headbar/Comp/Interact.xml" xy="50,80">
<gearDisplay controller="showInteract" pages="1"/>
</component>
</displayList> </displayList>
</component> </component>

@ -2,11 +2,12 @@
<component size="1920,1080"> <component size="1920,1080">
<controller name="showLock" pages="1,,2," selected="0"/> <controller name="showLock" pages="1,,2," selected="0"/>
<displayList> <displayList>
<component id="n9_so77" name="lock" src="so771v" fileName="Headbar/Comp/Lock.xml" xy="508,349" pivot="0.5,0.5" anchor="true"> <component id="n9_so77" name="lock" src="so771v" fileName="HeadBar/Comp/Lock.xml" xy="508,349" pivot="0.5,0.5" anchor="true">
<gearDisplay controller="showLock" pages="2"/> <gearDisplay controller="showLock" pages="2"/>
</component> </component>
<component id="n10_jrii" name="c_blood" src="jrii21" fileName="Headbar/Comp/c_blood.xml" xy="482,379" visible="false"/> <component id="n10_jrii" name="c_blood" src="jrii21" fileName="HeadBar/Comp/c_blood.xml" xy="482,379" visible="false"/>
<component id="n11_dcv9" name="c_hitNum" src="dcv92e" fileName="Headbar/Comp/HitNum.xml" xy="650,369" visible="false"/> <component id="n11_dcv9" name="c_hitNum" src="dcv92e" fileName="HeadBar/Comp/HitNum.xml" xy="650,369" visible="false"/>
<component id="n12_gzui" name="c_hitBuff" src="gzui35" fileName="Headbar/Comp/HitBuff.xml" xy="775,372" visible="false"/> <component id="n12_gzui" name="c_hitBuff" src="gzui35" fileName="HeadBar/Comp/HitBuff.xml" xy="775,372" visible="false"/>
<component id="n13_d6bm" name="c_Interact" src="o85f57" fileName="HeadBar/Comp/Interact.xml" xy="896,373"/>
</displayList> </displayList>
</component> </component>
Loading…
Cancel
Save