示例#1
0
        private EffectHolder GetExitEffects(out bool exited)
        {
            var     ed      = area.Element as Exit;
            Effects effects = new Effects();

            exited = false;
            if (ConditionChecker.check(ed.getConditions()))
            {
                exited = true;
                effects.AddRange(ed.getEffects());

                if (Game.Instance.GameState.IsCutscene(ed.getNextSceneId()))
                {
                    effects.Add(new TriggerCutsceneEffect(ed.getNextSceneId()));
                }
                else
                {
                    effects.Add(new TriggerSceneEffect(ed.getNextSceneId(), ed.getDestinyX(), ed.getDestinyY(), ed.getDestinyScale(), ed.getTransitionTime(), ed.getTransitionType()));
                }

                if (ed.getPostEffects() != null)
                {
                    effects.AddRange(ed.getPostEffects());
                }
            }
            else
            {
                if (ed.isHasNotEffects())
                {
                    effects.AddRange(ed.getNotEffects());
                }
            }

            var effectHolder = new EffectHolder(effects);

            if (exited)
            {
                effectHolder.effects[ed.getEffects().Count].AddAdditionalInfo("not_trace", true);
            }

            return(effectHolder);
        }
示例#2
0
        private InteractuableResult FinishCutscene(Cutscene cutscene)
        {
            InteractuableResult res          = InteractuableResult.DOES_SOMETHING;
            TriggerSceneEffect  triggerScene = null;

            switch ((cutscene).getNext())
            {
            default:     // By default Cutscene.GOBACK
                var previousTarget = Game.Instance.GameState.PreviousChapterTarget;
                if (previousTarget == null)
                {
                    var possibleTargets = Game.Instance.GameState.GetObjects <IChapterTarget>();
                    previousTarget = possibleTargets.FirstOrDefault(t => t.getId() != this.SceneData.getId());
                }
                if (previousTarget != null)
                {
                    triggerScene = new TriggerSceneEffect(previousTarget.getId(), int.MinValue, int.MinValue,
                                                          float.MinValue, cutscene.getTransitionTime(), (int)cutscene.getTransitionType());
                }
                break;

            case Cutscene.NEWSCENE:
                triggerScene = new TriggerSceneEffect(cutscene.getTargetId(), int.MinValue, int.MinValue,
                                                      float.MinValue, cutscene.getTransitionTime(), (int)cutscene.getTransitionType());
                break;

            case Cutscene.ENDCHAPTER:
                // TODO: When we add more chapters, we must trigger the next chapter instead of quiting que aplication
                GUIManager.Instance.ExitApplication();
                break;
            }

            if (triggerScene != null)
            {
                var effects = new Effects {
                    triggerScene
                };
                var cutsceneEffects = cutscene.getEffects();
                if (cutsceneEffects != null)
                {
                    effects.AddRange(cutsceneEffects);
                }

                Game.Instance.Execute(new EffectHolder(effects));
            }

            return(res);
        }
        private void Start()
        {
            _animator         = GetComponentInChildren <Animator>();
            _healthBar        = transform.Find("Status").Find("Health").Find("Fill");
            _statusIndicators = transform.Find("Status").Find("Indicators").GetComponentsInChildren <SpriteRenderer>();
            UpdateHealth(0f);

            Effects.AddRange(GetComponents <EffectBase>());
            foreach (var effect in Effects)
            {
                effect.Source      = this;
                effect.IncludeGain = false;
                effect.UpdateLevel(_level + 1);
                effect.IsLoading = true;
            }
            AllEffects.UnionWith(Effects);
        }
        private void Start()
        {
            _collider = GetComponent <CircleCollider2D>();

            if (!_isLoading)
            {
                SellCost.Base = Cost / 2f;
                SellCost.Gain = SellCost.Base / 10f;
            }
            SellCost.Value = SellCost.Base;

            Effects.AddRange(GetComponents <EffectBase>());
            Effects.ForEach(effect =>
            {
                effect.Source = this;
                effect.UpdateLevel(Level);
                effect.IsLoading = _isLoading;
            });
            AllEffects.UnionWith(Effects);

            Upgrades = GetComponents <UpgradeBase>();
            for (var i = 0; i < Upgrades.Length; i++)
            {
                Upgrades[i].Tower = this;
                if (_isLoading && _upgradeLevels.Any())
                {
                    Upgrades[i].Level     = _upgradeLevels[i];
                    Upgrades[i].IsLoading = true;
                }
            }

            if (_isLoading)
            {
                Items.ForEach(item =>
                {
                    AllEffects.UnionWith(item.Effects);
                    item.UpdateTower(this);
                });
            }

            UpdateStats();
        }
示例#5
0
 //Loads the cache into the current data, without deleting the cache
 public void RestoreCache()
 {
     Name = CachedName;
     Moves.Clear();
     Moves.AddRange(CachedMoves);
     Passive      = CachedPassive;
     Picture      = CachedPicture;
     Dead         = CachedDead;
     TotalHP      = CachedTotalHP;
     CurrentHP    = CachedCurrentHP;
     TotalActions = CachedTotalActions;
     Actions      = CachedActions;
     IsPuppet     = CachedIsPuppet;
     CanPassTurn  = CachedCanPassTurn;
     DeathMessage = CachedDeathMessage;
     Effects.Clear();
     Effects.AddRange(Effects);
     Markers.Clear();
     Markers.AddRange(CachedMarkers);
 }
示例#6
0
 //Copies all essential elements from one card to this one
 public void CopyCard(BasicCard card)
 {
     Name = card.Name;
     Moves.Clear();
     Moves.AddRange(card.Moves);
     Passive      = card.Passive;
     Picture      = card.Picture;
     HasUltimate  = card.HasUltimate;
     HasPassive   = card.HasPassive;
     Dead         = card.Dead;
     TotalHP      = card.TotalHP;
     CurrentHP    = card.CurrentHP;
     TotalActions = card.TotalActions;
     Actions      = card.Actions;
     IsPuppet     = card.IsPuppet;
     CanPassTurn  = card.CanPassTurn;
     DeathMessage = card.DeathMessage;
     Effects.Clear();
     Effects.AddRange(card.Effects);
     Markers.Clear();
     Markers.AddRange(card.Markers);
 }
示例#7
0
        //Swaps current data with the cache
        public void SwapCache()
        {
            var tempName = Name;

            Name       = CachedName;
            CachedName = tempName;

            List <BasicMove> tempMoves = new List <BasicMove>();

            tempMoves.AddRange(Moves);
            Moves.Clear();
            Moves.AddRange(CachedMoves);
            CachedMoves.Clear();
            CachedMoves.AddRange(tempMoves);

            var tempPassive = Passive;

            Passive       = CachedPassive;
            CachedPassive = tempPassive;

            var tempPicture = Picture;

            Picture       = CachedPicture;
            CachedPicture = tempPicture;

            var tempDead = Dead;

            Dead       = CachedDead;
            CachedDead = tempDead;

            var tempTotalHP = TotalHP;

            TotalHP       = CachedTotalHP;
            CachedTotalHP = tempTotalHP;


            var tempCurrentHP = CurrentHP;

            CurrentHP       = CachedCurrentHP;
            CachedCurrentHP = tempCurrentHP;

            var tempTotalActions = TotalActions;

            TotalActions       = CachedTotalActions;
            CachedTotalActions = tempTotalActions;

            var tempActions = Actions;

            Actions       = CachedActions;
            CachedActions = tempActions;

            var tempIsPuppet = IsPuppet;

            IsPuppet       = CachedIsPuppet;
            CachedIsPuppet = tempIsPuppet;

            var tempCanPassTurn = CanPassTurn;

            CanPassTurn       = CachedCanPassTurn;
            CachedCanPassTurn = tempCanPassTurn;

            var tempDeathMessage = DeathMessage;

            DeathMessage       = CachedDeathMessage;
            CachedDeathMessage = tempDeathMessage;

            List <BuffDebuff> tempEffects = new List <BuffDebuff>();

            tempEffects.AddRange(Effects);
            Effects.Clear();
            Effects.AddRange(CachedEffects);
            CachedEffects.Clear();
            CachedEffects.AddRange(tempEffects);

            List <Marker> tempMarkers = new List <Marker>();

            tempMarkers.AddRange(Markers);
            Markers.Clear();
            Markers.AddRange(CachedMarkers);
            CachedMarkers.Clear();
            CachedMarkers.AddRange(tempMarkers);
        }
示例#8
0
        /// <summary>
        /// 値をセットする
        /// </summary>
        /// <param name="paramName">フィールド名</param>
        /// <param name="value">値</param>
        public void SetValue(string paramName, object value)
        {
            switch (paramName)
            {
            case "id":
                Id = (int)((double)(value));
                break;

            case "animationId":
                AnimationId = (int)((double)(value));
                break;

            case "consumable":
                Consumable = (bool)(value);
                break;

            case "damage":
                Damage = (DamageEffect)(value);
                break;

            case "description":
                Description = (string)(value);
                break;

            case "effects":
                Effects.Clear();
                Effects.AddRange((List <Effect>)(value));
                break;

            case "hitType":
                HitType = (int)((double)(value));
                break;

            case "iconIndex":
                IconIndex = (int)((double)(value));
                break;

            case "itypeId":
                ItemTypeId = (int)((double)(value));
                break;

            case "name":
                Name = (string)(value);
                break;

            case "note":
                Note = (string)(value);
                break;

            case "occasion":
                Occasion = (int)((double)(value));
                break;

            case "price":
                Price = (int)((double)(value));
                break;

            case "repeats":
                Repeats = (int)((double)(value));
                break;

            case "scope":
                Scope = (int)((double)(value));
                break;

            case "speed":
                Speed = (int)((double)(value));
                break;

            case "successRate":
                SuccessRate = (int)((double)(value));
                break;

            case "tpGain":
                TpGain = (int)((double)(value));
                break;
            }
        }