public CombatUI(ICombatController combatController, IUICharacterManager uiCharacterManager, GameUIConstants gameUIConstants, IUIContainer uiContainer, UserInput userInput, IUIStateTracker defaultsHandler, IDisplayManager displayManager, IDisplayCombatState combatStateHandler) { _combatController = combatController; _displayManager = displayManager; _combatStateHandler = combatStateHandler; _defaultsHandler = defaultsHandler; _uiCharacterManager = uiCharacterManager; _uiCharacterManager.Characters = _displayManager.GetDisplayCharacters(); _uiCharacterManager.CurrentRoundOrderIds = _combatStateHandler.GetRoundOrderIds()[0]; _uiCharacterManager.NextRoundOrderIds = _combatStateHandler.GetRoundOrderIds()[1]; _uiContainer = uiContainer; _userInput = userInput; BindEvents(); RefreshActionPanelList(); }
/// <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); }