public BattleTargetSelector(string cursorTextureFileName) { cursorTexture = GameClass.LoadTextureData("General/playerTurnMenuCursor"); controls = new GamePadController(PlayerIndex.One); debugControls = new KeyboardController(); controls.ControlsActive = false; currentState = BattleTargetSelectorState.Inactive; debugControls.ControlsActive = false; selectedTargets = new List<BattleCharacter>(); }
public void BeginTargetSelection(BattleTechniqueTargetType targetType, List<BattleCharacter> availableTargets) { this.targetType = targetType; switch (targetType) { case BattleTechniqueTargetType.AllActiveAllies: case BattleTechniqueTargetType.AllEnemies: case BattleTechniqueTargetType.Everyone: case BattleTechniqueTargetType.Self: case BattleTechniqueTargetType.SingleActiveAlly: case BattleTechniqueTargetType.SingleEnemy: case BattleTechniqueTargetType.SingleKOdAlly: noOfPossibleSelections = 1; // THIS SWITCH IS HERE TO ALLOW ADDITION OF MULTIPLE SELECTION TARGETTING TYPES. break; } this.availableTargets = availableTargets; currentState = BattleTargetSelectorState.AwaitingInput; controls.ControlsActive = true; debugControls.ControlsActive = true; currentCursorSelectionIndex = 0; inputDelay = true; }
public void Update(GameTime gameTime) { controls.Update(gameTime); debugControls.Update(gameTime); if (currentState != BattleTargetSelectorState.Inactive) { switch (currentState) { case BattleTargetSelectorState.AwaitingInput: if (targetType != BattleTechniqueTargetType.AllActiveAllies && targetType != BattleTechniqueTargetType.AllEnemies && targetType != BattleTechniqueTargetType.Everyone && targetType != BattleTechniqueTargetType.Self) { if (controls.ButtonPressed(Buttons.DPadUp, true, true) || debugControls.KeyPressed(Keys.Up, true, true)) { GameClass.SoundManager.PlaySoundEffect("Audio/cursorMove"); if (currentCursorSelectionIndex > 0) { currentCursorSelectionIndex--; } else { currentCursorSelectionIndex = availableTargets.Count - 1; } } else if (controls.ButtonPressed(Buttons.DPadDown, true, true) || debugControls.KeyPressed(Keys.Down, true, true)) { GameClass.SoundManager.PlaySoundEffect("Audio/cursorMove"); if (currentCursorSelectionIndex < availableTargets.Count - 1) { currentCursorSelectionIndex++; } else { currentCursorSelectionIndex = 0; } } if (!inputDelay) { if (controls.ButtonPressed(Buttons.B, false, false) || debugControls.KeyPressed(Keys.Space, false, false)) { selectedTargets.Add(availableTargets[currentCursorSelectionIndex]); availableTargets.Remove(availableTargets[currentCursorSelectionIndex]); currentCursorSelectionIndex = 0; if (availableTargets.Count == 0 || selectedTargets.Count == noOfPossibleSelections) { currentState = BattleTargetSelectorState.AllTargetsSelected; BattleScreen.inputDelay = true; } } } else if(inputDelay) { if (controls.ButtonReleased(Buttons.B) || debugControls.KeyReleased(Keys.Space)) { inputDelay = false; } } } else { selectedTargets = availableTargets; currentState = BattleTargetSelectorState.AllTargetsSelected; break; } break; } flickerTimer += GameClass.Elapsed; if (flickerTimer > flickerSpeed) { flickerTimer = 0.0f; flicker = !flicker; } } }
public void Reset() { inputDelay = true; selectedTargets = new List<BattleCharacter>(); availableTargets = new List<BattleCharacter>(); currentState = BattleTargetSelectorState.Inactive; controls.ControlsActive = false; debugControls.ControlsActive = false; }