Exemplo n.º 1
0
        /// <summary>
        /// Adds a member to the guild.
        /// </summary>
        /// <param name="player">The player.</param>
        /// <param name="rank">The starting rank.</param>
        /// <param name="update">A boolean determining whether the client of the player should be updated.</param>
        public void AddMember(Models.Entities.Player player, Enums.GuildRank rank, bool update = true)
        {
            var guildMember = new GuildMember(new Database.Models.DbGuildRank
            {
                GuildId        = Guild.Id,
                PlayerId       = player.DbPlayer.Id,
                PlayerName     = player.Name,
                PlayerLevel    = player.Level,
                SilverDonation = 0,
                CPDonation     = 0,
                GuildRank      = rank.ToString(),
                JoinDate       = Drivers.Time.GetTime(Drivers.Time.TimeType.Day)
            });

            if (guildMember.DbGuildRank.Create() && _members.TryAdd(player.DbPlayer.Id, guildMember))
            {
                player.AddActionLog("JoinGuild", Guild.Id);

                guildMember.Player = player;
                player.Guild       = Guild;
                player.GuildMember = guildMember;

                if (rank == Enums.GuildRank.GuildLeader)
                {
                    Guild.GuildLeader = guildMember;
                }

                if (update)
                {
                    player.UpdateClientGuild();
                    player.UpdateScreen(true);
                }
            }

            _cachedSortedMembers = null;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Promotes/Unpromotes a member.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <param name="promotionRank">The promotion rank. Member for unpromote.</param>
        /// <returns>True if the promotion or unpromotion was a success.</returns>
        public bool Promote(GuildMember member, Enums.GuildRank promotionRank)
        {
            if (promotionRank == Enums.GuildRank.None)
            {
                return(false);
            }

            if (promotionRank == Enums.GuildRank.DeputyLeader && _members.Values.Count(m => m.Rank == Enums.GuildRank.DeputyLeader) >= 5)
            {
                return(false);
            }

            var oldRank = member.Rank;

            member.Rank = promotionRank;
            member.DbGuildRank.Update();

            if (member.Online)
            {
                member.Player.UpdateClientGuild();
                member.Player.UpdateScreen(true);
            }

            if (promotionRank == Enums.GuildRank.Member)
            {
                if (member.Player != null)
                {
                    if (oldRank == Enums.GuildRank.DeputyLeader)
                    {
                        SendMessageFormat("REMOVED_DEPUTY_LEADER", Enums.GuildMessageType.Red, member.Player.Name);
                    }
                    else
                    {
                        SendMessageFormat("UNPROMOTED_MEMBER", Enums.GuildMessageType.Red, member.Player.Name, oldRank.ToString());
                    }
                }
            }
            else
            {
                if (member.Player != null)
                {
                    if (promotionRank == Enums.GuildRank.DeputyLeader)
                    {
                        SendMessageFormat("NEW_DEPUTY_LEADER", Enums.GuildMessageType.Green, member.Player.Name);
                    }
                    else
                    {
                        SendMessageFormat("PROMOTED_MEMBER", Enums.GuildMessageType.Green, member.Player.Name, promotionRank.ToString());
                    }
                }
            }

            _cachedSortedMembers = null;
            return(true);
        }