// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        this._animator = animator;
        this._stateInfo = stateInfo;

        _baseMoveMultiplier = _animator.GetFloat("moveMultiplier");

        _thisBattleCharacter = animator.GetComponent<AbstractBattleCharacter>();
        _thisBattleCharacter.StartCoroutine(RotateAndMoveTowards(_thisBattleCharacter.gameObject));
    }
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        _damageSent = false;
        _caster = animator.GetComponent<AbstractBattleCharacter>();
        _projectileShooting = false;

        _projectilePrefab = _caster.General.Projectile;
        _projectileBone = _caster.General.ProjectileBone;

        if (_projectilePrefab == null || _projectileBone == null) return;
        if (_projectile != null) return;
        _projectile = Instantiate(_projectilePrefab);
        _projectile.transform.SetParent(_projectileBone.transform);
        _projectile.transform.localPosition = Vector3.zero;
        _projectile.transform.localScale = Vector3.one;
        _projectile.transform.localRotation = Quaternion.Euler(new Vector3(340f, 180f, 0f));
    }
Пример #3
0
        private AbstractBattleCharacter ToRight(AbstractBattleCharacter thisBattleCharacter, IEnumerable<AbstractBattleCharacter> sortedOtherBattleCharacters)
        {
            foreach (var character in sortedOtherBattleCharacters)
            {
                if (character.transform.position.x > thisBattleCharacter.transform.position.x)
                {
                    return character;
                }
            }

            return thisBattleCharacter;
        }
Пример #4
0
 /// <summary>
 /// Configures buttons for navigation
 /// </summary>
 /// <param name="pointer">The pointer to configure.</param>
 /// <param name="character">Character the pointer belongs to</param>
 /// <param name="sortedCharacterList">Sorted list of friendly or enemy characters (same group which [[CHARACTER]] belongs to).</param>
 /// <param name="oppositePointers">Pointers for other group (i.e. if [[CHARACTER]] is friendly, then enemy pointer list).</param>
 /// <param name="oppositeSortedCharacters">Sorted list for other group (i.e. if [[CHARACTER]] is friendly, then enemy characters list).</param>
 private void SetButtonNavigation(GameObject pointer, AbstractBattleCharacter character, List<AbstractBattleCharacter> sortedCharacterList, Dictionary<AbstractBattleCharacter, GameObject> oppositePointers, List<AbstractBattleCharacter> oppositeSortedCharacters)
 {
     var button = pointer.GetComponentInChildren<Button>();
     Navigation navigation = new Navigation {mode = Navigation.Mode.Explicit};
     navigation.selectOnUp = navigation.selectOnDown = navigation.selectOnUp = navigation.selectOnDown = oppositePointers[oppositeSortedCharacters[0]].GetComponentInChildren<Button>();
     navigation.selectOnLeft = ToLeft(character, sortedCharacterList).GetComponentInChildren<Button>();
     navigation.selectOnRight = ToRight(character, sortedCharacterList).GetComponentInChildren<Button>();
     button.navigation = navigation;
 }
Пример #5
0
 private void SetButtonEvent(GameObject pointer, AbstractBattleCharacter caster, List<AbstractBattleCharacter> targets, AbstractActionAbility ability)
 {
     pointer.GetComponentInChildren<Button>().onClick.AddListener(delegate {EventAggregator.RaiseEvent(new SubmitAbilityAtTarget() {Ability = ability,Caster = caster,Targets = targets});});
     EventTrigger trigger = pointer.GetComponentInChildren<EventTrigger>();
     EventTrigger.Entry entry = new EventTrigger.Entry();
     entry.eventID = EventTriggerType.Select;
     entry.callback = new EventTrigger.TriggerEvent();
     entry.callback.AddListener(
         delegate { OnTargetChange(targets[0]);});
     trigger.triggers.Add(entry);
 }
Пример #6
0
 public AbstractDamageBehaviour.Damage DoDamage(AbstractBattleCharacter caster, List<AbstractBattleCharacter> targets)
 {
     return DamageBehaviour.DoDamage(caster, targets[0]);
 }