/// <summary> /// Places a random selected block at the given position /// </summary> /// <param name="position">position of the block</param> private void PlaceBlock(Vector2 position) { float randomBlockType = Random.value; if (randomBlockType < ConfigurationUtils.StandardBlockProbability) { Instantiate(prefabStandardBlock, position, Quaternion.identity); } else if (randomBlockType < ConfigurationUtils.StandardBlockProbability + ConfigurationUtils.BonusBlockProbability) { Instantiate(prefabBonusBlock, position, Quaternion.identity); } else { // pickup block selected GameObject pickupBlock = Instantiate(prefabPickupBlock, position, Quaternion.identity); PickupBlocks pickupBlockScript = pickupBlock.GetComponent <PickupBlocks>(); // set pickup effect float freezerThreshold = ConfigurationUtils.StandardBlockProbability + ConfigurationUtils.BonusBlockProbability + ConfigurationUtils.FreezerBlockProbability; pickupBlockScript.Effect = randomBlockType < freezerThreshold ? PickupEffect.Freezer : PickupEffect.Speedup; } }
/// <summary> /// Adds invoker for the speedup event /// </summary> /// <param name="invoker">invoker</param> public static void AddSpeedupEffectInvoker(PickupBlocks invoker) { _speedupEffectInvokers.Add(invoker); foreach (UnityAction <int, int> listener in _speedupEffectListeners) { invoker.AddSpeedupEffectListener(listener); } }
/// <summary> /// Adds invoker for the freeze event /// </summary> /// <param name="invoker">invoker</param> public static void AddFreezeEffectInvoker(PickupBlocks invoker) { _freezeEffectInvokers.Add(invoker); foreach (UnityAction <int> listener in _freezeEffectListeners) { invoker.AddFreezerEffectListener(listener); } }
/// <summary> /// Adds invoker for the freeze event /// </summary> /// <param name="invoker">invoker</param> public static void AddFreezeEffectInvoker(PickupBlocks invoker) { _freezeEffectInvoker = invoker; if (_freezeEffectListener != null) { _freezeEffectInvoker.AddFreezerEffectListener(_freezeEffectListener); } }