GetRoom() 공개 메소드

public GetRoom ( int x, int y ) : GameObject
x int
y int
리턴 GameObject
예제 #1
0
    public static void MsgHit(ClientState c, MsgBase msgBase)
    {
        MsgHit msg    = msgBase as MsgHit;
        Player player = c.player;

        Player targetPlayer = PlayerManager.GetPlayer(msg.targetId);

        if (player == null || targetPlayer == null)
        {
            return;
        }


        Room room = RoomManager.GetRoom(player.roomId);

        if (room == null || room.status != Room.Status.FIGHT)
        {
            return;
        }

        if (player.id != msg.id)
        {
            return;
        }

        int damage = 35;

        targetPlayer.hp -= damage;
        msg.id           = player.id;
        msg.hp           = targetPlayer.hp;
        msg.damage       = damage;
        room.Broadcast(msg);
    }
예제 #2
0
    public static void MsgSyncTank(ClientState c, MsgBase msgBase)
    {
        MsgSyncTank msg    = msgBase as MsgSyncTank;
        Player      player = c.player;

        if (player == null)
        {
            return;
        }

        Room room = RoomManager.GetRoom(player.roomId);

        if (room == null || room.status != Room.Status.FIGHT)
        {
            return;
        }

        player.x  = msg.x;
        player.y  = msg.y;
        player.z  = msg.z;
        player.ex = msg.ex;
        player.ey = msg.ey;
        player.ez = msg.ez;

        msg.id = player.id;
        room.Broadcast(msg);
    }
예제 #3
0
	//请求开始战斗
	public static void MsgStartBattle(ClientState c, MsgBase msgBase){
		MsgStartBattle msg = (MsgStartBattle)msgBase;
		Player player = c.player;
		if(player == null) return;
		//room
		Room room = RoomManager.GetRoom(player.roomId);
		if(room == null){
			msg.result = 1;
			player.Send(msg);
			return;
		}
		//是否是房主
		if(!room.isOwner(player)){
			msg.result = 1;
			player.Send(msg);
			return;
		}
		//开战
		if(!room.StartBattle()){
			msg.result = 1;
			player.Send(msg);
			return;
		}
		//成功
		msg.result = 0;
		player.Send(msg);
	}
예제 #4
0
    /// <summary>
    /// Initializes the room api.
    /// </summary>
    void InitRoomApi()
    {
        // If we have a room, we'll join the first room we see.
        // If we are the user with the lowest user ID, we will create the room.
        // Otherwise we will wait for the room to be created.
        if (roomManager.GetRoomCount() == 0)
        {
            DisplayUI.Instance.AppendText("InitRoomApi() - RoomCount == 0");
            if (LocalUserHasLowestUserId())
            {
                DisplayUI.Instance.AppendText("InitRoomApi() - Creating room ");
                // To keep anchors alive even if all users have left the session ...
                // Pass in true instead of false in CreateRoom.
                currentRoom  = roomManager.CreateRoom(new XString("DefaultRoom"), roomID, false);
                currentState = ImportExportState.InitialAnchorRequired;
            }
            else
            {
                DisplayUI.Instance.AppendText("InitRoomApi() - Not Lowest Id");
            }
        }
        else
        {
            DisplayUI.Instance.AppendText("InitRoomApi() - RoomCount > 0 Joining room");
            currentRoom = roomManager.GetRoom(0);
            roomManager.JoinRoom(currentRoom);
            currentState = ImportExportState.RoomApiInitialized;
        }

        if (currentRoom != null)
        {
            DisplayUI.Instance.AppendText("In room :" + roomManager.GetCurrentRoom().GetName().GetString());
        }
    }
예제 #5
0
        public ActionResult Validate()
        {
            ReservationVM reservation = (ReservationVM)TempData["Reservation"];

            TempData["Reservation"] = reservation;

            List <Room> rooms = new List <Room>();

            foreach (int id in reservation.RoomIds)
            {
                Room room = RoomManager.GetRoom(id);
                rooms.Add(room);
            }

            ReservationValidateVM reservationValidate = new ReservationValidateVM();

            reservationValidate.Arrival    = reservation.Arrival;
            reservationValidate.Departure  = reservation.Departure;
            reservationValidate.TotalNight = ReservationManager.GetNumberOfNight(reservation.Arrival, reservation.Departure);
            reservationValidate.FirstName  = reservation.Firstname;
            reservationValidate.LastName   = reservation.Lastname;
            reservationValidate.Rooms      = rooms;
            reservationValidate.TotalPrice = ReservationManager.CalculatePrice(reservation.RoomIds, reservation.Arrival, reservation.Departure);
            reservationValidate.RoomNumber = rooms.Count();

            ViewBag.ReservationValidate = reservationValidate;

            return(View(reservation));
        }
예제 #6
0
    public static void MsgFaPai(ClientState c, MsgBase msgBase)
    {
        MsgFaPai msg    = (MsgFaPai)msgBase;
        Player   player = c.player;

        if (player == null)
        {
            return;
        }
        Room room = RoomManager.GetRoom(player.roomId);

        if (room == null)
        {
            return;
        }
        GameManager gameManager = room.gameManager;

        if (gameManager == null)
        {
            return;
        }
        msg = gameManager.ProcessMsgFaPai(msg);
        //广播
        gameManager.Broadcast(msg);
    }
예제 #7
0
    public Game(int roomID)
    {
        this.roomID = roomID;
        Room room = RoomManager.GetRoom(roomID);

        playNum = room.maxPlayer;
    }
예제 #8
0
        public static void MsgEnter(ClientState c, MsgBase msg)
        {
            MsgEnter msgEnter = (MsgEnter)msg;
            Player   player   = new Player(c);

            player.hp        = msgEnter.hp;
            player.id        = msgEnter.playId;
            player.style     = msgEnter.style;
            player.x         = msgEnter.x;
            player.y         = msgEnter.y;
            player.veloctity = msgEnter.veloctity;
            PlayerManager.AddPlayer(player);
            List <MsgEnter> lists = new List <MsgEnter>();

            foreach (var item in PlayerManager.players.Values)
            {
                MsgEnter newMsg = new MsgEnter();
                newMsg.hp        = item.hp;
                newMsg.playId    = item.id;
                newMsg.style     = item.style;
                newMsg.x         = item.x;
                newMsg.y         = item.y;
                newMsg.veloctity = item.veloctity;
                lists.Add(newMsg);
            }
            msgEnter.players = lists;
            User user = c.user;

            //获取房间
            Room room = RoomManager.GetRoom(user.RoomId);

            room.Broadcast(msgEnter);
        }
예제 #9
0
    public static void MsgEnterRoom(ClientState c, MsgBase msgBase)
    {
        MsgEnterRoom msg    = (MsgEnterRoom)msgBase;
        Player       player = c.player;

        if (player == null)
        {
            return;
        }
        if (player.roomId >= 0)
        {
            msg.result = 1;
            player.Send(msg);
            return;
        }
        Room room = RoomManager.GetRoom(msg.id);

        if (room == null)
        {
            msg.result = 1;
            player.Send(msg);
            return;
        }
        if (!room.AddPlayer(player.id))
        {
            msg.result = 1;
            player.Send(msg);
            return;
        }
        msg.result = 0;
        player.Send(msg);
    }
예제 #10
0
        public static void MsgLeaveRoom(ClientState c, MsgBase msgBase)
        {
            MsgLeaveRoom msg  = (MsgLeaveRoom)msgBase;
            User         user = c.user;

            if (user == null)
            {
                return;
            }

            Room room = RoomManager.GetRoom(user.RoomId);

            if (room == null)
            {
                return;
            }

            bool delete = room.RemoveUser(user.Userid);

            if (!delete)
            {
                Console.WriteLine("离开房间异常");
                return;
            }
            //返回协议
            user.RoomId = -1;
            msg.code    = HttpStatusCode.OK;
            msg.result  = JsonConvert.SerializeObject(room);
            room.Broadcast(msg);
        }
예제 #11
0
 public async Task OnCloseAsync()
 {
     foreach (var room in User.rooms)
     {
         _roomManager.GetRoom(room).UnSubscribe(this);
     }
 }
        /// <summary>
        /// Initializes the room api.
        /// </summary>
        void InitRoomApi()
        {
            // If we have a room, we'll join the first room we see.
            // If we are the user with the lowest user ID, we will create the room.
            // Otherwise we will wait for the room to be created.
            if (roomManager.GetRoomCount() == 0)
            {
                if (HolographicCameraManager.Instance.localIPs.Contains(HolographicCameraManager.Instance.HolographicCameraIP.Trim()))
                {
                    Debug.Log("Creating room ");
                    // To keep anchors alive even if all users have left the session ...
                    // Pass in true instead of false in CreateRoom.
                    currentRoom  = roomManager.CreateRoom(new XString("DefaultRoom"), roomID, false);
                    currentState = ImportExportState.InitialAnchorRequired;
                }
                else
                {
                    Debug.Log("Waiting for HolographicCamera to join and create the anchor");
                }
            }
            else
            {
                Debug.Log("Joining room");
                currentRoom = roomManager.GetRoom(0);
                roomManager.JoinRoom(currentRoom);
                currentState = ImportExportState.RoomApiInitialized;
            }

            if (currentRoom != null)
            {
                Debug.Log("In room :" + roomManager.GetCurrentRoom().GetName().GetString());
            }
        }
예제 #13
0
        public override async Task HandleMessage(object message, ClientSocket socket)
        {
            var auth = (AuthMessage)message;

            if (string.IsNullOrEmpty(auth.Name))
            {
                throw new Exception("missing: name");
            }
            if (string.IsNullOrEmpty(auth.Password))
            {
                throw new Exception("missing: password");
            }
            var user = _userDatabase.Load(auth.Name);

            if (user == null || user.Password != auth.Password)
            {
                throw new Exception("auth failed");
            }

            socket.User = user;
            foreach (var roomName in user.rooms.ToArray())
            {
                try
                {
                    var room = _roomManager.GetRoom(roomName);
                    room.Subscribe(socket);
                }
                catch (RoomNotFoundException e)
                {
                    user.rooms.Remove(roomName);
                    _userDatabase.Save(user.Name, user);
                }
            }
        }
예제 #14
0
파일: SyncMsgHandle.cs 프로젝트: cocos56/CS
    //开火协议
    public static void MsgFire(ClientState c, MsgBase msgBase)
    {
        MsgFire msg    = (MsgFire)msgBase;
        Player  player = c.player;

        if (player == null)
        {
            return;
        }
        //room
        Room room = RoomManager.GetRoom(player.roomId);

        if (room == null)
        {
            return;
        }
        //status
        if (room.status != Room.Status.FIGHT)
        {
            return;
        }
        //广播
        msg.id = player.id;
        room.Broadcast(msg);
    }
예제 #15
0
    /// <summary>
    /// Initializes the room api.
    /// </summary>
    private void InitRoomApi()
    {
        if (roomManager.GetRoomCount() == 0)
        {
            // There used to be a check here: we'll disable it

            //if (anchoring)
            {
                Debug.Log("Creating room ");
                // To keep anchors alive even if all users have left the session ...
                // Pass in true instead of false in CreateRoom.
                currentRoom  = roomManager.CreateRoom(new XString("DefaultRoom"), roomID, false);
                currentState = ImportExportState.InitialAnchorRequired;
            }
        }
        else
        {
            Debug.Log("Joining room ");
            currentRoom = roomManager.GetRoom(0);
            roomManager.JoinRoom(currentRoom);
            currentState =
                (currentRoom.GetAnchorCount() > 0 ?
                 ImportExportState.RoomApiInitialized :
                 ImportExportState.InitialAnchorRequired);
        }

        if (currentRoom != null)
        {
            Debug.Log("In room: " + roomManager.GetCurrentRoom().GetName().GetString());
        }
    }
예제 #16
0
    //离开房间
    public static void MsgLeaveRoom(ClientState c, MsgBase msgBase)
    {
        MsgLeaveRoom msg    = (MsgLeaveRoom)msgBase;
        Player       player = c.player;

        if (player == null)
        {
            return;
        }

        Room room = RoomManager.GetRoom(player.roomId);

        if (room == null)
        {
            msg.result = 1;
            player.Send(msg);
            return;
        }

        room.RemovePlayer(player.id);
        //返回协议
        msg.result    = 0;
        player.roomId = -1;
        player.Send(msgBase);
    }
예제 #17
0
        public static void MsgEndBattle(ClientState c, MsgBase msgBase)
        {
            MsgEndBattle msg  = (MsgEndBattle)msgBase;
            User         user = c.user;

            if (user == null)
            {
                return;
            }
            //room
            Room room = RoomManager.GetRoom(user.RoomId);

            if (room == null)
            {
                msg.code   = HttpStatusCode.NotFound;
                msg.result = "房间不存在";
                NetManager.Send(c, msg);
                return;
            }


            Dictionary <string, bool> dictionaries = room.UserStatus.ToDictionary(pair => pair.Key, pair => false);

            room.UserStatus = dictionaries;


            room.Status = 0;
            msg.code    = HttpStatusCode.OK;
            msg.result  = JsonConvert.SerializeObject(room);
            //成功
            room.Broadcast(msg);
        }
    /// <summary>
    /// Initializes the room api.
    /// </summary>
    void InitRoomApi()
    {
        // If we have a room, we'll join the first room we see.
        // If we are the user with the lowest user ID, we will create the room.
        // Otherwise we will wait for the room to be created.
        if (roomManager.GetRoomCount() == 0)
        {
            if (LocalUserHasLowestUserId() && Time.frameCount > 1500)
            {
                Debug.Log("Creating room ");
                // Keep the room open even when all users have left the shared session.
                // This will allow us to persist an anchor in the same room on the sharing service.
                currentRoom  = roomManager.CreateRoom(new XString("DefaultRoom"), roomID, true);
                CurrentState = ImportExportState.InitialAnchorRequired;
            }
        }
        else
        {
            Debug.Log("Joining room ");
            currentRoom = roomManager.GetRoom(0);
            roomManager.JoinRoom(currentRoom);
            CurrentState = ImportExportState.RoomApiInitialized;
        }

        if (currentRoom != null)
        {
            Debug.Log("In room :" + roomManager.GetCurrentRoom().GetName().GetString());
        }
    }
예제 #19
0
        public static void MsgGetRoomInfo(ClientState c, MsgBase msgBase)
        {
            MsgGetRoomInfo msg  = (MsgGetRoomInfo)msgBase;
            User           user = c.user;

            if (user == null)
            {
                msg.code   = HttpStatusCode.Unauthorized;
                msg.result = "请先登录";
                NetManager.Send(c, msg);
                return;
            }

            Room room = RoomManager.GetRoom(user.RoomId);

            if (room == null)
            {
                msg.code   = HttpStatusCode.NotFound;
                msg.result = "房间不存在";
                return;
            }
            //获取玩家列表

            msg.code   = HttpStatusCode.OK;
            msg.result = JsonConvert.SerializeObject(room);
            NetManager.Send(c, msg);
        }
예제 #20
0
        public static void MsgLeave(ClientState c, MsgBase msg)
        {
            User user = c.user;

            //获取房间
            Room room = RoomManager.GetRoom(user.RoomId);

            room.Broadcast(msg);
        }
예제 #21
0
        public async Task GetRoomState()
        {
            RoomState    roomState = RoomManager.GetRoom(ContextRoomId);
            PlaylistItem item      = roomState.Playlist.Count > 0 ? roomState.Playlist[0] : null;

            if (item != null)
            {
                item.CalculateStartTimeCorrection();
            }
            await Clients.Caller.RoomStateReceived(roomState != null, roomState);
        }
예제 #22
0
        public override bool GetIsPlayableFromHand(CardManager cardManager, RoomManager roomManager, out CardSelectionBehaviour.SelectionError selectionError)
        {
            int selectedRoom = roomManager.GetSelectedRoom();

            if (roomManager.GetRoom(selectedRoom) == roomManager.GetPyreRoom())
            {
                selectionError = CardSelectionBehaviour.SelectionError.None;
                return(true);
            }
            selectionError = CardSelectionBehaviour.SelectionError.Unplayable;
            return(false);
        }
예제 #23
0
        public override async Task HandleMessage(object message, ClientSocket socket)
        {
            var chat = (ChatMessage)message;

            if (!socket.User.rooms.Contains(chat.Room))
            {
                throw new Exception("not joined");
            }

            chat.Sender = socket.User.Name;
            _roomManager.GetRoom(chat.Room).Broadcast(chat);
        }
예제 #24
0
	// public static void MsgEnterRoom(ClientState c, MsgBase msgBase){
	// 	MsgEnterRoom msg = (MsgEnterRoom)msgBase;
	// 	Player player = c.player;
	// 	if(player == null) return;
	// 	//已经在房间里
	// 	if(player.roomId >=0 ){
	// 		msg.result = 1;
	// 		player.Send(msg);
	// 		return;
	// 	}
	// 	//获取房间
	// 	Room room = RoomManager.GetRoom(msg.id);
	// 	if(room == null){
	// 		msg.result = 1;
	// 		player.Send(msg);
	// 		return;
	// 	}
	// 	//进入
	// 	if(!room.AddPlayer(player.id)){
	// 		msg.result = 1;
	// 		player.Send(msg);
	// 		return;
	// 	}
	// 	//返回协议	
	// 	msg.result = 0;
	// 	player.Send(msg);
	// }


	//获取房间信息
	public static void MsgGetRoomInfo(ClientState c, MsgBase msgBase){
		MsgGetRoomInfo msg = (MsgGetRoomInfo)msgBase;
		Player player = c.player;
		if(player == null) return;

		Room room = RoomManager.GetRoom(player.roomId);
		if(room == null){
			player.Send(msg);
			return;
		}

		player.Send(room.ToMsg());
	}
        public override bool GetIsPlayableFromHand(CardManager cardManager, RoomManager roomManager, out CardSelectionBehaviour.SelectionError selectionError)
        {
            int selectedRoom = roomManager.GetSelectedRoom();
            var capInfo      = roomManager.GetRoom(selectedRoom).GetCapacityInfo(Team.Type.Monsters);

            if (capInfo.max >= capInfo.count + GetParamInt())
            {
                selectionError = CardSelectionBehaviour.SelectionError.None;
                return(true);
            }
            selectionError = CardSelectionBehaviour.SelectionError.Unplayable;
            return(false);
        }
예제 #26
0
        public async Task CompleteVideo(string uid)
        {
            //set the next video as is playing
            RoomState roomState = RoomManager.GetRoom(ContextRoomId);

            if (roomState != null && !string.IsNullOrEmpty(uid))
            {
                if (roomState.Playlist.Count > 1)
                {
                    roomState.Playlist[1].IsPlaying = true;
                    roomState.Playlist[1].ResetStartTimeTracking();
                }
            }
            await RemovePlaylistItem(uid);
        }
예제 #27
0
        public static void MsgMove(ClientState c, MsgBase msgBase)
        {
            MsgMove msg    = (MsgMove)msgBase;
            Player  player = PlayerManager.GetPlayer(msg.spriteId);

            player.x         = msg.x;
            player.y         = msg.y;
            player.veloctity = msg.veloctity;

            User user = c.user;

            //获取房间
            Room room = RoomManager.GetRoom(user.RoomId);

            room.Broadcast(msg);
        }
예제 #28
0
        public override async Task HandleMessage(object message, ClientSocket socket)
        {
            var command = (RoomMessage)message;

            socket.User.rooms.Remove(command.Room);
            _userDatabase.Save(socket.User.Name, socket.User);
            var room = _roomManager.GetRoom(command.Room);

            room.UnSubscribe(socket);
            room.Broadcast(new ChatMessage
            {
                Room    = command.Room,
                Message = socket.User.Name + " has left the room",
                Sender  = "[System]"
            });
        }
예제 #29
0
        public async Task ResumeVideo(string uid, float seekSeconds)
        {
            RoomState roomState = RoomManager.GetRoom(ContextRoomId);

            if (roomState != null && !string.IsNullOrEmpty(uid))
            {
                PlaylistItem item = roomState.Playlist.FirstOrDefault(el => el.Uid == uid);
                if (item != null)
                {
                    item.StartTime = seekSeconds;
                    item.IsPlaying = true;
                    item.ResetStartTimeTracking();
                    await UpdateAllRoomState();
                }
            }
        }
예제 #30
0
        public static void MsgStartBattle(ClientState c, MsgBase msgBase)
        {
            MsgStartBattle msg  = (MsgStartBattle)msgBase;
            User           user = c.user;

            if (user == null)
            {
                return;
            }
            //room
            Room room = RoomManager.GetRoom(user.RoomId);

            if (room == null)
            {
                msg.code   = HttpStatusCode.NotFound;
                msg.result = "房间不存在";
                NetManager.Send(c, msg);
                return;
            }
            //是否是房主
            if (!room.IsOwner(user))
            {
                msg.code   = HttpStatusCode.InternalServerError;
                msg.result = "你不是房主";
                NetManager.Send(c, msg);
                return;
            }
            //开战
            if (!room.StartBattle())
            {
                msg.code = HttpStatusCode.InternalServerError;
                NetManager.Send(c, msg);
                msg.result = "无法开始";
                return;
            }
            msg.startPlays = new List <MsgStartBattle.StartPlay>();
            for (int i = 0; i < room.Users.Count; i++)
            {
                MsgStartBattle.StartPlay startPlay = UserWrapper.toStartPlay(i, room.Users[i]);
                msg.startPlays.Add(startPlay);
            }
            room.Status = 1;
            msg.code    = HttpStatusCode.OK;
            //成功
            room.Broadcast(msg);
        }