private void EatWord(TunnelWord word) { bool eatable = word.Eat(); word.transform.SetParent(transform); onWordEatEnd?.Invoke(word); }
private void OnPackmanEatEnd(TunnelWord word) { if (word.eatable) { _words.Remove(word); AudioManager.Instance.PlayOneShot(SoundType.Voice, _eatableSound); _successSpree++; if (_successSpree >= 3) { SpeedUp(); _successSpree = 0; } AddStar(); _score++; if (!_wordsEaten.Contains(word.word)) { _wordsEaten.Add(word.word); } } else { AudioManager.Instance.PlayOneShot(SoundType.Voice, _notEatableSound); _nErrors++; _successSpree = 0; SpeedDown(); DropStar(); } }
private void SpawnWord() { TunnelWord word = Instantiate(_wordPrefab, _container); word.transform.position = GetFreePositionInColumn(_centerTileX + _tunnelSize.x); bool eatable = Random.value < _eatableChance; if (_eatableWordsSpawned >= _maxEatableInARaw) { eatable = false; } else if (_notEatableWordsSpawned >= _maxNotEatableInARaw) { eatable = true; } WordData_Thin wd; if (eatable) { do { wd = _wordsEatable[Random.Range(0, _wordsEatable.Count)]; } while (wd.GetCleanWord() == _prevEatableWord); _prevEatableWord = wd.GetCleanWord(); _eatableWordsSpawned++; _notEatableWordsSpawned = 0; } else { do { wd = _wordsNotEatable[Random.Range(0, _wordsNotEatable.Count)]; } while (wd.GetCleanWord() == _prevWord); _prevWord = wd.GetCleanWord(); _eatableWordsSpawned = 0; _notEatableWordsSpawned++; } WordData_Fat wdf = wd.GetFatData(); word.Init(wd.word, wdf.GetRandomSprite(), wdf.sound, eatable, CommonAssets.Instance.ceraRoundMediumFont, _mgParameters.letters.capitalized, _colorizedSklads); _words.Add(word); word.onWordAte += OnPackmanEatEnd; RemoveOldWords(); }
private void OnTriggerEnter2D(Collider2D other) { if (!_active) { return; } TunnelWord word = other.GetComponent <TunnelWord>(); if (word != null) { EatWord(word); } else { Crash(); } }