public void TogglePlayAction(object obj) { if (SelectedAction != null && SelectedAction is AnimatedAbility.AnimatedAbility && !(obj is AnimatedAbility.AnimatedAbility)) { StopAction(SelectedAction); } if (SelectedAction is AnimatedAbility.AnimatedAbility) { AnimatedAbility.AnimatedAbility ability = obj as AnimatedAbility.AnimatedAbility; // If it's not persistent- play // If it's persistent but hasn't been played yet - play // If it's persistent and has been played already - stop if (!(ability.Persistent && (ability.Owner as AnimatedAbility.AnimatedCharacter).ActiveStates.FirstOrDefault(state => state.Ability == ability && state.AbilityAlreadyPlayed) != null)) { PlayAction(obj); } else { StopAction(obj); } } else if (SelectedAction is CharacterMovement) { CharacterMovement characterMovement = obj as CharacterMovement; if (!characterMovement.IsActive) { PlayAction(obj); } else { StopAction(obj); } } }
public void StopAction(object action) { if (action is AnimatedAbility.AnimatedAbility) { AnimatedAbility.AnimatedAbility abilityToStop = action as AnimatedAbility.AnimatedAbility; AnimatedAbility.AnimatedAbility ability = SelectedAction as AnimatedAbility.AnimatedAbility; if (ability != null && abilityToStop != null && ability == abilityToStop) { this.SpawnAndTargetOwnerCharacter(); ability.Stop(); this.CharacterActionList.Active = default(T); this.SaveActionGroup(); } } else { CharacterMovement characterMovement = action as CharacterMovement; if (characterMovement != null && characterMovement.Movement != null && characterMovement.IsActive) { //characterMovement.DeactivateMovement(); //owner.ActiveMovement = null; this.CharacterActionList.Active = default(T); this.EventAggregator.Publish(new DeactivateMovementEvent(characterMovement), act => System.Windows.Application.Current.Dispatcher.Invoke(act)); } } }
public void PlayAction(object action) { if (action is AnimatedAbility.AnimatedAbility) { AnimatedAbility.AnimatedAbility ability = action as AnimatedAbility.AnimatedAbility; if (ability != null) { this.CharacterActionList.Active = (T)ability; this.SpawnAndTargetOwnerCharacter(); this.EventAggregator.Publish(new PlayAnimatedAbilityEvent(ability), act => System.Windows.Application.Current.Dispatcher.Invoke(act)); if (!ability.Persistent && !(ability is AnimatedAttack)) { TurnOffActiveStateForAbilityAfterPredefinedTime(); } } } else { CharacterMovement characterMovement = action as CharacterMovement; if (characterMovement != null && characterMovement.Movement != null && !characterMovement.IsActive) { //owner.ActiveMovement = characterMovement; //characterMovement.ActivateMovement(); this.CharacterActionList.Active = (T)characterMovement; this.EventAggregator.Publish(new ActivateMovementEvent(characterMovement), act => System.Windows.Application.Current.Dispatcher.Invoke(act)); } } }
public void PlayAppropriateAbility(Direction direction, List <MovableCharacter> targets) { if (MovementMembers.Any(mm => mm.Direction == direction)) { AnimatedAbility.AnimatedAbility ability = MovementMembers.First(mm => mm.Direction == direction).Ability; ability.Play(targets.Cast <AnimatedCharacter>().ToList()); ability.Play(targets.Where(t => t.GhostShadow != null).Cast <AnimatedCharacter>().ToList()); } }
public void AddMovementMember(Direction direction, AnimatedAbility.AnimatedAbility ability) { MovementMember member = new MovementMemberImpl(); member.Direction = direction; member.Name = direction.ToString(); if (ability == null) { ability = new AnimatedAbilityImpl(); ability.Name = GetDefaultMemberAbilityName(direction); } member.Ability = ability; MovementMembers.Add(member); }
private void CreateAbilitiesViewSource(List <AnimatedAbility.AnimatedAbility> abilities) { abilitiesCVS = new CollectionViewSource(); AnimatedAbility.AnimatedAbility none = new AnimatedAbility.AnimatedAbilityImpl(); none.Name = "None"; none.Owner = this.Owner; abilities.Add(none); abilitiesCVS.Source = new ObservableCollection <AnimatedAbility.AnimatedAbility>(abilities.Where((an) => { return(an.Owner == this.Owner); /*&& an.IsAttack == false;*/ }).OrderBy(a => a.Order)); abilitiesCVS.View.Filter += abilitiesCVS_Filter; AnimatedAbility.AnimatedAbility moveTo = null; if (EditedIdentity != null && EditedIdentity.AnimationOnLoad != null) { moveTo = EditedIdentity.AnimationOnLoad; } else { moveTo = none; } abilitiesCVS.View.MoveCurrentTo(moveTo); NotifyOfPropertyChange(() => AbilitiesCVS); }