Beispiel #1
0
        public override void update()
        {
            Vector2 mouseDelta;
            Vector2 mousePosition;
            Vector2 viewOffset = _halfScreenSize - _currentScreenCenter;
            bool wasLevelIconPreviouslySelected = _selectedLevelIcon != null;

            base.update();

            mouseDelta = new Vector2(_newMouseState.X - _oldMouseState.X, _newMouseState.Y - _oldMouseState.Y);
            mousePosition = new Vector2(_newMouseState.X, _newMouseState.Y) - viewOffset;
            _allowNewLevelSelection = mouseDelta.Length() > 2f;
            _levelSelectAngle = MathHelper.WrapAngle(_levelSelectAngle + 0.05f);

            if (_allowNewLevelSelection)
                _selectedLevelIcon = hitTestLevelIcons(mousePosition, 100f);

            if (_selectedLevelIcon == null && wasLevelIconPreviouslySelected)
            {
                _levelSelectPosition = new Vector2(_oldMouseState.X, _oldMouseState.Y);
                _levelSelectIconColor = _levelSelectIconDeselectedColor;
            }
            else if (_selectedLevelIcon != null)
            {
                _levelSelectPosition = _selectedLevelIcon.position + viewOffset;
                _levelSelectIconColor = _levelSelectIconSelectedColor;
                _targetScreenCenter += (_selectedLevelIcon.position - _currentScreenCenter) / 100f;
            }

            if (_selectedLevelIcon == null)
            {
                _levelSelectPosition += mouseDelta;
            }

            /*
            if (InputSystem.usingGamepad)
            {
                _targetScreenCenter += _newGamepadState.ThumbSticks.Left * 7 * new Vector2(1, -1);
                _targetScreenCenter += _newGamepadState.ThumbSticks.Right * 7 * new Vector2(1, -1);

                _scale = Math.Max(0.5f, _scale - _newGamepadState.Triggers.Left / 500f);
                _scale = Math.Min(1f, _scale + _newGamepadState.Triggers.Right / 500f);
            }*/

            if (_newKeyState.IsKeyDown(Keys.Left) || _newKeyState.IsKeyDown(Keys.A))
                _targetScreenCenter += new Vector2(-7, 0);
            if (_newKeyState.IsKeyDown(Keys.Right) || _newKeyState.IsKeyDown(Keys.D))
                _targetScreenCenter += new Vector2(7, 0);
            if (_newKeyState.IsKeyDown(Keys.Up) || _newKeyState.IsKeyDown(Keys.W))
                _targetScreenCenter += new Vector2(0, -7);
            if (_newKeyState.IsKeyDown(Keys.Down) || _newKeyState.IsKeyDown(Keys.S))
                _targetScreenCenter += new Vector2(0, 7);

            if (_newMouseState.LeftButton == ButtonState.Pressed && _oldMouseState.LeftButton == ButtonState.Released)
            {
                if (_selectedLevelIcon != null)
                {
                    _game.closeWorldMap();
                    _game.loadLevel(_selectedLevelIcon.levelUid);
                }
            }

            //_levelSelectPosition += mouseDelta;

            //_targetScreenCenter = Vector2.Max(_topLeft, Vector2.Min(_bottomRight, _targetScreenCenter));
            _currentScreenCenter += (_targetScreenCenter - _currentScreenCenter) / 11f;

            base.update();
        }
Beispiel #2
0
 public LevelIconState(LevelIconDefinition definition, bool discovered, bool finished)
 {
     _definition = definition;
     _discovered = discovered;
     _finished   = finished;
 }
Beispiel #3
0
 public LevelIconState(LevelIconDefinition definition, bool discovered, bool finished)
 {
     _definition = definition;
     _discovered = discovered;
     _finished = finished;
 }