Files
JJBB/Assets/Project/Script/Player/Team/TeamMember.cs

186 lines
4.5 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using Games.GlobeDefine;
using Games.LogicObj;
using GCGame.Table;
using UnityEngine;
public class TeamMember
{
private int _EffectAuraId = -1;
private int _FollowState = TeamFollowState.notSet;
private int _WeaponGemEffect = -1;
private int _WeaponGemEffect2 = -1;
private int _WeaponGemEffect3 = -1;
private int _WingAuraId = -1;
public TeamMember()
{
CleanUp();
}
public ulong Guid { get; set; }
public string MemberName { get; set; }
public int Level { get; set; }
public int Profession { get; set; }
public long HP { get; set; }
public long MaxHP { get; set; }
public int TeamJob { get; set; }
public int CombatNum { get; set; }
public Vector2 ScenePos { get; set; }
public int ModelVisual { get; set; }
public int WeaponData { get; set; }
public int WeaponGemEffect
{
get { return _WeaponGemEffect; }
set { _WeaponGemEffect = value; }
}
public int WeaponGemEffect2
{
get { return _WeaponGemEffect2; }
set { _WeaponGemEffect2 = value; }
}
public int WeaponGemEffect3
{
get { return _WeaponGemEffect3; }
set { _WeaponGemEffect3 = value; }
}
public int EffectAuraId
{
set { _EffectAuraId = value; }
get { return _EffectAuraId; }
}
public int WingAurId
{
set { _WingAuraId = value; }
get { return _WingAuraId; }
}
public bool EnsureFuben { get; set; }
public int FollowState
{
get { return _FollowState; }
set
{
if (_FollowState != value)
{
ridingMatchLead = false;
if (_FollowState == TeamFollowState.notFollow)
{
var mainPlayer = ObjManager.Instance.MainPlayer;
if (mainPlayer != null && mainPlayer.GUID == Guid)
{
var leader = GameManager.gameManager.PlayerDataPool.TeamInfo.teamMember[0];
if (leader.Guid != Guid && leader.SceneClassID != SceneClassID)
{
if (!Obj_MainPlayer.AllowCallIn(leader.SceneClassID, SceneClassID))
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5144}"));
// 2019.01.04 改为服务器判定队长是否在线
//else if (!leader.IsOnline)
// GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{52013}"));
}
}
}
_FollowState = value;
}
}
}
public float MoveSpeed { get; set; }
public int SceneClassID
{
get { return _sceneClassId; }
set
{
if (_sceneClassId != value)
{
ridingMatchLead = false;
_sceneClassId = value;
}
}
}
private int _sceneClassId;
public int SceneInstID
{
get { return _sceneInstId; }
set
{
if (_sceneInstId != value)
{
ridingMatchLead = false;
_sceneInstId = value;
}
}
}
public bool IsOnline = true;
private int _sceneInstId;
public void CleanUp()
{
Guid = GlobeVar.INVALID_GUID;
MemberName = string.Empty;
Level = 0;
Profession = 0;
HP = 0;
MaxHP = 0;
CombatNum = 0;
SceneClassID = GlobeVar.INVALID_ID;
SceneInstID = GlobeVar.INVALID_ID;
ScenePos = Vector2.zero;
warpFreezeTime = 0f;
teleportFreezeTime = 0f;
}
public bool IsValid()
{
return Guid != GlobeVar.INVALID_GUID;
}
public bool FollowLeader()
{
return IsValid() && FollowState != TeamFollowState.notFollow;
}
#region client prop
/// <summary>
/// 队员跳跃中,被锁定移动到这个时间
/// </summary>
public float warpFreezeTime;
/// <summary>
/// 队员传送中,被锁定移动到这个时间
/// </summary>
public float teleportFreezeTime;
/// <summary>
/// 是否需要更新骑乘状态
/// </summary>
// 仅仅用于在队员场景切换等等情况下重置为false使队长可以在切换状态时刷新这个标志位
// 队员进入跟随状态,无论任何情况,都会试图同队长骑乘状态执行一次匹配
public bool ridingMatchLead;
#endregion
}