public override void HandleInput(GameComponents.Input input, GameTime gameTime) { base.HandleInput(input, gameTime); /*((FreeCamera)CameraManager.ActiveCamera).Rotate(input.MouseMoved.X * 0.01f, input.MouseMoved.Y * 0.01f); * * Vector3 moveVector = Vector3.Zero; * if (input.Up) moveVector += Vector3.Forward; * if (input.Down) moveVector += Vector3.Backward; * if (input.Right) moveVector += Vector3.Left; * if (input.Left) moveVector += Vector3.Right; * moveVector *= ((float)gameTime.ElapsedGameTime.TotalMilliseconds / 1000.0f) * 30.0f; * * ((FreeCamera)CameraManager.ActiveCamera).Move(moveVector);*/ }
/// <summary> /// Handle the input of the user relative to the <c>DeadScreen</c> screen. /// </summary> /// <param name="input">Current state of the player input.</param> /// <param name="gameTime">Current time of the game.</param> public override void HandleInput(GameComponents.Input input, GameTime gameTime) { base.HandleInput(input, gameTime); if (input.Up) { _selectedEntry = (_selectedEntry - 1) == -1 ? _menuEntries.Count - 1 : (_selectedEntry - 1); } if (input.Down) { _selectedEntry = (_selectedEntry + 1) == _menuEntries.Count ? 0 : (_selectedEntry + 1); } if (input.Action) { switch (_selectedEntry) { case 0: ScreenManager.RemoveScreen("AGameMenu"); break; case 1: ScreenManager.RemoveScreen("AGameMenu"); EventManager.Trigger(new EventData_SaveGame(_gameScreen.MapName, _gameScreen.MainPlayer, _gameScreen.Enemies)); break; case 2: ScreenManager.RemoveScreen("AGameMenu"); int index = 0; string[] files = FileHelper.GetFilesInDirectory(); if (files.Length == 0) { ScreenManager.RemoveScreen("AGameMenu"); } else { bool finish = false; for (int i = 0; i < files.Length && !finish; i++) { if (files[i].Contains("GameSetting")) { continue; } string extension = files[i].Split(' ')[2].Split('.')[1]; if (extension != "png") { index = i; finish = true; } } for (int i = 1; i < files.Length; i++) { if (files[i].Contains("GameSetting")) { continue; } string extension = files[i].Split(' ')[2].Split('.')[1]; if (extension != "png") { int date = Convert.ToInt32(files[i].Split(' ')[1]); int hour = Convert.ToInt32(files[i].Split(' ')[2].Split('.')[0]); if (date > Convert.ToInt32(files[index].Split(' ')[1])) { index = i; } else if (date == Convert.ToInt32(files[index].Split(' ')[1]) && hour > Convert.ToInt32(files[index].Split(' ')[2].Split('.')[0])) { index = i; } } } EventManager.Trigger(new EventData_LoadSavedGame(files[index])); } break; case 3: ScreenManager.RemoveScreen("AGameMenu"); ScreenManager.AddScreen("LoadingScreen", new LoadingGame( LevelManager.GetLevel(_gameScreen.MapName).MapInformation, false)); ScreenManager.RemoveScreen("ContinueGame"); break; } } /*if (input.Select) * { * ScreenManager.RemoveScreen("InGameMenu"); * }*/ }
/// <summary> /// Handle the input of the user relative to the <c>MainGameScreen</c> screen. /// </summary> /// <param name="input">Current state of the player input.</param> /// <param name="gameTime">Current time of the game.</param> public override void HandleInput(GameComponents.Input input, GameTime gameTime) { if (input.Up) { if (_player.PlayerYDirection != Player.YDirection.Up) { EventManager.QueueEvent(new EventData_UnitDirectionYChanged(ref _player, Player.YDirection.Up)); } } if (input.Down) { if (_player.PlayerYDirection != Player.YDirection.Down) { EventManager.QueueEvent(new EventData_UnitDirectionYChanged(ref _player, Player.YDirection.Down)); } } if (!input.Up && !input.Down) { if (_player.PlayerYDirection != Player.YDirection.None) { EventManager.QueueEvent(new EventData_UnitDirectionYChanged(ref _player, Player.YDirection.None)); } } if (input.Left) { if (_player.PlayerXDirection != Player.XDirection.Left) { EventManager.QueueEvent(new EventData_UnitDirectionXChanged(ref _player, Player.XDirection.Left)); } if (_player.PlayerState == Player.State.Waiting) { EventManager.QueueEvent(new EventData_UnitStateChanged(_player, Player.State.Running)); } } if (input.Right) { if (_player.PlayerXDirection != Player.XDirection.Right) { EventManager.QueueEvent(new EventData_UnitDirectionXChanged(ref _player, Player.XDirection.Right)); } if (_player.PlayerState == Player.State.Waiting) { EventManager.QueueEvent(new EventData_UnitStateChanged(_player, Player.State.Running)); } } if (!input.Left && !input.Right) { if (_player.PlayerXDirection != Player.XDirection.None) { EventManager.QueueEvent(new EventData_UnitDirectionXChanged(ref _player, Player.XDirection.None)); } if (_player.PlayerState == Player.State.Running)// || _player.PlayerState == GameUnit.State.Jumping) { EventManager.QueueEvent(new EventData_UnitStateChanged(_player, Player.State.Waiting)); } } if (input.Attack) { _amount += (float)(gameTime.ElapsedGameTime.Milliseconds / 1000f); if (_player.PlayerGun != null && _amount > _player.ShotSpeed) { Vector3 origin = Vector3.Zero; Vector3 up = Vector3.Zero; Vector3 speed = Vector3.Zero; if (_player.PlayerState == Player.State.Jumping) { if (_player.PlayerXDirection == Character.XDirection.Left || (_player.PlayerXDirection == Character.XDirection.None && _player.LastPlayerXDirection == Character.XDirection.Left)) { origin = new Vector3( _player.DModel.BSphere.Center.X - _player.DModel.BSphere.Radius / 1f, _player.DModel.BSphere.Center.Y + _player.DModel.BSphere.Radius / 2.5f, _player.DModel.BSphere.Center.Z); up = -Vector3.Up; speed = new Vector3(-10f, 0, 0); } else if (_player.PlayerXDirection == Character.XDirection.Right || (_player.PlayerXDirection == Character.XDirection.None && _player.LastPlayerXDirection == Character.XDirection.Right)) { origin = new Vector3( _player.DModel.BSphere.Center.X + _player.DModel.BSphere.Radius / 1.2f, _player.DModel.BSphere.Center.Y + _player.DModel.BSphere.Radius / 4.5f, _player.DModel.BSphere.Center.Z); up = Vector3.Up; speed = new Vector3(10f, 0, 0); } } else if (_player.PlayerXDirection == Character.XDirection.None && _player.PlayerYDirection == Character.YDirection.Up) { origin = new Vector3( _player.DModel.BSphere.Center.X, _player.DModel.BSphere.Center.Y + _player.DModel.BSphere.Radius * 1.5f, _player.DModel.BSphere.Center.Z); up = new Vector3(-1f, 0, 0); speed = new Vector3(0, 10f, 0); } else if (_player.PlayerXDirection == Character.XDirection.Left || (_player.PlayerXDirection == Character.XDirection.None && _player.LastPlayerXDirection == Character.XDirection.Left)) { if (_player.PlayerYDirection == Character.YDirection.Up) { origin = new Vector3( _player.DModel.BSphere.Center.X - _player.DModel.BSphere.Radius / 1.3f, _player.DModel.BSphere.Center.Y + _player.DModel.BSphere.Radius / 0.85f, _player.DModel.BSphere.Center.Z); up = new Vector3(-0.75f, -0.75f, 0); speed = new Vector3(-10f, 10f, 0); } else { origin = new Vector3( _player.DModel.BSphere.Center.X - _player.DModel.BSphere.Radius / 0.9f, _player.DModel.BSphere.Center.Y + _player.DModel.BSphere.Radius / 4.5f, _player.DModel.BSphere.Center.Z); up = Vector3.Up; speed = new Vector3(-10f, 0, 0); } } else if (_player.PlayerXDirection == Character.XDirection.Right || (_player.PlayerXDirection == Character.XDirection.None && _player.LastPlayerXDirection == Character.XDirection.Right)) { if (_player.PlayerYDirection == Character.YDirection.Up) { origin = new Vector3( _player.DModel.BSphere.Center.X + _player.DModel.BSphere.Radius / 1.3f, _player.DModel.BSphere.Center.Y + _player.DModel.BSphere.Radius / 0.9f, _player.DModel.BSphere.Center.Z); up = new Vector3(-0.75f, 0.75f, 0); speed = new Vector3(10f, 10f, 0); } else { origin = new Vector3( _player.DModel.BSphere.Center.X + _player.DModel.BSphere.Radius / 1.2f, _player.DModel.BSphere.Center.Y + _player.DModel.BSphere.Radius / 4.5f, _player.DModel.BSphere.Center.Z); up = Vector3.Up; speed = new Vector3(10f, 0, 0); } } if (_player.PlayerState != Player.State.Climbing) { if (_player.PlayerGun.CurrentAmmo != 0) { if (_player.PlayerGun.GunType == Gun.ShotType.Laser) { SoundManager.GetSound("LaserShot").Volume = GameSettings.DefaultInstance.SoundVolume; SoundManager.GetSound("LaserShot").Play(true, false); } else { SoundManager.GetSound("MetalShot").Volume = GameSettings.DefaultInstance.SoundVolume; SoundManager.GetSound("MetalShot").Play(true, false); } _shotManager.AddShot(new Shot(_player.PlayerGun.GunType, origin, up, speed)); _player.PlayerGun.CurrentAmmo -= 1; } else { foreach (Objects.Object playerObject in _player.Objects) { if (playerObject is Objects.Ammo && ((Objects.Ammo)playerObject).Type == _player.PlayerGun.GunType) { EventManager.Trigger(new EventData_ReloadGun(_player, playerObject)); ((AnimatedModel)_player.DModel).Animation.StartClip("Reload", false); } } } } _amount = 0.0f; } } if (input.Jump) { EventManager.QueueEvent(new EventData_UnitStateChanged(_player, Player.State.Jumping)); } if (input.Select) { Input.Continuous = false; ScreenManager.AddScreen("AGameMenu", new GameMenuScreen(this, "AGameMenu", 25f)); } if (input.Start) { ((ChaseCamera)CameraManager.ActiveCamera).Position = new Vector3(10f, 7.5f, 18f); ((ChaseCamera)CameraManager.ActiveCamera).Target = new Vector3(10f, 7.5f, 5f); _player.Position = new Vector3(10, 6.5f, 5f); } if (input.Inventory) { SoundManager.GetSound("Running").Pause(); ScreenManager.AddScreen("Inventory", new InventoryScreen( this, "Inventory", "InventoryBackground", _player)); } /*((FreeCamera)CameraManager.ActiveCamera).Rotate(input.MouseMoved.X * 0.01f, input.MouseMoved.Y * 0.01f); * * Vector3 moveVector = Vector3.Zero; * if (input.Up) moveVector += Vector3.Forward; * if (input.Down) moveVector += Vector3.Backward; * if (input.Right) moveVector += Vector3.Left; * if (input.Left) moveVector += Vector3.Right; * moveVector *= ((float)gameTime.ElapsedGameTime.TotalMilliseconds / 1000.0f) * 30.0f; * * ((FreeCamera)CameraManager.ActiveCamera).Move(moveVector);*/ }
/// <summary> /// Handle the input of the user relative to the <c>InventoryScreen</c> screen. /// </summary> /// <param name="input">Current state of the player input.</param> /// <param name="gameTime">Current time of the game.</param> public override void HandleInput(GameComponents.Input input, GameTime gameTime) { base.HandleInput(input, gameTime); if (!_inside) { if (input.Up) { if (_currentElement == InventoryParts.Equipment) { _currentElement = InventoryParts.Exit; } else if (_currentElement == InventoryParts.Inventory) { _currentElement = InventoryParts.Equipment; } else { _currentElement = InventoryParts.Inventory; } } if (input.Down) { if (_currentElement == InventoryParts.Equipment) { _currentElement = InventoryParts.Inventory; } else if (_currentElement == InventoryParts.Inventory) { _currentElement = InventoryParts.Exit; } else { _currentElement = InventoryParts.Equipment; } } if (input.Left) { if (_currentElement == InventoryParts.Inventory) { _currentElement = InventoryParts.Equipment; } else if (_currentElement == InventoryParts.Equipment) { _currentElement = InventoryParts.Inventory; } else { _currentElement = InventoryParts.Equipment; } } if (input.Right) { if (_currentElement == InventoryParts.Inventory) { _currentElement = InventoryParts.Equipment; } else if (_currentElement == InventoryParts.Equipment) { _currentElement = InventoryParts.Inventory; } else { _currentElement = InventoryParts.Equipment; } } if (input.Action) { switch (_currentElement) { case InventoryParts.Inventory: _inside = true; _equipment.HandleInput(input); break; case InventoryParts.Equipment: _inside = true; _inventory.HandleInput(input); break; case InventoryParts.Exit: ScreenManager.RemoveScreen("Inventory"); break; } } if (input.Cancel) { ScreenManager.RemoveScreen("Inventory"); } } else { bool isCurrentElementInside = false; if (_currentElement == InventoryParts.Equipment && _equipment.Inside) { isCurrentElementInside = true; } else if (_currentElement == InventoryParts.Inventory && _inventory.Inside) { isCurrentElementInside = true; } if (_currentElement == InventoryParts.Equipment) { _equipment.Focus = true; _equipment.HandleInput(input); } else if (_currentElement == InventoryParts.Inventory) { _inventory.Focus = true; _inventory.HandleInput(input); } if (input.Cancel) { if (!isCurrentElementInside) { _inventory.Focus = false; _equipment.Focus = false; _inside = false; } } } }
/// <summary> /// Handle the input of the user in the equipment screen. /// </summary> /// <param name="input">Current state of the player input.</param> public void HandleInput(GameComponents.Input input) { if (input.Down) { if (!_inside) { if (_selectedObject == 0) { _selectedObject = 2; } else if (_selectedObject == 1) { _selectedObject = 3; } else if (_selectedObject == 2) { _selectedObject = 4; } else if (_selectedObject == 3) { _selectedObject = 1; } else { _selectedObject = 0; } } else { _selectedEntryMenu = _selectedEntryMenu - 1 < 0 ? 1 : 0; } } if (input.Up) { if (!_inside) { if (_selectedObject == 0) { _selectedObject = 4; } else if (_selectedObject == 1) { _selectedObject = 3; } else if (_selectedObject == 2) { _selectedObject = 0; } else if (_selectedObject == 3) { _selectedObject = 1; } else { _selectedObject = 2; } } else { _selectedEntryMenu = _selectedEntryMenu + 1 > 1 ? 0 : 1; } } if (input.Left) { if (!_inside) { if (_selectedObject == 0) { _selectedObject = 1; } else if (_selectedObject == 1) { _selectedObject = 0; } else if (_selectedObject == 2) { _selectedObject = 3; } else if (_selectedObject == 3) { _selectedObject = 2; } } } if (input.Right) { if (!_inside) { if (_selectedObject == 0) { _selectedObject = 1; } else if (_selectedObject == 1) { _selectedObject = 0; } else if (_selectedObject == 2) { _selectedObject = 3; } else if (_selectedObject == 3) { _selectedObject = 2; } } } if (input.Action) { if (!_inside) { //_inside = true; foreach (Objects.Object playerObject in _equippedObjects) { if (playerObject is Objects.Weapon && _selectedObject == 1) { _inside = true; } else if (playerObject is Objects.Armature && _selectedObject == 0 && ((Objects.Armature)playerObject).Type == Armature.ArmatureType.Helmet) { _inside = true; } else if (playerObject is Objects.Armature && _selectedObject == 2 && ((Objects.Armature)playerObject).Type == Armature.ArmatureType.Body) { _inside = true; } else if (playerObject is Objects.Armature && _selectedObject == 3 && ((Objects.Armature)playerObject).Type == Armature.ArmatureType.Hand) { _inside = true; } else if (playerObject is Objects.Armature && _selectedObject == 4 && ((Objects.Armature)playerObject).Type == Armature.ArmatureType.Foot) { _inside = true; } } } else { if (_selectedEntryMenu == 0) { Objects.Object element = null; for (int i = 0; i < _equippedObjects.Count && element == null; i++) { if (_selectedObject == 0 && _equippedObjects[i] is Objects.Armature && ((Objects.Armature)_equippedObjects[i]).Type == Armature.ArmatureType.Helmet) { element = _equippedObjects[i]; } else if (_selectedObject == 1 && _equippedObjects[i] is Objects.Weapon) { element = _equippedObjects[i]; } else if (_selectedObject == 2 && _equippedObjects[i] is Objects.Armature && ((Objects.Armature)_equippedObjects[i]).Type == Armature.ArmatureType.Body) { element = _equippedObjects[i]; } else if (_selectedObject == 3 && _equippedObjects[i] is Objects.Armature && ((Objects.Armature)_equippedObjects[i]).Type == Armature.ArmatureType.Hand) { element = _equippedObjects[i]; } else if (_selectedObject == 4 && _equippedObjects[i] is Objects.Armature && ((Objects.Armature)_equippedObjects[i]).Type == Armature.ArmatureType.Foot) { element = _equippedObjects[i]; } } if (element != null) { EventManager.Trigger(new EventData_UnequipObject(_player, element, _inventoryScreen)); } } else { Objects.Object element = null; for (int i = 0; i < _equippedObjects.Count && element == null; i++) { if (_selectedObject == 0 && _equippedObjects[i] is Objects.Armature && ((Objects.Armature)_equippedObjects[i]).Type == Armature.ArmatureType.Helmet) { element = _equippedObjects[i]; } else if (_selectedObject == 1 && _equippedObjects[i] is Objects.Weapon) { element = _equippedObjects[i]; } else if (_selectedObject == 2 && _equippedObjects[i] is Objects.Armature && ((Objects.Armature)_equippedObjects[i]).Type == Armature.ArmatureType.Body) { element = _equippedObjects[i]; } else if (_selectedObject == 3 && _equippedObjects[i] is Objects.Armature && ((Objects.Armature)_equippedObjects[i]).Type == Armature.ArmatureType.Hand) { element = _equippedObjects[i]; } else if (_selectedObject == 4 && _equippedObjects[i] is Objects.Armature && ((Objects.Armature)_equippedObjects[i]).Type == Armature.ArmatureType.Foot) { element = _equippedObjects[i]; } } if (element != null) { EventManager.Trigger(new EventData_ThrowAway(_player, element, _inventoryScreen)); } } } } if (input.Cancel) { _inside = false; } }
/// <summary> /// Handle the input of the user relative to the <c>LoadingGame</c> screen. /// </summary> /// <param name="input">Current state of the player input.</param> /// <param name="gameTime">Current time of the game.</param> public override void HandleInput(GameComponents.Input input, GameTime gameTime) { base.HandleInput(input, gameTime); }
/// <summary> /// Handle the input of the user in the inventory screen. /// </summary> /// <param name="input">Current state of the player input.</param> public void HandleInput(GameComponents.Input input) { if (input.Up) { if (!_inside) { int nextValue = (_selectedObject / 3) == 0 ? _selectedObject : 3 * ((_selectedObject / 3) - 1) + (_selectedObject % 3); if (nextValue < _notEquippedObjects.Count) { _selectedObject = nextValue; } } else { _selectedEntryMenu = _selectedEntryMenu + 1 > 1 ? 0 : 1; } } if (input.Down) { if (!_inside) { int nextValue = (_selectedObject / 3) == 2 ? _selectedObject : 3 * ((_selectedObject / 3) + 1) + (_selectedObject % 3); if (nextValue < _notEquippedObjects.Count) { _selectedObject = nextValue; } } else { _selectedEntryMenu = _selectedEntryMenu - 1 < 0 ? 1 : 0; } } if (input.Left) { _selectedObject = (_selectedObject - 1) < 0 ? 0 : _selectedObject - 1; } if (input.Right) { _selectedObject = (_selectedObject + 1) >= _notEquippedObjects.Count ? _notEquippedObjects.Count - 1 : _selectedObject + 1; } if (input.Action) { if (!_inside) { _inside = true; } else { if (_selectedEntryMenu == 0) { if (_notEquippedObjects[_selectedObject] is Objects.Ammo) { if (_player.PlayerGun != null && _player.PlayerGun.GunType == ((Objects.Ammo)_notEquippedObjects[_selectedObject]).Type && _player.PlayerGun.CurrentAmmo < _player.PlayerGun.MaxAmmo - 1) { EventManager.Trigger(new EventData_ReloadGun(_player, _notEquippedObjects[_selectedObject])); } } else { EventManager.Trigger(new EventData_EquipObject(_player, _notEquippedObjects[_selectedObject], _inventoryScreen)); } } else { EventManager.Trigger(new EventData_ThrowAway(_player, _notEquippedObjects[_selectedObject], _inventoryScreen)); } } } if (input.Cancel) { _inside = false; } }