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); }
private void AddEvent(Event evt) { OutgoingPool.AddEvent(evt); }