104 lines
2.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |