public void Shutdown() { if (null != _waveEndEffectTrigger) { _owner.RemoveWaveEffectTrigger(_waveEndEffectTrigger); _waveEndEffectTrigger = null; } if (null != _waveStartEffectTrigger) { _owner.RemoveWaveEffectTrigger(_waveStartEffectTrigger); _waveStartEffectTrigger = null; } foreach (SpawnGroup spawnGroup in _spawnGroups) { spawnGroup.Shutdown(); } if (TimeManager.HasInstance && null != _waveTimer) { TimeManager.Instance.RemoveTimer(_waveTimer); } _waveTimer = null; }
public override void PopulateFromJson(JObject jsonObject) { base.PopulateFromJson(jsonObject); m_applicationTargetSelector = ITargetSelectorUtils.FromJsonProperty(jsonObject, "applicationTargetSelector"); JArray val = Serialization.JsonArray(jsonObject, "applicationEndTriggers"); m_applicationEndTriggers = new List <EffectTrigger>((val != null) ? val.get_Count() : 0); if (val != null) { foreach (JToken item in val) { m_applicationEndTriggers.Add(EffectTrigger.FromJsonToken(item)); } } JArray val2 = Serialization.JsonArray(jsonObject, "executionStartTriggers"); m_executionStartTriggers = new List <EffectTrigger>((val2 != null) ? val2.get_Count() : 0); if (val2 != null) { foreach (JToken item2 in val2) { m_executionStartTriggers.Add(EffectTrigger.FromJsonToken(item2)); } } m_condition = EffectCondition.FromJsonProperty(jsonObject, "condition"); }
public override void Initialize(EffectTrigger owner) { base.Initialize(owner); ParticleSystem.MainModule main = _vfx.main; Assert.IsFalse(main.playOnAwake, $"ParticleSystem '{_vfx.name}' should not have playOnAwake set!"); }
/* * 技能相关静态方法 * */ public static void CheckSkillEffect(EffectTrigger trigger, BattleObject source) { int skillID = source.damage.skillID; bool isWeaponDamage = source.damage.isWeaponDamage; SkillData skillData = DataManager.Instance.GetSkillDataSet().GetSkillData(skillID); for(int i = 0; i < skillData.effectID.Count; i++) { if(skillData.effectID[i] == 0)continue; int random = UnityEngine.Random.Range(0, 101); if(random <= skillData.effectPercent[i]) { SkillEffectData effectData = DataManager.Instance.GetSkillDataSet().GetEffectData(skillData.effectID[i]); if(effectData.trigger == trigger) { SkillEffect.ExecuteSkillEffect(source, effectData.effectString); } } } if(isWeaponDamage) { CheckWeaponEffect(trigger, source); } }
public static TimeSpan TestEffectManagerWithExpiredHandler(int numEffects, int iterations) { _thingToIncrementOnExpire = 0; var s = new Stopwatch(); // For caching var myEffectManager = new EffectTrigger <EffectArgs>(); foreach (int i in Enumerable.Range(0, numEffects)) { var effect = new MyEffect(iterations + 1); effect.Expired += OnEffectExpired; myEffectManager.Add(effect); } myEffectManager.TriggerEffects(new EffectArgs()); s.Start(); for (int i = 0; i < iterations; i++) { myEffectManager.TriggerEffects(new EffectArgs()); } s.Stop(); if (_thingToIncrementOnExpire != numEffects) { throw new Exception($"Performance test did not perform proper function, and cannot be considered valid. Value was supposed to be {numEffects}, but was {_thingToIncrementOnExpire}"); } return(s.Elapsed); }
public void EffectTriggerAdd() { var effectTrigger = new EffectTrigger <EffectArgs>(); Assert.AreEqual(0, effectTrigger.Effects.Count); effectTrigger.Add(new IntEffect("Test Effect 1", 1)); Assert.AreEqual(1, effectTrigger.Effects.Count); effectTrigger.Add(new IntEffect("Test Effect 2", 2)); Assert.AreEqual(2, effectTrigger.Effects.Count); effectTrigger.Add(new IntEffect("Test Effect Inf", IntEffect.INFINITE)); Assert.AreEqual(3, effectTrigger.Effects.Count); bool exception = false; try { effectTrigger.Add(new IntEffect("Test Effect 0", 0)); } catch (ArgumentException) { exception = true; } Assert.AreEqual(true, exception); }
public List <SceneAnimation> RunCreatureChangeEffect(EffectTrigger Trigger, Player Target) { List <SceneAnimation> Animations = new List <SceneAnimation>(); List <BattleEffect> DeadEffects = new List <BattleEffect>(); bool u_nia = Target.IsNotInArena(); bool o_nia = GetOpponent(Target).IsNotInArena(); if (!Target.IsNotInArena()) { foreach (List <BattleEffect> Effects in SortedEffects[Trigger].Values) { foreach (BattleEffect Effect in Effects) { if (Effect.CurrentPlacement == Target.Placement) { if (Effect.EffectAnimation != null) { Animations.Add(Effect.EffectAnimation); } Animations.AddRange(InterpretEffect(Effect, Effect.GetTriggeredEffect(Trigger), Effect.User, Target, Effect.CurrentPlacement)); } } } foreach (BattleEffect Effect in DeadEffects) { Animations.AddRange(RemoveEffect(Effect, true)); } } Animations.AddRange(CheckIfRemoved(Target, GetOpponent(Target), u_nia, o_nia)); return(Animations); }
public RPGEffect(RPGEffect copy) { range = copy.range; durationType = copy.durationType; targetBuff = copy.targetBuff; targetAttack = copy.targetAttack; effectIsABuff = copy.effectIsABuff; trigger = copy.trigger; status = copy.status; location = copy.location; sourceObject = copy.sourceObject; targetObject = copy.targetObject; distance = copy.distance; radius = copy.radius; durationValue = copy.durationValue; minPower = copy.minPower; maxPower = copy.maxPower; m_Power = copy.Power; lastStart = copy.lastStart; lastPause = copy.lastPause; durationRemaining = copy.durationRemaining; repeatCount = copy.repeatCount; m_repeatDelay = copy.m_repeatDelay; m_lastRepeat = copy.m_lastRepeat; m_shouldReverse = copy.m_shouldReverse; powerType = copy.PowerType; }
public RPGEffect(DurationType t, EffectRange r, EffectTargetBuff buff, EffectTargetAttack attack, bool isABuff, EffectTrigger trigger, int Distance, int Radius, TimeSpan Duration, int MinPower, int MaxPower, EffectPowerType powerType, bool ReverseWhenExpires) { this.durationType = t; this.range = r; this.TargetBuff = buff; this.TargetAttack = attack; this.effectIsABuff = isABuff; this.status = EffectStatus.Ready; this.trigger = trigger; this.repeatCount = 0; this.distance = Distance; this.radius = Radius; this.Duration = Duration; this.minPower = MinPower; this.maxPower = MaxPower; this.powerType = powerType; this.m_Power = new RPGCalc().RollDmg(minPower, maxPower); this.m_shouldReverse = ReverseWhenExpires; }
virtual public void Passivate( EffectTrigger trigger, Game game, BoardState boardState, Targets targets, int playerNum) { }
public void CheckTriggeredAbilities(EffectTrigger trigger) { if (trigger == EffectTrigger.None) { return; } throw new NotImplementedException("Card.CheckTriggeredAbilities"); }
virtual public bool CanPassivate( EffectTrigger trigger, BoardState boardState, Targets targets, int playerNum) { return(true); }
override public void Trigger( EffectTrigger trigger, Game game, BoardState boardState, Targets targets, int playerNum) { boardState.colorlessMana[playerNum] -= 1; boardState.blueMana[playerNum] += 1; }
public void TryPassivate( EffectTrigger trigger, Game game, BoardState boardState, Targets targets) { if (hero.CanPassivate(trigger, boardState, targets, playerNum)) { hero.Passivate(trigger, game, boardState, targets, playerNum); } }
public bool HasTrigger(EffectTrigger trigger) { foreach (EffectScript Script in Scripts) { if (Script.Trigger == trigger) { return(true); } } return(false); }
public void TryTrigger( EffectTrigger trigger, Game game, BoardState boardState, Targets targets) { if (card.CanTrigger(trigger, boardState, targets, playerNum)) { card.Trigger(trigger, game, boardState, targets, playerNum); } }
public EffectScript GetTriggeredEffect(EffectTrigger whichToTrigger) { foreach (EffectScript Script in Scripts) { if (Script.Trigger == whichToTrigger) { return(Script); } } return(null); }
private void InitializeDefaultButtonEffects() { if (null != _data.DefaultButtonHoverEffectTriggerPrefab) { DefaultButtonHoverEffectTrigger = Instantiate(_data.DefaultButtonHoverEffectTriggerPrefab, transform); } if (null != _data.DefaultButtonClickEffectTrigger) { DefaultButtonClickEffectTrigger = Instantiate(_data.DefaultButtonClickEffectTrigger, transform); } }
virtual public bool CanTrigger( EffectTrigger trigger, BoardState boardState, Targets targets, int playerNum) { return(boardState.availableColorlessMana[playerNum] >= colorlessManaCost && boardState.availableBlueMana[playerNum] >= blueManaCost && boardState.availableRedMana[playerNum] >= redManaCost && boardState.availableGreenMana[playerNum] >= greenManaCost && boardState.availableBlackMana[playerNum] >= blackManaCost); }
/// <summary> /// invokes the effects of a specialist effect /// </summary> /// <param name="trigger">The event that triggered the effects to determine if effects should be triggered.</param> public void Invoke(EffectTrigger trigger) { // Loop through specialist effects. // Determine if the effect should be triggered. foreach (ISpecialistEffect specialistEffect in this._specialistEffects) { if (specialistEffect.GetEffectTrigger() == trigger) { // specialistEffect.forwardEffect(); } } }
/// <summary> /// invokes the effects of a specialist effect /// </summary> /// <param name="trigger">The event that triggered the effects to determine if effects should be triggered.</param> public void Invoke(EffectTrigger trigger) { // Loop through specialist effects. // Determine if the effect should be triggered. foreach (var specialistEffect1 in _specialistEffects) { var specialistEffect = (SpecialistEffect)specialistEffect1; if (specialistEffect.configuration.EffectTrigger == trigger) { // specialistEffect.forwardEffect(); } } }
virtual public void Trigger( EffectTrigger trigger, Game game, BoardState boardState, Targets targets, int playerNum) { boardState.availableColorlessMana[playerNum] -= colorlessManaCost; boardState.availableBlueMana[playerNum] -= blueManaCost; boardState.availableRedMana[playerNum] -= redManaCost; boardState.availableGreenMana[playerNum] -= greenManaCost; boardState.availableBlackMana[playerNum] -= blackManaCost; }
public void ProcessTriggeredAbilities(EffectTrigger trigger, ITriggerArgs args) { foreach (Card card in _Cards.FindAll(o => o.Abilities.FirstOrDefault(a => a.Trigger == trigger) != null)) { foreach (IAbility ability in card.Abilities.FindAll(o => o.Trigger == trigger)) { ability.Process(new AbilityArgs() { OriginCard = card }); } } }
public override void PopulateFromJson(JObject jsonObject) { base.PopulateFromJson(jsonObject); JArray val = Serialization.JsonArray(jsonObject, "executionEndTriggers"); m_executionEndTriggers = new List <EffectTrigger>((val != null) ? val.get_Count() : 0); if (val != null) { foreach (JToken item in val) { m_executionEndTriggers.Add(EffectTrigger.FromJsonToken(item)); } } }
public void OnPointerClick(PointerEventData eventData) { if (null != ClickEffectTrigger) { ClickEffectTrigger.Trigger(); } else { EffectTrigger clickEffectTrigger = UIManager.Instance.GetDefaultButtonClickEffectTrigger(_isBackButton); if (null != clickEffectTrigger) { clickEffectTrigger.Trigger(); } } }
override public bool CanTrigger( EffectTrigger trigger, BoardState boardState, Targets targets, int playerNum) { switch (trigger) { case EffectTrigger.PLAY: return(boardState.colorlessMana[playerNum] > 0); default: return(false); } }
/// <summary> /// Speed effect handler (float). /// </summary> /// <param name="trigger">Trigger.</param> /// <param name="modifier">Modifier (can not be 0f).</param> private void Speed(EffectTrigger trigger, float modifier) { NavAgent navAgent = GetComponent <NavAgent>(); switch (trigger) { case EffectTrigger.Added: case EffectTrigger.NewModifier: navAgent.speed *= 1 + modifier; break; case EffectTrigger.ModifierExpired: navAgent.speed /= 1 + modifier; break; } }
public void EffectTriggerAdd() { var effectTrigger = new EffectTrigger <EffectArgs>(); Assert.AreEqual(0, effectTrigger.Effects.Count); effectTrigger.Add(new IntEffect("Test Effect 1", 1)); Assert.AreEqual(1, effectTrigger.Effects.Count); effectTrigger.Add(new IntEffect("Test Effect 2", 2)); Assert.AreEqual(2, effectTrigger.Effects.Count); effectTrigger.Add(new IntEffect("Test Effect Inf", IntEffect.INFINITE)); Assert.AreEqual(3, effectTrigger.Effects.Count); Assert.ThrowsException <ArgumentException>(() => effectTrigger.Add(new IntEffect("Test Effect 0", 0))); }
/// <summary> /// Stun effect handler (bool). /// </summary> /// <param name="trigger">Trigger.</param> /// <param name="modifier">Modifier.</param> private void Stun(EffectTrigger trigger, float modifier) { AiBehavior aiBehavior = GetComponent <AiBehavior>(); NavAgent navAgent = GetComponent <NavAgent>(); switch (trigger) { case EffectTrigger.Added: aiBehavior.enabled = false; navAgent.enabled = false; break; case EffectTrigger.Removed: aiBehavior.enabled = true; navAgent.enabled = true; break; } }
public List <SceneAnimation> RunTriggerTypeEffect(EffectTrigger Trigger, Player TargetUser, bool RunIfKilled) { //If TargetUser is parsed it will only run if they are not killed and own the effect //TODO: PLEASE UNDERSTAND THIS SO THAT DEATH IN THIS IS DETERMINISTIC List <SceneAnimation> Animations = new List <SceneAnimation>(); List <BattleEffect> DeadEffects = new List <BattleEffect>(); bool u_nia = TargetUser.IsNotInArena(); bool o_nia = GetOpponent(TargetUser).IsNotInArena(); if (RunIfKilled || !TargetUser.IsNotInArena()) { foreach (List <BattleEffect> Effects in SortedEffects[Trigger].Values) { foreach (BattleEffect Effect in Effects) { if (RunIfKilled || Effect.User == TargetUser) { if (Effect.EffectAnimation != null) { Animations.Add(Effect.EffectAnimation); } Animations.AddRange(InterpretEffect(Effect, Effect.GetTriggeredEffect(Trigger), Effect.User, null, 0)); if (Effect.IsLifespanDepleted()) { DeadEffects.Add(Effect); } } } } foreach (BattleEffect Effect in DeadEffects) { Animations.AddRange(RemoveEffect(Effect, true)); } } Animations.AddRange(CheckIfRemoved(TargetUser, GetOpponent(TargetUser), u_nia, o_nia)); return(Animations); }
public static TimeSpan TestEffectManagerNoExpiredHandler(int numEffects, int iterations) { var s = new Stopwatch(); // For caching var myEffectManager = new EffectTrigger <EffectArgs>(); foreach (int i in Enumerable.Range(0, numEffects)) { myEffectManager.Add(new MyEffect(iterations + 1)); } myEffectManager.TriggerEffects(new EffectArgs()); s.Start(); for (int i = 0; i < iterations; i++) { myEffectManager.TriggerEffects(new EffectArgs()); } s.Stop(); return(s.Elapsed); }
public static void CheckWeaponEffect(EffectTrigger trigger, BattleObject source) { WeaponData weaponData = DataManager.Instance.GetItemDataSet().GetWeaponData(source.GetWeapon()); for(int i = 0; i < weaponData.effectID.Count; i++) { if(weaponData.effectID[i] == 0)continue; int random = UnityEngine.Random.Range(0, 101); if(random <= weaponData.effectPercent[i]) { SkillEffectData effectData = DataManager.Instance.GetSkillDataSet().GetEffectData(weaponData.effectID[i]); if(effectData.trigger == trigger) { SkillEffect.ExecuteSkillEffect(source, effectData.effectString); } } } }