Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }
    }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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;
        }
Exemplo n.º 9
0
 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;
 }
Exemplo n.º 10
0
 virtual public void Passivate(
     EffectTrigger trigger,
     Game game,
     BoardState boardState,
     Targets targets,
     int playerNum)
 {
 }
Exemplo n.º 11
0
 public void CheckTriggeredAbilities(EffectTrigger trigger)
 {
     if (trigger == EffectTrigger.None)
     {
         return;
     }
     throw new NotImplementedException("Card.CheckTriggeredAbilities");
 }
Exemplo n.º 12
0
 virtual public bool CanPassivate(
     EffectTrigger trigger,
     BoardState boardState,
     Targets targets,
     int playerNum)
 {
     return(true);
 }
Exemplo n.º 13
0
 override public void Trigger(
     EffectTrigger trigger,
     Game game,
     BoardState boardState,
     Targets targets,
     int playerNum)
 {
     boardState.colorlessMana[playerNum] -= 1;
     boardState.blueMana[playerNum]      += 1;
 }
Exemplo n.º 14
0
 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);
     }
 }
Exemplo n.º 15
0
 public bool HasTrigger(EffectTrigger trigger)
 {
     foreach (EffectScript Script in Scripts)
     {
         if (Script.Trigger == trigger)
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 16
0
 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);
     }
 }
Exemplo n.º 17
0
 public EffectScript GetTriggeredEffect(EffectTrigger whichToTrigger)
 {
     foreach (EffectScript Script in Scripts)
     {
         if (Script.Trigger == whichToTrigger)
         {
             return(Script);
         }
     }
     return(null);
 }
Exemplo n.º 18
0
        private void InitializeDefaultButtonEffects()
        {
            if (null != _data.DefaultButtonHoverEffectTriggerPrefab)
            {
                DefaultButtonHoverEffectTrigger = Instantiate(_data.DefaultButtonHoverEffectTriggerPrefab, transform);
            }

            if (null != _data.DefaultButtonClickEffectTrigger)
            {
                DefaultButtonClickEffectTrigger = Instantiate(_data.DefaultButtonClickEffectTrigger, transform);
            }
        }
Exemplo n.º 19
0
 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);
 }
Exemplo n.º 20
0
 /// <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();
         }
     }
 }
Exemplo n.º 21
0
 /// <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();
         }
     }
 }
Exemplo n.º 22
0
 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;
 }
Exemplo n.º 23
0
 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
             });
         }
     }
 }
Exemplo n.º 24
0
        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));
                }
            }
        }
Exemplo n.º 25
0
 public void OnPointerClick(PointerEventData eventData)
 {
     if (null != ClickEffectTrigger)
     {
         ClickEffectTrigger.Trigger();
     }
     else
     {
         EffectTrigger clickEffectTrigger = UIManager.Instance.GetDefaultButtonClickEffectTrigger(_isBackButton);
         if (null != clickEffectTrigger)
         {
             clickEffectTrigger.Trigger();
         }
     }
 }
Exemplo n.º 26
0
    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);
        }
    }
Exemplo n.º 27
0
    /// <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;
        }
    }
Exemplo n.º 28
0
        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)));
        }
Exemplo n.º 29
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;
        }
    }
Exemplo n.º 30
0
        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);
        }
Exemplo n.º 31
0
        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);
        }
Exemplo n.º 32
0
    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);
                }
            }
        }
    }