public void CreateAndSync(SendData data) { networkedScene.sentMessages++; if (data.creating != "Castle") { Entity ent = UIBehavior.ui.Create(data); if (ent != null && ent.Scene != null) { OutgoingMessage mes = networkService.CreateServerMessage(); mes.Write(ADD_WO); mes.Write(data.clientId); mes.Write(data.creating); mes.Write(data.position.X); mes.Write(data.position.Y); mes.Write(ent.Name); networkService.SendToClients(mes, WaveEngine.Networking.Messages.DeliveryMethod.ReliableOrdered); } } else { LayerTile tile = Map.map.GetTileByWorldPosition(data.position); if (tile != null) { Castle castle = new Castle(); Entity entity = new Entity() .AddComponent(new Transform2D()) .AddComponent(castle); Player p = UIBehavior.ui.FindPlayer(data.clientId); bool createdCastle = castle.SetCastle(tile.X, tile.Y, PopulateNetworkedGame.castleWidth, PopulateNetworkedGame.castleHeight, p, data.clientId); if (createdCastle) { entity.Name = ("WO-Castle" + data.clientId + "-" + new Random().NextDouble() + "-" + data.creating); networkedScene.EntityManager.Add(entity); p.castle = castle; castle.player = p; OutgoingMessage mes = networkService.CreateServerMessage(); mes.Write(ADD_CASTLE); mes.Write(data.clientId); mes.Write(entity.Name); mes.Write(castle.GetSize()); for (int i = 0; i < castle.GetSize(); i++) { WorldObject part = castle.GetPart(i); networkedScene.EntityManager.Add(part.Owner); mes.Write(part.Owner.Name); mes.Write(part.GetX()); mes.Write(part.GetY()); } networkService.SendToClients(mes, WaveEngine.Networking.Messages.DeliveryMethod.ReliableOrdered); } } } }
private void ReceiveCastleMessage(object sender, IncomingMessage receivedMessage) { //reads playerid string playerID = receivedMessage.ReadString(); Player p = UIBehavior.ui.FindPlayer(playerID); Castle castle = new Castle(); Entity entity = new Entity() .AddComponent(new Transform2D()) .AddComponent(castle); //castle name entity.Name = receivedMessage.ReadString(); castle.SetCastleForClient(receivedMessage, p); p.castle = castle; castle.player = p; networkedScene.EntityManager.Add(entity); for (int i = 0; i < castle.GetSize(); i++) { WorldObject part = castle.GetPart(i); networkedScene.EntityManager.Add(part.Owner); } Trace.WriteLine("Castillito"); }