namespace Supercell.Laser.Logic.Team { using Supercell.Laser.Logic.Helper; using Supercell.Laser.Logic.Listener; using Supercell.Laser.Logic.Message.Team; using Supercell.Laser.Logic.Message.Team.Stream; using Supercell.Laser.Logic.Team.Stream; using Supercell.Laser.Titan.DataStream; public class TeamEntry { public long Id; public int Type; public int LocationId; public List Members { get; set; } public List Invites { get; set; } public List JoinRequests { get; set; } public List DisabledBots { get; set; } public int EventSlot { get; set; } public int MaxPlayers { get; set; } private long EntryCounter; public List Stream { get; private set; } public TeamEntry() { Members = new List(); Invites = new List(); JoinRequests = new List(); DisabledBots = new List(); Stream = new List(); EventSlot = 1; EntryCounter = 0; MaxPlayers = 3; } public void AddStreamEntry(TeamStreamEntry entry) { if (entry == null) return; entry.Id = ++EntryCounter; Stream.Add(entry); TeamStreamMessage message = new TeamStreamMessage(); message.TeamId = Id; message.Entries = new TeamStreamEntry[] { entry }; foreach (var member in Members) { if (LogicServerListener.Instance.IsPlayerOnline(member.AccountId)) { LogicServerListener.Instance.GetGameListener(member.AccountId).SendTCPMessage(message); } } } public void StreamUpdated() { } public TeamMember GetMember(long id) { return Members.Find(member => member.AccountId == id); } public TeamInviteEntry GetInviteById(long id) { return Invites.Find(invite => invite.Id == id); } public bool IsEveryoneReady() { foreach (TeamMember member in Members) { if (!member.IsReady) return false; } return true; } public void TeamUpdated() { TeamMessage message = new TeamMessage(); message.Team = this; foreach (var member in Members) { if (LogicServerListener.Instance.IsPlayerOnline(member.AccountId)) { LogicServerListener.Instance.GetGameListener(member.AccountId).SendTCPMessage(message); } } } public void Encode(ByteStream stream) { stream.WriteVInt(Type); stream.WriteBoolean(Type == 1); stream.WriteVInt(MaxPlayers); // Team capacity stream.WriteLong(Id); stream.WriteVInt(0); stream.WriteBoolean(false); stream.WriteBoolean(false); stream.WriteVInt(0); stream.WriteVInt(0); ByteStreamHelper.WriteDataReference(stream, LocationId); stream.WriteVInt(Members.Count); foreach (TeamMember entry in Members.ToArray()) { entry.Encode(stream); } stream.WriteVInt(Invites.Count); foreach (TeamInviteEntry entry in Invites.ToArray()) { entry.Encode(stream); } stream.WriteVInt(JoinRequests.Count); foreach (TeamJoinRequest request in JoinRequests.ToArray()) { request.Encode(stream); } stream.WriteVInt(DisabledBots.Count); foreach(int i in DisabledBots) { stream.WriteVInt(i); } stream.WriteBoolean(false); stream.WriteBoolean(true); // Room Chat enabled stream.WriteBoolean(false); // Accessories enabled } } }