예제 #1
0
 public Room(string name = "", int capacity = 0, RoomStatus roomAvailability = RoomStatus.NONBOOKED)
 {
     this.Name             = name;
     this.Capacity         = capacity;
     this.RoomAvailability = roomAvailability;
     this.BookedDays       = new List <DateLocation>();
 }
예제 #2
0
        public RoomStatus ReadSingle(int id)
        {
            var roomStatus = new RoomStatus();

            using (var conn = new SqlConnection(connectionString))
            {
                var cmd = new SqlCommand();
                cmd.Connection = conn;

                cmd.CommandText = $"SELECT * FROM RoomStatuses WHERE Id = {id}";

                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }

                using (var dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        var rst = new RoomStatus
                        {
                            Id     = dr.GetInt32("Id"),
                            Status = dr.GetString("RoomStatus"),
                        };
                        roomStatus = rst;
                    }
                }
            }
            return(roomStatus);
        }
예제 #3
0
        internal IRoom CreateRoom(string id, string roomNum, RoomType rType, RoomStatus rStatus)
        {
            connect();

            SQLiteCommand cmd = new SQLiteCommand("INSERT INTO Room VALUES (@ROOMID,@ROOMNUM,@RTYPE,@RSTATUS)", sqlCon);

            cmd.Parameters.AddWithValue("@ROOMID", id);
            cmd.Parameters.AddWithValue("@ROOMNUM", roomNum);
            cmd.Parameters.AddWithValue("@RTYPE", rType.ToString());
            cmd.Parameters.AddWithValue("@RSTATUS", rStatus.ToString());

            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception("Returning IRoom Failed!\n" + ex.Message);
            }
            finally
            {
                disconnect();
            }
            return(GetRoom(id));
        }
예제 #4
0
    /// <summary>
    /// 需先自行判斷房間是否存在,若不存在會報錯
    /// </summary>
    protected virtual void AddToRoom(string roomName, Socket socket, RoomStatus roomStatus)
    {
        if (!roomSocketDict.ContainsKey(roomName))
        {
            return;
        }

        if (roomSocketDict[roomName].Count >= maxClient)                // 房間已滿
        {
            SendCommand(socket, ReciveRoomStatusCode, ((int)RoomStatus.RoomFulled).ToString());
            return;
        }

        string oldRoom;

        if (socketRoomDict.TryGetValue(socket, out oldRoom))                        // 這個連線者已經在其它房間
        {
            if (oldRoom != roomName)
            {
                roomSocketDict[oldRoom].Remove(socket);                                         // 將他換過來
                if (roomSocketDict[oldRoom].Count == 0)
                {
                    roomSocketDict.Remove(oldRoom);
                }
            }
        }
        roomSocketDict[roomName].Add(socket);                                    // 加入此房間
        socketRoomDict[socket] = roomName;
        SendCommand(socket, ReciveRoomStatusCode, ((int)roomStatus).ToString()); // 回傳房間狀態
    }
예제 #5
0
    IEnumerator AsynchExecute()
    {
        string          roomId  = MyRoom.id;
        UnityWebRequest request = new UnityWebRequest("http://" + Env.lobbyApiHost + "/rooms/" + roomId + "/guest/self", "DELETE");

        request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer();

        request.SetRequestHeader("Authorization", "Bearer " + TokenContainer.content.access_token);
        yield return(request.SendWebRequest());

        if (request.isHttpError && request.responseCode > 500)
        {
            ErrorTxt.text = request.downloadHandler.text;
        }
        else if (request.isNetworkError)
        {
            ErrorTxt.text = "Network error.";
        }
        else if (request.responseCode != 200)
        {
            ErrorTxt.text = "Not left. code=" + request.responseCode;
        }
        else
        {
            ErrorTxt.text = "";
            NewRoomPanel.gameObject.SetActive(true);
            JoinedRoomPanel.gameObject.SetActive(false);
            RoomStatus.SetStatus(RoomStatus.FREE);
        }
    }
예제 #6
0
 public Room(int number, string name, RoomStatus status, bool smokingAllowed)
 {
     Number         = number;
     Name           = name;
     Status         = status;
     SmokingAllowed = smokingAllowed;
 }
예제 #7
0
    public void FinishedPlayInRoom()
    {
        foreach (vertex door in OpenedDoors)
        {
            DoorControl dc = door.gameObject.GetComponent <DoorControl>();
            dc.OpenTheDoor();
        }
        isPlayingInRoom = false;

        if (status == RoomStatus.bossRoom)
        {
            randomFrom.WrapGateToTheNextLevel.gameObject.transform.position = new Vector3(
                transform.position.x - 2.5f,
                transform.position.y,
                transform.position.z - 2.5f
                );

            randomFrom.WrapGateToTheNextLevel.gameObject.SetActive(true);
            GameManagerPC.Instance.TriggerWhenStateClear();
        }


        afterFinisedRoom.Invoke();
        status = RoomStatus.clearedRoom;
        allEnemyInRoom.Clear();
        // if(randomFrom.OnAllRoomClear()){
        //     randomFrom.WrapGateToTheNextLevel.gameObject.SetActive(true);
        //     randomFrom.WrapGateToTheNextLevel.gameObject.transform.position = transform.position;
        // }
    }
예제 #8
0
        public Room(RoomStatus r)
        {
            status = r;
            c      = Color.green;
            switch (status)
            {
            case (RoomStatus.NONE): {
                c = Color.green;
                break;
            }

            case (RoomStatus.DESTROYED): {
                c = Color.red;
                break;
            }

            case (RoomStatus.IRRADIATED): {
                c = Color.yellow;
                break;
            }

            case (RoomStatus.VACUUM): {
                c = Color.cyan;
                break;
            }
            }
            comp = DrawTest.CompNames[Random.Range(0, 3)];

            DrawTest.Rooms.Add(this);
        }
        /// <summary>
        /// Maps the Protobuf model to the internal class
        /// </summary>
        /// <param name="userModel"></param>
        public GameConfigurationMapper(GameConfiguration gameConfiguration)
        {
            Id         = gameConfiguration.Id;
            RoomStatus = gameConfiguration.RoomStatus;
            Creator    = gameConfiguration.Creator;

            SpecialistConfiguration = gameConfiguration.GameSettings.AllowedSpecialists.Select(it => new SpecialistConfigurationMapper(it)).ToList();
            MinutesPerTick          = gameConfiguration.GameSettings.MinutesPerTick;
            Goal        = gameConfiguration.GameSettings.Goal;
            isRanked    = gameConfiguration.GameSettings.IsRanked;
            isAnonymous = gameConfiguration.GameSettings.Anonymous;
            MaxPlayers  = gameConfiguration.GameSettings.MaxPlayers;

            Seed = gameConfiguration?.MapConfiguration?.Seed ?? new Random().Next();
            OutpostsPerPlayer      = gameConfiguration.MapConfiguration.OutpostsPerPlayer;
            MinimumOutpostDistance = gameConfiguration.MapConfiguration.MinimumOutpostDistance;
            MaximumOutpostDistance = gameConfiguration.MapConfiguration.MaximumOutpostDistance;
            DormantsPerPlayer      = gameConfiguration.MapConfiguration.DormantsPerPlayer;
            GeneratorWeight        = gameConfiguration.MapConfiguration.OutpostDistribution.GeneratorWeight;
            FactoryWeight          = gameConfiguration.MapConfiguration.OutpostDistribution.FactoryWeight;
            WatchtowerWeight       = gameConfiguration.MapConfiguration.OutpostDistribution.WatchtowerWeight;

            RoomName        = gameConfiguration.RoomName;
            UnixTimeCreated = gameConfiguration.UnixTimeCreated;
            UnixTimeStarted = gameConfiguration.UnixTimeStarted;
            PlayersInGame   = gameConfiguration.Players.ToList();
        }
예제 #10
0
        public void EnterPrivateRoom(string roomName, bool host)
        {
            if (PhotonNetwork.InRoom)
            {
                m_joinedLobby = () =>
                {
                    m_roomStatus = RoomStatus.PRIVATE;

                    if (host)
                    {
                        CreateRoom(roomName);
                    }
                    else
                    {
                        JoinRoom(roomName);
                    }
                };
                PhotonNetwork.LeaveRoom();
            }
            else
            {
                m_roomStatus = RoomStatus.PRIVATE;

                if (host)
                {
                    CreateRoom(roomName);
                }
                else
                {
                    JoinRoom(roomName);
                }
            }
        }
예제 #11
0
        private void luuButton_Click(object sender, EventArgs e)
        {
            if (!IsDataValid())
            {
                return;
            }

            int        intRoomId  = Convert.ToInt32(danhSachPhongGridView.SelectedCells[0].Value);
            int        RoomCode   = Convert.ToInt32(soPhongTextBox.Text.Trim());
            RoomType   RoomType   = (RoomType)loaiPhongComboBox.SelectedItem;
            RoomStatus RoomStatus = (RoomStatus)Enum.Parse(typeof(RoomStatus), tinhTrangPhongComboBox.Text);

            Room Room = RoomRepo.Get(intRoomId);

            if (Room != null)
            {
                Room.RoomCode   = RoomCode;
                Room.RoomType   = RoomType;
                Room.RoomStatus = RoomStatus;
                try
                {
                    RoomRepo.Update(Room);
                    LoadData();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                };
            }
        }
예제 #12
0
 public Room(int roomNumber, int capacity, String beds, RoomStatus status = RoomStatus.NoNeeds)
 {
     this.roomNumber = roomNumber;
     this.capacity   = capacity;
     this.beds       = beds;
     this.status     = status;
 }
예제 #13
0
 public Room()
 {
     this.roomNumber = 0;
     this.capacity   = 0;
     this.beds       = "";
     this.status     = RoomStatus.NoNeeds;
 }
예제 #14
0
        public RoomStatus UpdateRoomStatus(int id, RoomStatus roomStatus)
        {
            if (IsRoomStatusExist(id) && !id.Equals(null))
            {
                using (var conn = new SqlConnection(connectionString))
                {
                    var cmd = new SqlCommand();
                    cmd.Connection = conn;

                    cmd.CommandText = $"UPDATE RoomStatuses SET RoomStatus = '{roomStatus.Status}' WHERE Id = {id}";
                    cmd.Parameters.AddWithValue("@id", roomStatus.Id);
                    cmd.Parameters.AddWithValue("@RoomStatus", roomStatus.Status);

                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    cmd.ExecuteNonQuery();
                }
                return(roomStatus);
            }
            else
            {
                throw new Exception("There is no such an roomStatus in a database");
            }
        }
예제 #15
0
        public async Task FreeRoom(int roomId)
        {
            // найдем комнату
            Room room = await repository.GetByIdAsync(roomId);

            if (room == null)
            {
                throw new ArgumentOutOfRangeException();
            }
            else
            {
                RoomStatus status = room.Status;
                // если комната не свободна
                if (status != null)
                {
                    // если номер заселен
                    if (status.Clients != null)
                    {
                        // выписываем клиентов
                        foreach (var client in status.Clients)
                        {
                            _clientRepository.Delete(client);
                        }
                    }
                    // удаляем статус
                    _roomStatusRepository.Delete(status);
                    // сохраняем контекст
                    await unitOfWork.SaveAsync();
                }
            }
        }
예제 #16
0
        public RoomStatus DeleteRoomStatus(int id)
        {
            if (IsRoomStatusExist(id) && !id.Equals(null))
            {
                var roomStatus = new RoomStatus();
                using (var conn = new SqlConnection(connectionString))
                {
                    var cmd = new SqlCommand();
                    cmd.Connection = conn;

                    cmd.CommandText = $"DELETE FROM RoomStatuses WHERE Id = {id}";
                    cmd.Parameters.AddWithValue("@Id", id);

                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }
                    cmd.ExecuteNonQuery();
                }
                return(roomStatus);
            }
            else
            {
                throw new Exception("There is no such an roomStatus in a database");
            }
        }
예제 #17
0
        public IEnumerable <RoomStatus> ReadRoomStatuses()
        {
            var roomStatuses = new List <RoomStatus>();

            using (var conn = new SqlConnection(connectionString))
            {
                var cmd = new SqlCommand();
                cmd.Connection = conn;

                cmd.CommandText = "SELECT * FROM RoomStatuses";

                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }

                using (var dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        var rst = new RoomStatus
                        {
                            Id     = dr.GetInt32("Id"),
                            Status = dr.GetString("RoomStatus"),
                        };
                        roomStatuses.Add(rst);
                    }
                }
            }
            return(roomStatuses);
        }
예제 #18
0
파일: Room.cs 프로젝트: smelch/TowerTopper
 protected Room(RoomId roomId, RoomCode roomCode, RoomPlayer host)
 {
     RoomId   = roomId;
     RoomCode = roomCode;
     Host     = host;
     Status   = RoomStatus.Waiting;
 }
예제 #19
0
파일: RoomsTest.cs 프로젝트: Sjantos/IO
        internal RoomStatus ReportNeedForCleaningTest([PexAssumeUnderTest] Rooms target, int roomNumber)
        {
            RoomStatus result = target.ReportNeedForCleaning(roomNumber);

            return(result);
            // TODO: dodaj asercje do metoda RoomsTest.ReportNeedForCleaningTest(Rooms, Int32)
        }
예제 #20
0
        public void On20Compare(ISFSObject response)
        {
            RStatus = RoomStatus.BiPai;
            int    winner = response.GetInt("winseat");
            string msg    = response.GetUtfString("msg");

            List <int> lostList = new List <int>();

            foreach (var userInfo in UserInfoDict)
            {
                JhUserInfo jhUser = (JhUserInfo)userInfo.Value;
                if (jhUser.Seat != winner)
                {
                    jhUser.IsFail = true;
                    lostList.Add(userInfo.Key);
                }
            }
            ISFSObject sendObj = new SFSObject();

            sendObj.PutUtfString("msg", msg);
            sendObj.PutIntArray("lostChair", lostList.ToArray());

            EventObj.SendEvent("PlayersViewEvent", "AllBiPai", sendObj);

            EventObj.SendEvent("SoundEvent", "PlayerEffect", new JhSound.SoundData(JhSound.EnAudio.CompareAnimate));
        }
예제 #21
0
        public List <Room> FindAllByStatus(RoomStatus status)
        {
            List <Room> rooms = new List <Room>();

            request    = "SELECT id, price, max, status from room where status=@status";
            connection = Connection.New;
            command    = new SqlCommand(request, connection);
            command.Parameters.Add(new SqlParameter("@status", status));
            connection.Open();
            reader = command.ExecuteReader();
            while (reader.Read())
            {
                Room r = new Room()
                {
                    Id     = reader.GetInt32(0),
                    Price  = reader.GetDecimal(1),
                    Max    = reader.GetInt32(2),
                    Status = (RoomStatus)reader.GetInt32(3)
                };
                rooms.Add(r);
            }
            reader.Close();
            command.Dispose();
            connection.Close();
            return(rooms);
        }
예제 #22
0
    void Start()
    {
        var roomStatus = new RoomStatus();

        roomStatus.SetFloatValue(FloatRequirementType.Temperature, 0);
        roomStatus.SetBoolValue(BooleanRequirementType.Water, false);
        roomStatus.SetBoolValue(BooleanRequirementType.Light, true);

        StateData.Add("room", roomStatus);

        var stateList = new Dictionary <EGameState, IGameState>
        {
            { EGameState.Splash, new SplashScreenState(GameCanvasTransform, SplashUI) },
            { EGameState.Running, new RunningScreenState(
                  GameCanvasTransform,
                  RunningUI,
                  UICanvasTransform,
                  GameSettings,
                  Characters
                  ) },
            { EGameState.Review, new ReviewScreenState(GameCanvasTransform, ReviewUI) },
        };

        Instantiate(PersistentObjects, GameObject.Find("PersistentObjects").transform);

        GameStateMachine = new GameStateMachine(stateList, EGameState.Splash);
    }
예제 #23
0
        protected override void InitGameData(ISFSObject gameInfo)
        {
            OwnerId = gameInfo.ContainsKey("ownerId") ? gameInfo.GetInt("ownerId") : -1;

            MaxUserCnt = gameInfo.GetInt("playerNum");

            IsGameStart = gameInfo.ContainsKey(RequestKey.KeyPlaying) && gameInfo.GetBool(RequestKey.KeyPlaying);

            if (IsGameStart)
            {
                BankerSeat = gameInfo.GetInt(JhRequestConstKey.KeyBanker);
                if (gameInfo.ContainsKey("currentP"))
                {
                    gameInfo.GetSFSObject(RequestKey.KeyUser).PutInt("currentP", gameInfo.GetInt("currentP"));
                    CurrenPlayer = gameInfo.GetInt("currentP");
                }

                TotalBet = gameInfo.ContainsKey("totalBet") ? gameInfo.GetInt("totalBet") : 0;

                LastTime = gameInfo.GetLong("lasttime");

                CdTime = gameInfo.GetInt("cdTime");

                IsCanCompare = gameInfo.ContainsKey(JhRequestConstKey.KeyCompare) &&
                               gameInfo.GetBool(JhRequestConstKey.KeyCompare);

                IsCanLook = gameInfo.ContainsKey(JhRequestConstKey.KeyLook) &&
                            gameInfo.GetBool(JhRequestConstKey.KeyLook);

                IsCanGiveUp = gameInfo.ContainsKey(JhRequestConstKey.KeyGiveUp) &&
                              gameInfo.GetBool(JhRequestConstKey.KeyGiveUp);

                SingleBet = gameInfo.ContainsKey("minGold") ? gameInfo.GetInt("minGold") : AnteRate[0];

                CurRound = gameInfo.GetInt("jhround");
            }
            ReadyOutTime = gameInfo.GetInt("");
            maxRound     = gameInfo.GetInt("maxLun");

            BiPaiBeiShu = gameInfo.GetInt("bpbeishu");

            if (gameInfo.ContainsKey("status"))
            {
                RStatus = (RoomStatus)gameInfo.GetInt("status");
            }

            HupUp.FrashHupUpUser();

            IsCreatRoom = CreateRoomInfo != null;


            if (gameInfo.ContainsKey("readyCd"))
            {
                int readyCd = gameInfo.GetInt("readyCd");
                if (readyCd > 0)
                {
                    OnStartTime(readyCd);
                }
            }
        }
예제 #24
0
 public Room(int number, string name, RoomStatus status, bool hasWifi)
 {
     Number  = number;
     Name    = name;
     Status  = status;
     HasWifi = hasWifi;
 }
예제 #25
0
        /// <summary>
        /// Set Status
        /// </summary>
        /// <param name="status"></param>
        public void SetStatus(RoomStatus status, bool force = false)
        {
            if (force || status != _currentStatus)
            {
                Color c = _parentRef._unknownColor;
                switch (status)
                {
                case (RoomStatus.Unknown):
                    c = _parentRef._unknownColor;
                    break;

                case (RoomStatus.Locked):
                    c = _parentRef._lockedColor;
                    break;

                case (RoomStatus.Unlocked):
                    c = _parentRef._unlockedColor;
                    break;

                case (RoomStatus.Authorized):
                    c = _parentRef._availableColor;
                    break;
                }
                _content.color = c;
                _currentStatus = status;
                LogUnlocking();
            }
        }
예제 #26
0
    private void updateRoomInfo(int roomIndex)
    {
        RoomStatus rm = RoomList[roomIndex];

        RoomModel.StoreRoom(RoomPanel.grids[roomIndex].name, rm);
        //Debug.Log(RoomModel.GetRoomStatus(RoomPanel.grids[roomIndex].name).username[0]);
    }
예제 #27
0
 public Room(string id, string roomNum, RoomType type, RoomStatus status)
 {
     ID      = id;
     RoomNum = roomNum;
     RType   = type;
     RStatus = status;
 }
예제 #28
0
 public Room(int number, string name, RoomStatus status, bool allowedSmoking)
 {
     Number         = number;
     Name           = name;
     Status         = status;
     AllowedSmoking = allowedSmoking;
 }
예제 #29
0
        void HandleOnLeave(Room room, Presence presence)
        {
            string     reason = null;
            RoomStatus status = RoomStatus.UNKNOWN;

            GetReasonAndStatus(presence, out reason, out status);

            var builder = new StringBuilder();

            builder.Append("You have");
            if (status == RoomStatus.KICKED)
            {
                builder.Append(" been kicked from the room");
            }
            else if (status == RoomStatus.BANNED)
            {
                builder.Append(" been banned from the room");
            }
            else
            {
                builder.Append(" left the room");
            }

            if (!String.IsNullOrEmpty(reason))
            {
                builder.Append(": ");
                builder.Append(reason);
            }

            builder.Append(".");

            base.AppendStatus(builder.ToString());

            base.Ready = false;
        }
예제 #30
0
        void HandleOnParticipantLeave(Room room, RoomParticipant participant)
        {
            string     reason = null;
            RoomStatus status = RoomStatus.UNKNOWN;

            GetReasonAndStatus(participant.Presence, out reason, out status);

            var builder = new StringBuilder();

            builder.Append(participant.Nick);

            if (status == RoomStatus.KICKED)
            {
                builder.Append(" was kicked from the room");
            }
            else if (status == RoomStatus.BANNED)
            {
                builder.Append(" has been banned from the room");
            }
            else
            {
                builder.Append(" left the room");
            }

            if (!String.IsNullOrEmpty(reason))
            {
                builder.Append(": ");
                builder.Append(reason);
            }

            builder.Append(".");

            base.AppendStatus(builder.ToString());
        }
예제 #31
0
        void GetReasonAndStatus(Presence presence, out string reason, out RoomStatus status)
        {
            reason = null;
            status = RoomStatus.UNKNOWN;

            UserX x = (UserX)presence["x", jabber.protocol.URI.MUC_USER];
            if (x != null) {
                if (x.RoomItem != null)
                    reason = x.RoomItem.Reason;

                if (x.Status != null && x.Status.Length > 0)
                    status = x.Status[0];
            }
        }
예제 #32
0
        public void SignalClientIsReadyForGame(Client client)
        {
            // ToDo: Add some sort of time out guard here and drop clients if they take too long to respond.
            _clientsReadyForGame.Add(client);

            //
            //  If this condition has been met, it means that all of the clients are ready.
            //

            if (_clientsReadyForGame.Count == _members.Count)
            {
                MessageSender.BroadcastMessage(_members, PacketType.s_GameStart, null);

                _clientsReadyForGame.Clear();

                RoomStatus = RoomStatus.InGame;
            }
        }
예제 #33
0
        private XmlElement CreateJoinPresence(XmlElement elem, RoomStatus[] statuses)
        {
            XmlDocument myDoc = new XmlDocument();

            RoomPresence presence = new RoomPresence(myDoc, jid);
            presence.RemoveAll();
            presence.From = elem.GetAttribute("to");

            UserX xElem = new UserX(myDoc);
            presence.AppendChild(xElem);

            xElem.Status = statuses;

            return presence;
        }
예제 #34
0
        private XmlElement CreateJoinNeedConfigResponsePacket(XmlElement elem)
        {
            RoomStatus[] statuses = new RoomStatus[] { RoomStatus.CREATED, RoomStatus.SELF };

            return CreateJoinPresence(elem, statuses);
        }