private void OnWinnerFound(BlobColor color) { _winPopup.Show(color, Mathf.CeilToInt(_time.ElapsedTime), () => { _winPopup.gameObject.SetActive(false); _game.StartNewGame(); }); _winPopup.gameObject.SetActive(true); }
private string PickColorText(BlobColor color) { switch (color) { case BlobColor.Blue: return(_blueColorText); case BlobColor.Red: return(_redColorText); default: return(color.ToString()); } }
void ITickable.Tick() { var colliders = _blobsQuery.ToComponentDataArray <CircleColliderComponent>(Allocator.TempJob); int redCount = 0; int blueCount = 0; for (var i = 0; i < colliders.Length; i++) { var collider = colliders[i]; if (collider.Group == CollisionLayer.Blue) { blueCount++; } else if (collider.Group == CollisionLayer.Red) { redCount++; } } var currentWinningColor = redCount > blueCount ? BlobColor.Red : BlobColor.Blue; if (currentWinningColor != WinningColor) { _winningColor = currentWinningColor; WinningColorChangedEvent?.Invoke(WinningColor); } _winningColor = currentWinningColor; if (redCount == 0 || blueCount == 0) { if (redCount == blueCount) { WinnerFoundEvent?.Invoke(BlobColor.None); } else if (!_winnerFound) { _winnerFound = true; WinnerFoundEvent?.Invoke(redCount > blueCount ? BlobColor.Red : BlobColor.Blue); } } else { _winnerFound = false; } colliders.Dispose(); }
private void OnWinningColorChanged(BlobColor color) { _label.SetValue(PickColorText(color)); }
public void Show(BlobColor winnerColor, int simulationDuration, Action okButtonCallback) { _okButtonCallback = okButtonCallback; _winnerColorLabel.SetValue(winnerColor.ToString()); _simulationTimeLabel.SetValue(simulationDuration.ToString()); }