using Gameplay.Net; using System.Collections.Generic; using Gameplay.LegionBattle; using Gameplay.Net; using NLDPB; public partial class LegionManager { #region Data private MercenaryActor _myMercenaryActor; public MercenaryActor MyMercenaryActor => _myMercenaryActor; /// /// 雇佣兵列表 /// private List _mercenarySignUpList = new(); public List MercenarySignUpList { get { return _mercenarySignUpList; } set { _mercenarySignUpList = value; } } //我的军团发布的招募信息 private List _legionMercenaryHireDatas = new(); public List LegionMercenaryHireDatas { get { return _legionMercenaryHireDatas; } set { _legionMercenaryHireDatas = value; } } public MercenarySignUpData MercenarySignUpSearchData { get; set; } public void InitMercenaryActor() { if(_myMercenaryActor == null) _myMercenaryActor = new MercenaryActor(); } public LegionMercenaryData LegionMercenaryData { get; set; } #endregion #region 通信 /// /// 申请雇佣兵列表 /// public void ReqGetMercenaryList(int page, MercenaryDataSortType sortType) { NetHelper.ReqMercenarySignUpData((uint)page, sortType); } /// /// 申请军团招募列表 /// /// public void ReqGetMercenaryHireData(int page, LegionHireSortType sortType) { NetHelper.ReqMercenaryHireData((uint)page, sortType); } public void ReqGetMercenarySearchData(uint uid) { NetHelper.ReqMercenarySignUpDataSearch(uid); } /// /// 注册雇佣兵 /// /// public void ReqMercenarySignUp(int cost) { NetHelper.ReqMercenarySignUp((uint)cost); } public void ReqLegionPostHiring(MercenaryHire hire) { NetHelper.ReqLegionPostHiring(hire); } /// /// 申请加入、招募 /// /// public void ReqMercenaryApplyJoin(uint legionID) { NetHelper.ReqMercenaryApplyJoin(legionID); } public void ReqLegionMercenaryHire(uint mercenaryID) { NetHelper.ReqLegionMercenaryHire(mercenaryID); } /// /// 审批雇佣兵申请 /// /// /// public void ReqLegionMercenaryApprove(uint legionID, bool isAgree) { NetHelper.ReqLegionMercenaryApprove(legionID, isAgree); } /// /// 申请军团招募雇佣兵数据信息 /// public void ReqLegionMercenaryData() { if (IsPresident) { NetHelper.ReqLegionMercenaryData(); } } #endregion #region API public bool CheckIsCanHire() { if (LegionBattleManager.Instance.CurBattleStatus != LegionBattleStatus.Start) { return false; } if (IsPresident && !CheckIsSignUp()) { return !CheckIsLegionHired(); } return false; } public bool CheckIsLegionHired() { return LegionMercenaryData?.Total > 0; } public bool CheckIsLegionHireLimit() { if (LegionMercenaryData == null) { return true; } return LegionMercenaryData.MercenaryMemberList.Count >= LegionMercenaryData.Total; } public bool CheckIsSignUp() { return _myMercenaryActor?.SignUpCost > 0 && _myMercenaryActor?.SignUpStatus == MercenarySignUpStatus.MssNone; } public bool CheckIsHiredByLegion() { return _myMercenaryActor?.HireLegionID > 0; } /// /// 是否在一个军团中 /// /// public bool CheckIsInLegion() { return _myLegion != null || CheckIsHiredByLegion(); } /// /// 是否散人玩家 /// /// public bool CheckIsFree() { return !CheckIsSignUp() && !CheckIsInLegion(); } public void Back2Camp() { UIManager.Instance.CloseAllNormalExcept(UINameConst.UI_MainPanel, UINameConst.UI_Camp); } #endregion } #region Class /// /// 自身的雇佣兵相关数据 /// public class MercenaryActor { public int SignUpCost; public MercenarySignUpStatus SignUpStatus; public uint HireLegionID; public int HireLegionLevel; public int HireLegionHead; public string HireLegionName; } /// /// 军团雇佣的雇佣兵信息 /// public class LegionMercenaryData { public int HireCost; public int Total; //总招募数量 public List MercenaryMemberList; public List MercenaryApplyList; public LegionMercenaryData() { MercenaryMemberList = new List(); MercenaryApplyList = new List(); } } public class MercenaryData { public uint ActorID; public string Name; public int Level; public int Cost; public MercenaryData(MSG_LegionMercenaryMember member) { ActorID = member.ActorId; Name = member.Name; Level = (int)member.Level; Cost = (int)member.Cost; } } /// /// 客户端发起招募结构 /// public class MercenaryHire { public int Count; public int LimitLevel; public int Cost; public bool AutoApprove; public MercenaryHire(int count, int limitLevel, int cost, bool autoApprove) { Count = count; LimitLevel = limitLevel; Cost = cost; AutoApprove = autoApprove; } } /// /// 军团发布的雇佣兵招募数据 /// public class LegionMercenaryHireData { public uint ID; public string Name; public int Level; public int MinLevel; public int Total; public int Current; public int HireCost; public LegionMercenaryHireData(MSG_LegionMercenaryHireData data) { ID = data.Id; Name = data.Name; Level = (int)data.Level; MinLevel = (int)data.MinLevel; Total = (int)data.Total; Current = (int)data.Current; HireCost = (int)data.HireCost; } } /// /// 雇佣兵数据 /// public class MercenarySignUpData { public uint ActorID; public string Name; public int KillNum; public int Level; public int Cost; public MercenarySignUpStatus Status; public MercenarySignUpData(MSG_MercenarySignUpData mercenarySignUpData) { ActorID = mercenarySignUpData.ActorId; Name = mercenarySignUpData.Name; KillNum = (int)mercenarySignUpData.KillNum; Level = (int)mercenarySignUpData.Level; Cost = (int)mercenarySignUpData.Cost; Status = (MercenarySignUpStatus)mercenarySignUpData.Status; } } #endregion