Tigran 4 vuotta sitten
vanhempi
commit
01c5c1e36f

+ 43 - 0
MafiaTelegramBot/DataBase/Entity/AchievementsEntity.cs

@@ -0,0 +1,43 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace MafiaTelegramBot.DataBase.Entity
+{
+    [Table("achievements")]
+    public class AchievementsEntity
+    {
+        [Key]
+        [DatabaseGenerated(DatabaseGeneratedOption.None)]
+        [Column("player_id"), MaxLength(127)] public long PlayerId { get; init; }
+
+        [Column("doctor_heals"), MaxLength(127)]
+        public int DoctorHeals { get; set; } = 0;
+
+        [Column("cop_dispatches"), MaxLength(127)]
+        public int CopDispatches { get; set; } = 0;
+
+        [Column("mafia_solo_wins"), MaxLength(127)]
+        public int MafiaSoloWins { get; set; } = 0;
+
+        [Column("have_sex_with_don"), MaxLength(127)]
+        public int HaveSexWithDon { get; set; } = 0;
+
+        [Column("games_where_cop_check_only_mafia"), MaxLength(127)]
+        public int GamesWhereCopCheckOnlyMafia { get; set; } = 0;
+
+        [Column("previous_game_win_color"), MaxLength(127)]
+        public int PreviousGameWinColor { get; set; } = 0;
+
+        [Column("not_dispatched_on_second_stage"), MaxLength(127)]
+        public int NotDispatchedOnSecondStage { get; set; } = 0;
+
+        [Column("player_win_team"), MaxLength(127)]
+        public string PlayerWinTeam { get; set; } = "";
+
+        [Column("player_win_team_two"), MaxLength(127)]
+        public string PlayerWinTeamTwo { get; set; } = "";
+
+        [Column("player_win_team_three"), MaxLength(127)]
+        public string PlayerWinTeamThree { get; set; } = "";
+    }
+}

+ 26 - 0
MafiaTelegramBot/DataBase/EntityDao/AchievementsDao.cs

@@ -0,0 +1,26 @@
+using System.Linq;
+using System.Threading.Tasks;
+using MafiaTelegramBot.DataBase.Entity;
+using Microsoft.EntityFrameworkCore;
+
+namespace MafiaTelegramBot.DataBase.EntityDao
+{
+    public class AchievementsDao
+    {
+        private static readonly MafiaDataBase DataBase = MafiaDataBase.GetInstance();
+
+        public static async Task<AchievementsEntity> GetAchievementsProgressById(long id)
+        {
+            if (await UserDataExists(id))
+                return await Task.Run(() => DataBase.Achievements.First(entity => entity.PlayerId == id));
+            await DataBase.Achievements.AddAsync(new AchievementsEntity {PlayerId = id});
+            await DataBase.SaveChangesAsync();
+            return await Task.Run(()=> DataBase.Achievements.First(entity => entity.PlayerId == id));
+        }
+
+        private static async Task<bool> UserDataExists(long id)
+        {
+            return await DataBase.OpenedRoles.AnyAsync(entity => entity.Id == id);
+        }
+    }
+}

+ 1 - 0
MafiaTelegramBot/DataBase/EntityDao/UserDao.cs

@@ -19,6 +19,7 @@ namespace MafiaTelegramBot.DataBase.EntityDao
             var user = await Task.Run(()=> DataBase.Users.First(user1 => user1.Id == id));
             var player = Player.FromUserEntity(user);
             player.OpenedRoles = await OpenedRolesDao.GetOpenedRolesById(id);
+            player.Achievements = await AchievementsDao.GetAchievementsProgressById(id);
             ActiveUsers.Add(user.Id, player);
             ActiveUsers[user.Id].SetTimer();
             return player;

+ 1 - 0
MafiaTelegramBot/DataBase/MafiaDataBase.cs

@@ -23,6 +23,7 @@ namespace MafiaTelegramBot.DataBase
         public DbSet<UserEntity> Users { get; set; }
         public DbSet<StatisticsEntity> Statistics { get; set; }
         public DbSet<OpenedRolesEntity> OpenedRoles { get; set; }
+        public DbSet<AchievementsEntity> Achievements { get; set; }
 
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
         {

+ 56 - 0
MafiaTelegramBot/Game/Player.cs

@@ -30,6 +30,7 @@ namespace MafiaTelegramBot.Game
 
         public readonly StatisticsList Statistics = new();
         public OpenedRolesEntity OpenedRoles = new();
+        public AchievementsEntity Achievements = new();
 
         public async Task<bool> LoadStatistics()
         {
@@ -139,5 +140,60 @@ namespace MafiaTelegramBot.Game
             CanBeBlockedDay = true;
             CanBeBlockedNight = true;
         }
+
+        public void BodyguardRoleAchievementEvent()
+        {
+            Task.Run(() =>
+            {
+                if (!OpenedRoles.Bodyguard)
+                {
+                    
+                } 
+            });
+        }
+
+        public void NecromancerRoleAchievementEvent()
+        {
+            Task.Run(() =>
+            {
+                if (!OpenedRoles.Necromancer)
+                {
+                    
+                } 
+            });
+        }
+
+        public void FoolRoleAchievementEvent()
+        {
+            Task.Run(() =>
+            {
+                if (!OpenedRoles.Fool)
+                {
+                    
+                } 
+            });
+        }
+
+        public void LawyerRoleAchievementEvent()
+        {
+            Task.Run(() =>
+            {
+                if (!OpenedRoles.Lawyer)
+                {
+                    
+                } 
+            });
+        }
+
+        public void ParasiteRoleAchievementEvent()
+        {
+            Task.Run(() =>
+            {
+                if (!OpenedRoles.Parasite)
+                {
+                    
+                } 
+            });
+        }
     }
 }