Ejemplo n.º 1
0
        public void Run(IGameRoom gameRoom, IPlayer player)
        {
            var game = gameRoom.FindGame(player);

            if (game == null)
            {
                throw new InvalidOperationException($"Player has not joined any game.");
            }

            game.Shoot(_shotCoordinate, player);
        }
        public void Run(IGameRoom gameRoom, IPlayer player)
        {
            var game = gameRoom.FindGame(_gameName);

            if (game == null)
            {
                throw new InvalidOperationException($"Game '{_gameName}' does not exist.");
            }

            game.Join(player);
        }
Ejemplo n.º 3
0
        public async Task <Guid> QuickMatch()
        {
            // Find an available room first
            IMatchMaker match  = GrainFactory.GetGrain <IMatchMaker>(0);
            Guid        roomId = await match.QuickMatch(this.GetPrimaryKeyLong());

            IGameRoom room = GrainFactory.GetGrain <IGameRoom>(roomId);
            await room.Subscribe(this);

            return(roomId);
        }
        protected override void ClientStream(HttpRequest request, CPacheStream cPacheStream)
        {
            myStream = cPacheStream;
            var id = request.Url.Split("?roomid=")[1].Replace("%22", "");

            lock (GameServiceRouter.locker)
            {
                foreach (IGameRoom chatRoom in GameServiceRouter.GetAllRooms())
                {
                    if (chatRoom.instance == id)
                    {
                        ChatRoom = chatRoom;
                    }
                }
            }

            ChatRoom.subscribeToChat(cPacheStream);
        }
Ejemplo n.º 5
0
        protected override HttpResponse Response(HttpRequest req)
        {
            var       roomid   = req.QueryParameters["roomid"].Replace("%22", "");
            IGameRoom chatRoom = null;

            foreach (var room in GameServiceRouter.GetAllRooms())
            {
                if (room.instance == roomid)
                {
                    chatRoom = room;
                }
            }
            var ret     = "gren";
            var JsonRet = Newtonsoft.Json.JsonConvert.SerializeObject(ret);

            return(new HttpResponse()
            {
                ContentType = "application/json", ByteArrayResponseBody = UTF8Encoding.UTF8.GetBytes(JsonRet), ResponseBody = JsonRet, SC = StatusCode.Ok
            });
        }
Ejemplo n.º 6
0
        public async Task <Guid> QuickMatch(long playerId)
        {
            IGameRoom room = null;

            if (queuedPlayers < Constants.PlayersPerSession)
            {
                room = GrainFactory.GetGrain <IGameRoom>(roomQueue.Last());

                queuedPlayers++;
                return(await room.AddPlayer(playerId));
            }
            else
            {
                roomQueue.Enqueue(Guid.NewGuid());
                roomQueue.Dequeue();
                room          = GrainFactory.GetGrain <IGameRoom>(roomQueue.Last());
                queuedPlayers = 1;

                return(await room.AddPlayer(playerId));
            }
        }
 public void Run(IGameRoom gameRoom, IPlayer player) => gameRoom.StartGame(_gameName, player);