public void OnTramsitButtonClicked() { if (_selectedPointIndex >= 0 && NewsCounter > 0) { Station station = _gameField.Points[_selectedPointIndex]; station.Increase(1, GameBalanceConst.Intensity, 0.0f); SpreadNewsPerson person = SpreadNewsPersons[Random.Range(0, SpreadNewsPersons.Length)]; person.ShowSpreadingNews(station.GetPosition()); NewsCounter--; } }
public void Update(float dt, TransmitionEmitterPool emittersPool, SpreadNewsPerson[] spammedPersons) { Decrease(GameBalanceConst.GlobalCensorAbsorption * dt); List <Transmition> transmitions_to_delete = new List <Transmition>(); foreach (var transmition in _transmitions) { if (transmition.increase_timer >= 0.0f) { transmition.increase_timer -= dt; if (transmition.increase_timer <= 0.0f) { Radiation += transmition.increase_value; if (Radiation > GameBalanceConst.MaxIntensityToDropDown) { Radiation = 0; SpreadNewsPerson person = GameObject.Instantiate(spammedPersons[Random.Range(0, spammedPersons.Length)]); person.ShowSpreadingNews(GetPosition()); GameObject.Destroy(person, 2.0f); } else { if (transmition.increase_value > 0 && emittersPool.transform.childCount < GameBalanceConst.MaximumTransitions) { int curWidth = GameBalanceConst.SpreadSize; foreach (var nearPoint in Neighbours) { float timeToflight = GameBalanceConst.Asynchronous ? Random.Range(0.8f * GameBalanceConst.TransmissionsTime, 1.75f * GameBalanceConst.TransmissionsTime) : GameBalanceConst.TransmissionsTime; GameObject emitter = emittersPool.InstantiateEmitter(); emitter.transform.position = GetPosition(); LeanTween.move(emitter, nearPoint.GetPosition(), timeToflight); GameObject.Destroy(emitter, timeToflight + 0.01f); nearPoint.Increase(1, transmition.increase_value - GameBalanceConst.RadiationAbsorption, timeToflight); curWidth -= 1; if (curWidth == 0) { break; } } } } transmitions_to_delete.Add(transmition); } } } foreach (var deleteTransmition in transmitions_to_delete) { _transmitions.Remove(deleteTransmition); } }