private void Awake() { Instance = this; _spawnPoints = transform.Cast <Transform>().ToArray(); PoolFood(); _foodSpawner = Timing.RunCoroutine(HandleFoodSpawning()); }
public void HandleCat() { _round++; IsCatActive = true; WaterHandler.Instance.StopAllWaterInteractions(); _handleCatCoroutine = Timing.RunCoroutine(HandleCatCoroutine()); }
private void Spawn() { float chances = 0; for (int i = 0; i < _enemiesPool.Length; ++i) { chances += _enemiesPool[i].Chances; } float random = Random.Range(0, chances); for (int i = 0; i < _enemiesPool.Length; ++i) { chances -= _enemiesPool[i].Chances; if (chances <= random) { Enemy enemy = _enemiesPool[i].Activate(new Vector3( Random.Range(_minSpawnPositionX, _maxSpawnPositionX), 2f, _spawnPositionZ)); _enemyList.Add(enemy); break; } } _spawnCoroutine = Timing.CallDelayed( Random.Range(_minDelay, _maxDelay), Spawn); }
public static void CleanlyKillCoroutine(ref CoroutineHandle?coroutine) { if (coroutine.HasValue) { Timing.KillCoroutines(coroutine.Value); coroutine = null; } }
public static void CleanlyKillCoroutine(ref CoroutineHandle?handler) { if (handler.HasValue) { Timing.KillCoroutines(handler.Value); handler = null; } }
private void DecrementWaterLevel(float value, float overTime) { if (_faucetOn) { return; } TimingHelpers.CleanlyKillCoroutine(ref _waterLevelCoroutine); _waterLevelCoroutine = Timing.RunCoroutine(HandleWaterLevelChange(_currentWaterLevel - value, overTime)); }
public void StartPlaying() { if (_playing) { return; } _playing = true; TimingHelpers.CleanlyKillCoroutine(ref _audioHandlingCoroutine); _audioHandlingCoroutine = Timing.RunCoroutine(Play()); }
private void Start() { FoodLevel = 100; OilLevel = 100; EnablePieces(); _handleActionsCoroutine = Timing.RunCoroutine(HandleActions()); _oilHandler = Timing.RunCoroutine(HandleOilLevel()); _foodHandler = Timing.RunCoroutine(HandleFoodLevel()); _partHandler = Timing.RunCoroutine(HandlePartLevel()); }
private void Awake() { Instance = this; _spawnPoints = WaterBasedSpawnPointsParent.transform.Cast <Transform>().ToArray(); CanHandleWater = true; WaterEdgeOn = false; WaterEdge.SetActive(false); _handleWaterCoroutine = Timing.RunCoroutine(HandleWater()); AudioManager.Instance.DrainEffect.StartPlaying(); _waterCollider = GetComponent <EdgeCollider2D>(); FillingWaterAnim.SetActive(false); DrainingWaterAnim.SetActive(true); WaterImage.alphaHitTestMinimumThreshold = 0.15f; }
public void ResumeWaterInteractions() { if (!CurrentFish.IsAlive) { return; } _handleWaterCoroutine = Timing.RunCoroutine(HandleWater()); CanHandleWater = true; foreach (var item in WaterTapAnimator) { item.enabled = true; } }
private void OnCollisionStay2D(Collision2D collision) { if (!IsAlive) { return; } TimingHelpers.CleanlyKillCoroutine(ref _movingCoroutine); _movingCoroutine = Timing.RunCoroutine(HandleGoTo(transform.localPosition), Segment.FixedUpdate); if (WaterHandler.Instance.WaterEdgeOn) { KillFishie(); } }
private IEnumerator <float> HandleGoTo(Vector3 position) { while (Vector3.Distance(position, transform.localPosition) > DISTANCE_CUTOFF) { var thisSpeed = Speed; var vectorToTarget = position - transform.localPosition; var angle = Mathf.Atan2(vectorToTarget.y, vectorToTarget.x) * Mathf.Rad2Deg; //DOESNT REALLY WORK YET //if (WaterHandler.Instance.WaterEdgeOn) //{ // var closestPos = Vector3.zero; // var edgeDistance = 0f; // WaterHandler.Instance.GetClosestDataToEdge(transform.localPosition, out closestPos, out edgeDistance); // var toPosition = (closestPos - transform.localPosition); // var angleToPosition = Mathf.Atan2(toPosition.y, toPosition.x) * Mathf.Rad2Deg; // if (angleToPosition < 0f) // { // angleToPosition += 360f; // } // Debug.Log("AP : " + angleToPosition + " ,D: " + edgeDistance); // if (angleToPosition < 180f) // { // thisSpeed = Mathf.Clamp(thisSpeed - ((100 - edgeDistance) * 0.25f), 1, Speed); // } // else // { // thisSpeed = Mathf.Clamp(thisSpeed + ((100 - edgeDistance) * 0.25f), 1, Speed * 2); // } // //Mod thisSpeed //} transform.localPosition = Vector3.MoveTowards(transform.localPosition, position, thisSpeed * Time.deltaTime); var q = Quaternion.AngleAxis(angle, Vector3.forward); transform.rotation = Quaternion.Slerp(transform.rotation, q, RotationSpeed * Time.deltaTime); yield return(Timing.WaitForOneFrame); } _movingCoroutine = null; }
public void TurnOnFaucet() { if (!CanHandleWater || _faucetOn) { return; } _faucetOn = true; TimingHelpers.CleanlyKillCoroutine(ref _waterLevelCoroutine); _handleFaucetCoroutine = Timing.RunCoroutine(HandleFaucet()); AudioManager.Instance.FaucetEffect.StartPlaying(); AudioManager.Instance.DrainEffect.EndPlaying(); FillingWaterAnim.SetActive(true); DrainingWaterAnim.SetActive(false); foreach (var item in WaterTapAnimator) { item.enabled = false; } }
public void Enable(bool ingameElement, bool anim = true) { if (ingameElement) { if (anim) { TimingHandlers.CleanlyKillCoroutine(ref _showingCoroutine); _showingCoroutine = Timing.RunCoroutine(Show(true)); } else { IngameElement.gameObject.SetActive(true); } } else { UIElement.gameObject.SetActive(true); } }
public void Damage() { if (_damageTweener != null) { _damageTweener.Kill(); } if (_damageCoroutine.HasValue) { Timing.KillCoroutines(_damageCoroutine.Value); } _damageTweener = _damageImage.DOFade(1f, 0.1f).SetEase(Ease.Flash).OnComplete(() => { _damageTweener = null; _damageCoroutine = Timing.CallDelayed(1f, () => { _damageCoroutine = null; _damageTweener = _damageImage.DOFade(0, 2f).SetEase(Ease.InOutBounce).OnComplete(() => { _damageTweener = null; }); }); }); }
public void MoveTo(Vector3 position) { TimingHelpers.CleanlyKillCoroutine(ref _movingCoroutine); _movingCoroutine = Timing.RunCoroutine(HandleGoTo(position), Segment.FixedUpdate); }
private IEnumerator <float> HandleCatCoroutine() { CoroutineHandle?meowing = null; if (_round == 4) { meowing = Timing.RunCoroutine(SpawnAllMeows()); } AudioManager.Instance.CatTheme.StartPlaying(); foreach (var catWave in CatWaves) { catWave.SetActive(true); } yield return(Timing.WaitForSeconds(AudioManager.Instance.CatTheme.StartClip.length)); foreach (var catWave in CatWaves) { catWave.SetActive(false); } Cat.sprite = Cats[_round - 1]; Cat.gameObject.SetActive(true); yield return(Timing.WaitForSeconds(DelayBeforeCatSpawnsAttacks)); _attacks.Add(Instantiate(CatAttackIndicatorPrefab, transform).GetComponent <Animator>()); foreach (var attack in _attacks) { attack.transform.position = WaterHandler.Instance.GetPointInsideWater(); attack.gameObject.SetActive(true); } yield return(Timing.WaitForSeconds(DelayBeforeCatAttacksKill)); foreach (var attack in _attacks) { attack.SetTrigger("Attack"); } AudioManager.Instance.PlayCatAttack(); AudioManager.Instance.CatTheme.EndPlaying(); CatAnimator.SetTrigger("Despawn"); yield return(Timing.WaitForSeconds(DelayBeforeCatCleanup)); foreach (var attack in _attacks) { attack.gameObject.SetActive(false); } Cat.gameObject.SetActive(false); WaterHandler.Instance.ResumeWaterInteractions(); TimingHelpers.CleanlyKillCoroutine(ref meowing); if (_round == 4) { WaterHandler.Instance.CurrentFish.Victory(); } if (WaterHandler.Instance.CurrentFish.IsAlive) { IsCatActive = false; } }
public void ReplenishOil() { _replenishOilCoroutine = Timing.RunCoroutine(ReplenishOilCoroutine()); }
public void ReplenishFood() { _replenishFoodCoroutine = Timing.RunCoroutine(ReplenishFoodCoroutine()); }