コード例 #1
0
 public static void sendStateToNetwork(this CarActor carActor, PacketWriter writer)
 {
     // read values from carActor and send over network:
     // position, orientation and velocity
     writer.Write(carActor.WorldTransform);
     writer.Write(carActor.LinearVelocity);
     writer.Write(carActor.AngularVelocity);
 }
コード例 #2
0
ファイル: Fog.cs プロジェクト: o3a/ZombieSmashersXNA4
 public override void NetWrite(PacketWriter writer)
 {
     writer.Write(NetGame.MSG_PARTICLE);
     writer.Write(Particle.PARTICLE_FOG);
     writer.Write(Background);
     writer.Write(NetPacker.BigFloatToShort(Location.X));
     writer.Write(NetPacker.BigFloatToShort(Location.Y));
 }
コード例 #3
0
        /// <summary>
        /// Send the local gamer's local player count to network.
        /// </summary>
        public static void SendToNetwork(this LocalNetworkGamer localGamer)
        {
            PacketWriter writer = new PacketWriter();
            writer.Write(PacketHeader.LOBBY_DATA);
            writer.Write(localGamer.GetLocalPlayerCount());

            // send in order, since old data must not overwrite the new data.
            localGamer.SendData(writer, SendDataOptions.InOrder);
        }
コード例 #4
0
ファイル: Hit.cs プロジェクト: o3a/ZombieSmashersXNA4
        public override void NetWrite(PacketWriter writer)
        {
            writer.Write(NetGame.MSG_PARTICLE);
            writer.Write(Particle.PARTICLE_HIT);
            writer.Write(Background);
            writer.Write(NetPacker.BigFloatToShort(Location.X));
            writer.Write(NetPacker.BigFloatToShort(Location.Y));

            writer.Write(NetPacker.BigFloatToShort(Trajectory.X));
            writer.Write(NetPacker.BigFloatToShort(Trajectory.Y));

            writer.Write(NetPacker.IntToSbyte(owner));
            writer.Write(NetPacker.IntToSbyte(flag));
        }
コード例 #5
0
 protected override void SendToNetwork(GameTime gameTime)
 {
     // write input to all players :
     // Packets are sent inorder to make sure the world state never goes backwards in time
     // Packets can still get lost, however.
     PacketWriter writer = new PacketWriter();
     writer.Write(PacketHeader.INGAME_DATA);
     foreach (CarActor carActor in idTocarActorMap_[localGamer_.Id]) carActor.sendToNetwork(writer);
     localGamer_.SendData(writer, SendDataOptions.InOrder);
 }
コード例 #6
0
ファイル: MuzzleFlash.cs プロジェクト: o3a/ZombieSmashersXNA4
        public override void NetWrite(PacketWriter writer)
        {
            writer.Write(NetGame.MSG_PARTICLE);
            writer.Write(Particle.PARTICLE_MUZZLEFLASH);
            writer.Write(Background);
            writer.Write(NetPacker.BigFloatToShort(Location.X));
            writer.Write(NetPacker.BigFloatToShort(Location.Y));

            writer.Write(NetPacker.BigFloatToShort(Trajectory.X));
            writer.Write(NetPacker.BigFloatToShort(Trajectory.Y));

            writer.Write(NetPacker.SmallFloatToShort(size));
        }
コード例 #7
0
ファイル: Shockwave.cs プロジェクト: o3a/ZombieSmashersXNA4
        public override void NetWrite(PacketWriter writer)
        {
            writer.Write(NetGame.MSG_PARTICLE);
            writer.Write(Particle.PARTICLE_SHOCKWAVE);
            writer.Write(Background);
            writer.Write(NetPacker.BigFloatToShort(Location.X));
            writer.Write(NetPacker.BigFloatToShort(Location.Y));

            writer.Write(NetPacker.MidFloatToShort(size));
            writer.Write(refract);
        }
コード例 #8
0
ファイル: Smoke.cs プロジェクト: o3a/ZombieSmashersXNA4
        public override void NetWrite(PacketWriter writer)
        {
            writer.Write(NetGame.MSG_PARTICLE);
            writer.Write(Particle.PARTICLE_SMOKE);
            writer.Write(Background);
            writer.Write(NetPacker.BigFloatToShort(Location.X));
            writer.Write(NetPacker.BigFloatToShort(Location.Y));

            writer.Write(NetPacker.BigFloatToShort(Trajectory.X));
            writer.Write(NetPacker.BigFloatToShort(Trajectory.Y));

            writer.Write(NetPacker.TinyFloatToByte(r));
            writer.Write(NetPacker.TinyFloatToByte(g));
            writer.Write(NetPacker.TinyFloatToByte(b));
            writer.Write(NetPacker.TinyFloatToByte(a));

            writer.Write(NetPacker.SmallFloatToShort(size));
            writer.Write(NetPacker.IntToSbyte(flag));
        }
コード例 #9
0
ファイル: Player.cs プロジェクト: shadowpt/hs
 public void ClientWriteNetworkPacket(PacketWriter packetWriter)
 {
     packetWriter.Write(PositionInput);
     packetWriter.Write(RotationInput);
 }
コード例 #10
0
ファイル: Network.cs プロジェクト: narfman0/ERMotA
        public void Update()
        {
            if (Session != null)
            {
                try
                {
                    Session.Update();
                }
                catch (Exception e)
                {
                    e.ToString();
                }
                foreach (LocalNetworkGamer gamer in Session.LocalGamers)
                {
                    #region Send network data
                    //write YOUR player data
                    gamer.Tag = game1.Player;
                    packetWriter.Write((Int16)0);
                    packetWriter.Write(game1.Player.Pos);

                    //write HOST data
                    if (Session.IsHost)
                    {
                        packetWriter.Write((Int16)1);   //1 = enemy updates
                        for (int i = 0; i < Game1.MAX_ENEMIES; ++i)
                        {
                            packetWriter.Write(game1.enemy[i].Pos);
                            packetWriter.Write(game1.enemy[i].CurrentAnimation);
                            packetWriter.Write(game1.enemy[i].CurrentFrame);
                            packetWriter.Write((Int16)game1.enemy[i].Flag);
                        }
                    }
                    foreach (NetworkGamer remoteGamer in Session.RemoteGamers)
                        gamer.SendData(packetWriter, SendDataOptions.InOrder, remoteGamer);
                    packetWriter.Flush();
                    packetWriter = new PacketWriter();
                    #endregion
                    #region Get network data
                    while (gamer.IsDataAvailable)
                    {
                        NetworkGamer sender;
                        gamer.ReceiveData(packetReader, out sender);
                        if (!sender.IsLocal)
                        {
                            LivingEntity remotePlayer = sender.Tag as LivingEntity;
                            if (remotePlayer == null)
                            {
                                Vector2 Pos = new Vector2(Map.MapSize / 2, Map.MapSize - 8);
                                remotePlayer = new LivingEntity(Pos);
                            }
                            while (packetReader.Position < packetReader.Length)
                                switch (packetReader.ReadInt16())   //get message type
                                {
                                    case 0: //remote player pos update
                                        {
                                            remotePlayer.Pos = packetReader.ReadVector2();
                                            break;
                                        }

                                    case 1:
                                        {
                                            for (int i = 0; i < Game1.MAX_ENEMIES; ++i)
                                            {
                                                game1.enemy[i].Pos = packetReader.ReadVector2();
                                                game1.enemy[i].CurrentAnimation = packetReader.ReadInt16();
                                                game1.enemy[i].CurrentFrame = packetReader.ReadInt16();
                                                game1.enemy[i].Flag = packetReader.ReadInt16();
                                            }
                                            break;
                                        }
                                    case 2:
                                        {   //receive map!
                                            for (int i = 0; i < Map.MapSize; ++i)
                                                for (int j = 0; j < Map.MapSize; ++j)
                                                    game1.GameMap.MapArray[i, j] = packetReader.ReadInt16();
                                            break;
                                        }
                                    case 3: //only host responds to attacks
                                        {
                                            if (Session.IsHost)
                                            {
                                                int e = packetReader.ReadInt16();
                                                remotePlayer.Attack(game1.enemy[e]);
                                                if (game1.enemy[e].CurrentHealth < 1)    //death
                                                {
                                                    packetWriter.Write((Int16)4);
                                                    Int16 XPToAdd = (Int16)(game1.enemy[e].Level * (game1.enemy[e].Dexterity +
                                                        game1.enemy[e].Speed + game1.enemy[e].Strength) / 3);
                                                    packetWriter.Write((Int16)XPToAdd);
                                                    game1.Player.XP += XPToAdd;
                                                    game1.enemy[e].Pos.X = 236 + game1.rand.Next() % 40;
                                                    game1.enemy[e].Pos.Y = 484 + game1.rand.Next() % 20;
                                                }
                                            }
                                            break;
                                        }
                                    case 4: //xp additions
                                        {
                                            game1.Player.XP += packetReader.ReadInt16();
                                            break;
                                        }
                                    case 5:
                                        {
                                            if(gamer.Gamertag.GetHashCode() == packetReader.ReadInt32())
                                                game1.Player.CurrentHealth -= packetReader.ReadInt16();
                                            else
                                                packetReader.ReadInt16();
                                            break;
                                        }
                                    case 6:
                                        {
                                            remotePlayer.Level = packetReader.ReadInt16();
                                            remotePlayer.Dexterity = packetReader.ReadInt16();
                                            remotePlayer.Speed = packetReader.ReadInt16();
                                            remotePlayer.Strength = packetReader.ReadInt16();
                                            remotePlayer.CurrentAnimation = packetReader.ReadInt16();
                                            remotePlayer.CurrentFrame = packetReader.ReadInt16();
                                            remotePlayer.isAttacking = packetReader.ReadBoolean();
                                            if (remotePlayer.isAttacking)
                                            {
                                                remotePlayer.CurrentAnimationAttack = packetReader.ReadInt16();
                                                remotePlayer.CurrentFrameAttack = packetReader.ReadInt16();
                                            }
                                            break;
                                        }
                                }
                            sender.Tag = remotePlayer;
                        }
                    }
                    #endregion
                }
            }
        }
コード例 #11
0
ファイル: Tank.cs プロジェクト: Nailz/MonoGame-Samples
        /// <summary>
        /// Writes our local tank state into a network packet.
        /// </summary>
        public void WriteNetworkPacket(PacketWriter packetWriter, GameTime gameTime)
        {
            // Send our current time.
            packetWriter.Write((float)gameTime.TotalGameTime.TotalSeconds);

            // Send the current state of the tank.
            packetWriter.Write(simulationState.Position);
            packetWriter.Write(simulationState.Velocity);
            packetWriter.Write(simulationState.TankRotation);
            packetWriter.Write(simulationState.TurretRotation);

            // Also send our current inputs. These can be used to more accurately
            // predict how the tank is likely to move in the future.
            packetWriter.Write(tankInput);
            packetWriter.Write(turretInput);
        }
コード例 #12
0
        /// <summary>
        /// Serialize the current object to a packet.
        /// </summary>
        /// <param name="packetWriter">The packet writer that receives the data.</param>
        public void Serialize(PacketWriter packetWriter)
        {
            // safety-check the parameter, as it must be valid.
            if (packetWriter == null)
            {
                throw new ArgumentNullException("packetWriter");
            }

            packetWriter.Write(ShipColor);
            packetWriter.Write(ShipVariation);
        }
コード例 #13
0
ファイル: Player.cs プロジェクト: shadowpt/hs
        public void ServerWriteNetworkPacket(PacketWriter packetWriter)
        {
            packetWriter.Write(simulationState.Position);
            packetWriter.Write(simulationState.Velocity);
            packetWriter.Write(simulationState.Rotation);

            packetWriter.Write(PositionInput);
            packetWriter.Write(RotationInput);
        }
コード例 #14
0
ファイル: Particle.cs プロジェクト: o3a/ZombieSmashersXNA4
 public virtual void NetWrite(PacketWriter writer)
 {
     writer.Write(NetGame.MSG_PARTICLE);
     writer.Write(PARTICLE_NONE);
     writer.Write(Background);
 }
コード例 #15
0
ファイル: Game1.cs プロジェクト: KhkhkhTeMakhkhKh/Glib
 void tbs_TextSubmitted(object sender, EventArgs e)
 {
     string sentText = sender.Cast<TextBoxSprite>().RealText;
     PacketWriter dataSender = new PacketWriter();
     dataSender.Write(sentText);
     session.LocalGamers[0].SendData(dataSender, SendDataOptions.ReliableInOrder);
 }
コード例 #16
0
ファイル: ShipInput.cs プロジェクト: Nailz/MonoGame-Samples
        /// <summary>
        /// Serialize the object out to a packet.
        /// </summary>
        /// <param name="packetWriter">The packet to write to.</param>
        public void Serialize(PacketWriter packetWriter)
        {
            // safety-check the parameters, as they must be valid
            if (packetWriter == null)
            {
                throw new ArgumentNullException("packetWriter");
            }

            packetWriter.Write((int)World.PacketTypes.ShipInput); 
            packetWriter.Write(LeftStick);
            packetWriter.Write(RightStick);
            packetWriter.Write(MineFired);
        }
コード例 #17
0
ファイル: Player.cs プロジェクト: Hamsand/Swf2XNA
 //private bool isAlive = true;
 //public virtual bool IsAlive { get { return isAlive; } set { isAlive = value; } }
 public void WriteNetworkPacket(PacketWriter packetWriter, GameTime gameTime)
 {
     // Send our current time.
     packetWriter.Write((float)gameTime.TotalGameTime.TotalSeconds);
     packetWriter.Write(livingState == LivingState.Alive);
     if (livingState == LivingState.Alive)
     {
         // Send the current state of the tank.
         packetWriter.Write(body.GetPosition().X);
         packetWriter.Write(body.GetPosition().Y);
         packetWriter.Write(body.GetLinearVelocity().X);
         packetWriter.Write(body.GetLinearVelocity().Y);
     }
 }
コード例 #18
0
 public static void sendInputToNetwork(this CarActor carActor, PacketWriter writer)
 {
     // read values from carActor and send over network:
     // accleration
     writer.Write(carActor.Acceleration);
 }
コード例 #19
0
ファイル: LiveSession.cs プロジェクト: rc183/igf
 /// <summary>
 /// Helper method to write the network value to the PacketWriter
 /// </summary>
 /// <param name="packetWriter"></param>
 /// <param name="networkValue"></param>
 private static void WriteNetworkValue(ref PacketWriter packetWriter, object networkValue)
 {
     if (networkValue == null)
         throw new CoreException("NetworkValue is null");
     else
     {
         if (networkValue is bool)
             packetWriter.Write((bool) networkValue);
         else if (networkValue is byte)
             packetWriter.Write((byte) networkValue);
         else if (networkValue is byte[])
         {
             var tempByteArray = (byte[]) networkValue;
             packetWriter.Write(tempByteArray.Length);
             packetWriter.Write(tempByteArray);
         }
         else if (networkValue is char)
             packetWriter.Write((char) networkValue);
         else if (networkValue is char[])
         {
             var tempCharArray = (char[]) networkValue;
             packetWriter.Write(tempCharArray.Length);
             packetWriter.Write(tempCharArray);
         }
         else if (networkValue is Color)
             packetWriter.Write((Color) networkValue);
         else if (networkValue is double)
             packetWriter.Write((double) networkValue);
         else if (networkValue is float)
             packetWriter.Write((float) networkValue);
         else if (networkValue is int)
             packetWriter.Write((int) networkValue);
         else if (networkValue is long)
             packetWriter.Write((long) networkValue);
         else if (networkValue is Matrix)
             packetWriter.Write((Matrix) networkValue);
         else if (networkValue is Quaternion)
             packetWriter.Write((Quaternion) networkValue);
         else if (networkValue is sbyte)
             packetWriter.Write((sbyte) networkValue);
         else if (networkValue is short)
             packetWriter.Write((short) networkValue);
         else if (networkValue is string)
             packetWriter.Write((string) networkValue);
         else if (networkValue is uint)
             packetWriter.Write((uint) networkValue);
         else if (networkValue is ulong)
             packetWriter.Write((ulong) networkValue);
         else if (networkValue is ushort)
             packetWriter.Write((ushort) networkValue);
         else if (networkValue is Vector2)
             packetWriter.Write((Vector2) networkValue);
         else if (networkValue is Vector3)
             packetWriter.Write((Vector3) networkValue);
         else if (networkValue is Vector4)
             packetWriter.Write((Vector4) networkValue);
         else
         {
             throw new CoreException("NetworkValue type isn't supported");
         }
     }
 }
コード例 #20
0
ファイル: Character.cs プロジェクト: o3a/ZombieSmashersXNA4
        public void WriteToNet(PacketWriter writer)
        {
            writer.Write(NetGame.MSG_CHARACTER);

            writer.Write(NetPacker.IntToSbyte(charDef.DefID));
            writer.Write(NetPacker.IntToSbyte(Team));
            writer.Write(NetPacker.IntToSbyte(ID));

            writer.Write(NetPacker.BigFloatToShort(Loc.X));
            writer.Write(NetPacker.BigFloatToShort(Loc.Y));

            writer.Write(NetPacker.IntToShort(Anim));
            writer.Write(NetPacker.IntToShort(AnimFrame));
            writer.Write(NetPacker.MidFloatToShort(frame));

            if (State == CharState.Air)
                writer.Write(true);
            else
                writer.Write(false);

            if (Face == CharDir.Right)
                writer.Write(true);
            else
                writer.Write(false);

            writer.Write(NetPacker.BigFloatToShort(Trajectory.X));
            writer.Write(NetPacker.BigFloatToShort(Trajectory.Y));

            writer.Write(KeyRight);
            writer.Write(KeyLeft);

            writer.Write(NetPacker.IntToShort(HP));
        }