Esempio n. 1
0
 public void JoinTeam(string teamName)
 {
     JoinTeam joinTeam = new JoinTeam
     {
         UserID = ConnectionManager.Instance.UserID,
         TeamName = teamName,
     };
     Socket.Instance.SendPacket(joinTeam, Packets.JoinTeam);
 }
        public void JoinGameRequest_Correct_ObjectCreated()
        {
            // Arrange
            var joinGameRequest = new JoinTeam()
            {
                Player = this.testPlayer
            };

            // Act
            // Assert
            Assert.Equal(this.testPlayer, joinGameRequest.Player);
        }
Esempio n. 3
0
        private static void HandleJoinTeam(JoinTeam joinTeam)
        {
            if (joinTeam == null)
            {
                throw new WrongPacketTypeException();
            }
            joinTeam.UserID   = joinTeam.UserID.ToUpper();
            joinTeam.TeamName = joinTeam.TeamName.ToUpper();

            bool        success = TeamManager.Instance.AddUserToTeam(joinTeam.UserID, joinTeam.TeamName);
            AckJoinTeam ack     = new AckJoinTeam
            {
                UserID   = joinTeam.UserID,
                TeamName = joinTeam.TeamName,
                Success  = success,
            };

            Socket.Instance.SendPacket(ack, Packets.AckJoinTeam, ConnectionManager.Instance.GetClientID(joinTeam.UserID));
        }
        public async Task <IActionResult> Join([FromBody] JoinTeam joinTeam)
        {
            var team = await _timelineContext.Teams.Where(x => x.Id == joinTeam.InviteToken)
                       .Include(x => x.Employments).FirstOrDefaultAsync();

            var user = await _timelineContext.Users.Where(x => x.Id == joinTeam.UserId).FirstOrDefaultAsync();

            if (team == null || user == null)
            {
                return(BadRequest());
            }

            var employment = new Employment {
                UserId = joinTeam.UserId, TeamId = team.Id
            };

            team.Employments.Add(employment);

            await _timelineContext.SaveChangesAsync();

            Console.WriteLine($"employment {employment.UserId} : {employment.TeamId}");

            return(Ok(team));
        }
Esempio n. 5
0
        private static async Task Echo(System.Net.WebSockets.WebSocket webSocket)
        {
            WebSocketReceiveResult wResult;

            {
                //byte[] buffer = new byte[size];
                //var buffer = new ArraySegment<byte>(new byte[8192]);
                State s = new State();
                s.WebsocketID        = ConnectInfo.webSocketID++;
                s.Ls                 = LoginState.empty;
                s.roomIndex          = -1;
                s.mapRoadAndCrossMd5 = "";
                removeWsIsNotOnline();
                addWs(webSocket, s.WebsocketID);

                var carsNames  = new string[] { "车1", "车2", "车3", "车4", "车5" };
                var playerName = "玩家" + Math.Abs(DateTime.Now.GetHashCode() % 10000);


                //if(s.Ls== LoginState.)

                do
                {
                    try
                    {
                        var returnResult = await ReceiveStringAsync(webSocket, webWsSize);

                        wResult = returnResult.wr;
                        Console.WriteLine($"receive from web:{returnResult.result}");
                        CommonClass.Command c = Newtonsoft.Json.JsonConvert.DeserializeObject <CommonClass.Command>(returnResult.result);
                        switch (c.c)
                        {
                        case "MapRoadAndCrossMd5":
                        {
                            if (s.Ls == LoginState.empty)
                            {
                                MapRoadAndCrossMd5 mapRoadAndCrossMd5 = Newtonsoft.Json.JsonConvert.DeserializeObject <MapRoadAndCrossMd5>(returnResult.result);
                                s.mapRoadAndCrossMd5 = mapRoadAndCrossMd5.mapRoadAndCrossMd5;
                            }
                        }; break;

                        case "CheckSession":
                        {
                            if (s.Ls == LoginState.empty)
                            {
                                CheckSession checkSession = Newtonsoft.Json.JsonConvert.DeserializeObject <CheckSession>(returnResult.result);
                                var          checkResult  = await BLL.CheckSessionBLL.checkIsOK(checkSession, s);

                                if (checkResult.CheckOK)
                                {
                                    s.Key       = checkResult.Key;
                                    s.roomIndex = checkResult.roomIndex;
                                    s           = await Room.setOnLine(s, webSocket);
                                }
                                else
                                {
                                    s = await Room.setState(s, webSocket, LoginState.selectSingleTeamJoin);
                                }
                            }
                        }; break;

                        case "JoinGameSingle":
                        {
                            JoinGameSingle joinType = Newtonsoft.Json.JsonConvert.DeserializeObject <JoinGameSingle>(returnResult.result);
                            if (s.Ls == LoginState.selectSingleTeamJoin)
                            {
                                s = await Room.GetRoomThenStart(s, webSocket, playerName, carsNames);
                            }
                        }; break;

                        case "CreateTeam":
                        {
                            CreateTeam ct = Newtonsoft.Json.JsonConvert.DeserializeObject <CreateTeam>(returnResult.result);
                            if (s.Ls == LoginState.selectSingleTeamJoin)
                            {
                                {
                                    string command_start;
                                    CommonClass.TeamResult team;
                                    {
                                        s = await Room.setState(s, webSocket, LoginState.WaitingToStart);
                                    }
                                    {
                                        //
                                        command_start = CommonClass.Random.GetMD5HashFromStr(s.WebsocketID.ToString() + s.WebsocketID);
                                        team          = await Team.createTeam2(s.WebsocketID, playerName, command_start);
                                    }
                                    {
                                        //var command_start = CommonClass.Random.GetMD5HashFromStr(s.WebsocketID.ToString() + s.WebsocketID);
                                        returnResult = await ReceiveStringAsync(webSocket, webWsSize);

                                        wResult = returnResult.wr;
                                        if (returnResult.result == command_start)
                                        {
                                            s = await Room.GetRoomThenStartAfterCreateTeam(s, webSocket, team, playerName, carsNames);
                                        }
                                        else
                                        {
                                            return;
                                        }
                                    }
                                }
                            }
                        }; break;

                        case "JoinTeam":
                        {
                            JoinTeam ct = Newtonsoft.Json.JsonConvert.DeserializeObject <JoinTeam>(returnResult.result);
                            if (s.Ls == LoginState.selectSingleTeamJoin)
                            {
                                {
                                    string command_start;
                                    {
                                        //将状态设置为等待开始和等待加入
                                        s = await Room.setState(s, webSocket, LoginState.WaitingToGetTeam);
                                    }
                                    {
                                        returnResult = await ReceiveStringAsync(webSocket, webWsSize);

                                        wResult = returnResult.wr;
                                        var teamID = returnResult.result;
                                        command_start = CommonClass.Random.GetMD5HashFromStr(s.WebsocketID.ToString() + s.WebsocketID + DateTime.Now.ToString());
                                        var result = await Team.findTeam2(s.WebsocketID, playerName, command_start, teamID);

                                        if (result == "ok")
                                        {
                                            returnResult = await ReceiveStringAsync(webSocket, webWsSize);

                                            wResult = returnResult.wr;

                                            int roomIndex;
                                            if (Room.CheckSecret(returnResult.result, command_start, out roomIndex))
                                            {
                                                s = await Room.GetRoomThenStartAfterJoinTeam(s, webSocket, roomIndex, playerName, carsNames);
                                            }
                                            else
                                            {
                                                return;
                                            }
                                        }
                                        else if (result == "game has begun")
                                        {
                                            s = await Room.setState(s, webSocket, LoginState.selectSingleTeamJoin);

                                            await Room.Alert(webSocket, $"他们已经开始了!");
                                        }
                                        else if (result == "is not number")
                                        {
                                            s = await Room.setState(s, webSocket, LoginState.selectSingleTeamJoin);

                                            await Room.Alert(webSocket, $"请输入数字");
                                        }
                                        else if (result == "not has the team")
                                        {
                                            s = await Room.setState(s, webSocket, LoginState.selectSingleTeamJoin);

                                            await Room.Alert(webSocket, $"没有该队伍({teamID})");
                                        }
                                        else if (result == "team is full")
                                        {
                                            s = await Room.setState(s, webSocket, LoginState.selectSingleTeamJoin);

                                            await Room.Alert(webSocket, "该队伍已满员");
                                        }
                                        else
                                        {
                                            s = await Room.setState(s, webSocket, LoginState.selectSingleTeamJoin);
                                        }
                                    }
                                }
                            }
                        }; break;

                        case "SetCarsName":
                        {
                            if (s.Ls == LoginState.selectSingleTeamJoin)
                            {
                                SetCarsName setCarsName = Newtonsoft.Json.JsonConvert.DeserializeObject <SetCarsName>(returnResult.result);
                                for (var i = 0; i < 5; i++)
                                {
                                    if (!string.IsNullOrEmpty(setCarsName.Names[i]))
                                    {
                                        if (setCarsName.Names[i].Trim().Length >= 2 && setCarsName.Names[i].Trim().Length < 7)
                                        {
                                            carsNames[i] = setCarsName.Names[i].Trim();
                                        }
                                    }
                                }
                            }
                        }; break;

                        case "GetCarsName":
                        {
                            if (s.Ls == LoginState.selectSingleTeamJoin)
                            {
                                var msg      = Newtonsoft.Json.JsonConvert.SerializeObject(new { c = "GetCarsName", names = carsNames });
                                var sendData = Encoding.UTF8.GetBytes(msg);
                                await webSocket.SendAsync(new ArraySegment <byte>(sendData, 0, sendData.Length), WebSocketMessageType.Text, true, CancellationToken.None);
                            }
                        }; break;

                        case "SetPlayerName":
                        {
                            if (s.Ls == LoginState.selectSingleTeamJoin)

                            {
                                SetPlayerName setPlayerName = Newtonsoft.Json.JsonConvert.DeserializeObject <SetPlayerName>(returnResult.result);
                                playerName = setPlayerName.Name;
                            }
                        }; break;

                        case "GetName":
                        {
                            if (s.Ls == LoginState.selectSingleTeamJoin)

                            {
                                var msg      = Newtonsoft.Json.JsonConvert.SerializeObject(new { c = "GetName", name = playerName });
                                var sendData = Encoding.UTF8.GetBytes(msg);
                                await webSocket.SendAsync(new ArraySegment <byte>(sendData, 0, sendData.Length), WebSocketMessageType.Text, true, CancellationToken.None);
                            }
                        }; break;

                        //case "SetCarName":
                        //    {
                        //        if (s.Ls == LoginState.selectSingleTeamJoin)
                        //        {
                        //            SetCarName setCarName = Newtonsoft.Json.JsonConvert.DeserializeObject<SetCarName>(returnResult.result);
                        //            if (setCarName.Name.Trim().Length < 7 && setCarName.Name.Trim().Length > 1)
                        //            {
                        //                if (setCarName.CarIndex >= 0 && setCarName.CarIndex < 5)
                        //                {
                        //                    carsNames[setCarName.CarIndex] = setCarName.Name;
                        //                }
                        //            }
                        //            //playerName = setPlayerName.Name;
                        //        }
                        //    }; break;
                        case "Promote":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                Promote promote = Newtonsoft.Json.JsonConvert.DeserializeObject <Promote>(returnResult.result);

                                await Room.setPromote(s, promote);
                            }
                        }; break;

                        case "Collect":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                Collect collect = Newtonsoft.Json.JsonConvert.DeserializeObject <Collect>(returnResult.result);

                                await Room.setCollect(s, collect);
                            }
                        }; break;

                        case "Attack":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                Attack attack = Newtonsoft.Json.JsonConvert.DeserializeObject <Attack>(returnResult.result);
                                await Room.setAttack(s, attack);
                            }
                        }; break;

                        case "Tax":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                Tax tax = Newtonsoft.Json.JsonConvert.DeserializeObject <Tax>(returnResult.result);
                                await Room.setToCollectTax(s, tax);
                            }
                        }; break;

                        case "Msg":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                Msg msg = Newtonsoft.Json.JsonConvert.DeserializeObject <Msg>(returnResult.result);
                                if (msg.MsgPass.Length < 120)
                                {
                                    await Room.passMsg(s, msg);
                                }
                            }
                        }; break;

                        case "Ability":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                Ability a = Newtonsoft.Json.JsonConvert.DeserializeObject <Ability>(returnResult.result);
                                await Room.setCarAbility(s, a);
                            }
                        }; break;

                        case "SetCarReturn":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                SetCarReturn scr = Newtonsoft.Json.JsonConvert.DeserializeObject <SetCarReturn>(returnResult.result);
                                await Room.setCarReturn(s, scr);
                            }
                        }; break;

                        case "Donate":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                Donate donate = Newtonsoft.Json.JsonConvert.DeserializeObject <Donate>(returnResult.result);
                                await Room.Donate(s, donate);
                            }
                        }; break;

                        case "GetSubsidize":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                GetSubsidize getSubsidize = Newtonsoft.Json.JsonConvert.DeserializeObject <GetSubsidize>(returnResult.result);
                                await Room.GetSubsidize(s, getSubsidize);
                            }
                        }; break;

                        case "OrderToSubsidize":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                GetSubsidize getSubsidize = Newtonsoft.Json.JsonConvert.DeserializeObject <GetSubsidize>(returnResult.result);
                                await Room.GetSubsidize(s, getSubsidize);
                            }
                        }; break;

                        case "Bust":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                Bust bust = Newtonsoft.Json.JsonConvert.DeserializeObject <Bust>(returnResult.result);
                                await Room.setBust(s, bust);
                            }
                        }; break;

                        case "BuyDiamond":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                BuyDiamond bd = Newtonsoft.Json.JsonConvert.DeserializeObject <BuyDiamond>(returnResult.result);
                                await Room.buyDiamond(s, bd);
                            }
                        }; break;

                        case "SellDiamond":
                        {
                            if (s.Ls == LoginState.OnLine)
                            {
                                BuyDiamond bd = Newtonsoft.Json.JsonConvert.DeserializeObject <BuyDiamond>(returnResult.result);
                                await Room.sellDiamond(s, bd);
                            }
                        }; break;
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($"{ Newtonsoft.Json.JsonConvert.SerializeObject(e)}");
                        await Room.setOffLine(s);

                        removeWs(s.WebsocketID);
                        // Console.WriteLine($"step2:webSockets数量:{   BufferImage.webSockets.Count}");
                        // return;
                        throw e;
                    }
                }while (!wResult.CloseStatus.HasValue);
                await Room.setOffLine(s);

                removeWs(s.WebsocketID);
                //try
                //{
                //    // await webSocket.CloseAsync(wResult.CloseStatus.Value, wResult.CloseStatusDescription, CancellationToken.None);
                //    // ConnectInfo.connectedWs.Remove(c.WebSocketID);

                //}
                //catch (Exception e)
                //{
                //    throw e;
                //    // ConnectInfo.connectedWs.Remove(c.WebSocketID);
                //    //  return;
                //}
            };
        }
Esempio n. 6
0
        public JoinGameResponse JoinTeam(JoinTeam request)
        {
            // Validate request, you will never know again
            if (string.IsNullOrEmpty(request?.Player?.Name))
            {
                return(new JoinGameResponse
                {
                    IsSuccessful = false,
                    Error = new ResponseError
                    {
                        ErrorCode = HttpStatusCode.BadRequest,
                        Description = HttpStatusCode.BadRequest.ToString()
                    }
                });
            }

            // Validate Game exists
            var game = this.games.FirstOrDefault();

            if (game == null)
            {
                return(new JoinGameResponse
                {
                    IsSuccessful = false,
                    Error = new ResponseError
                    {
                        ErrorCode = HttpStatusCode.BadRequest,
                        Description = HttpStatusCode.BadRequest.ToString()
                    }
                });
            }

            // Validate Game isn't full or finished
            if (game.IsFull || game.IsFinished)
            {
                return(new JoinGameResponse
                {
                    IsSuccessful = false,
                    Error = new ResponseError
                    {
                        ErrorCode = HttpStatusCode.BadRequest,
                        Description = HttpStatusCode.BadRequest.ToString()
                    }
                });
            }

            // The real joining happens now
            // First player will just join
            if (game.FirstPlayer == null)
            {
                game.FirstPlayer = request.Player;
            }

            // Second player is joining
            else if (game.SecondPlayer == null)
            {
                game.SecondPlayer = request.Player;

                // Set flag for the future
                game.IsFull = true;
            }
            else
            {
                return(new JoinGameResponse
                {
                    IsSuccessful = false,
                    Error = new ResponseError
                    {
                        ErrorCode = HttpStatusCode.BadRequest,
                        Description = HttpStatusCode.BadRequest.ToString()
                    }
                });
            }

            return(new JoinGameResponse
            {
                IsSuccessful = true
            });
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Welcome to Rock, Paper, Scissors Game!");
            Console.WriteLine("You are playing this game with Computer.");
            Console.WriteLine("PLayer , what is your name? : ");
            var player1Name = Console.ReadLine();
            var player2Name = "Computer";

            GameService gameService = new GameService();
            var         gameProfile = gameService.CreateGameProfile(); //Create Game Profile

            // Registration of 1nd player in Team
            JoinTeam player1 = new JoinTeam
            {
                Player = new Model.Player
                {
                    Id   = new Guid(),
                    Name = player1Name
                }
            };

            gameService.JoinTeam(player1);

            // Registration of 2nd player in Team
            JoinTeam player2 = new JoinTeam
            {
                Player = new Model.Player
                {
                    Id   = new Guid(),
                    Name = player2Name
                }
            };

            gameService.JoinTeam(player2);


            Console.WriteLine("Welcome {0} and {1}", player1Name, player2Name);
            Console.WriteLine("{0}, Please pick Rock, Paper, or Scissors. Press 1 for Rock, 2 for Paper, 3 for Scissors", player1Name);
            int input = Convert.ToInt32(Console.ReadLine());

            PlayGameRequest playGameRequest = new PlayGameRequest
            {
                PlayerName = player1Name,
                NextMove   = (Enums.MoveType)input
            };
            var gameResponse = gameService.StartMove(playGameRequest);

            Random          random            = new Random();
            int             secondInput       = random.Next(1, 3);
            PlayGameRequest secondGameRequest = new PlayGameRequest
            {
                PlayerName = player2Name,
                NextMove   = (Enums.MoveType)secondInput
            };
            var secondGameResponse = gameService.StartMove(secondGameRequest);

            //Moves done and calculate Result
            if (gameResponse.IsSuccessful && secondGameResponse.IsSuccessful)
            {
                GameStatusRequest gameStatusRequest = new GameStatusRequest
                {
                    GameId = gameProfile.GameId
                };
                var result = gameService.CheckGameStatus(gameStatusRequest);
                if (result.IsSuccessful)
                {
                    Console.WriteLine("==================================");
                    if (result.Status == Enums.GameStatus.PlayerOneWon)
                    {
                        Console.WriteLine("Player : " + player1Name + " is the winner");
                    }
                    else if (result.Status == Enums.GameStatus.PlayerTwoWon)
                    {
                        Console.WriteLine("Player : " + player2Name + " is the winner");
                    }
                    else
                    {
                        Console.WriteLine("Player : " + result.Status);
                    }
                }
            }
            Console.WriteLine("Press any key to exit.");
        }