Exemplo n.º 1
0
    private void EstablishClub(Player player)
    {
        if (IsEstablished)
        {
            // player joins normally
            AcceptInvite(player);
            return;
        }

        if (Members.Any(x => x.InviteResponse == ClubInviteResponse.Pending))
        {
            return;
        }

        IsEstablished = true;
        DatabaseManager.Clubs.Update(this);

        foreach (ClubMember member in Members)
        {
            if (member.InviteResponse != ClubInviteResponse.Accept)
            {
                continue;
            }

            if (member.Player.CharacterId == LeaderCharacterId)
            {
                member?.Player.Session?.Send(ClubPacket.Join(member.Player.Name, this));
                member?.Player.Session?.Send(ClubPacket.Establish(this));
            }
            member?.Player.Session?.Send(ClubPacket.ClubProposalInviteResponse(Id, ClubInviteResponse.Accept, member.Player.Name));
        }
    }
Exemplo n.º 2
0
    public void InvitedPlayerResponse(Player player, ClubInviteResponse inviteResponse)
    {
        if (!Members.Any(x => x.Player.CharacterId == player.CharacterId))
        {
            return;
        }

        ClubMember member = player.ClubMembers.FirstOrDefault(x => x.ClubId == Id);

        member.InviteResponse = inviteResponse;

        if (inviteResponse == ClubInviteResponse.Reject)
        {
            List <GameSession> memberSessions = GetSessions();
            foreach (GameSession session in memberSessions)
            {
                session.Send(ClubPacket.ClubProposalInviteResponse(Id, inviteResponse, player.Name));
                session.Send(ClubPacket.DeleteUnestablishedClub(Id));
                ClubMember membership = session.Player.ClubMembers.First(x => x.ClubId == Id);
                session.Player.ClubMembers.Remove(membership);
                session.Player.Clubs.Remove(this);
            }

            GameServer.ClubManager.RemoveClub(this);
            return;
        }
        EstablishClub(player);
    }