NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Legion/LegionManager.Mercenary.cs

302 lines
6.9 KiB
C#

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;
/// <summary>
/// 雇佣兵列表
/// </summary>
private List<MercenarySignUpData> _mercenarySignUpList = new();
public List<MercenarySignUpData> MercenarySignUpList
{
get
{
return _mercenarySignUpList;
}
set
{
_mercenarySignUpList = value;
}
}
//我的军团发布的招募信息
private List<LegionMercenaryHireData> _legionMercenaryHireDatas = new();
public List<LegionMercenaryHireData> 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 通信
/// <summary>
/// 申请雇佣兵列表
/// </summary>
public void ReqGetMercenaryList(int page, MercenaryDataSortType sortType)
{
NetHelper.ReqMercenarySignUpData((uint)page, sortType);
}
/// <summary>
/// 申请军团招募列表
/// </summary>
/// <param name="page"></param>
public void ReqGetMercenaryHireData(int page, LegionHireSortType sortType)
{
NetHelper.ReqMercenaryHireData((uint)page, sortType);
}
public void ReqGetMercenarySearchData(uint uid)
{
NetHelper.ReqMercenarySignUpDataSearch(uid);
}
/// <summary>
/// 注册雇佣兵
/// </summary>
/// <param name="cost"></param>
public void ReqMercenarySignUp(int cost)
{
NetHelper.ReqMercenarySignUp((uint)cost);
}
public void ReqLegionPostHiring(MercenaryHire hire)
{
NetHelper.ReqLegionPostHiring(hire);
}
/// <summary>
/// 申请加入、招募
/// </summary>
/// <param name="legionID"></param>
public void ReqMercenaryApplyJoin(uint legionID)
{
NetHelper.ReqMercenaryApplyJoin(legionID);
}
public void ReqLegionMercenaryHire(uint mercenaryID)
{
NetHelper.ReqLegionMercenaryHire(mercenaryID);
}
/// <summary>
/// 审批雇佣兵申请
/// </summary>
/// <param name="legionID"></param>
/// <param name="isAgree"></param>
public void ReqLegionMercenaryApprove(uint legionID, bool isAgree)
{
NetHelper.ReqLegionMercenaryApprove(legionID, isAgree);
}
/// <summary>
/// 申请军团招募雇佣兵数据信息
/// </summary>
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?.HireCost > 0;
}
public bool CheckIsSignUp()
{
return _myMercenaryActor?.SignUpCost > 0 && _myMercenaryActor?.SignUpStatus == MercenarySignUpStatus.MssNone;
}
public bool CheckIsHiredByLegion()
{
return _myMercenaryActor?.HireLegionID > 0;
}
/// <summary>
/// 是否在一个军团中
/// </summary>
/// <returns></returns>
public bool CheckIsInLegion()
{
return _myLegion != null || CheckIsHiredByLegion();
}
/// <summary>
/// 是否散人玩家
/// </summary>
/// <returns></returns>
public bool CheckIsFree()
{
return !CheckIsSignUp() && !CheckIsInLegion();
}
public void Back2Camp()
{
UIManager.Instance.CloseAllNormalExcept(UINameConst.UI_MainPanel, UINameConst.UI_Camp);
}
#endregion
}
#region Class
/// <summary>
/// 自身的雇佣兵相关数据
/// </summary>
public class MercenaryActor
{
public int SignUpCost;
public MercenarySignUpStatus SignUpStatus;
public uint HireLegionID;
public int HireLegionLevel;
public int HireLegionHead;
public string HireLegionName;
}
/// <summary>
/// 军团雇佣的雇佣兵信息
/// </summary>
public class LegionMercenaryData
{
public int HireCost;
public int Total; //总招募数量
public List<MercenaryData> MercenaryMemberList;
public List<MercenaryData> MercenaryApplyList;
public LegionMercenaryData()
{
MercenaryMemberList = new List<MercenaryData>();
MercenaryApplyList = new List<MercenaryData>();
}
}
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;
}
}
/// <summary>
/// 客户端发起招募结构
/// </summary>
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;
}
}
/// <summary>
/// 军团发布的雇佣兵招募数据
/// </summary>
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;
}
}
/// <summary>
/// 雇佣兵数据
/// </summary>
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