package de.siphalor.was.content.quest;

import de.siphalor.was.content.product.Product;
import org.jetbrains.annotations.NotNull;

/**
 * Represents a quest.
 */
public class Quest {
	/**
	 * The type of this quest.
	 */
	@NotNull
	private final Type type;
	/**
	 * The quest reward/punishment
	 */
	private final int reward;
	/**
	 * The product to store/deliver
	 */
	@NotNull
	private final Product product;

	/**
	 * Constructs a new quest.
	 * @param type The type
	 * @param reward The reward/punishment
	 * @param product The product to store/deliver
	 */
	public Quest(@NotNull Type type, int reward, @NotNull Product product) {
		this.product = product;
		this.reward = reward;
		this.type = type;
	}

	/**
	 * Gets the product to store/deliver.
	 * @return The product
	 */
	@NotNull
	public Product getProduct() {
		return product;
	}

	/**
	 * Gets the type of this quest.
	 * @return The type
	 */
	@NotNull
	public Type getType() {
		return type;
	}

	/**
	 * Gets the reward/punishment for this quest.
	 * @return The reward/punishment
	 */
	public int getReward() {
		return reward;
	}

	/**
	 * Represents the type of a quest. <br>
	 * <code>IN</code> for incoming (store) <br>
	 * <code>OUT</code> for outgoing (deliver)
	 */
	public enum Type {
		IN, OUT
	}
}
