// Tracks the progress of an achievement private void TrackAchievement(ref int achievementCounter, int firstTrigger, int nthTrigger, int achievementReward, string unlockMessage) { // Adds to the achievement counter achievementCounter++; // The first achievement is achieved when the first trigger amount is met if (achievementCounter == firstTrigger) { EventBroker.CallAddScore(achievementReward); EventBroker.CallNotifyAchievement(achievementCounter.ToString(), unlockMessage); } else // Else the achievement only triggers on every nth trigger { if (achievementCounter % nthTrigger == 0) { EventBroker.CallAddScore(achievementReward * (achievementCounter / nthTrigger)); EventBroker.CallNotifyAchievement(achievementCounter.ToString(), unlockMessage); } } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Player")) { // Sends the action to enable powerups EventBroker.CallActivatePowerup(powerupType, powerupDuration, powerupAmount, speedMultipler); // Adds score EventBroker.CallAddScore(powerupScore); // Calls achievement event EventBroker.CallPowerupAchieve(); // Sets audiosource clip to the powerup clip sfxAudioSource.clip = powerupClip; // Plays powerup clip sfxAudioSource.Play(); // Intantiates powerup pickup feedback explosion pickupExplosion = Instantiate(pickupExplosion, transform.position, Quaternion.identity); pickupExplosion.GetComponent <ExplosionGenerator>().ExplosionColor = disintegrateColor; // Destroys powerup Destroy(gameObject); } }