Example #1
0
        public async Task AddStat(string name, double value, ulong PlanetId, PopeAIDB Context)
        {
            CurrentStat current = await Context.CurrentStats.FirstOrDefaultAsync(x => x.PlanetId == PlanetId);

            if (current == null)
            {
                CurrentStat newstat = new CurrentStat();
                newstat.PlanetId          = PlanetId;
                newstat.NewCoins          = 0;
                newstat.MessagesSent      = 0;
                newstat.MessagesUsersSent = 0;
                newstat.LastStatUpdate    = DateTime.UtcNow;
                await Context.CurrentStats.AddAsync(newstat);

                await Context.SaveChangesAsync();

                current = await Context.CurrentStats.FirstAsync(x => x.PlanetId == PlanetId);
            }
            switch (name)
            {
            case "Coins":
                current.NewCoins += value;
                break;

            case "UserMessage":
                current.MessagesUsersSent += (ulong)value;
                break;

            case "Message":
                current.MessagesSent += (ulong)value;
                break;
            }
            await Context.SaveChangesAsync();
        }
Example #2
0
        public async Task UpdateRoleIncomes(List <Planet> planets, bool force, PopeAIDB Context)
        {
            RoleIncomes first = await Context.RoleIncomes.FirstOrDefaultAsync();

            if (first == null)
            {
                first             = new RoleIncomes();
                first.LastPaidOut = DateTime.UtcNow;
                first.RoleId      = 0;
            }
            if (DateTime.UtcNow > first.LastPaidOut.AddHours(1) || first.RoleId == 0 || force)
            {
                List <PlanetMemberInfo>         memberinfo        = new List <PlanetMemberInfo>();
                Dictionary <ulong, RoleIncomes> RoleIncomeRoleIds = new Dictionary <ulong, RoleIncomes>();
                List <ulong> PlanetIds = new List <ulong>();
                foreach (RoleIncomes roleincome in Context.RoleIncomes)
                {
                    RoleIncomeRoleIds.Add(roleincome.RoleId, roleincome);
                    roleincome.LastPaidOut = DateTime.UtcNow;
                    if (PlanetIds.Contains(roleincome.PlanetId) == false)
                    {
                        PlanetIds.Add(roleincome.PlanetId);
                    }
                }
                foreach (ulong planetid in PlanetIds)
                {
                    CurrentStat current = await Context.CurrentStats.FirstOrDefaultAsync(x => x.PlanetId == planetid);

                    foreach (PlanetMember member in await(await Cache.GetPlanet(planetid)).GetMembers())
                    {
                        foreach (ulong roleid in member.RoleIds)
                        {
                            if (RoleIncomeRoleIds.ContainsKey(roleid))
                            {
                                RoleIncomes roleincome = RoleIncomeRoleIds[roleid];
                                (await Context.Users.FirstOrDefaultAsync(x => x.UserId == member.User_Id && x.PlanetId == member.Planet_Id)).Coins += roleincome.Income;
                                current.NewCoins += roleincome.Income;
                            }
                        }
                    }
                }
            }
            await Context.SaveChangesAsync();
        }
Example #3
0
        public async Task UpdateStats(PopeAIDB Context)
        {
            CurrentStat first = await Context.CurrentStats.FirstOrDefaultAsync();

            if (first == null)
            {
                first = new CurrentStat();
                first.LastStatUpdate = DateTime.UtcNow;
            }
            if (Context.CurrentStats.Count() == 0)
            {
                return;
            }
            Random rnd = new Random();

            if (DateTime.UtcNow > first.LastStatUpdate.AddHours(1))
            {
                foreach (CurrentStat currentstat in Context.CurrentStats)
                {
                    Stat newstat = new Stat();
                    newstat.Time              = DateTime.UtcNow;
                    newstat.NewCoins          = currentstat.NewCoins;
                    newstat.MessagesSent      = currentstat.MessagesSent;
                    newstat.PlanetId          = currentstat.PlanetId;
                    newstat.MessagesUsersSent = currentstat.MessagesUsersSent;
                    ulong num = (ulong)rnd.Next(1, int.MaxValue);
                    while (await Context.Stats.FirstOrDefaultAsync(x => x.Id == num) != null)
                    {
                        num = (ulong)rnd.Next(1, int.MaxValue);
                    }
                    newstat.Id = num;
                    await Context.Stats.AddAsync(newstat);

                    currentstat.NewCoins          = 0;
                    currentstat.MessagesSent      = 0;
                    currentstat.MessagesUsersSent = 0;
                    currentstat.LastStatUpdate    = DateTime.UtcNow;
                }
            }
            await Context.SaveChangesAsync();
        }
 public FootballPlay()
 {
     CurrentStats = new CurrentStat();
     SeasonStats  = new SeasonStat();
     CareerStats  = new CareerStat();
 }