Exemplo n.º 1
0
        public void SaveChanges()
        {
            Dictionary <int, string> colors = new Dictionary <int, string>();

            var scope = Program.host.Services.CreateScope();

            db = scope.ServiceProvider.GetService <HexaceContext>();
            db.Database.OpenConnection();

            foreach (var item in db.Fractions)
            {
                colors.Add(item.Id, item.Color);
            }
            foreach (var cell in Cells)
            {
                var updateCell = db.FieldCells.First(c => c.X == cell.x && c.Y == cell.y);
                if (cell.colorDef == null)
                {
                    updateCell.FractionDefId = null;
                }
                else
                {
                    updateCell.FractionDefId = colors.First(c => c.Value == cell.colorDef).Key;
                }

                updateCell.FractionAttackId = null;
                updateCell.IsFilled         = cell.isFilled;
                updateCell.IsStroked        = false;
            }
            db.SaveChanges();
        }
Exemplo n.º 2
0
        public FractionStats(HexaceContext context)
        {
            db = context;

            FractionInfo = new Dictionary <string, FractionScore>();

            Dictionary <string, int> fractions = new Dictionary <string, int>()
            {
                { "Turquoise", 1 }, { "Burgundy", 2 }, { "Purple", 3 }
            };
            DateTime maxDate = new DateTime(1);


            foreach (var fractionName in fractions)
            {
                FractionInfo.Add(fractionName.Key, null);
                FractionScore score = null;
                foreach (var item in db.FractionScores)
                {
                    if (item.FractionId == fractionName.Value && item.ScoreDatetime >= maxDate)
                    {
                        maxDate = item.ScoreDatetime;
                        score   = item;
                    }
                }

                FractionInfo[fractionName.Key] = score;
            }
        }
Exemplo n.º 3
0
        public Timer(HexaceContext context)
        {
            db = context;

            UsersLastClicks = new Dictionary <int, double>();
            Users           = new List <User>(db.Users.ToList());
            foreach (var user in Users)
            {
                UsersLastClicks.Add(user.Id, Math.Floor(DateTime.UtcNow
                                                        .Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc))
                                                        .TotalMilliseconds));
            }
        }
Exemplo n.º 4
0
        public async void UpdateMessages()
        {
            var scope = Program.host.Services.CreateScope();

            db = scope.ServiceProvider.GetService <HexaceContext>();
            //db.Database.OpenConnection();
            for (int i = 1; i < 4; i++)
            {
                foreach (var message in Chats[i])
                {
                    if (message.Id == 0)
                    {
                        db.ChatMessages.Add(message);
                        await db.SaveChangesAsync();
                    }
                }
            }
        }
Exemplo n.º 5
0
        public Chat(HexaceContext context)
        {
            db = context;

            Chats = new Dictionary <int, List <ChatMessage> >();
            Users = new List <User>(db.Users.ToList());

            for (int i = 1; i < 4; i++)
            {
                var fracChat = db.ChatMessages.Where(x => x.FractionId == i);
                var messages = new List <ChatMessage>();
                foreach (var item in fracChat)
                {
                    messages.Add(item);
                }
                Chats.Add(i, messages);
            }
        }
Exemplo n.º 6
0
 public GameModel(HexaceContext context)
 {
     db    = context;
     Cells = new List <ObjectCell>();
     foreach (var cell in db.FieldCells.ToList())
     {
         string colorDef;
         if (cell.FractionDefId == 4)
         {
             colorDef = null;
         }
         else
         {
             colorDef = cell.IsFilled ? db.Fractions.First(x => x.Id == cell.FractionDefId).Color : null;
         }
         cell.IsStroked        = false;
         cell.FractionAttackId = null;
         Cells.Add(new ObjectCell(cell.X, cell.Y, cell.IsFilled, cell.IsStroked, null, colorDef));
     }
 }
Exemplo n.º 7
0
        public async void UpdateStats()
        {
            var scope = Program.host.Services.CreateScope();

            db = scope.ServiceProvider.GetService <HexaceContext>();
            foreach (var item in FractionInfo.Values)
            {
                db.Database.OpenConnection();
                item.ScoreDatetime = DateTime.Now;
                db.FractionScores.Add(new FractionScore
                {
                    AttackAttempts     = item.AttackAttempts,
                    DefenseAttempts    = item.DefenseAttempts,
                    FractionId         = item.FractionId,
                    HexesUnderControl  = item.HexesUnderControl,
                    Score              = item.Score,
                    SeasonId           = item.SeasonId,
                    SuccessfulAttacks  = item.SuccessfulAttacks,
                    SuccessfulDefences = item.SuccessfulDefences,
                    ScoreDatetime      = DateTime.Now
                });
            }
            await db.SaveChangesAsync();
        }
Exemplo n.º 8
0
 public ProfileController(HexaceContext context)
 {
     db = context;
 }
Exemplo n.º 9
0
        public static void CheckForAchievements(int userId, HexaceContext context)
        {
            var userAchievements   = context.UsersAchievements.Where(ua => ua.UserId == userId);
            var lockedAchievements = new List <Achievement>();

            foreach (var item in context.Achievements.ToList())
            {
                var isLocked = true;
                foreach (var userAchievement in userAchievements)
                {
                    if (item.Id == userAchievement.Id)
                    {
                        isLocked = false;
                    }
                }

                if (isLocked)
                {
                    lockedAchievements.Add(item);
                }
            }

            foreach (var item in lockedAchievements)
            {
                switch (item.AchievementName.TrimEnd())
                {
                case "Attacker I":
                    if (context.Profiles.First(p => p.UserId == userId).SuccessfulAttacks >= 5)
                    {
                        context.UsersAchievements.Add(new UserAchievement
                        {
                            AchievementGotDatetime = DateTime.Now, AchievementId = item.Id, UserId = userId
                        });
                    }
                    break;

                case "Attacker II":
                    if (context.Profiles.First(p => p.UserId == userId).SuccessfulAttacks >= 50)
                    {
                        context.UsersAchievements.Add(new UserAchievement
                        {
                            AchievementGotDatetime = DateTime.Now,
                            AchievementId          = item.Id,
                            UserId = userId
                        });
                    }
                    break;

                case "Attacker III":
                    if (context.Profiles.First(p => p.UserId == userId).SuccessfulAttacks >= 100)
                    {
                        context.UsersAchievements.Add(new UserAchievement
                        {
                            AchievementGotDatetime = DateTime.Now,
                            AchievementId          = item.Id,
                            UserId = userId
                        });
                    }
                    break;

                case "Defender I":
                    if (context.Profiles.First(p => p.UserId == userId).SuccessfulDefences >= 10)
                    {
                        context.UsersAchievements.Add(new UserAchievement
                        {
                            AchievementGotDatetime = DateTime.Now,
                            AchievementId          = item.Id,
                            UserId = userId
                        });
                    }
                    break;

                case "Defender II":
                    if (context.Profiles.First(p => p.UserId == userId).SuccessfulDefences >= 100)
                    {
                        context.UsersAchievements.Add(new UserAchievement
                        {
                            AchievementGotDatetime = DateTime.Now,
                            AchievementId          = item.Id,
                            UserId = userId
                        });
                    }
                    break;

                case "Defender III":
                    if (context.Profiles.First(p => p.UserId == userId).SuccessfulDefences >= 1000)
                    {
                        context.UsersAchievements.Add(new UserAchievement
                        {
                            AchievementGotDatetime = DateTime.Now,
                            AchievementId          = item.Id,
                            UserId = userId
                        });
                    }
                    break;

                case "Long-liver":
                    if (DateTime.Now.Subtract(context.Users.First(p => p.Id == userId).RegistrationDate).TotalDays >
                        365)
                    {
                        context.UsersAchievements.Add(new UserAchievement
                        {
                            AchievementGotDatetime = DateTime.Now,
                            AchievementId          = item.Id,
                            UserId = userId
                        });
                    }
                    break;
                }
            }

            context.SaveChangesAsync();
        }
 public LeaderboardController(HexaceContext context)
 {
     db = context;
 }
Exemplo n.º 11
0
 public HomeController(HexaceContext context)
 {
     db = context;
 }