private static void PackageTick(object sender, ElapsedEventArgs e) { lock (Server.ChangedCells) { List <PositionDataPackage> positionData = PositionData(); for (int i = 0; i < Players.Count; i++) { List <GridDataPackage> gridData = GridData(Players[i].PlayerID); byte[] package = PackageToByte(new DataCollectionPackage() { PositionDataPackages = positionData, GridDataPackages = gridData }); if (TCPHelper.Connected(Players[i].Client.tcpClient)) { Players[i].Client.SendToClient(package); } else { disconnectedClients.Add(Players[i].Client); } } ChangedCells.Clear(); } foreach (var item in disconnectedClients) { Disconnect(item); } disconnectedClients.Clear(); }
private bool RequestCharacterCreation(TcpClient client) { List <PlayerDataModel> requests = new List <PlayerDataModel>(); PlayerDataModel model = new PlayerDataModel() { PlayerDataRequest = PlayerDataRequest.Create, UserID = clientName }; requests.Add(model); //Sent to database byte[] data = TCPHelper.MessageBytesNewton(requests); client.GetStream().Write(data, 0, data.Length); PlayerDataModel responseModel = null; //Wait for response bool done = false; while (!done) { if (TCPHelper.Connected(client)) { if (client.GetStream().DataAvailable) { Debug.Log("INCOMMING DATA"); string responseString = TCPHelper.ReadStreamOnce(client.GetStream()); responseModel = JsonConvert.DeserializeObject <PlayerDataModel>(responseString); done = true; } } else { done = true; } Thread.Sleep(16); } switch (responseModel.PlayerDataStatus) { case PlayerDataStatus.None: break; case PlayerDataStatus.Success: return(true); case PlayerDataStatus.ConnectionFailed: break; case PlayerDataStatus.AlreadyExists: break; case PlayerDataStatus.DoesNotExist: break; default: break; } return(false); }
private PlayerDataModel GetCharacterFromDB() { TcpClient client = new TcpClient(GlobalVariables.LOADBALANCER_IP, GlobalVariables.GAME_DATABASE_LOADBALANCER_PORT); //TcpClient client = new TcpClient("127.0.0.1", GlobalVariables.GAME_DATABASE_LOADBALANCER_PORT); List <PlayerDataModel> requests = new List <PlayerDataModel>(); PlayerDataModel model = new PlayerDataModel() { PlayerDataRequest = PlayerDataRequest.Read, UserID = clientName }; requests.Add(model); //Sent to database byte[] data = TCPHelper.MessageBytesNewton(requests); client.GetStream().Write(data, 0, data.Length); PlayerDataModel responseModel = null; //Wait for response bool done = false; while (!done) { if (TCPHelper.Connected(client)) { if (client.GetStream().DataAvailable) { Debug.Log("INCOMMING DATA"); string responseString = TCPHelper.ReadStreamOnce(client.GetStream()); responseModel = JsonConvert.DeserializeObject <PlayerDataModel>(responseString); done = true; } } else { done = true; } Thread.Sleep(16); } //When response have been received, check the response switch (responseModel.PlayerDataStatus) { case PlayerDataStatus.None: break; case PlayerDataStatus.Success: return(responseModel); case PlayerDataStatus.ConnectionFailed: break; case PlayerDataStatus.AlreadyExists: break; case PlayerDataStatus.DoesNotExist: { if (RequestCharacterCreation(client)) { return(new PlayerDataModel() { PlayerDataStatus = PlayerDataStatus.DoesNotExist }); } } break; default: break; } return(null); }