public SpaRoom(SpaRoomInfo info, ISpaProcessor processor) { this.Spa_Room_Info = info; this._processor = processor; this._guestsList = new List <GamePlayer>(); this._roomContinueRemindTime = 10; }
private static void CreatePubRoom(int roomType, int roomCount) { for (int i = 0; i < roomCount; i++) { SpaRoom pubRoom = null; SpaRoomMgr._locker.AcquireWriterLock(1000); try { SpaRoomInfo pubRoomInfo = new SpaRoomInfo(); DateTime beginTime = DateTime.Now; pubRoomInfo.AvailTime = 0; pubRoomInfo.BeginTime = beginTime; pubRoomInfo.BreakTime = beginTime; pubRoomInfo.RoomIntroduction = LanguageMgr.GetTranslation("SpaRoom.PubRoomIntroduction", new object[0]); pubRoomInfo.RoomNumber = SpaRoomMgr.FindRoomNumber(); pubRoomInfo.ServerID = GameServer.Instance.Config.ServerID; pubRoomInfo.RoomType = roomType; pubRoomInfo.Pwd = ""; if (roomType == 1) { pubRoomInfo.MaxCount = SpaRoomMgr.pubGoldRoom_MaxCount; pubRoomInfo.RoomName = LanguageMgr.GetTranslation("SpaRoom.PubGoldRoomName", new object[0]); } if (roomType == 2) { pubRoomInfo.MaxCount = SpaRoomMgr.pubMoneyRoom_MaxCount; pubRoomInfo.RoomName = LanguageMgr.GetTranslation("SpaRoom.PubMoneyRoomName", new object[0]); } using (PlayerBussiness db = new PlayerBussiness()) { if (db.InsertSpaPubRoomInfo(pubRoomInfo)) { pubRoom = new SpaRoom(pubRoomInfo, SpaRoomMgr._processor); } } if (pubRoomInfo != null) { SpaRoomMgr._RoomsNum.Add(pubRoom.Spa_Room_Info.RoomID, pubRoom.Spa_Room_Info.RoomNumber); SpaRoomMgr._Rooms.Add(pubRoom.Spa_Room_Info.RoomID, pubRoom); if (roomType == 1) { SpaRoomMgr._PubGoldRooms.Add(pubRoom.Spa_Room_Info.RoomID, pubRoom); } if (roomType == 2) { SpaRoomMgr._PubMoneyRooms.Add(pubRoom.Spa_Room_Info.RoomID, pubRoom); } } } finally { SpaRoomMgr._locker.ReleaseWriterLock(); } if (pubRoom != null) { pubRoom.BeginTimerForPubRoom(); } } }
public static SpaRoom CreateSpaRoom(GamePlayer player, SpaRoomInfo info) { SpaRoom room = null; SpaRoomMgr._locker.AcquireWriterLock(1000); try { DateTime beginTime = DateTime.Now; info.PlayerID = player.PlayerCharacter.ID; info.PlayerName = player.PlayerCharacter.NickName; info.BeginTime = beginTime; info.BreakTime = beginTime; info.ServerID = GameServer.Instance.Config.ServerID; info.RoomNumber = SpaRoomMgr.FindRoomNumber(); using (PlayerBussiness db = new PlayerBussiness()) { if (db.InsertSpaRoomInfo(info)) { room = new SpaRoom(info, SpaRoomMgr._processor); } } if (room != null) { SpaRoomMgr._RoomsNum.Add(room.Spa_Room_Info.RoomID, room.Spa_Room_Info.RoomNumber); SpaRoomMgr._Rooms.Add(room.Spa_Room_Info.RoomID, room); } } finally { SpaRoomMgr._locker.ReleaseWriterLock(); } SpaRoom result; if (room != null) { if (room.AddPlayer(player)) { room.BeginTimer(room.Spa_Room_Info.AvailTime); result = room; return(result); } } result = null; return(result); }
public static SpaRoom CreateSpaRoomFromDB(SpaRoomInfo roomInfo, int timeLeft) { SpaRoomMgr._locker.AcquireWriterLock(1000); SpaRoom result; try { SpaRoom room = new SpaRoom(roomInfo, SpaRoomMgr._processor); if (room != null) { SpaRoomMgr._RoomsNum.Add(room.Spa_Room_Info.RoomID, room.Spa_Room_Info.RoomNumber); if (roomInfo.RoomType == 1) { SpaRoomMgr._PubGoldRooms.Add(room.Spa_Room_Info.RoomID, room); SpaRoomMgr._Rooms.Add(room.Spa_Room_Info.RoomID, room); room.BeginTimerForPubRoom(); result = room; return(result); } if (roomInfo.RoomType == 2) { SpaRoomMgr._PubMoneyRooms.Add(room.Spa_Room_Info.RoomID, room); SpaRoomMgr._Rooms.Add(room.Spa_Room_Info.RoomID, room); room.BeginTimerForPubRoom(); result = room; return(result); } SpaRoomMgr._Rooms.Add(room.Spa_Room_Info.RoomID, room); room.BeginTimer(timeLeft); result = room; return(result); } } finally { SpaRoomMgr._locker.ReleaseWriterLock(); } result = null; return(result); }
public override int HandlePacket(GamePlayer player, GSPacketIn packet) { int result; if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked) { player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); result = 0; } else { if (player.CurrentRoom != null) { player.CurrentRoom.RemovePlayerUnsafe(player); } if (player.CurrentSpaRoom != null) { player.CurrentSpaRoom.RemovePlayer(player); } SpaRoom[] rooms = SpaRoomMgr.GetAllSpaRoom(); if (rooms != null) { if (rooms.Count <SpaRoom>() > 2000) { result = 0; return(result); } } SpaRoomInfo info = new SpaRoomInfo(); info.RoomName = packet.ReadString().Replace(";", ""); info.Pwd = packet.ReadString(); info.RoomIntroduction = packet.ReadString(); info.MaxCount = packet.ReadInt(); info.ServerID = GameServer.Instance.Config.ServerID; info.AvailTime = SpaRoomMgr.priRoomInit_MinLimit; info.RoomType = 3; string[] array = new string[] { "1", "2" }; string[] money = "800,1600".Split(new char[] { ',' }); if (money.Length < 2) { SpaRoomCreateHandler.log.Error("SpaRoomCreateMoney node in configuration file is wrong"); result = 0; } else { int needMoney; if (info.MaxCount == 4) { needMoney = int.Parse(money[0]); } else { if (info.MaxCount == 8) { needMoney = int.Parse(money[1]); } else { needMoney = int.Parse(money[1]); info.MaxCount = 8; } } if (player.PlayerCharacter.Money >= needMoney) { SpaRoom room = SpaRoomMgr.CreateSpaRoom(player, info); if (room != null) { player.RemoveMoney(needMoney, LogMoneyType.Spa, LogMoneyType.Spa_Room_Creat); player.Out.SendSpaRoomInfo(player, room); player.Out.SendSpaRoomLogin(player); room.SendSpaRoomInfoUpdateToSpaScenePlayers(room); CountBussiness.InsertSystemPayCount(player.PlayerCharacter.ID, needMoney, 0, 3, 6); } result = 0; } else { player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("UserFirecrackersCommand.MoneyNotEnough", new object[0])); result = 1; } } } return(result); }
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> >()); } } } }