Exemplo n.º 1
0
        protected override void Update(GameTime gameTime)
        {
            //NetTime.Realtime = false;
            //NetTime.Advance(1000/60);

            float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }

            if (server != null)
            {
                server.Update();
            }


            KeyboardState keys  = Keyboard.GetState();
            MouseState    mouse = Mouse.GetState();

            controlVector.Thrust = (keys.IsKeyDown(Keys.W) ? 1.0f : 0f);
            controlVector.Torque = (keys.IsKeyDown(Keys.A) ? 1.0f : 0f) + (keys.IsKeyDown(Keys.D) ? -1.0f : 0f);
            controlVector.Firing = keys.IsKeyDown(Keys.Space); // Should be done as events.

            if (keys.IsKeyDown(Keys.Q) && !lastKeys.IsKeyDown(Keys.Q))
            {
                outgoingPool.AddEvent(new PlayerRequest(PlayerRequest.RequestType.FireMissile));
            }
            if (keys.IsKeyDown(Keys.E) && !lastKeys.IsKeyDown(Keys.E))
            {
                outgoingPool.AddEvent(new PlayerRequest(PlayerRequest.RequestType.FireMultiMissile));
            }

            tickCounter += delta;
            if (tickCounter >= 1f / 20)
            {
                tickCounter -= 1f / 20;
                outgoingPool.Synchronise();
            }

            client.Update();
            incomingPool.Synchronise();

            networkPlot.AddValue(client.Connection.Stats.BytesRecieved.PerSecond / 1024);


            lastKeys  = keys;
            lastMouse = mouse;
            base.Update(gameTime);
        }
Exemplo n.º 2
0
 private void AddEvent(Event evt)
 {
     OutgoingPool.AddEvent(evt);
 }