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(); }
public LevelIconState(LevelIconDefinition definition, bool discovered, bool finished) { _definition = definition; _discovered = discovered; _finished = finished; }
public LevelIconState(LevelIconDefinition definition, bool discovered, bool finished) { _definition = definition; _discovered = discovered; _finished = finished; }