using System.Collections.Generic; using Gameplay.Net; using NLDPB; namespace Gameplay.LegionBattle { public partial class LegionBattleManager { #region 军团战外部 public List BattleMemberInfos = new (); public BattlefieldActorCamp MyCamp; public int MapID; public List WaitMemberInfos = new (); public List FightMemberInfos = new (); public List 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 UnitIDs = new(); public BattleTeam(MSG_LB_Team lbTeam) { CommanderID = (int)lbTeam.Commander; foreach (var unit in lbTeam.Units) { UnitIDs.Add((int)unit); } } } }