// 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)); }
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; }
/// <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; }
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); }
public AbstractDamageBehaviour.Damage DoDamage(AbstractBattleCharacter caster, List<AbstractBattleCharacter> targets) { return DamageBehaviour.DoDamage(caster, targets[0]); }