public PartyJoinResult JoinParty(User user, string code) { var result = new PartyJoinResult(); var party = _parties.FirstOrDefault(p => p.Code.ToLower() == code.ToLower()); if (party == null) { result.Success = false; return(result); } result.Success = true; result.Songs = party.Songs; result.Users = party.Users; result.Status = party.LatestStatus; var existingUser = party.Users.FirstOrDefault(u => u.TwitterId == user.TwitterId); if (existingUser != null) { existingUser.ConnectionId = Context.ConnectionId; } else { user.ConnectionId = Context.ConnectionId; party.Users.Add(user); } Clients.Clients(party.Users.Where(u => u.TwitterId != user.TwitterId).Select(u => u.ConnectionId).ToList()).UserAddedToParty(user); return(result); }
/// <summary> /// Sends the correct response to the client sending a party join request, /// and success grants full party information. /// </summary> /// <remarks> /// This is also sent when changing channel whilst in a party, /// upon reaching the new channel. /// </remarks> /// <param name="creature"></param> /// <param name="result"></param> public static void PartyJoinR(Creature creature, PartyJoinResult result) { var packet = new Packet(Op.PartyJoinR, creature.EntityId); packet.PutByte((byte)result); if (result == PartyJoinResult.Success) packet.AddParty(creature.Party); creature.Client.Send(packet); }
/// <summary> /// Sends the correct response to the client sending a party join request, /// and success grants full party information. /// </summary> /// <remarks> /// This is also sent when changing channel whilst in a party, /// upon reaching the new channel. /// </remarks> /// <param name="creature"></param> /// <param name="result"></param> public static void PartyJoinR(Creature creature, PartyJoinResult result) { var packet = new Packet(Op.PartyJoinR, creature.EntityId); packet.PutByte((byte)result); if (result == PartyJoinResult.Success) { packet.AddParty(creature.Party); } creature.Client.Send(packet); }