#pragma once
#include "art.h"
#include "pixel.h"
#include "massnahme.h"
#include "gruenland.h"
#include <list>

class oekologie
{
public:
    oekologie( void);
    ~oekologie( void);
    bool ref;
	int niedrig;
	int mittel;
	int start;
    double whoeohe( int gruenlandzahl, int mv);
    double wuchshoehe(
            int gruenlandzahl,
            int massnahmemv,
            int abstandm2,
			int abstandm3,
            int mv,
            bool hoch);
    double whoehenanspruch(
            double hoehe,
            double anspruchhoch,
            double anspruchmittel,
            double anspruchkurz);
    double whoehenhabitateignung(
            int gesreproduktionsphase,
            double anspruchhoch,
            double anspruchmittel,
            double anspruchkurz,
            int mv,
            int gruenlandzahl,
            int massnahmemv,
            int abstandm2,
			int abstandm3,
            double besatzdichte,
            double anteilm1,
            double anteilm2,
            double anteilm3,
            bool hoch);
    double mortalitaet(
            int mv,
            int massnahmemv,
            int abstandm2,
			int abstandm3,
            int repkritisch,
            int repgesammt,
            double faktor,
            double anzahl);
    double mortalitaet(
            int mv,
            int massnahmemv,
            int abstandm2,
			int abstandm3,
            int repkritisch,
            int repgesammt);
    double eiablagew(
            int mv,
            int mvletzteersatzbrut,
            int massnahmemv,
            int abstandm2,
			int abstandm3,
            double eiablagewahrmv,
            double eiablagewahrmassnahmemv,
            double eiablagewahrmassnahmemv2,
			double eiablagewahrmassnahmemv3,
            double ersatzbrutwahr,
            int verfahren_nr,
            bool tritt);
    double habitatqualitaet(
            art* art_j,
            pixel pixel_i,
            massnahme massnahme_t,
            vector< gruenland*> gruenlandliste,
            double& mortalitaetfaktor);
    double massnahmeunabhaengigequalitaet(
            int wald,
            int wasser,
            int siedlung,
            double anspruchwald,
            double anspruchsiedlung,
            double anspruchwasser,
            double feucht,
            double frisch,
            double trocken,
            double anspruchfeucht,
            double anspruchfrisch,
            double anspruchtocken,
            double praedation);
    vector< gruenland*> gruenlandabhaengigequalitaet(
            int massnahmeID,
            int pixel_hoehe,
            vector< gruenland*> gruenlandliste,
            bool weide);
};
