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); } } }
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> >()); } } } }