Ejemplo n.º 1
0
 public void UpdateCharacter(Combatant character)
 {
     Children.Clear();
     var abilities = character.GetAbilities();
     for (var i = 0; i < abilities.Count(); i++)
     {
         var ability = abilities.ElementAt(i);
         var exp = character.AbilityExperienceLevels.ContainsKey(ability) ? character.AbilityExperienceLevels[ability] : 0;
         var display = new AbilityDisplay(ability, exp);
         display.Bounds.Location.Y.Offset = 10 + 30 * i;
         Children.Add(display);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Show a list of special abilities that a character may use
        /// </summary>
        /// <param name="character">The character being selected for special abilities</param>
        /// <returns>An event handler to execute to show the abilities.</returns>
        private void SelectSpecialAbility(Combatant character)
        {
            // delete the current radial menu options, which should be move/attack/special/item for the character.
            // should.
            _radialMenuControl.ClearOptions();

            // go through each ability the character can currently use
            foreach (var ability in character.GetAbilities().Where(character.CanUseAbility).Where(a => a.AbilityType == AbilityType.Active))
            {
                var tempAbility = ability;

                var button = new RadialButtonControl
                    {ImageFrame = ability.ImageName, Bounds = new UniRectangle(0, 0, 64, 64), Enabled = false};

                // only bind event handlers onto abilities that are cheap enough to use
                if (ability.ManaCost <= character.CurrentMana)
                {
                    button.Enabled = true;
                    button.MouseOver = () => PreviewAbility(tempAbility);
                    button.MouseOut = () =>
                        {
                            if (_aimAbility != null) return;

                            HideGui(_abilityStatLayer);
                            _battleBoardLayer.ResetGrid();
                        };
                    button.MouseClick = () => { };
                    button.MouseRelease += () => { SelectAbilityTarget(character, tempAbility);
                                                     _aimTime = DateTime.Now;
                    };
                }
                else
                {
                    button.MouseRelease =  () => { };
                }

                _radialMenuControl.AddOption(ability.Name, button);
            }
        }