예제 #1
0
        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);
        }
예제 #2
0
		/// <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);

		}
예제 #3
0
        /// <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);
        }