public static bool HandleRequestInvite(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team == null) { return(true); } if (!player.Team.IsLeader(player)) { return(true); } Models.Maps.IMapObject mapObject; if (player.GetFromScreen(packet.ClientId, out mapObject)) { var newMember = mapObject as Models.Entities.Player; if (newMember != null && newMember.Team == null) { player.Team.PendingInvite = newMember.ClientId; packet.ClientId = player.ClientId; newMember.ClientSocket.Send(packet); } } return(true); }
public static bool HandleDismiss(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team == null) { return(true); } if (!player.Team.IsLeader(player)) { return(true); } if (!player.Alive) { return(true); } player.RemoveStatusFlag(Enums.StatusFlag.TeamLeader); var members = player.Team.Delete(); foreach (var member in members) { member.Team = null; member.ClientSocket.Send(packet); } return(true); }
public static bool HandleLeave(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team == null) { return(true); } if (player.Team.IsLeader(player)) { return(true); } if (player.ClientId != packet.ClientId) { return(true); } Models.Entities.Player removedPlayer; if (player.Team.Remove(packet.ClientId, out removedPlayer)) { foreach (var member in player.Team.GetMembers()) { member.ClientSocket.Send(packet); } player.ClientSocket.Send(packet); player.Team = null; } return(true); }
public static bool HandleAcceptJoin(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team == null) { return(true); } if (!player.Team.IsLeader(player)) { return(true); } Models.Maps.IMapObject mapObject; if (packet.ClientId == player.Team.PendingJoin && player.GetFromScreen(packet.ClientId, out mapObject)) { var newMember = mapObject as Models.Entities.Player; if (newMember != null && newMember.Team == null) { if (player.Team.Add(newMember)) { var newTeamMemberPacket = new Models.Packets.Team.TeamMemberPacket { Name = newMember.Name, ClientId = newMember.ClientId, Mesh = newMember.Mesh, MaxHP = newMember.MaxHP, HP = newMember.HP }; foreach (var member in player.Team.GetMembers()) { if (member.ClientId != newMember.ClientId) { newMember.ClientSocket.Send(new Models.Packets.Team.TeamMemberPacket { Name = member.Name, ClientId = member.ClientId, Mesh = member.Mesh, MaxHP = member.MaxHP, HP = member.HP }); member.ClientSocket.Send(newTeamMemberPacket); } } newMember.ClientSocket.Send(newTeamMemberPacket); packet.ClientId = player.ClientId; newMember.ClientSocket.Send(packet); } } } return(true); }
public static bool HandleRequestJoin(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team != null) { return(true); } Models.Maps.IMapObject mapObject; if (player.GetFromScreen(packet.ClientId, out mapObject)) { var leader = mapObject as Models.Entities.Player; if (leader != null && leader.Team != null && leader.Team.IsLeader(leader)) { leader.Team.PendingJoin = player.ClientId; packet.ClientId = player.ClientId; leader.ClientSocket.Send(packet); } } return(true); }
public static bool HandleCreate(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet) { if (player.Team != null) { return(true); } if (Collections.TeamCollection.Create(player)) { player.ClientSocket.Send(new Models.Packets.Team.TeamActionPacket { ClientId = player.ClientId, Action = Enums.TeamAction.Leader }); player.ClientSocket.Send(new Models.Packets.Team.TeamActionPacket { ClientId = player.ClientId, Action = Enums.TeamAction.Create }); player.AddStatusFlag(Enums.StatusFlag.TeamLeader); } return(true); }