using System.Collections;
using System.Collections.Generic;

namespace NBuilding
{
    /// <summary>
    /// Interface <c>IBuilding</c> defines the functions for the buildings.
    /// <param><c>iId</c>  is the id of a player.</param>
    /// <returns>Returns <c>all values</c> of all buildings at star system of player.</returns>
    /// More efficient because it iterates only once through list instead of 6 times.
    /// </summary>
    public interface IBuilding
    {
        //----------------------------------------------------------------------------
        // Getters

        /// <summary>
        /// Function <c>GetRunningCost</c> returns the running cost if the building is running.
        /// </summary>
        public int GetRunningCost();

        /// <summary>
        /// Function <c>GetScienceCapacity</c> returns the amount of science the building produces if it is running.
        /// </summary>
        public int GetScienceCapacity();

        /// <summary>
        /// Function <c>GetFoodCapacity</c> returns the amount of food the building produces if it is running.
        /// </summary>
        public int GetFoodCapacity();

        /// <summary>
        /// Function <c>GetIndustrialCapacity</c> returns the amount of industrial the building produces if it is running.
        /// </summary>
        public int GetIndustrialCapacity();

        /// <summary>
        /// Function <c>GetMoneyCapacity</c> returns the amount of money the building produces if it is running.
        /// </summary>
        public int GetMoneyCapacity();

        /// <summary>
        /// Function <c>GetMilitaryPower</c> returns the amount of power the building produces if it is running.
        /// </summary>
        public int GetMilitaryPower();

        /// <summary>
        /// Function <c>IsRunning</c> returns true if the building is running, false if the building is not running.
        /// </summary>
        public bool IsRunning();

        /// <summary>
        /// Function <c>GetId</c> returns id of building.
        /// </summary>
        public ABuilding.BuildingID GetId();

        //----------------------------------------------------------------------------
        // Setters

        public void SetRunningCost(int newRunningCost);
        public void SetScienceCapacity(int newScienceCapacity);
        public void SetFoodCapacity(int newFoodCapacity);
        public void SetIndustrialCapacity(int newIndustrialCapacity);
        public void SetMoneyCapacity(int newMoneyCapacity);
        public void SetMilitaryPower(int newMilitaryPower);

        public void SetRunning(bool newRunning);

        public void SetId(ABuilding.BuildingID newId);

        //----------------------------------------------------------------------------
        //


    }
}