Пример #1
0
        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();
        }
Пример #2
0
        /// <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);
        }