Пример #1
0
    void Update()
    {
        if (m_gcPlayerAttractor.GetDistanceFromPlayer() <= m_fPickupDistance)
        {
            // Grab the optional components.
            //
            AddScore      gcScore       = GetComponent <AddScore>();
            AddMultiplier gcMult        = GetComponent <AddMultiplier>();
            AddPowerup    gcPowerUp     = GetComponent <AddPowerup>();
            PlayerState   gcPlayerState = GameInstance.Object.GetPlayerState();
            AddGameEvent  gcGameEvent   = GetComponent <AddGameEvent>();

            bool bDidAdd = false;

            // Call the relevant actions...
            //
            switch (m_iTriggerAction)
            {
            case Types.EPlayerPickupAction._NOTHING:
                break;

            case Types.EPlayerPickupAction._GIVE_SCORE_AND_MULTIPLIER:
                if (null != gcScore)
                {
                    bDidAdd = gcScore.AddScoreToPlayer();
                }
                if (null != gcMult)
                {
                    bDidAdd = gcMult.AddMultiplierToPlayer();
                }
                break;

            case Types.EPlayerPickupAction._GIVE_MULTIPLIER:
                if (null != gcMult)
                {
                    bDidAdd = gcMult.AddMultiplierToPlayer();
                }
                break;

            case Types.EPlayerPickupAction._GIVE_SCORE:
                if (null != gcScore)
                {
                    bDidAdd = gcScore.AddScoreToPlayer();
                }
                break;

            case Types.EPlayerPickupAction._GIVE_SCORE_AND_POWERUP:
                if (null != gcScore)
                {
                    bDidAdd = gcScore.AddScoreToPlayer();
                }
                if (null != gcPowerUp)
                {
                    bDidAdd = gcPowerUp.AddPowerupToPlayer();
                }
                break;

            case Types.EPlayerPickupAction._GIVE_POWERUP:
                if (null != gcPowerUp)
                {
                    bDidAdd = gcPowerUp.AddPowerupToPlayer();
                }
                break;

            case Types.EPlayerPickupAction._GIVE_LIFE:
                if (null != gcPlayerState)
                {
                    bDidAdd = gcPlayerState.AddLives(1);
                }
                break;

            case Types.EPlayerPickupAction._GAME_EVENT:
                if (null != gcGameEvent)
                {
                    bDidAdd = gcGameEvent.AddGameEventForPlayer();
                }
                break;

            case Types.EPlayerPickupAction._GIVE_KEY:
                if (null != gcGameEvent)
                {
                    bDidAdd = true;
                }
                if (null != gcGameEvent)
                {
                    bDidAdd = gcGameEvent.AddGameEventForPlayer();                                                      // Key prefab should also have an event attached!
                }
                GameInstance.Object.GetPlayerState().SpawnExitKey();
                break;
            }
            ;

            // Only play the feedbacks if add was successful
            if (bDidAdd)
            {
                GameInstance.Object.GetAudioManager().PlayAudioAtLocation(transform.position, m_iAudio);
                if (null != m_goPickupEffect)
                {
                    Instantiate(m_goPickupEffect, transform.position, Quaternion.identity);
                }
            }

            Destroy(gameObject);
        }
    }