예제 #1
0
        // Me (GameRoom) -> You (Db) -> Me (GameRoom)
        public static void SavePlayerStatus_AllInOne(Player player, GameRoom room)
        {
            if (player == null || room == null)
            {
                return;
            }

            // Me (GameRoom)
            PlayerDb playerDb = new PlayerDb();

            playerDb.PlayerDbId = player.PlayerDbId;
            playerDb.Hp         = player.Stat.Hp;

            // You
            Instance.Push(() =>
            {
                using (AppDbContext db = new AppDbContext())
                {
                    db.Entry(playerDb).State = EntityState.Unchanged;
                    db.Entry(playerDb).Property(nameof(PlayerDb.Hp)).IsModified = true;
                    bool success = db.SaveChangesEx();
                    if (success)
                    {
                        // Me
                        //room.Push(() => Console.WriteLine($"Hp Saved({playerDb.Hp})"));
                    }
                }
            });
        }
예제 #2
0
 // You (Db)
 public static void SavePlayerStatus_Step2(PlayerDb playerDb, GameRoom room)
 {
     using (AppDbContext db = new AppDbContext())
     {
         db.Entry(playerDb).State = EntityState.Unchanged;
         db.Entry(playerDb).Property(nameof(PlayerDb.Hp)).IsModified = true;
         bool success = db.SaveChangesEx();
         if (success)
         {
             room.Push(SavePlayerStatus_Step3, playerDb.Hp);
         }
     }
 }
예제 #3
0
        public static void SavePlayerStatus_Step1(Player player, GameRoom room)
        {
            if (player == null || room == null)
            {
                return;
            }

            PlayerDb playerDb = new PlayerDb();

            playerDb.PlayerDbId = player.PlayerDbId;
            playerDb.Hp         = player.Stat.Hp;
            Instance.Push <PlayerDb, GameRoom>(SavePlayerStatus_Step2, playerDb, room);
        }