public void onGameOver() { // Remove all food on screen GetTree().CallGroup("Food", "Destroy"); GetTree().CallGroup("SpecialFood", "Destroy"); // Stop special food spawn _specialFoodSpawnTimer.Stop(); // Show game over screen _gameOverScreen.Visible = true; // Write high score _gui.updateHighScore(); // Erase whole snake body foreach (Node2D snakeBodyPart in _snakeBodyList) { snakeBodyPart.QueueFree(); } _snakeBodyList = new List <Node2D>(); }
private void Draw() { if (!isReady || Series is null) { return; } // Destroy the current points points.ForEach((point) => point.QueueFree()); points.Clear(); // Graph has data int seriesLength = Series.Length; if (seriesLength > 0) { // Use the Axis constructor that takes an array so the extents will be calculated, including when the // range is 0 (min = max) axisX = new Axis(0, xAxisLen, new float[] { Series[0].x, Series[Series.Length - 1].x }); axisY = new Axis(0, yAxisLen, new float[] { yRange.Min, yRange.Max }, true); } // Graph has no data so use default extents else { axisX = new Axis(0, xAxisLen, -1, 1); axisY = new Axis(0, yAxisLen, -1, 1, true); } // Both axes would be scrolled out of view based on their extents, so adjust the x extents to show the y-axis if ((axisY.LowerExtent > 0 || axisY.UpperExtent < 0) && (axisX.LowerExtent > 0 || axisX.UpperExtent < 0)) { if (axisX.LowerExtent > 0) { axisX.LowerExtent = 0; } else { axisX.UpperExtent = 0; } } // The x-axis would be below the lower extent or above the upper extent of the y-axis, so hide it if (axisY.LowerExtent > 0 || axisY.UpperExtent < 0) { xAxis.Visible = false; } // Translate the x-axis to 0 on the y-axis else { xAxis.Position = new Vector2(xAxis.Position.x, axisY.Map(0)); } // The y-axis would be below the lower extent or above the upper extent of the x-axis, so hide it if (axisX.LowerExtent > 0 || axisX.UpperExtent < 0) { yAxis.Visible = false; } // Translate the y-axis to 0 on the x-axis else { yAxis.Position = new Vector2(axisX.Map(0), yAxis.Position.y); } // First make sure all the min/max labels are visible xMinLabel.Visible = true; xMaxLabel.Visible = true; yMinLabel.Visible = true; yMaxLabel.Visible = true; // Now hide a min or max label if the axes intersect on screen so two labels don't butt up against each other if (axisX.LowerExtent == 0) { xMinLabel.Visible = false; } else if (axisY.LowerExtent == 0) { yMinLabel.Visible = false; } else if (axisX.UpperExtent == 0 && axisY.UpperExtent == 0) { xMaxLabel.Visible = false; } xMinLabel.Text = String.Format("{0:F2}", axisX.LowerExtent); xMaxLabel.Text = String.Format("{0:F2}", axisX.UpperExtent); yMinLabel.Text = String.Format("{0:F2}", axisY.LowerExtent); yMaxLabel.Text = String.Format("{0:F2}", axisY.UpperExtent); int numPoints = Series.Length; for (int i = 0; i < numPoints; i++) { points.Add(CreatePoint(axisX.Map(Series[i].x), axisY.Map(Series[i].y))); } }