Пример #1
0
        public void Init()
        {
            _loadObjectsManager = GameClient.Get <ILoadObjectsManager>();
            _gameplayManager    = GameClient.Get <IGameplayManager>();
            _tutorialManager    = GameClient.Get <ITutorialManager>();
            _uiManager          = GameClient.Get <IUIManager>();
            _timerManager       = GameClient.Get <ITimerManager>();
            _soundManager       = GameClient.Get <ISoundManager>();

            _vfxController          = _gameplayManager.GetController <VfxController>();
            _battleController       = _gameplayManager.GetController <BattleController>();
            _actionsQueueController = _gameplayManager.GetController <ActionsQueueController>();
            _cardsController        = _gameplayManager.GetController <CardsController>();

            _gameplayManager.GameEnded += GameplayManagerGameEnded;
        }
Пример #2
0
        public override void Action(object info = null)
        {
            base.Action(info);

            object caller = AbilityUnitOwner != null ? AbilityUnitOwner : (object)BoardSpell;

            switch (AffectObjectType)
            {
            case Enumerators.AffectObjectType.PLAYER:
                BattleController.HealPlayerByAbility(caller, AbilityData, TargetPlayer);
                break;

            case Enumerators.AffectObjectType.CHARACTER:
                BattleController.HealUnitByAbility(caller, AbilityData, TargetUnit);
                break;
            }
        }
        private void ActionCompleted()
        {
            object caller = AbilityUnitOwner != null ? AbilityUnitOwner : (object)BoardSpell;

            switch (AffectObjectType)
            {
            case Enumerators.AffectObjectType.PLAYER:
                BattleController.AttackPlayerByAbility(caller, AbilityData, TargetPlayer);
                break;

            case Enumerators.AffectObjectType.CHARACTER:
                BattleController.AttackUnitByAbility(caller, AbilityData, TargetUnit);
                break;
            }

            Vector3 targetPosition = VfxObject.transform.position;

            ClearParticles();

            switch (AbilityEffectType)
            {
            case Enumerators.AbilityEffectType.TARGET_ROCK:
                VfxObject = LoadObjectsManager.GetObjectByPath <GameObject>("Prefabs/VFX/toxicDamageVFX");
                break;

            case Enumerators.AbilityEffectType.TARGET_FIRE:
                VfxObject = LoadObjectsManager.GetObjectByPath <GameObject>("Prefabs/VFX/toxicDamageVFX");
                break;

            case Enumerators.AbilityEffectType.TARGET_LIFE:
                VfxObject = LoadObjectsManager.GetObjectByPath <GameObject>("Prefabs/VFX/toxicDamageVFX");
                break;

            case Enumerators.AbilityEffectType.TARGET_TOXIC:
                VfxObject = LoadObjectsManager.GetObjectByPath <GameObject>("Prefabs/VFX/toxicDamageVFX");
                break;
            }

            if (VfxObject != null)
            {
                VfxObject = Object.Instantiate(VfxObject);
                VfxObject.transform.position = targetPosition;
                ParticlesController.RegisterParticleSystem(VfxObject, true);
            }
        }
        private void Action()
        {
            object caller = AbilityUnitOwner != null ? AbilityUnitOwner : (object)BoardSpell;

            Player opponent = PlayerCallerOfAbility == GameplayManager.CurrentPlayer ?
                              GameplayManager.OpponentPlayer :
                              GameplayManager.CurrentPlayer;

            foreach (Enumerators.AbilityTargetType target in AbilityTargetTypes)
            {
                switch (target)
                {
                case Enumerators.AbilityTargetType.OPPONENT_ALL_CARDS:
                    foreach (BoardUnit cardOpponent in opponent.BoardCards)
                    {
                        BattleController.AttackUnitByAbility(caller, AbilityData, cardOpponent);
                    }

                    CreateVfx(Vector3.up * 1.5f);
                    break;

                case Enumerators.AbilityTargetType.PLAYER_ALL_CARDS:
                    foreach (BoardUnit cardPlayer in PlayerCallerOfAbility.BoardCards)
                    {
                        BattleController.AttackUnitByAbility(caller, AbilityData, cardPlayer);
                        CreateVfx(cardPlayer.Transform.position);
                    }

                    break;

                case Enumerators.AbilityTargetType.OPPONENT:
                    BattleController.AttackPlayerByAbility(caller, AbilityData, opponent);
                    break;

                case Enumerators.AbilityTargetType.PLAYER:
                    BattleController.AttackPlayerByAbility(caller, AbilityData, PlayerCallerOfAbility);
                    break;
                }
            }
        }
Пример #5
0
        protected override void InputEndedHandler()
        {
            base.InputEndedHandler();

            object caller = AbilityUnitOwner != null ? AbilityUnitOwner : (object)BoardSpell;

            if (IsAbilityResolved)
            {
                switch (AffectObjectType)
                {
                case Enumerators.AffectObjectType.CHARACTER:
                    Action(TargetUnit);
                    CreateAndMoveParticle(
                        () =>
                    {
                        BattleController.AttackUnitByAbility(caller, AbilityData, TargetUnit);
                    },
                        TargetUnit.Transform.position);

                    break;
                }
            }
        }
Пример #6
0
 private void TakeDamageToUnit(BoardUnit unit)
 {
     BattleController.AttackUnitByAbility(AbilityUnitOwner, AbilityData, unit);
     CreateVfx(unit.Transform.position, true, 5f);
 }
Пример #7
0
        public override void Action(object info = null)
        {
            base.Action(info);

            BoardUnit creature = info as BoardUnit;

            CreateVfx(creature.Transform.position);

            BoardUnit leftAdjustment = null, rightAdjastment = null;

            int targetIndex = -1;

            for (int i = 0; i < creature.OwnerPlayer.BoardCards.Count; i++)
            {
                if (creature.OwnerPlayer.BoardCards[i] == creature)
                {
                    targetIndex = i;
                }
            }

            if (targetIndex > -1)
            {
                if (targetIndex - 1 > -1)
                {
                    leftAdjustment = creature.OwnerPlayer.BoardCards[targetIndex - 1];
                }

                if (targetIndex + 1 < creature.OwnerPlayer.BoardCards.Count)
                {
                    rightAdjastment = creature.OwnerPlayer.BoardCards[targetIndex + 1];
                }
            }

            if (leftAdjustment != null)
            {
                if (leftAdjustment.IsStun)
                {
                    BattleController.AttackUnitByAbility(AbilityUnitOwner, AbilityData, leftAdjustment);
                }
                else
                {
                    leftAdjustment.Stun(Enumerators.StunType.FREEZE, 1);
                }
            }

            if (rightAdjastment != null)
            {
                if (rightAdjastment.IsStun)
                {
                    BattleController.AttackUnitByAbility(AbilityUnitOwner, AbilityData, rightAdjastment);
                }
                else
                {
                    rightAdjastment.Stun(Enumerators.StunType.FREEZE, 1);
                }
            }

            if (creature.IsStun)
            {
                BattleController.AttackUnitByAbility(AbilityUnitOwner, AbilityData, creature);
            }
            else
            {
                creature.Stun(Enumerators.StunType.FREEZE, 1);
            }
        }