// SnakeFood.cpp
#include <iostream>
#include <SFML\Graphics.hpp>
#include "SnakeFood.h"

const int kGridSize = 25;

SnakeFood::SnakeFood()
{
    snakeFoodObject.setSize(sf::Vector2f(kGridSize,kGridSize));
    snakeFoodObject.setFillColor(sf::Color::Red);
}

SnakeFood::SnakeFood(sf::Vector2f snakeFoodSize)
{
    snakeFoodObject.setSize(snakeFoodSize);
    snakeFoodObject.setFillColor(sf::Color::Red);
}

// Returns a new food object for the snakeFood
void SnakeFood::GenerateNewFood(sf::Vector2f windowSize)
{
    sf::Vector2f newPosition;
    newPosition.x = GenerateRandomNumber(windowSize.x);
    newPosition.y = GenerateRandomNumber(windowSize.y);
    snakeFoodObject.setPosition(newPosition);
    // if (GlobalCollision(snakeFoodObject.getPosition(), newPosition))
    // {
    //     std::cout << "Location error: " << newPosition.x << " " << newPosition.y << '\n';
    //     throw std::runtime_error("Error! New generation on same location");
    // }
}

sf::RectangleShape SnakeFood::GetFoodObject(void)
{
    return snakeFoodObject;
}

// Returns a newly generated number
int SnakeFood::GenerateRandomNumber(int generationLimit)
{
    int generatedNumber;
    std::uniform_int_distribution<> distribution(0, generationLimit);
    generatedNumber = distribution(generator);
    generatedNumber -= (generatedNumber % kGridSize);
    return generatedNumber;
}