public void OnLogin(LoginPacket packet) { var client = ServerTcpHandler.GetClient(packet.ClientId); try { var user = AccountService.Login(packet.Login, packet.Password); Log.Info("Sending Login Response"); client.Send(new LoginResponsePacket() { SessionId = user.SessionId, UserId = user.UserId, xLocation = user.X, yLocation = user.Y }); ServerEvents.Call(new PlayerLoginEvent() { Player = user, Client = client }); } catch (AccountError e) { Log.Info("Sending Login Error"); client.Send(new DialogPacket() { Message = e.ErrorMessage }); } }
[EventMethod] // When client finishes updating assets public void OnAssetReady(AssetsReadyPacket packet) { var player = Server.GetPlayer(packet.UserId); if (player != null) { player.AssetsReady = true; } var client = ServerTcpHandler.GetClient(packet.ClientId); // make the player itself appear client.Send(new PlayerPacket() { Name = player.Login, SpriteIndex = 2, UserId = player.UserId, X = player.X, Y = player.Y, Speed = player.speed }); // update chunks for that player ChunkProvider.CheckChunks(player); }
[EventMethod] // When client finishes updating assets public void OnAssetReady(AssetsReadyPacket packet) { var players = Server.Players; var player = Server.GetPlayer(packet.UserId); if (player != null) { player.AssetsReady = true; } var client = ServerTcpHandler.GetClient(packet.ClientId); // update chunks for that player ChunkProvider.CheckChunks(player); var playerPacket = player.ToPacket(); // make the player itself appear client.Send(playerPacket); // to track the entity spawning caches etc Server.Events.Call(new EntitySpawnEvent() { Entity = player, Position = player.Position }); // to handle packets when a player joins Server.Events.Call(new PlayerJoinEvent() { Player = player }); }
public void OnAsset(AssetPacket packet) { // if client doesnt have the asset we gotta send it if (packet.HaveIt == false) { var assetType = packet.AssetType; var asset = AssetLoader.LoadedAssets.GetAsset(packet.AssetType, packet.ResquestedImageName); var bytes = asset.ImageData; packet.Asset = bytes; ServerTcpHandler.GetClient(packet.ClientId).Send(packet); } }
public void OnLogin(LoginPacket packet) { var client = ServerTcpHandler.GetClient(packet.ClientId); try { // Check if already is online string userId = LoginDao.GetUserId(packet.Login); var player = Server.GetPlayer(userId); if (player != null) { client.Send(new DialogPacket() { Title = "Error", Message = "Account Already Online" }); return; } var user = AccountService.Login(packet.Login, packet.Password); Log.Info("Sending Login Response"); client.Send(new LoginResponsePacket() { SessionId = user.SessionId, UserId = user.UserId, xLocation = user.X, yLocation = user.Y }); client.Authenticated = true; Server.Events.Call(new PlayerLoggedInEvent() { Player = user, Client = client }); AssetListener.DownloadAssets(client); } catch (AccountError e) { Log.Info("Sending Login Error"); client.Send(new DialogPacket() { Title = "Acount Error", Message = e.ErrorMessage }); } }
public Server(ServerStartConfig config) { PORT = config.Port; _instance = this; Events?.Clear(); Events = new ServerEvents(); CommandHandler = new CommandHandler(); TcpHandler = new ServerTcpHandler(); AssetLoader.LoadServerAssets(); Map = AssetLoader.LoadMapFromFile(config.MapName); if (!config.DisableSpawners) { Map.LoadAllSpawners(); } }
public void OnAsset(AssetPacket packet) { // if client doesnt have the asset we gotta send it if (packet.HaveIt == false) { byte[] bytes = null; if (packet.AssetType == AssetType.TILESET) { bytes = Server.Map.Tilesets[packet.ResquestedImageName]; } else if (packet.AssetType == AssetType.SPRITE) { bytes = MapLoader.LoadImageData(packet.ResquestedImageName); } packet.Asset = bytes; ServerTcpHandler.GetClient(packet.ClientId).Send(packet); } }
public void TestSimpleConnections() { // Starting the Server var server = new ServerTcpHandler(); server.StartListening(8888); int numberOfClients = 3; // Connecting a client to the server for (var x = 0; x < numberOfClients; x++) { var client = new ConnectedClientTcpHandler(new TcpClient("localhost", 8888)); } // Wait for all the connections Thread.Sleep(1000); Assert.AreEqual(numberOfClients, ServerTcpHandler.ConnectedSockets()); }
public void StartListeningForPackets() { TcpHandler = new ServerTcpHandler(); TcpHandler.StartListening(PORT); _running = true; }