コード例 #1
0
ファイル: TargetPanel.cs プロジェクト: sdi1982/turn-based-rpg
        /// <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));
            }
        }
コード例 #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);
        }
コード例 #3
0
ファイル: CombatUI.cs プロジェクト: sdi1982/turn-based-rpg
        /// <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;
                }
            }
        }