NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/LegionBattle/LegionBattleManager.Data.cs

104 lines
2.9 KiB
C#

using System.Collections.Generic;
using Gameplay.Net;
using NLDPB;
namespace Gameplay.LegionBattle
{
public partial class LegionBattleManager
{
#region 军团战外部
public List<BattleMemberInfo> BattleMemberInfos = new ();
public BattlefieldActorCamp MyCamp;
public int MapID;
public List<BattleMemberInfo> WaitMemberInfos = new ();
public List<BattleMemberInfo> FightMemberInfos = new ();
public List<BattleMemberInfo> LockList = new();
public void JoinFight(uint actorID)
{
var memberInfo = WaitMemberInfos.Find(item => item.ActorID == actorID);
if (memberInfo != null)
{
WaitMemberInfos.Remove(memberInfo);
if (FightMemberInfos.Contains(memberInfo))
{
return;
}
FightMemberInfos.Add(memberInfo);
SortFightMembers();
}
}
public void SortBattleMemberInfo()
{
BattleMemberInfos.Sort((a, b) =>
{
if (a.ActorID == Actor.Instance.Base.GetProp(ActorProp.ActorId))
{
return -1;
}
if (b.ActorID == Actor.Instance.Base.GetProp(ActorProp.ActorId))
{
return 1;
}
return a.ActorID.CompareTo(b.ActorID);
});
}
public void SortFightMembers()
{
FightMemberInfos.Sort((a, b) => a.ActorID.CompareTo(b.ActorID));
}
public void SortWaitMembers()
{
WaitMemberInfos.Sort((a, b) => a.ActorID.CompareTo(b.ActorID));
}
#endregion
}
public class BattleMemberInfo
{
public uint ActorID;
public int Hp;
public int Attack;
public int Def;
public float MoveTime;
public int Level;
public BattlefieldActorCamp Camp;
public string Name;
public bool IsMercenary;
public LegionBattleTeamStatus TeamStatus;
public BattleMemberInfo(MSG_LB_Member lbMemberInfo, bool isMercenary = false)
{
ActorID = lbMemberInfo.ActorId;
Hp = (int)lbMemberInfo.HpMax;
Attack = (int)lbMemberInfo.Attack;
Def = (int)lbMemberInfo.Defence;
MoveTime = lbMemberInfo.MoveTime;
Name = lbMemberInfo.Name;
Level = (int)lbMemberInfo.Level;
IsMercenary = isMercenary;
TeamStatus = (LegionBattleTeamStatus)lbMemberInfo.TeamStatus;
}
}
public class BattleTeam
{
public int CommanderID;
public List<int> UnitIDs = new();
public BattleTeam(MSG_LB_Team lbTeam)
{
CommanderID = (int)lbTeam.Commander;
foreach (var unit in lbTeam.Units)
{
UnitIDs.Add((int)unit);
}
}
}
}