Пример #1
0
        protected override void Update(GameTime gameTime)
        {
            var accl = 1.5f;
            var fric = .2f;
            var acc  = new Vector2();

            if (KeyboardHelper.IsDown(Keys.Left))
            {
                acc -= Vector2.UnitX * accl;
            }
            if (KeyboardHelper.IsDown(Keys.Right))
            {
                acc += Vector2.UnitX * accl;
            }
            if (KeyboardHelper.IsDown(Keys.Down))
            {
                acc += Vector2.UnitY * accl;
            }
            if (KeyboardHelper.IsDown(Keys.Up))
            {
                acc -= Vector2.UnitY * accl;
            }
            _vel += acc;
            _vel += -_vel * fric;
            _pos += _vel;

            _spotMap.Clean();
            foreach (WireSpot spot in _wire.Spots)
            {
                _spotMap.Register(spot.Position, spot);
            }
            _wireRenderer.ClearSpotOverrides();
            var neighbors = _spotMap.GetNeighbors(_pos, 1);

            foreach (WireSpot spot in neighbors)
            {
                _wireRenderer.SpotOverrides.Add(spot, new WireSpotRenderOverride()
                {
                    DotColor = Color.Green
                });
                var dist = (spot.Position - _pos).Length();
                if (dist < 80)
                {
                    _wireRenderer.SpotOverrides[spot].DotColor = Color.Red;
                    var force = (spot.Position - _pos).Normal() * -.3f;
                    spot.ApplyForce(force);
                }
            }

            _wire.Update(gameTime);
            _player.Update(gameTime);


            var camForce     = Vector2.Zero;
            var camZoomForce = 0f;

            if (KeyboardHelper.IsDown(Keys.I))
            {
                camForce += -Vector2.UnitY;
            }
            if (KeyboardHelper.IsDown(Keys.K))
            {
                camForce += Vector2.UnitY;
            }
            if (KeyboardHelper.IsDown(Keys.J))
            {
                camForce += -Vector2.UnitX;
            }
            if (KeyboardHelper.IsDown(Keys.L))
            {
                camForce += Vector2.UnitX;
            }
            if (KeyboardHelper.IsDown(Keys.U))
            {
                camZoomForce -= .1f;
            }
            if (KeyboardHelper.IsDown(Keys.O))
            {
                camZoomForce += .1f;
            }
            _camera.ApplyForce(camForce * .8f);
            _camera.ApplyZoomForce(camZoomForce * .1f);
            _camera.Update(gameTime);
            KeyboardHelper.Update();
            base.Update(gameTime);
        }