Пример #1
0
        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");
        }
Пример #2
0
        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);
                    }
                }
            }
        }