// Start is called before the first frame update void Start() { string[] args = Environment.GetCommandLineArgs(); string token = args[1]; //string token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJKV1RQYXlsb2FkIjoie1wiU2VydmVyc0luZm9cIjp7XCJTZXJ2ZXJzXCI6W119LFwiVXNlcklEXCI6XCJKZW5zXCJ9IiwibmJmIjoxNTcwMTE5MjkwLCJleHAiOjE1NzA1NTEyOTAsImlhdCI6MTU3MDExOTI5MH0.L31Fkm8kaOpVoglhgEv_GvCAD6b1ep0h56OstUnF0d4"; JwtSecurityToken tokenSent = new JwtSecurityToken(token); JWTPayload payload = JWTManager.GetModelFromToken <JWTPayload>(token); clientName = payload.UserID; chatSystem = gameObject.GetComponent <ChatSystem>(); int port = 13001; //string IpAdress = "10.131.67.203"; client = new TcpClient(Globals.MIDDLEWARE_IP, port); //client = new TcpClient("192.168.10.135", port); userName = ((IPEndPoint)client.Client.LocalEndPoint).Address.ToString(); //client.NoDelay = true; Debug.Log("Connected?"); StartCoroutine(ListenToServer()); }
/// <summary> /// Starts an endless while-loop, where the tcp client listens for new messages from the endpoint /// </summary> /// <returns></returns> public IEnumerator ListenForMessages() { StreamReader reader = new StreamReader(networkStream); while (!isDisconnecting) { if (Connected) { if (networkStream.DataAvailable) { string msg = reader.ReadLine(); string[] msgSplit = msg.Split(Server.MESSAGE_TYPE_INDICATOR); MessageType type = (MessageType)Int32.Parse(msgSplit[0]); string newMessage = msgSplit[1]; switch (type) { case MessageType.Validate: if (ValidateToken(newMessage)) { //For sjov random placering JwtSecurityToken token = new JwtSecurityToken(newMessage); JWTPayload payload = JWTManager.GetModelFromToken <JWTPayload>(token); clientName = payload.UserID; //Tjek om spilleren allerede er ingame foreach (var item in Server.Clients) { if (item.clientName == clientName) { isDisconnecting = true; DisconnectClient(); } } //Tjek om brugeren har en karakter i databasen PlayerDataModel character = GetCharacterFromDB(); if (character != null) { switch (character.PlayerDataStatus) { case PlayerDataStatus.Success: { if (!isDisconnecting) { Vector2 index = new Vector2(character.PositionX, character.PositionY); Server.MapGrid.grid[(int)index.x, (int)index.y].GetComponent <Cell>().OccupyCell(SpawnActor(index, clientName).gameObject); } } break; case PlayerDataStatus.DoesNotExist: { if (!isDisconnecting) { Vector2 index = new Vector2(UnityEngine.Random.Range(0, Server.MapGrid.gridWidth), UnityEngine.Random.Range(0, Server.MapGrid.gridHeigth)); Server.MapGrid.grid[(int)index.x, (int)index.y].GetComponent <Cell>().OccupyCell(SpawnActor(index, clientName).gameObject); } } break; default: break; } } else { isDisconnecting = true; DisconnectClient(); } } else { isDisconnecting = true; DisconnectClient(); } break; case MessageType.Input: HandleInputMessage(newMessage); break; case MessageType.Disconnect: DisconnectClient(); break; case MessageType.Connect: break; case MessageType.ServerTick: break; default: break; } } yield return(null); } else { isDisconnecting = true; DisconnectClient(); } } }