/// <summary> /// Gets the target to render in the target panel depending on which panel is active and where the target position is. /// </summary> /// <returns></returns> private IDisplayCharacter GetTarget() { if (_defaultsHandler.IsInFormationPanel || !_combatStateHandler.IsPlayerTurn()) { IDisplayCharacter renderTarget = null; // If there is a character in the player's default target position, render that target's details if (_uiCharacterManager.Characters.Any(chr => chr.Position == _defaultsHandler.CurrentTargetPosition)) { renderTarget = _uiCharacterManager.GetCharacterFromPosition(_defaultsHandler.CurrentTargetPosition); } // Finds any character that is in the player's target list and render that target's details else { var targets = _defaultsHandler.CurrentTargetPositions; renderTarget = _uiCharacterManager.Characters.FirstOrDefault(chr => targets.Contains(chr.Position)); } // If there are no characters that occupy the positions the player is targeting, render the active character's details if (renderTarget == null) { renderTarget = _uiCharacterManager.GetCharacterFromId(_defaultsHandler.ActiveCharacterId); } return(renderTarget); } else { return(_uiCharacterManager.GetCharacterFromId(_defaultsHandler.ActiveCharacterId)); } }
/// <summary> /// Renders the turn order panel, filled with symbols from each character who will get a turn this round and the next. /// </summary> /// <returns>A list of string containing the rendered turn order panel.</returns> public IReadOnlyList <string> Render() { var turnOrderIds = _combatStateHandler.GetRoundOrderIds(); var characters = _uiCharacterManager.GetTurnOrderCharacters(turnOrderIds[0], turnOrderIds[1]); bool renderTargets = _defaultsHandler.IsInFormationPanel || !_combatStateHandler.IsPlayerTurn(); var targetPositions = _defaultsHandler.CurrentTargetPositions; if (IsCacheData(renderTargets, targetPositions, characters)) { return(_cachedRender); } else { _cachedData = new CachedData() { RenderTargets = renderTargets, Targets = targetPositions, CharacterIds = new IReadOnlyList <int>[] { new List <int>(characters[0].Select(chr => chr.Id)), new List <int>(characters[1].Select(chr => chr.Id)) } }; } var turnOrder = RenderTurnOrderBoxes(characters); turnOrder.Add(RenderFocusTargets(renderTargets, targetPositions, characters)); _cachedRender = turnOrder; return(turnOrder); }
/// <summary> /// Refreshes the action panel list depending on the currently active command focus. /// </summary> private void RefreshActionPanelList() { if (!_combatStateHandler.IsPlayerTurn()) { _defaultsHandler.ActionPanelList = new List <IDisplayAction>(); _defaultsHandler.ActionPanelItemCount = 0; } else { switch ((Commands)_defaultsHandler.CommandFocusNumber) { case Commands.Attack: case Commands.Spells: case Commands.Skills: case Commands.Items: _defaultsHandler.ActionPanelList = _displayManager.GetActionListFromCategory( (Commands)_defaultsHandler.CommandFocusNumber, _defaultsHandler.ActiveCategory); break; default: _defaultsHandler.ActionPanelList = new List <IDisplayAction>(); break; } } }