/// <summary> /// 创建队伍 /// </summary> /// <param name="player"></param> public PlayerTeam(PlayerBusiness player) { if (player.SetTeam(this, TeamJob.Captain)) { int id = Interlocked.Increment(ref T) & 0x00ffffff; this.m_id = Sinan.Extensions.StringFormat.ToHexString(id); m_members[0] = player; } }
/// <summary> /// 添加成员 /// </summary> /// <param name="player"></param> /// <returns></returns> public bool TryAddMember(PlayerBusiness player) { if (player.Team != null || player.Fight != null || player.SceneID != Captain.SceneID) { return false; } for (int i = 1; i < m_members.Length; i++) { if (Interlocked.CompareExchange(ref m_members[i], player, null) == null) { player.SetTeam(this, TeamJob.Member); return true; } } return false; }
/// <summary> /// 请离成员 /// </summary> /// <param name="id"></param> /// <returns></returns> public bool RemoveMember(PlayerBusiness player) { if (player != null) { for (int i = 1; i < m_members.Length; i++) { if (Interlocked.CompareExchange(ref m_members[i], null, player) == player) { if (player.Team == this) { TeamJob oldJob = player.TeamJob; player.SetTeam(null, TeamJob.NoTeam); if (oldJob == TeamJob.Member) { player.X = Captain.X; player.Y = Captain.Y; player.Point = Captain.Point; } } return true; } } } return false; }