package com.asteria.game.shop;
import com.asteria.game.character.player.Player;
/**
* The parent class of all currencies that provides basic functionality for any
* general currency. This can be used to create tangible, and even intangible
* currencies.
*
* @author lare96 <http://github.com/lare96>
*/
public interface GeneralCurrency {
/**
* The method executed when the currency is taken from {@code player}.
*
* @param player
* the player the currency is taken from.
* @param amount
* the amount of currency that is taken.
*/
public void takeCurrency(Player player, int amount);
/**
* The method executed when the currency is given to {@code player}.
*
* @param player
* the player the currency is given to.
* @param amount
* the amount of currency that is given.
*/
public void recieveCurrency(Player player, int amount);
/**
* The method that retrieves the amount of currency {@code player} currently
* has.
*
* @param player
* the player who's currency amount will be determined.
* @return the amount of the currency the player has.
*/
public int currencyAmount(Player player);
/**
* Determines if the currency can be received when {@code player}'s
* inventory is full.
*
* @param player
* the player to determine this for.
* @return {@code true} if the currency can be recieved, {@code false}
* otherwise.
*/
public boolean canRecieveCurrency(Player player);
}