Ejemplo n.º 1
0
 public override void OnTick(SpaRoom room)
 {
     try
     {
         if (room != null)
         {
             room.KickAllPlayer();
             using (PlayerBussiness db = new PlayerBussiness())
             {
                 db.DisposeSpaRoomInfo(room.Spa_Room_Info.RoomID);
             }
             SpaRoomMgr.RemoveSpaRoom(room);
             GSPacketIn pkg = new GSPacketIn(174);
             pkg.WriteInt(room.Spa_Room_Info.RoomID);
             WorldMgr.SpaScene.SendToALL(pkg);
             room.StopTimer();
         }
     }
     catch (Exception ex)
     {
         //if (SpaLogicProcessor.log.IsErrorEnabled)
         {
             SpaLogicProcessor.log.Error("OnTick", ex);
         }
     }
 }
Ejemplo n.º 2
0
 private static void CheckRoomStatus(bool needToCreatePubRoom)
 {
     using (PlayerBussiness db = new PlayerBussiness())
     {
         SpaRoomInfo[] roomInfos = db.GetSpaRoomInfo();
         int           pubGoldRoomCurrentCount   = 0;
         int           pubMoneyRoomsCurrentCount = 0;
         SpaRoomInfo[] array = roomInfos;
         for (int i = 0; i < array.Length; i++)
         {
             SpaRoomInfo roomInfo = array[i];
             if (roomInfo.ServerID == GameServer.Instance.Config.ServerID)
             {
                 int timeLeft;
                 if (roomInfo.AvailTime > 0)
                 {
                     if (roomInfo.RoomType != 1 && roomInfo.RoomType != 2 && DateTime.Compare(roomInfo.BreakTime, roomInfo.BeginTime) > 0)
                     {
                         TimeSpan usedTime = roomInfo.BreakTime - roomInfo.BeginTime;
                         timeLeft = roomInfo.AvailTime - (int)usedTime.TotalMinutes;
                     }
                     else
                     {
                         TimeSpan usedTime = DateTime.Now - roomInfo.BeginTime;
                         timeLeft = roomInfo.AvailTime - (int)usedTime.TotalMinutes;
                     }
                 }
                 else
                 {
                     if (roomInfo.RoomType != 1 && roomInfo.RoomType != 2)
                     {
                         SpaRoomMgr.log.Error(string.Format("SpaRoom ===== Room.ID : {0}, Room.RoomType : {1}, Room.AvailTime : {2}", roomInfo.RoomID, roomInfo.RoomType, roomInfo.AvailTime));
                     }
                     timeLeft = 0;
                 }
                 if (!needToCreatePubRoom)
                 {
                     if (roomInfo.RoomType == 1 || roomInfo.RoomType == 2)
                     {
                         db.DisposeSpaRoomInfo(roomInfo.RoomID);
                         goto IL_21F;
                     }
                 }
                 if (timeLeft >= 0)
                 {
                     if (roomInfo.RoomType == 1)
                     {
                         if (pubGoldRoomCurrentCount < SpaRoomMgr.pubGoldRoomCount)
                         {
                             SpaRoomMgr.CreateSpaRoomFromDB(roomInfo, timeLeft);
                             pubGoldRoomCurrentCount++;
                         }
                     }
                     else
                     {
                         if (roomInfo.RoomType == 2)
                         {
                             if (pubGoldRoomCurrentCount < SpaRoomMgr.pubMoneyRoomCount)
                             {
                                 SpaRoomMgr.CreateSpaRoomFromDB(roomInfo, timeLeft);
                                 pubMoneyRoomsCurrentCount++;
                             }
                         }
                         else
                         {
                             SpaRoomMgr.CreateSpaRoomFromDB(roomInfo, timeLeft);
                         }
                     }
                 }
                 else
                 {
                     db.DisposeSpaRoomInfo(roomInfo.RoomID);
                 }
             }
             IL_21F :;
         }
         if (needToCreatePubRoom)
         {
             if (SpaRoomMgr._PubGoldRooms.Count <KeyValuePair <int, SpaRoom> >() < SpaRoomMgr.pubGoldRoomCount)
             {
                 SpaRoomMgr.CreatePubRoom(1, SpaRoomMgr.pubGoldRoomCount - SpaRoomMgr._PubGoldRooms.Count <KeyValuePair <int, SpaRoom> >());
             }
             if (SpaRoomMgr._PubMoneyRooms.Count <KeyValuePair <int, SpaRoom> >() < SpaRoomMgr.pubMoneyRoomCount)
             {
                 SpaRoomMgr.CreatePubRoom(2, SpaRoomMgr.pubMoneyRoomCount - SpaRoomMgr._PubMoneyRooms.Count <KeyValuePair <int, SpaRoom> >());
             }
         }
     }
 }