Exemplo n.º 1
0
 public SpaRoom(SpaRoomInfo info, ISpaProcessor processor)
 {
     this.Spa_Room_Info           = info;
     this._processor              = processor;
     this._guestsList             = new List <GamePlayer>();
     this._roomContinueRemindTime = 10;
 }
Exemplo n.º 2
0
 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();
         }
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
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> >());
             }
         }
     }
 }