示例#1
0
    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>();
    }
示例#2
0
    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)));
        }
    }