Example #1
0
    public void TriggerActivate(GameObject trg)
    {
        BasicAgent agent = trg.GetComponent <BasicAgent> ();

        Debug.Log("Agent >" + agent);
        if (agent != null)
        {
            // We only do it if they aren't at full health/energy
            if (isEnergyPotion)
            {
                EnergyController ctrl = agent.GetComponentInChildren <EnergyController> ();
                Debug.Log("Energycontroller >" + ctrl);
                if (ctrl != null)
                {
                    if (ctrl.currentEnergy < ctrl.minMaxEnergy.y)
                    {
                        IncreaseStat(agent);
                    }
                }
            }
            else
            {
                if (agent.currentHealth < agent.healthMinMax.y)
                {
                    IncreaseStat(agent);
                }
            }
        }
    }
    protected override void Start()
    {
        base.Start();

        // Inicia os componenetes
        anim              = GetComponent <Animator>();
        coll              = GetComponent <BoxCollider2D>();
        healthController  = GetComponent <HealthController>();
        energyController  = GetComponent <EnergyController>();
        sword             = transform.FindChild("Sword");
        energyBallSpawner = transform.FindChild("EnergyBallSpawner");
        areaAttack        = transform.FindChild("AreaAttack").gameObject;
        shield            = transform.FindChild("Shield").gameObject;

        //clipAttack = (AnimationClip)AssetDatabase.LoadAssetAtPath("Assets/Animations/Player/PlayerAttack.anim", typeof(AnimationClip));

        healthController.OnTakeDamage += (amount) => {
            StopCoroutine("Dodge");
            IsLocked = false;
        };

        healthController.OnEnterInvulnerableMode += () =>
        {
            Blink(0.15f, healthController.invulnerableTime);
            Knockback(7, new Vector2(-lookDirection.x, 1));
            anim.SetTrigger("getHit");
        };

        healthController.OnReachZeroHealth += () =>
        {
            StartCoroutine("RestartScene");
        };
    }
Example #3
0
 private void Awake()
 {
     weapon     = GetComponent <WeaponController>();
     energy     = GetComponent <EnergyController>();
     playerWalk = GetComponent <PlayerWalk>();
     sounds     = GetComponent <Sounds>();
 }
Example #4
0
 public void Init(LevelController _levelController, EnergyController _energyController)
 {
     energyController = _energyController;
     levelController  = _levelController;
     restartButton.onClick.AddListener(Restart);
     backToMenuButton.onClick.AddListener(BackToLevelSelect);
 }
Example #5
0
    void OnGachaInputLoaded()
    {
        // npnf feature; Playing gacha
        User.CurrentProfile.Gacha.Play(gacha.Id, input.Id,
                                       (List <string> entitlementIds, NPNFError error) => {
            LoadingSpinner.Instance.DisableLoadingSpinner();
            isSpinning = false;
            if (entitlementIds != null)
            {
                InventoryController inventoryCtrler = (InventoryController)AppController.Instance.GetController(Controller.INVENTORY);

                // Setup to be guarantee only one entitlement is added in one play
                int count = inventoryCtrler.GetCount(entitlementIds);

                //notify inventory of new entitlements
                inventoryCtrler.OnNewInventory(entitlementIds);

                // If there are same asset exist,it is a dup. Credit user an amount of currency
                if (count > 0)
                {
                    CurrencyController currencyCtrler = (CurrencyController)AppController.Instance.GetController(Controller.CURRENCY);
                    currencyCtrler.Credit(10);
                }

                //gacha uses 1 energy, update energy
                EnergyController energyCtrler = (EnergyController)AppController.Instance.GetController(Controller.ENERGY);
                energyCtrler.needsSync        = true;
            }
            else
            {
                Debug.LogWarning("Play Gacha Failed: " + error);
                AppController.Instance.IsNetworkError(error);
            }
        });
    }
    void Update()
    {
        GameObject obj    = GameObject.Find("MainDialog");
        MainDialog dialog = obj.GetComponent <MainDialog>();

        EnergyController energyCtrler = (EnergyController)AppController.Instance.GetController(Controller.ENERGY);
        GameController   gameCtrler   = (GameController)AppController.Instance.GetController(Controller.GAME);
        GachaController  gachaCtrler  = (GachaController)AppController.Instance.GetController(Controller.GACHA);

        if (!dialog.isShowingDialog && !gachaCtrler.isSpinning && energyCtrler.currentEnergy > 0 && canMove && !gameCtrler.gameEnded)
        {
            Vector3 pos = transform.position;
            pos.z = 0;
            transform.position = pos;
            float timeRatio = (gameCtrler.startTime - gameCtrler.currentTime) / gameCtrler.startTime;
            _speed = minSpeed + ((maxSpeed - minSpeed) * timeRatio);
            float _horizontalInput = Input.GetAxisRaw("Horizontal");
            float _verticalInput   = Input.GetAxisRaw("Vertical");
            if (_verticalInput != 0f)
            {
                _animator.SetFloat("HorizontalInput", 0f);
            }
            else
            {
                _animator.SetFloat("HorizontalInput", _horizontalInput);
            }
            _animator.SetFloat("VerticalInput", _verticalInput);
            _charController.Move(new Vector3(_horizontalInput * _speed * Time.deltaTime, _verticalInput * _speed * Time.deltaTime, 0.0f));
        }
        else
        {
            _animator.SetFloat("HorizontalInput", 0);
            _animator.SetFloat("VerticalInput", 0);
        }
    }
Example #7
0
    // Use this for initialization
    void Start()
    {
        GameObject gameSystem = GameObject.FindGameObjectWithTag("GameSystem");

        energyController = gameSystem.GetComponent <EnergyController>();

        _audioSource = (AudioSource)this.GetComponent <AudioSource>();
    }
Example #8
0
// Use this for initialization
    void Start()
    {
        MEC              = MRacer.GetComponent <EnergyController>();
        MHM              = MRacer.GetComponent <HoverMotor>();
        shildLevelMax    = 600;
        shildLevel       = shildLevelMax;
        timeBoosterValue = Time.deltaTime;
        impact           = false;
        shildsDown       = false;
    }
Example #9
0
 public void Init(ObjectSpritesDatabase _objectSpritesDatabase, TimeController _timeController,
                  EnergyController _energyController, HintsController _hintsController)
 {
     timeController               = _timeController;
     objectSpritesDatabase        = _objectSpritesDatabase;
     energyController             = _energyController;
     hintsController              = _hintsController;
     timeController.onTimeOver   += Defeat;
     timeController.onTimeUpdate += TimeUpdate;
 }
    private void Start()
    {
        audioSource      = GetComponent <AudioSource>();
        energy           = GameObject.Find("Energy");
        energyController = energy.GetComponent <EnergyController>();
        audioSource.clip = audioClipFire;
        audioSource.Play();

        // animator = GetComponent<Animator>();
    }
    protected override void Regenerate(Transform player)
    {
        EnergyController energy = player.GetComponent <EnergyController>();

        if (energy != null)
        {
            energy.Add(regenarationValue);
            Destroy(this.gameObject);
        }
    }
Example #12
0
 // Use this for initialization
 void Start()
 {
     rb2d                = GetComponent <Rigidbody2D>();
     animator            = GetComponent <Animator>();
     Time.fixedDeltaTime = 0.01f;
     energy              = GameObject.Find("Energy");
     energyController    = energy.GetComponent <EnergyController>();
     audioSource         = GetComponent <AudioSource>();
     r = new System.Random();
 }
    private void Awake()
    {
        energy      = player.GetComponent <EnergyController>();
        playerInput = player.GetComponent <InputController>();
        playerBody  = player.GetComponent <Rigidbody2D>();

        audioManager = GameObject.Find("AudioManager").GetComponent <AudioManager>();

        sprite = GetComponent <SpriteRenderer>();
    }
Example #14
0
 // Use this for initialization
 void Start()
 {
     MEC = MRacer.GetComponent <EnergyController>();
     MSC = MRacer.GetComponent <ShildController>();
     MHM = MRacer.GetComponent <HoverMotor>();
     boost.Pause();
     boostPlayed    = false;
     accPlayed      = false;
     airbreakPlayed = false;
     shildPlayed    = false;
 }
Example #15
0
 public void Init(LevelSettingsDatabase _levelSettingsDatabase,
                  LevelManager _levelManager,
                  LevelController _levelController,
                  ObjectSpritesDatabase _objectSpritesDatabase,
                  EnergyController _energyController,
                  HintsController _hintsController)
 {
     uiLevelSelectView.Init(_levelSettingsDatabase, _levelManager, _energyController);
     uiLevelSelectView.Show();
     uiLevelWindowView.Init(_levelController, _objectSpritesDatabase, _energyController, _hintsController, uiLevelSelectView);
 }
Example #16
0
    private void Awake()
    {
        controller = GetComponent <CharacterController2D>();
        weapon     = GetComponent <WeaponController>();
        energy     = GetComponent <EnergyController>();
        anim       = GetComponent <Animator>();

        audioManager = GameObject.Find("AudioManager").GetComponent <AudioManager>();

        crosshairBody = crosshair.GetComponent <Rigidbody2D>();
    }
    protected void Start()
    {
        resource   = GetComponent <EnergyController>();
        input      = GetComponentInChildren <InputManagerBase>();
        animator   = GetComponent <Animator>();
        movement   = GetComponent <PlayerMovement>();
        body       = GetComponent <Rigidbody2D>();
        indicators = GetComponentInChildren <CharacterUiIndicator>();

        //InitDagger();
    }
Example #18
0
 public void Init(string _levelName, int _energyCost, LevelManager _levelManager, int _levelID,
                  EnergyController _energyController)
 {
     levelID            = _levelID;
     energyCost         = _energyCost;
     LevelNameText.text = _levelName + " (" + _energyCost + " energy)";
     LevelSelectButton.onClick.AddListener(() => _levelManager.SelectLevel(levelID));
     LevelSelectButton.onClick.AddListener(BuyLevel);
     energyController = _energyController;
     energyController.OnEnergyUpdate += CheckEnergyCost;
     CheckEnergyCost(0);
 }
 IEnumerator SpawnEnergy()
 {
     while (true)
     {
         if (nearbyLinks.Count > 0)
         {
             EnergyController energy = Instantiate(energyPrefab, transform.position, Quaternion.identity).GetComponent <EnergyController>();
             energy.target = nearbyLinks[Random.Range(0, nearbyLinks.Count)];
         }
         yield return(new WaitForSeconds(interval));
     }
 }
Example #20
0
// Start is called before the first frame update
    private void Start()
    {
        cam = GetComponentInChildren <Camera>();
        rb  = GetComponent <Rigidbody>();
        tr  = transform;
        col = GetComponent <CapsuleCollider>();

        Cursor.visible       = false;
        Cursor.lockState     = CursorLockMode.Locked;
        jumped               = false;
        jumpedWhileSprinting = false;
        energyController     = EnergyController.instance;
    }
Example #21
0
    // Use this for initialization
    void Start()
    {
        socketEquipment = GetComponent<SocketEquipment>();
        botControl = GetComponent<FSMBotController>();
        //player = GameObject.FindWithTag("Player");
        player = botControl.playerTransform;
        thisBody = GetComponent<Rigidbody>();
        energyControl = GetComponent<EnergyController>();

        flipperCooldownTimers = new float[Enum.GetNames(typeof(SocketLocation)).Length];
        hammerCooldownTimers = new float[Enum.GetNames(typeof(SocketLocation)).Length];
        SawHoldTimers = new float[Enum.GetNames(typeof(SocketLocation)).Length];
    }
Example #22
0
 public void Init(LevelController _levelController, ObjectSpritesDatabase _objectSpritesDatabase,
                  EnergyController _energyController, HintsController _hintsController, UILevelSelectView _uiLevelSelectView)
 {
     levelController       = _levelController;
     objectSpritesDatabase = _objectSpritesDatabase;
     energyController      = _energyController;
     hintsController       = _hintsController;
     uiLevelSelectView     = _uiLevelSelectView;
     uiPauseView.Init(levelController);
     uiDefeatView.Init(levelController, energyController);
     uiVictoryView.Init(levelController, energyController);
     hintButton.onClick.AddListener(levelController.UseHint);
     SubscribeEvents();
 }
Example #23
0
    private void Awake()
    {
        walkController = player.GetComponent <PlayerWalk>();
        dashController = player.GetComponent <PlayerDash>();
        jumpController = player.GetComponent <PlayerJump>();
        fireController = player.GetComponent <PlayerFire>();

        thisTransform = gameObject.GetComponent <Transform>();

        energy     = player.GetComponent <EnergyController>();
        playerBody = player.GetComponent <Rigidbody2D>();
        sprite     = GetComponent <SpriteRenderer>();
        sounds     = GetComponent <Sounds>();
    }
Example #24
0
    // Use this for initialization
    void Start()
    {
        if (ElfStatus.checkPointPosition != Vector3.zero)
        {
            gameObject.transform.position = ElfStatus.checkPointPosition;
        }

        rgdb             = GetComponent <Rigidbody2D>();
        animator         = GetComponent <Animator>();
        energyController = GetComponent <EnergyController>();
        energyController.FillEnergyCompletely();

        gravityScale = rgdb.gravityScale;
        //ClimbingVelocityY = CLIMB_VELOCITY_Y;
    }
Example #25
0
 void Start()
 {
     if (gameDatabase == null)
     {
         gameDatabase = FindObjectOfType <GameDatabase>();
     }
     saveLoadManager = new SaveLoadManager();
     timeController.Init(levelController);
     energyController = new EnergyController(saveLoadManager);
     hintsController  = new HintsController(saveLoadManager);
     levelController.Init(gameDatabase.ObjectSpritesDatabase, timeController, energyController, hintsController);
     levelManager = new LevelManager(gameDatabase.LevelSettingsDatabase, levelController);
     uiController.Init(gameDatabase.LevelSettingsDatabase, levelManager, levelController,
                       gameDatabase.ObjectSpritesDatabase, energyController, hintsController);
 }
Example #26
0
 void touchEnergy(GameObject theCollision)
 {
     Debug.Log(theCollision.name);
     if (theCollision.name == "Energy")
     {
         EnergyController en = theCollision.GetComponent <EnergyController>();
         if (en.tutorial)
         {
             GetComponent <TutorialView>().show(en.tutDirection, en.tutorialMessage);
             tutWait = true;
             transform.FindChild("particle").GetComponent <ParticleSystem>().Pause();
             lastSwipeTime = -50;
         }
         GetComponent <TapAndSlash>().InterruptMouseDown();
     }
 }
Example #27
0
 public void Init(LevelSettingsDatabase _levelSettingsDatabase, LevelManager _levelManager,
                  EnergyController _energyController)
 {
     levelManager     = _levelManager;
     energyController = _energyController;
     for (int i = 0; i < _levelSettingsDatabase.LevelSettings.Count; i++)
     {
         ObjectPool.GetObjectFromPool <UILevelSelectButton>(UILevelMenuPrefab, LevelMenuParent)
         .Init(_levelSettingsDatabase.LevelSettings[i].LevelName,
               _levelSettingsDatabase.LevelSettings[i].EnergyCost, _levelManager, i, energyController);
     }
     levelManager.OnLevelSelect      += HideThis;
     energyController.OnEnergyUpdate += UpdateEnergyText;
     UpdateEnergyText(energyController.EnergyValue);
     energyButton.onClick.AddListener(AddEnergy);
 }
Example #28
0
    void OnTriggerEnter(Collider other)
    {
        GameObject obj        = GameObject.Find("MainDialog");
        MainDialog mainDialog = obj.GetComponent <MainDialog>();

        if (!entered && other.gameObject.name == "Player")
        {
            if (assetName != "Woo" && talkCount > 2)
            {
                mainDialog.ShowDialog("Half day!", null, null);
                return;
            }

            GameController gameCtrler = (GameController)AppController.Instance.GetController(Controller.GAME);

            //check if user has won
            if (assetName == "Woo" && gameCtrler.hasPitch)
            {
                gameCtrler.EndGame(true);
                return;
            }

            EnergyController energyCtrler = (EnergyController)AppController.Instance.GetController(Controller.ENERGY);

            string     sku   = (assetName == "Henry") ? "expensive fight" : "fight";
            GachaInput price = GachaInput.GetCachedBySku(sku);

            if (energyCtrler.currentEnergy >= price.Price.Amount)
            {
                int    i      = Random.Range(0, dialogs.Length);
                string dialog = dialogs [i];
                _animator.SetFloat("HorizontalInput", other.gameObject.transform.position.x - transform.position.x);
                _animator.SetFloat("VerticalInput", other.gameObject.transform.position.y - transform.position.y);

                mainDialog.ShowDialog(dialog, asset);
                talkCount++;
                StartCoroutine(CancelAnimation());
            }
            else
            {
                mainDialog.ShowDialog("Go away...", null, null);
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        Screen.showCursor = false;
        bool hadTouched = !inAir;

        if (dying) {
            deathTimer+=Time.deltaTime;
            if(deathTimer>0.5)
            {
                ScreenTransitioner.Instance.TransitionTo( Application.loadedLevelName );
            }

        }
        else
        {

            ArrayList en = GameObject.Find( "LevelController" ).GetComponent<LevelController>().energies;
            for( int i = 0; i < en.Count; i++ )
            {
                EnergyController energ = ((GameObject)en[i]).GetComponent<EnergyController>();

                if( energ.gameObject.activeSelf )
                {
                    float dist = (transform.position - energ.transform.position).sqrMagnitude;
                    if( dist > energ.lastDistance && dist < 0.5 )
                    {
                        lastEnergyTime = Time.time;
                        lastEnergy = energ;
                        vSpeedLastTouch = vSpeed;
                        hSpeedLastTouch = hSpeed;
                        energ.touched = true;
                        touchEnergy( ((GameObject)en[i]) );
                    }
                    energ.lastDistance = dist;
                }
            }

            aboveFan = false;
            belowFan = false;
            ArrayList fans = GameObject.Find( "LevelController" ).GetComponent<LevelController>().fans;
            for( int i = 0; i < fans.Count; i++ )
            {
                if (transform.position.x > ((GameObject)fans[i]).transform.position.x-2)
                {
                    if (transform.position.x < ((GameObject)fans[i]).transform.position.x+2)
                    {
                        if (transform.position.y >= ((GameObject)fans[i]).transform.position.y)
                        {
                            aboveFan = true;
                        }
                        else
                        {
                            belowFan = true;
                        }
                    }
                }
            }

            if( lastEnergy != null && ( (tutWait && Time.time > lastEnergyTime + 1.5f ) || ( !tutWait && Time.time - lastEnergyTime < mercyTime ) ) && Time.time - lastSwipeTime < mercyTime*2 )
            {
                tutWait = false;
                GetComponent<TutorialView>().unshow();

                lastEnergyTime = -50;
                lastSwipeTime = -50;
                timeInTween = 0;
                actualPosition = lastEnergy.transform.position;
                hSpeed = hSpeedLastTouch;
                vSpeed = vSpeedLastTouch;
                transform.FindChild("particle").GetComponent<ParticleSystem>().Play();

                GameObject.Find( "Mageshiro" ).GetComponent<Animator>().Play( "ThrustMagic", -1, 0 );
                GameObject.Find( "Mageshiro" ).GetComponent<Animator>().speed = 1;

                switch( lastSwipe.direction )
                {
                    case Direction.UP:
                        PlayerSoundScript.Instance.playJump();
                        shock.DisplayShockwave( new Vector3( 0, -1, 0 ), 0.2f );
                        if (aboveFan && belowFan)
                        {
                            vSpeed = 10;
                        }
                        else
                        if (aboveFan)
                        {
                            vSpeed = 15;
                        }
                        else
                        if (belowFan)
                        {
                            vSpeed = 6;
                        }
                        else
                        {
                            vSpeed = 10;
                        }
                        inAir = true;
                        break;
                    case Direction.DOWN:
                        if( airTime > 0.5)
                        {
                            if (!inAir)
                            {
                                PlayerSoundScript.Instance.playSuperJump();
                                shock.DisplayShockwave( new Vector3( 1, 12, 0 ), 1 );
                                if (aboveFan && belowFan)
                                {
                                    vSpeed = 14;
                                }
                                else
                                    if (aboveFan)
                                {
                                    vSpeed = 20;
                                }
                                else
                                    if (belowFan)
                                {
                                    vSpeed = 10;
                                }
                                else
                                {
                                    vSpeed = 14;
                                }
                                hSpeed = 1;
                            }
                            else
                            {
                                PlayerSoundScript.Instance.playDive();
                                shock.DisplayShockwave( new Vector3( 1, -10, 0 ), 1 );
                                if (aboveFan && belowFan || inAir)
                                {
                                    vSpeed = -15;
                                }
                                else
                                    if (aboveFan)
                                {
                                    vSpeed = -10;
                                }
                                else
                                    if (belowFan)
                                {
                                    vSpeed = -20;
                                }
                                else
                                {
                                    vSpeed = -15;
                                }
                                hSpeed = 1;
                            }
                        }
                        else
                        {
                            PlayerSoundScript.Instance.playSuperJump();
                            shock.DisplayShockwave( new Vector3( 1, 12, 0 ), 1 );
                            if (aboveFan)
                            {
                                vSpeed = 20;
                            }
                            else
                                if (belowFan)
                            {
                                vSpeed = 10;
                            }
                            else
                            {
                                vSpeed = 14;
                            }
                            hSpeed = 1;
                            inAir = true;
                            airTime = 20;
                            hSpeed = 0.25f;

                        }
                        break;
                    case Direction.LEFT:
                        PlayerSoundScript.Instance.playStop();
                        shock.DisplayShockwave( new Vector3( 1, 0, 0 ), 0.2f );
                        hSpeed = 0;
                        break;
                    case Direction.RIGHT:
                        PlayerSoundScript.Instance.playDash();
                        shock.DisplayShockwave( new Vector3( 1, 0, 0 ), 0.8f );
                        hSpeed = 3;
                        if (aboveFan)
                        {
                            vSpeed = 2;
                        }
                        else
                        if (belowFan)
                        {
                            vSpeed = -2;
                        }
                        else
                        {
                            vSpeed = 0;
                        }
                        break;
                }
                lastEnergy.gameObject.SetActive( false );
            }

            if( !tutWait )
            {
                airTime+=Time.deltaTime;
                off = new Vector3( hSpeedComponent*Time.deltaTime*hSpeed, vSpeed*Time.deltaTime, 0 );
                transform.position = transform.position + off;
                actualPosition += off;

                if( !inAir )
                    GameObject.Find( "Mageshiro" ).GetComponent<Animator>().speed = hSpeed;

                if( timeInTween < compensateTweenTime )
                {
                    transform.position = transform.position + (actualPosition-transform.position) * timeInTween/compensateTweenTime;
                    timeInTween += Time.deltaTime;
                }

                if( inAir && hSpeed < 2.5 )
                {
                    vSpeed -= 9*Time.deltaTime;
                }
                else
                {
                    if( hSpeed < 1 )
                        hSpeed += Mathf.Min( 1 - hSpeed, 0.7f*Time.deltaTime );
                }
                if( hSpeed > 1 )
                    hSpeed -= Mathf.Min( hSpeed - 1, 1.8f*Time.deltaTime );
                if (transform.position.y < -10 )
                {
                    Application.LoadLevel( Application.loadedLevel );
                }
            }
            else
            {
                GameObject.Find( "Mageshiro" ).GetComponent<Animator>().speed = 0;
            }

            if (!tutWait) {
                inAir = true;
            }
        }
    }
Example #30
0
 protected void Start()
 {
     resource = GetComponentInParent <EnergyController>();
     audio    = GetComponent <AudioSource>();
 }
Example #31
0
 private void Start()
 {
     _energy = FindObjectOfType <EnergyController>();
 }
Example #32
0
    // Update is called once per frame
    void Update()
    {
        Screen.showCursor = false;
        bool hadTouched = !inAir;


        if (dying)
        {
            deathTimer += Time.deltaTime;
            if (deathTimer > 0.5)
            {
                ScreenTransitioner.Instance.TransitionTo(Application.loadedLevelName);
            }
        }
        else
        {
            ArrayList en = GameObject.Find("LevelController").GetComponent <LevelController>().energies;
            for (int i = 0; i < en.Count; i++)
            {
                EnergyController energ = ((GameObject)en[i]).GetComponent <EnergyController>();

                if (energ.gameObject.activeSelf)
                {
                    float dist = (transform.position - energ.transform.position).sqrMagnitude;
                    if (dist > energ.lastDistance && dist < 0.5)
                    {
                        lastEnergyTime  = Time.time;
                        lastEnergy      = energ;
                        vSpeedLastTouch = vSpeed;
                        hSpeedLastTouch = hSpeed;
                        energ.touched   = true;
                        touchEnergy(((GameObject)en[i]));
                    }
                    energ.lastDistance = dist;
                }
            }

            aboveFan = false;
            belowFan = false;
            ArrayList fans = GameObject.Find("LevelController").GetComponent <LevelController>().fans;
            for (int i = 0; i < fans.Count; i++)
            {
                if (transform.position.x > ((GameObject)fans[i]).transform.position.x - 2)
                {
                    if (transform.position.x < ((GameObject)fans[i]).transform.position.x + 2)
                    {
                        if (transform.position.y >= ((GameObject)fans[i]).transform.position.y)
                        {
                            aboveFan = true;
                        }
                        else
                        {
                            belowFan = true;
                        }
                    }
                }
            }



            if (lastEnergy != null && ((tutWait && Time.time > lastEnergyTime + 1.5f) || (!tutWait && Time.time - lastEnergyTime < mercyTime)) && Time.time - lastSwipeTime < mercyTime * 2)
            {
                tutWait = false;
                GetComponent <TutorialView>().unshow();

                lastEnergyTime = -50;
                lastSwipeTime  = -50;
                timeInTween    = 0;
                actualPosition = lastEnergy.transform.position;
                hSpeed         = hSpeedLastTouch;
                vSpeed         = vSpeedLastTouch;
                transform.FindChild("particle").GetComponent <ParticleSystem>().Play();

                GameObject.Find("Mageshiro").GetComponent <Animator>().Play("ThrustMagic", -1, 0);
                GameObject.Find("Mageshiro").GetComponent <Animator>().speed = 1;

                switch (lastSwipe.direction)
                {
                case Direction.UP:
                    PlayerSoundScript.Instance.playJump();
                    shock.DisplayShockwave(new Vector3(0, -1, 0), 0.2f);
                    if (aboveFan && belowFan)
                    {
                        vSpeed = 10;
                    }
                    else
                    if (aboveFan)
                    {
                        vSpeed = 15;
                    }
                    else
                    if (belowFan)
                    {
                        vSpeed = 6;
                    }
                    else
                    {
                        vSpeed = 10;
                    }
                    inAir = true;
                    break;

                case Direction.DOWN:
                    if (airTime > 0.5)
                    {
                        if (!inAir)
                        {
                            PlayerSoundScript.Instance.playSuperJump();
                            shock.DisplayShockwave(new Vector3(1, 12, 0), 1);
                            if (aboveFan && belowFan)
                            {
                                vSpeed = 14;
                            }
                            else
                            if (aboveFan)
                            {
                                vSpeed = 20;
                            }
                            else
                            if (belowFan)
                            {
                                vSpeed = 10;
                            }
                            else
                            {
                                vSpeed = 14;
                            }
                            hSpeed = 1;
                        }
                        else
                        {
                            PlayerSoundScript.Instance.playDive();
                            shock.DisplayShockwave(new Vector3(1, -10, 0), 1);
                            if (aboveFan && belowFan || inAir)
                            {
                                vSpeed = -15;
                            }
                            else
                            if (aboveFan)
                            {
                                vSpeed = -10;
                            }
                            else
                            if (belowFan)
                            {
                                vSpeed = -20;
                            }
                            else
                            {
                                vSpeed = -15;
                            }
                            hSpeed = 1;
                        }
                    }
                    else
                    {
                        PlayerSoundScript.Instance.playSuperJump();
                        shock.DisplayShockwave(new Vector3(1, 12, 0), 1);
                        if (aboveFan)
                        {
                            vSpeed = 20;
                        }
                        else
                        if (belowFan)
                        {
                            vSpeed = 10;
                        }
                        else
                        {
                            vSpeed = 14;
                        }
                        hSpeed  = 1;
                        inAir   = true;
                        airTime = 20;
                        hSpeed  = 0.25f;
                    }
                    break;

                case Direction.LEFT:
                    PlayerSoundScript.Instance.playStop();
                    shock.DisplayShockwave(new Vector3(1, 0, 0), 0.2f);
                    hSpeed = 0;
                    break;

                case Direction.RIGHT:
                    PlayerSoundScript.Instance.playDash();
                    shock.DisplayShockwave(new Vector3(1, 0, 0), 0.8f);
                    hSpeed = 3;
                    if (aboveFan)
                    {
                        vSpeed = 2;
                    }
                    else
                    if (belowFan)
                    {
                        vSpeed = -2;
                    }
                    else
                    {
                        vSpeed = 0;
                    }
                    break;
                }
                lastEnergy.gameObject.SetActive(false);
            }

            if (!tutWait)
            {
                airTime           += Time.deltaTime;
                off                = new Vector3(hSpeedComponent * Time.deltaTime * hSpeed, vSpeed * Time.deltaTime, 0);
                transform.position = transform.position + off;
                actualPosition    += off;

                if (!inAir)
                {
                    GameObject.Find("Mageshiro").GetComponent <Animator>().speed = hSpeed;
                }

                if (timeInTween < compensateTweenTime)
                {
                    transform.position = transform.position + (actualPosition - transform.position) * timeInTween / compensateTweenTime;
                    timeInTween       += Time.deltaTime;
                }

                if (inAir && hSpeed < 2.5)
                {
                    vSpeed -= 9 * Time.deltaTime;
                }
                else
                {
                    if (hSpeed < 1)
                    {
                        hSpeed += Mathf.Min(1 - hSpeed, 0.7f * Time.deltaTime);
                    }
                }
                if (hSpeed > 1)
                {
                    hSpeed -= Mathf.Min(hSpeed - 1, 1.8f * Time.deltaTime);
                }
                if (transform.position.y < -10)
                {
                    Application.LoadLevel(Application.loadedLevel);
                }
            }
            else
            {
                GameObject.Find("Mageshiro").GetComponent <Animator>().speed = 0;
            }

            if (!tutWait)
            {
                inAir = true;
            }
        }
    }