예제 #1
0
        public async Task OpenWorld(string serverName)
        {
            IUser  user = Context.User;
            Player plr  = _storage.Players.Find(x => x.DiscordId == user.Id);

            if (plr is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false);

                return;
            }
            Team team = _storage.Teams.Find(x => x.Id == plr.TeamId);

            if (team is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false);

                return;
            }
            if (team.MinutesRemaining <= 0)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.TeamNoTimeLeft(team)).ConfigureAwait(false);

                return;
            }
            if (!string.IsNullOrEmpty(team.OpenMap))
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.MapAlreadyOpen(team)).ConfigureAwait(false);

                return;
            }

            if (ValidateWorldExists(serverName))
            {
                StatusClass server = Globals.Servers.Find(x => x.Name == serverName);
                server.WhiteListTeam(team);
                team.OpenMap = server.MapName;
            }

            await Context.Channel.SendMessageAsync("", false, Embeds.TeamOpenedWorld(team)).ConfigureAwait(false);

            await _commands.UpdateHoursRemaining(Embeds.TeamCurrency(_storage.Teams));
        }
        private async Task CheckExternalHours()
        {
            _storage.Teams.ForEach(async x =>
            {
                if (!string.IsNullOrEmpty(x.OpenMap))
                {
                    x.MinutesRemaining--;

                    if (x.MinutesRemaining == 30.0d || x.MinutesRemaining == 15.0d || x.MinutesRemaining == 0.0d)
                    {
                        await _commands.SendMinutesRemaining(x).ConfigureAwait(false);
                    }
                }
            });
            _storage.Save();

            await _commands.UpdateHoursRemaining(Embeds.TeamCurrency(_storage.Teams)).ConfigureAwait(false);
        }