626 lines
22 KiB
C#
626 lines
22 KiB
C#
/********************************************************************************
|
||
* 文件名: Team.cs
|
||
* 全路径: \Script\Player\Team\Team.cs
|
||
* 创建人: 李嘉
|
||
* 创建时间:2014-01-09
|
||
*
|
||
* 功能说明:全部的组队数据
|
||
* 修改记录:
|
||
*********************************************************************************/
|
||
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using Games.ChatHistory;
|
||
using Games.Events;
|
||
using Games.GlobeDefine;
|
||
using Games.LogicObj;
|
||
using GCGame;
|
||
using GCGame.Table;
|
||
using UnityEngine;
|
||
|
||
public class Team
|
||
{
|
||
// 有效成员列表 - 现在已经不敢动teamMember那个玩意了,实际有效成员列表可以从这个拿
|
||
private readonly List<TeamMember> _memberList;
|
||
public int AutoTeamTargetDest = -1;
|
||
|
||
public List<TeamInvater> InvaterList = new List<TeamInvater>();
|
||
public bool IsAutoTeam = false;
|
||
|
||
public int LastTeamDest = -1;
|
||
public int LastTeamLevelMax = -1;
|
||
public int LastTeamLevelMin = -1;
|
||
public bool IsCrossServerTeam = false; //是否是跨服队伍
|
||
|
||
public bool NewRequest = false;
|
||
|
||
public delegate void OnCreateTeamFinish();
|
||
private OnCreateTeamFinish CreateCB;
|
||
|
||
public List<TeamMember> RequestList = new List<TeamMember>();
|
||
|
||
public Team()
|
||
{
|
||
TeamID = GlobeVar.INVALID_ID;
|
||
teamMember = new TeamMember[GlobeVar.MAX_TEAM_MEMBER];
|
||
for (var i = 0; i < GlobeVar.MAX_TEAM_MEMBER; ++i)
|
||
teamMember[i] = new TeamMember();
|
||
_memberList = new List<TeamMember>(GlobeVar.MAX_TEAM_MEMBER);
|
||
}
|
||
|
||
public int _LastTeamID;
|
||
public int TeamID { get; set; }
|
||
|
||
public TeamMember[] teamMember { get; set; }
|
||
|
||
public void CleanUp()
|
||
{
|
||
TeamID = GlobeVar.INVALID_ID;
|
||
for (var i = 0; i < GlobeVar.MAX_TEAM_MEMBER; ++i)
|
||
{
|
||
//清理一遍名字面板
|
||
var objTeam = Singleton<ObjManager>.GetInstance().FindOtherPlayerInScene(teamMember[i].Guid);
|
||
if (objTeam != null)
|
||
objTeam.UpdateTeamInfo(false);
|
||
teamMember[i].CleanUp();
|
||
}
|
||
}
|
||
|
||
public void UpdateTeamHeadUI(bool state,int index)
|
||
{
|
||
if (index < 0 || index >= GlobeVar.MAX_TEAM_MEMBER)
|
||
return;
|
||
var objTeam = Singleton<ObjManager>.GetInstance().FindOtherPlayerInScene(teamMember[index].Guid);
|
||
if (objTeam != null)
|
||
objTeam.UpdateTeamInfo(state);
|
||
}
|
||
|
||
public void UpdateAllTeamHeadUI(bool state)
|
||
{
|
||
for (var i = 0; i < GlobeVar.MAX_TEAM_MEMBER; ++i)
|
||
{
|
||
UpdateTeamHeadUI(state, i);
|
||
}
|
||
}
|
||
|
||
public void CreaetTeam(int destId, int minLevel, int maxLevel, OnCreateTeamFinish createCallBack = null)
|
||
{
|
||
if (destId > 0)
|
||
{
|
||
LastTeamDest = destId;
|
||
}
|
||
else
|
||
{
|
||
LastTeamDest = -1;
|
||
}
|
||
|
||
if (minLevel > 0)
|
||
{
|
||
LastTeamLevelMin = Mathf.Min(minLevel, maxLevel);
|
||
}
|
||
else
|
||
{
|
||
LastTeamLevelMin = -1;
|
||
}
|
||
|
||
if (maxLevel > 0)
|
||
{
|
||
LastTeamLevelMax = Mathf.Max(minLevel, maxLevel);
|
||
}
|
||
else
|
||
{
|
||
LastTeamLevelMax = -1;
|
||
}
|
||
|
||
if (GameManager.gameManager.PlayerDataPool.IsHaveTeam())
|
||
{
|
||
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{4605}"), "",
|
||
Singleton<ObjManager>.GetInstance().MainPlayer.ReqJoinLeaveOldOK,
|
||
Singleton<ObjManager>.GetInstance().MainPlayer.ReqJoinLeaveOldCancel);
|
||
return;
|
||
}
|
||
|
||
if (createCallBack != null)
|
||
CreateCB = createCallBack;
|
||
var packet = (CG_REQ_CREATE_TEAM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_CREATE_TEAM);
|
||
packet.Desid = LastTeamDest;
|
||
packet.Minlvl = LastTeamLevelMin;
|
||
packet.Maxlvl = LastTeamLevelMax;
|
||
|
||
packet.SendPacket();
|
||
|
||
//IsAutoTeam = true;
|
||
//if (LastTeamDest > 0)
|
||
//{
|
||
// SetAutoTeam(true);
|
||
//}
|
||
}
|
||
|
||
public void ChangeTeamDest(int destId, int minLevel, int maxLevel)
|
||
{
|
||
if (destId > 0) LastTeamDest = destId;
|
||
if (minLevel > 0) LastTeamLevelMin = Mathf.Min(minLevel, maxLevel);
|
||
if (maxLevel > 0) LastTeamLevelMax = Mathf.Max(minLevel, maxLevel);
|
||
if (!Singleton<ObjManager>.GetInstance().MainPlayer.IsTeamLeader()) return;
|
||
|
||
var packet = (CG_REQ_FIX_TEAM_DES)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_FIX_TEAM_DES);
|
||
packet.Desid = LastTeamDest;
|
||
packet.Minlvl = LastTeamLevelMin;
|
||
packet.Maxlvl = LastTeamLevelMax;
|
||
packet.SendPacket();
|
||
//IsAutoTeam = true;
|
||
}
|
||
|
||
public void SetAutoTeam(bool isAuto)
|
||
{
|
||
if (isAuto)
|
||
{
|
||
if (LastTeamDest > 0)
|
||
{
|
||
var packet = (CG_ASK_AUTOTEAM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_AUTOTEAM);
|
||
packet.Desid = LastTeamDest;
|
||
packet.SendPacket();
|
||
}
|
||
//IsAutoTeam = true;
|
||
}
|
||
else
|
||
{
|
||
if (LastTeamDest > 0)
|
||
{
|
||
var packet = (CG_ASK_UN_AUTOTEAM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_UN_AUTOTEAM);
|
||
packet.None = 0;
|
||
packet.SendPacket();
|
||
}
|
||
|
||
//IsAutoTeam = false;
|
||
}
|
||
|
||
MissionDialogAndLeftTabsLogic.Instance().UpdateTeamInfo();
|
||
}
|
||
|
||
//更新全部队伍信息
|
||
public void UpdateTeamInfo(GC_TEAM_SYNC_TEAMINFO packet)
|
||
{
|
||
if (null == packet)
|
||
return;
|
||
IsCrossServerTeam = packet.IsCross == 1;
|
||
var bNeedUpdateNameBoardColor = false; //是否更新名字版颜色,加入队伍的时候调用
|
||
//如果收到最新的队伍信息,而玩家之前没有队伍的话,则进行提示“你进入了一个队伍,可获得更多收益”
|
||
if (GlobeVar.INVALID_ID == TeamID && GlobeVar.INVALID_ID != packet.TeamID)
|
||
{
|
||
if (null != Singleton<ObjManager>.GetInstance().MainPlayer)
|
||
Singleton<ObjManager>.GetInstance().MainPlayer.SendNoticMsg(false, "#{2229}");
|
||
|
||
if (MissionDialogAndLeftTabsLogic.Instance() != null)
|
||
{
|
||
MissionDialogAndLeftTabsLogic.Instance()._TagPanel.ShowPage(1);
|
||
MissionDialogAndLeftTabsLogic.Instance().OnTagPage(1);
|
||
}
|
||
|
||
bNeedUpdateNameBoardColor = true;
|
||
}
|
||
|
||
//更新数据
|
||
var newTeam = packet.TeamID != TeamID && TeamID == GlobeVar.INVALID_ID;
|
||
TeamID = packet.TeamID;
|
||
var mainPlayer = ObjManager.Instance.MainPlayer;
|
||
|
||
UpdateAllTeamHeadUI(false);
|
||
|
||
//如果队伍ID为-1,则说明解散队伍,清除信息即可
|
||
if (TeamID == GlobeVar.INVALID_ID)
|
||
{
|
||
//退出组队跟随状态
|
||
//if (null != Singleton<ObjManager>.GetInstance().MainPlayer)
|
||
// Singleton<ObjManager>.GetInstance().MainPlayer.LeaveTeamFollow();
|
||
if(MissionDialogAndLeftTabsLogic.Instance()!=null)
|
||
MissionDialogAndLeftTabsLogic.Instance().UpdateTeamInfo();
|
||
CleanUp();
|
||
}
|
||
else
|
||
{
|
||
var mainPlayerFollow = 0;
|
||
if (mainPlayer != null && mainPlayer.GUID != GlobeVar.INVALID_GUID)
|
||
{
|
||
var member = teamMember.Find(a => a.Guid == mainPlayer.GUID);
|
||
if (member != null)
|
||
mainPlayerFollow = member.FollowState;
|
||
}
|
||
_memberList.Clear();
|
||
for (var i = 0; i < packet.memberGuidList.Count; i++)
|
||
{
|
||
var guid = packet.memberGuidList[i];
|
||
var member = teamMember.Find(a => a.Guid == guid);
|
||
if (member == null)
|
||
member = new TeamMember { Guid = guid };
|
||
_memberList.Add(member);
|
||
|
||
if (i < packet.memberNameList.Count)
|
||
member.MemberName = packet.memberNameList[i];
|
||
|
||
if (i < packet.memberLevelList.Count)
|
||
member.Level = packet.memberLevelList[i];
|
||
|
||
if (i < packet.memberProfList.Count)
|
||
member.Profession = packet.memberProfList[i];
|
||
|
||
if (i < packet.memberHPList.Count)
|
||
member.HP = packet.memberHPList[i];
|
||
|
||
if (i < packet.memberMaxHPList.Count)
|
||
member.MaxHP = packet.memberMaxHPList[i];
|
||
|
||
if (i < packet.memberCombatList.Count)
|
||
member.CombatNum = packet.memberCombatList[i];
|
||
|
||
if (i < packet.sceneclassList.Count)
|
||
member.SceneClassID = packet.sceneclassList[i];
|
||
|
||
if (i < packet.sceneinstList.Count)
|
||
member.SceneInstID = packet.sceneinstList[i];
|
||
|
||
if (i < packet.modelvisualidList.Count)
|
||
member.ModelVisual = packet.modelvisualidList[i];
|
||
|
||
if (i < packet.weapondataidList.Count)
|
||
member.WeaponData = packet.weapondataidList[i];
|
||
|
||
if (i < packet.weaponeffectgemList.Count)
|
||
member.WeaponGemEffect = packet.weaponeffectgemList[i];
|
||
|
||
if (i < packet.weaponeffectgem2List.Count)
|
||
member.WeaponGemEffect2 = packet.weaponeffectgem2List[i];
|
||
|
||
if (i < packet.weaponeffectgem3List.Count)
|
||
member.WeaponGemEffect3 = packet.weaponeffectgem3List[i];
|
||
|
||
if (i < packet.AuraEffectList.Count)
|
||
{
|
||
member.WingAurId = packet.GetAuraEffect(0);
|
||
member.EffectAuraId = packet.GetAuraEffect(1);
|
||
}
|
||
|
||
if (i < packet.memberstateCount)
|
||
member.IsOnline = packet.memberstateList[i] == 0;
|
||
|
||
float fEnterPosX = 0;
|
||
if (i < packet.posXList.Count)
|
||
fEnterPosX = packet.posXList[i] * 0.01f;
|
||
float fEnterPosZ = 0;
|
||
if (i < packet.posZList.Count)
|
||
fEnterPosZ = packet.posZList[i] * 0.01f;
|
||
member.ScenePos = new Vector2(fEnterPosX, fEnterPosZ);
|
||
if (i < packet.movespeedCount)
|
||
member.MoveSpeed = packet.movespeedList[i] * 0.01f;
|
||
//更新队长队员,索引为0即队长
|
||
member.TeamJob = i == 0 ? 0 : 1;
|
||
if (i < packet.followstateCount)
|
||
member.FollowState = packet.followstateList[i];
|
||
}
|
||
|
||
// 更新teamMember数组
|
||
for (var i = 0; i < teamMember.Length; i++)
|
||
if (i < _memberList.Count)
|
||
teamMember[i] = _memberList[i];
|
||
// 如果不是空记录,则直接抛弃当前记录
|
||
else if (teamMember[i].IsValid())
|
||
teamMember[i] = new TeamMember();
|
||
// 释放外部事件 - 注:外部可能访问正在修改的数据,不应该允许在数据体中执行外部方法
|
||
if (bNeedUpdateNameBoardColor)
|
||
for (var i = 0; i < teamMember.Length; i++)
|
||
{
|
||
var member = teamMember[i];
|
||
if (member.IsValid())
|
||
{
|
||
var objTeam = Singleton<ObjManager>.GetInstance().FindOtherPlayerInScene(member.Guid);
|
||
if (objTeam != null)
|
||
objTeam.SetSpricelName();
|
||
}
|
||
}
|
||
if (mainPlayer != null && TeamID != GlobeVar.INVALID_ID)
|
||
{
|
||
var mainPlayerMember = teamMember.Find(a => a.Guid == mainPlayer.GUID);
|
||
if (mainPlayerMember != null)
|
||
{
|
||
if (newTeam)
|
||
{
|
||
if (teamMember[0].IsValid() &&
|
||
mainPlayer.GUID != teamMember[0].Guid &&
|
||
mainPlayerMember.FollowState == TeamFollowState.notFollow)
|
||
{
|
||
if (PlayerPreferenceData.SystemAutoTeamFollow)
|
||
mainPlayer.EnterTeamFollow();
|
||
else
|
||
{
|
||
var cache = GameManager.gameManager.PlayerDataPool.EnterSceneCache;
|
||
var fubenId = cache == null ? mainPlayerMember.SceneClassID : cache.EnterCopySceneID;
|
||
var fuben = TableManager.GetFubenByID(fubenId, 0);
|
||
// 不处于副本中时
|
||
if (fuben == null || fuben.Type < 2)
|
||
{
|
||
MessageBoxLogic.OpenOKCancelBox(8022, funcOKClicked: () =>
|
||
{
|
||
var current = ObjManager.Instance.MainPlayer;
|
||
if (current != null)
|
||
current.EnterTeamFollow();
|
||
});
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (mainPlayerMember.FollowState != mainPlayerFollow)
|
||
MainPlayerFollowStateUpdate(mainPlayer, mainPlayerMember, mainPlayerFollow);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
UpdateAllTeamHeadUI(true);
|
||
if (CreateCB != null)
|
||
{
|
||
CreateCB();
|
||
CreateCB = null;
|
||
}
|
||
}
|
||
|
||
//根据索引更新某一个队员的信息
|
||
public void UpdateMember(int nIndex, GC_TEAM_SYNC_MEMBERINFO packet)
|
||
{
|
||
UpdateTeamHeadUI(false, nIndex);
|
||
if (nIndex < 0 || nIndex >= teamMember.Length) return;
|
||
|
||
if (packet.HasMemberGuid)
|
||
teamMember[nIndex].Guid = packet.MemberGuid;
|
||
|
||
if (packet.HasMemberName)
|
||
teamMember[nIndex].MemberName = packet.MemberName;
|
||
|
||
if (packet.HasMemberLevel)
|
||
teamMember[nIndex].Level = packet.MemberLevel;
|
||
|
||
if (packet.HasMemberProf)
|
||
teamMember[nIndex].Profession = packet.MemberProf;
|
||
|
||
if (packet.HasMemberHP)
|
||
teamMember[nIndex].HP = packet.MemberHP;
|
||
|
||
if (packet.HasMemberMaxHP)
|
||
teamMember[nIndex].MaxHP = packet.MemberMaxHP;
|
||
|
||
if (packet.HasMemberCombat)
|
||
teamMember[nIndex].CombatNum = packet.MemberCombat;
|
||
|
||
if (packet.HasSceneclass)
|
||
teamMember[nIndex].SceneClassID = packet.Sceneclass;
|
||
|
||
if (packet.HasSceneinst)
|
||
teamMember[nIndex].SceneInstID = packet.Sceneinst;
|
||
|
||
if (packet.HasPosX)
|
||
{
|
||
var posX = packet.PosX * 0.01f;
|
||
var posZ = packet.PosZ * 0.01f;
|
||
teamMember[nIndex].ScenePos = new Vector2(posX, posZ);
|
||
}
|
||
|
||
if (packet.HasModelvisualid)
|
||
teamMember[nIndex].ModelVisual = packet.Modelvisualid;
|
||
|
||
if (packet.HasWeapondataid)
|
||
teamMember[nIndex].WeaponData = packet.Weapondataid;
|
||
|
||
if (packet.HasWeaponeffectgem)
|
||
teamMember[nIndex].WeaponGemEffect = packet.Weaponeffectgem;
|
||
|
||
if (packet.HasWeaponeffectgem2)
|
||
teamMember[nIndex].WeaponGemEffect2 = packet.Weaponeffectgem2;
|
||
|
||
if (packet.HasWeaponeffectgem3)
|
||
teamMember[nIndex].WeaponGemEffect3 = packet.Weaponeffectgem3;
|
||
|
||
if (packet.HasMemberstate)
|
||
teamMember[nIndex].IsOnline = packet.Memberstate == 0;
|
||
|
||
try
|
||
{
|
||
teamMember[nIndex].WingAurId = packet.GetAuraEffect(0);
|
||
teamMember[nIndex].EffectAuraId = packet.GetAuraEffect(1);
|
||
}
|
||
catch
|
||
{
|
||
|
||
}
|
||
|
||
if (packet.HasMovespeed) teamMember[nIndex].MoveSpeed = packet.Movespeed * 0.01f;
|
||
var mainPlayer = Singleton<ObjManager>.GetInstance().MainPlayer;
|
||
var isMainPlayer = mainPlayer.GUID == teamMember[nIndex].Guid;
|
||
if (packet.HasFollowstate)
|
||
{
|
||
var oldValue = teamMember[nIndex].FollowState;
|
||
teamMember[nIndex].FollowState = packet.Followstate;
|
||
if (isMainPlayer &&
|
||
teamMember[nIndex].FollowState != oldValue)
|
||
MainPlayerFollowStateUpdate(mainPlayer, teamMember[nIndex], oldValue);
|
||
}
|
||
|
||
if (isMainPlayer && MissionDialogAndLeftTabsLogic.Instance() != null)
|
||
MissionDialogAndLeftTabsLogic.Instance().HandleSyncTeamInfo();
|
||
UpdateAllTeamHeadUI(true);
|
||
var tab = new Hashtable();
|
||
tab["index"] = nIndex;
|
||
tab["type"] = Obj_Fellow.FellowDialogType.EnemyInTeam;
|
||
EventDispatcher.Instance.SendMessage(Games.Events.EventId.FellowDialogEvent, tab);
|
||
}
|
||
|
||
private void MainPlayerFollowStateUpdate(Obj_MainPlayer mainPlayer, TeamMember mainPlayerMember, int oldState)
|
||
{
|
||
if (oldState == TeamFollowState.notFollow)
|
||
if (MissionDialogAndLeftTabsLogic.Instance() != null)
|
||
MissionDialogAndLeftTabsLogic.Instance().UpdateTeamInfo();
|
||
|
||
if (mainPlayerMember.Guid != teamMember[0].Guid)
|
||
{
|
||
switch (mainPlayerMember.FollowState)
|
||
{
|
||
case TeamFollowState.followMove:
|
||
{
|
||
mainPlayer.StopMove();
|
||
mainPlayer.LeveAutoCombat();
|
||
//// 如果距离队长太远,就试图进入骑乘状态
|
||
//if (mainPlayerMember.SceneClassID == teamMember[0].SceneClassID &&
|
||
// mainPlayerMember.SceneInstID == teamMember[0].SceneInstID &&
|
||
// (teamMember[0].ScenePos - mainPlayer.Position.RemoveY()).sqrMagnitude >
|
||
// _mountDistance.ToSquare())
|
||
//{
|
||
// mainPlayer.AskRideMount(false);
|
||
//}
|
||
}
|
||
break;
|
||
case TeamFollowState.followCombat:
|
||
{
|
||
if (mainPlayer.sceneAutoType != FubenAutoType.noFollow)
|
||
mainPlayer.EnterAutoCombat();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
public TeamMember GetTeamMemberByguiId(ulong guid)
|
||
{
|
||
for (var i = 0; i < GlobeVar.MAX_TEAM_MEMBER; i++)
|
||
if (guid == teamMember[i].Guid)
|
||
return teamMember[i];
|
||
return null;
|
||
}
|
||
|
||
//获得某个队员信息
|
||
public TeamMember GetTeamMember(int nIndex)
|
||
{
|
||
if (nIndex < 0 || nIndex >= GlobeVar.MAX_TEAM_MEMBER) return null;
|
||
|
||
return teamMember[nIndex];
|
||
}
|
||
|
||
//队伍是否已满
|
||
public bool IsFull()
|
||
{
|
||
return teamMember[GlobeVar.MAX_TEAM_MEMBER - 1].IsValid();
|
||
}
|
||
|
||
public bool IsCaptain(ulong guid = GlobeVar.INVALID_GUID)
|
||
{
|
||
if (guid == GlobeVar.INVALID_GUID)
|
||
{
|
||
var mainPlayer = ObjManager.Instance.MainPlayer;
|
||
return mainPlayer != null && teamMember[0].Guid == mainPlayer.GUID;
|
||
}
|
||
else
|
||
{
|
||
return teamMember[0].Guid == guid;
|
||
}
|
||
}
|
||
|
||
public int GetTeamMemberCount()
|
||
{
|
||
var count = 0;
|
||
for (var i = 0; i < GlobeVar.MAX_TEAM_MEMBER; i++)
|
||
if (teamMember[i].IsValid())
|
||
count += 1;
|
||
else
|
||
break;
|
||
return count;
|
||
}
|
||
|
||
public void SendTeamChat(GC_CHAT.CHATTYPE chatType) //聊天频道发布招募信息
|
||
{
|
||
var destIdx = LastTeamDest;
|
||
var targetTab = TableManager.GetTeamTargetByID(destIdx, 0);
|
||
if (targetTab != null)
|
||
{
|
||
switch(chatType)
|
||
{
|
||
case GC_CHAT.CHATTYPE.CHAT_TYPE_WORLD:
|
||
if (targetTab.TalkType == 2) //只能在帮派招募
|
||
{
|
||
GUIData.AddNotifyData("#{52002}");
|
||
return;
|
||
}
|
||
break;
|
||
case GC_CHAT.CHATTYPE.CHAT_TYPE_GUILD:
|
||
if (targetTab.TalkType == 1) //只能在世界招募
|
||
{
|
||
GUIData.AddNotifyData("#{52003}");
|
||
return;
|
||
}
|
||
break;
|
||
}
|
||
var teamTarget = targetTab.Name;
|
||
var teamLevel = LastTeamLevelMin + "-" + LastTeamLevelMax;
|
||
if (ChatInputLogic.IsCanChat((int)chatType,true,false))
|
||
{
|
||
var item = new ChatHistoryItem();
|
||
item.CleanUp();
|
||
item.EChannel = chatType;
|
||
var modifyText = StrDictionary.GetClientDictionaryString("#{5137}", teamTarget, teamLevel,
|
||
GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID, Singleton<ObjManager>.GetInstance().MainPlayer.BaseAttr.RoleName);
|
||
modifyText = Utils.StrFilter_Chat(modifyText);
|
||
item.ChatInfo = modifyText;
|
||
Utils.SendCGChatPak(item.ChatInfo, item, chatType == GC_CHAT.CHATTYPE.CHAT_TYPE_GUILD);
|
||
}
|
||
}
|
||
}
|
||
|
||
public bool IsFollowTeam()
|
||
{
|
||
return GetFollowState() != TeamFollowState.notFollow;
|
||
// if (TeamID == GlobeVar.INVALID_ID)
|
||
// return false;
|
||
// else
|
||
// {
|
||
// var mainPlayer = GetMainPlayTeamData();
|
||
// return TeamID != GlobeVar.INVALID_ID && mainPlayer != null && mainPlayer.FollowLeader();
|
||
// }
|
||
}
|
||
|
||
public int GetFollowState()
|
||
{
|
||
if (TeamID == GlobeVar.INVALID_ID)
|
||
return TeamFollowState.notFollow;
|
||
// 额外屏蔽队长的情况,当前队长状态被服务器玩坏了
|
||
else
|
||
{
|
||
var mainPlayer = ObjManager.Instance.MainPlayer;
|
||
if (mainPlayer == null)
|
||
return TeamFollowState.notFollow;
|
||
else if (teamMember[0].Guid == mainPlayer.GUID)
|
||
return TeamFollowState.notFollow;
|
||
else
|
||
{
|
||
var member = GetTeamMemberByguiId(mainPlayer.GUID);
|
||
return member == null ? TeamFollowState.notFollow : member.FollowState;
|
||
}
|
||
}
|
||
}
|
||
|
||
public TeamMember GetMainPlayTeamData()
|
||
{
|
||
ulong? guid = null;
|
||
if (GameManager.gameManager.PlayerDataPool != null &&
|
||
GameManager.gameManager.PlayerDataPool.EnterSceneCache != null)
|
||
guid = GameManager.gameManager.PlayerDataPool.EnterSceneCache.Guid;
|
||
else if (ObjManager.Instance.MainPlayer != null)
|
||
guid = ObjManager.Instance.MainPlayer.GUID;
|
||
return guid == null ? null : GetTeamMemberByguiId(guid.Value);
|
||
}
|
||
}
|
||
|
||
public class TeamInvater
|
||
{
|
||
public ulong InvaterGuid;
|
||
public string InvaterName;
|
||
public int TeamID;
|
||
public string TeamLeaderName;
|
||
} |