using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace CS_Projekt_Sem2
{
    [Serializable]
    public class Values
    {
        public Values() 
        {

        }
        private int player_HP = 0;
        public int Player_HP { get { return player_HP; } set { player_HP = value; } }//{ get { return ((Vitalität * 5) + 2) / 2; } } //leben


        public int Gegner_HP { get; set; }


        public int Gegner_MAX_HP { get; set;}


        private int gegner_Lvl = 1;
        public int Gegner_Lvl { get { return gegner_Lvl; } set { gegner_Lvl = value; } }

        private int guthaben = 150;
        public int Guthaben { get { return guthaben; } set { guthaben = value; } }


        public int Kupfermünzen { get { return guthaben % 100; } set { guthaben += value; } }//Guthaben %100; //es soll das anzeigen was weniger ist als 100


        public int kosten { get; set; }


        public int Drachnenmünzen { get { return guthaben / 100;  } set { guthaben += (value * 100); } }//es zeigt das an was mehr ist als 100

        private int level = 1;
        public int Level { get { return level; } set { level = value; } }
        public int EP_Counter { get; set; }//übernimmt die zuviel erhaltene Erfahrung


        private int ep_zu_Lvlup = 100;
        public int EP_zu_Lvlup { get { return ep_zu_Lvlup; } set { ep_zu_Lvlup = value; } }//erhöht sich mit Level
        public int EP_gewinn { get; set;}
        public int Stärke { get; set; } //Krieger schaden und Block chance; Kundschafter krit schaden; Magier Krit schaden;
        public int add_Stärke { get; set; }
        public int Geschick { get; set; }//Kundschafter schaden und ausweichen chance; Krieger Krit Chance; Magier Krit Schaden;
        public int add_Geschick { get; set; }
        public int Intelligenz { get; set; }  //Magier schaden und Heilung; Krieger Krit schaden; Kundschafter Krit Chance;
        public int add_Intelligenz { get; set; }


        private int vitalität = 20;
        public int Vitalität { get { return vitalität; } set { vitalität = value; } }//Leben  erhöhen
        public int add_Vitalität { get; set; }


        private int glück = 10;
        public int Glück { get { return glück; } set { glück = value; } } //erhöht die droprate und Krit chance
        public int add_Glück { get; set; }


        private int charisma = 10;
        public int Charisma { get { return charisma; } set { charisma = value; } } //billiger einkaufen max.25% und Bessere Aufträge max.50%, Erst Angriffs Chance

        public int add_Charisma { get; set; }

        public int Gekaufte_stats { get; set; }//dieser counter geht nur hoch

        public int preis_Stats { get; set; }


        private int rüstung = 5;
        public int Rüstung { get { return rüstung; } set { rüstung = value; } }//Schadensreduktion max. 50%


        private string gewählte_klasse = string.Empty;
        public string Gewählte_Klasse { get { return gewählte_klasse; } set { gewählte_klasse = value; } }


        private bool pferd_im_besitz = false;
        public bool Pferd_im_besitz { get { return pferd_im_besitz; } set { pferd_im_besitz = value; } } //flase = kein Pferd; true = Pferd & +10% ang

        public int Runden_timer { get; set; } //Es sollen nur erfolgreiche Kämpfe von Questgeber Zählen (Dungeon ausgeschlossen)

        public int Spieler_ATK{ get; set;} 

        public int Spieler_DEF { get; set; }

        public int Gegner_ATK{ get; set;} 

        public int Gegner_DEF { get; set; }


        public int Schaden_von_ausrüstung => spieler_waffen.dmg;


        private string[] gegner = new string[] {"Abend-Drache", "Drache-Feuer", "Drache_Kopf_1", "Ender-Drache", "Nacht-drache", "Schatzhorter-Drache", "Schwarzer_Drache", "Berglöwe", "Necromant", "Draug-1", "Draug-2","Vampir", "Drei-Riesen", "Fünf-Riesen",
                "Schnee-Riese", "Skelett-mit-waffe", "Einfaches-Skelett", "Skelett-gruppe", "Maskierter-magier", "magier-gegner", "Magier-mit-hörner", "Weiß-magierin", "Ritter", "Held" };//24
        public string[] Gegner { get { return gegner; } set { gegner = value; } }


        private string wahl1 = string.Empty;
        public string Wahl1 { get { return wahl1; } set { wahl1 = value; } }


        private string wahl2 = string.Empty;
        public string Wahl2 { get { return wahl2; } set { wahl2 = value; } }


        private string feind = string.Empty;
        public string Feind { get { return feind; } set { feind = value; } }

        public int Boss_lvl { get; set; }

        public int Boss_counter { get; set; }

        public int Boss_HP { get; set; }

        public int Boss_ATK { get; set; }

        public string waffenslot => spieler_waffen.name;
        public string Rüstungslot => spieler_rüstung.name;


        private bool Waffe_in_besitz = false;
        public bool waffe_in_besitz { get { return Waffe_in_besitz; } set { Waffe_in_besitz = value; } }


        private bool Rüstung_in_bestiz = false;
        public bool rüstung_in_besitz { get { return Rüstung_in_bestiz; } set { Rüstung_in_bestiz = value; } }


        private bool Shop = false;
        public bool shop { get { return Shop; } set { Shop = value; } }//ob eine rüstung angelegt ist oder eine waffe angelegt ist

        public int equipmentlvl { get; set; }


        private (string name, int lvl, int vit, int cha, int luc, int rüs) Shop_rüstung = new();
        public (string name, int lvl, int vit, int cha, int luc, int rüs) shop_rüstung { get { return Shop_rüstung; } set { Shop_rüstung = value; } }


        private (string name, int lvl, int vit, int cha, int luc, int rüs) Spieler_rüstung = new();
        public (string name, int lvl, int vit, int cha, int luc, int rüs) spieler_rüstung { get { return Spieler_rüstung; } set { Spieler_rüstung = value; } }
        //bei rüstung sind string für name der rüstung int 1 das level der rüstung und die anderen 4 sind die Stats der Werte Vitalität,Charisma,Glück und Rüstung

        private (string name, int lvl, int dmg) Shop_waffen = new();
        public (string name, int lvl, int dmg) shop_waffen { get { return Shop_waffen; } set { Shop_waffen = value; } }


        private (string name, int lvl, int dmg) Spieler_waffen = new();
        public (string name, int lvl, int dmg) spieler_waffen { get { return Spieler_waffen; } set { Spieler_waffen = value; } }
        //bei der Waffen string name der waffe int 1 ist level der Wafen und int 2 ist der schaden
        private int Waffenmeisterung = 1;
        public int waffenmeisterung { get { return Waffenmeisterung; } set { Waffenmeisterung = value; } }


        private int Rüstungsmeisterung = 1;
        public int rüstungsmeisterung { get { return Rüstungsmeisterung; } set { Rüstungsmeisterung = value; } }


        private int Anzahl_meisterschaften = 1;
        public int anzahl_meisterschaften { get { return Anzahl_meisterschaften; } set { Anzahl_meisterschaften = value; } }

    }
}
