using System.Globalization;
using System.IO;
using System.Numerics;
using System.Resources;
using System.Text;
using System.Text.Json;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml.Linq;

namespace CS_Projekt_Sem2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public Values Values {get;set; }
        public MainWindow() //Hauptbildschirm
        {
            InitializeComponent();
            Dorf_Button_weg();
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Main);
            Start.Visibility = Visibility.Visible;

            if (Load() == null)
            {
                Spielladen.Visibility = Visibility.Collapsed; Values = new(); 
            }
            else
                Spielladen.Visibility = Visibility.Visible;

        }
        
        public void Krieger_Char() //Klassen Spezifische Eigenschaft wird nur hier erklärt andere bekommen nur zahlen Tausch
        {
            Values.Stärke = 12;
            Values.Intelligenz = 8;
            Values.Geschick = 8;            
        }
        public void Kundschafter_Char()//Klassen Spezifische Eigenschaft
        {
            Values.Stärke = 8;
            Values.Intelligenz = 8;
            Values.Geschick = 12;
        }
        public void Magier_Char()//Klassen Spezifische Eigenschaft
        {

            Values.Stärke = 8;
            Values.Intelligenz = 12;
            Values.Geschick = 8;
        }
        //Hilfsmethode: byte[] -> BitmapImage
        public static BitmapImage ConvertBytesToBitmap(byte[] bytes)
        {
            BitmapImage image = new();
            using MemoryStream ms = new MemoryStream(bytes);
            image.BeginInit();
            image.StreamSource = ms;
            image.CacheOption = BitmapCacheOption.OnLoad;
            image.EndInit();
            image.Freeze();
            return image;

        }
        private void Start_Click(object sender, RoutedEventArgs e) //zum Charakter auswahl Fenster mit Darstellung und auswahl der Charaktere (erledigt)
        {
            //ändert das bild zur Charakter auswahl
            //BitmapImage Charakter_Auswahl = new BitmapImage(new Uri("C:\\Users\\stefan.wagner\\source\\repos\\CS_Projekt_Sem2\\CS_Projekt_Sem2\\Map\\Elder-Fight-Char-Auswahl.jpg"));
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Elder_Fight_Char_Auswahl);
            Start.Visibility = Visibility.Collapsed; Spielladen.Visibility = Visibility.Collapsed;
            Back_to_Main.Visibility = Visibility.Visible;
            Krieger_Print.Visibility = Visibility.Visible; Krieger_Print.Source = ConvertBytesToBitmap(Properties.Resources.Krieger_Profil);
            Hunter_Print.Visibility = Visibility.Visible; Hunter_Print.Source = ConvertBytesToBitmap(Properties.Resources.Hunter_Profil);
            Magier_Print.Visibility = Visibility.Visible; Magier_Print.Source = ConvertBytesToBitmap(Properties.Resources.Magier_Profil);
            Nametag_Hunter.Visibility = Visibility.Visible; Nametag_Krieger.Visibility = Visibility.Visible; Nametag_Magier.Visibility = Visibility.Visible;
            Auswahl_Krieger.Visibility = Visibility.Visible; Auswahl_Hunter.Visibility = Visibility.Visible; Auswahl_Magier.Visibility = Visibility.Visible;
        }
        private void Spielstandladen(object sender, RoutedEventArgs e)
        {
            //Bei Spielstand laden Button klick:
            Values = Load() ?? throw new Exception("Es ist kein Spielstand vorhanden");
            
            Spielladen.Visibility = Visibility.Collapsed; Dorf_blick(); Start.Visibility = Visibility.Collapsed; Back_to_Main.Visibility = Visibility.Collapsed;
            if (Values.Gewählte_Klasse == "Krieger") { Char_Profil.Source = ConvertBytesToBitmap(Properties.Resources.Krieger_Profil); }
            if (Values.Gewählte_Klasse == "Magier") { Char_Profil.Source = ConvertBytesToBitmap(Properties.Resources.Magier_Profil); }
            if (Values.Gewählte_Klasse == "Hunter") { Char_Profil.Source = ConvertBytesToBitmap(Properties.Resources.Hunter_Profil); }            
        }
        private void Back_to_Main_Click(object sender, RoutedEventArgs e) //Zurück zum hauptbildschirm von Charakter auswahl (erledigt)
        {
            //BitmapImage Main_print = new BitmapImage (new Uri("C:\\Users\\stefan.wagner\\source\\repos\\CS_Projekt_Sem2\\CS_Projekt_Sem2\\Map\\Main.jpg"));
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Main);
            Start.Visibility = Visibility.Visible; Spielladen.Visibility = Visibility.Visible;
            Back_to_Main.Visibility = Visibility.Collapsed;
            Krieger_Print.Visibility = Visibility.Collapsed; Hunter_Print.Visibility = Visibility.Collapsed; Magier_Print.Visibility = Visibility.Collapsed;
            Nametag_Krieger.Visibility = Visibility.Collapsed; Nametag_Hunter.Visibility = Visibility.Collapsed; Nametag_Magier.Visibility = Visibility.Collapsed;
            Auswahl_Krieger.Visibility = Visibility.Collapsed; Auswahl_Hunter.Visibility = Visibility.Collapsed; Auswahl_Magier.Visibility = Visibility.Collapsed;
        }
        private void Auswahl_Magier_Click(object sender, RoutedEventArgs e)
        {
            Values = new(); if (Values.Level == 1) { Values.EP_zu_Lvlup = 100; } else { Values.EP_zu_Lvlup = Values.EP_zu_Lvlup / 10 * 13; }
            Back_to_Main.Visibility = Visibility.Collapsed;
            Krieger_Print.Visibility = Visibility.Collapsed; Hunter_Print.Visibility = Visibility.Collapsed; Magier_Print.Visibility = Visibility.Collapsed;
            Auswahl_Krieger.Visibility = Visibility.Collapsed; Auswahl_Hunter.Visibility = Visibility.Collapsed; Auswahl_Magier.Visibility = Visibility.Collapsed;
            Nametag_Krieger.Visibility = Visibility.Collapsed; Nametag_Hunter.Visibility = Visibility.Collapsed; Nametag_Magier.Visibility = Visibility.Collapsed;
            Magier_Char(); Dorf_blick(); Values.Gewählte_Klasse = "Magier";
            Values.Wahl1 = Values.Gegner[Zufall()]; Values.Wahl2 = Values.Gegner[Zufall()]; Shopauffüllung();
            Char_Profil.Source = ConvertBytesToBitmap(Properties.Resources.Magier_Profil);
            Save();
        }
        private void Auswahl_Hunter_Click(object sender, RoutedEventArgs e)
        {
            Values = new(); if(Values.Level == 1) { Values.EP_zu_Lvlup = 100; } else { Values.EP_zu_Lvlup = Values.EP_zu_Lvlup / 10 * 13; }
            Back_to_Main.Visibility = Visibility.Collapsed;
            Krieger_Print.Visibility = Visibility.Collapsed; Hunter_Print.Visibility = Visibility.Collapsed; Magier_Print.Visibility = Visibility.Collapsed;
            Auswahl_Krieger.Visibility = Visibility.Collapsed; Auswahl_Hunter.Visibility = Visibility.Collapsed; Auswahl_Magier.Visibility = Visibility.Collapsed;
            Nametag_Krieger.Visibility = Visibility.Collapsed; Nametag_Hunter.Visibility = Visibility.Collapsed; Nametag_Magier.Visibility = Visibility.Collapsed;
            Kundschafter_Char(); Dorf_blick(); Values.Gewählte_Klasse = "Hunter";
            Values.Wahl1 = Values.Gegner[Zufall()]; Values.Wahl2 = Values.Gegner[Zufall()]; Shopauffüllung();
            Char_Profil.Source = ConvertBytesToBitmap(Properties.Resources.Hunter_Profil);
            Save();
        }
        private void Auswahl_Krieger_Click(object sender, RoutedEventArgs e)
        {
            Values = new(); if (Values.Level == 1) { Values.EP_zu_Lvlup = 100; } else { Values.EP_zu_Lvlup = Values.EP_zu_Lvlup / 10 * 13; }
            Back_to_Main.Visibility = Visibility.Collapsed;
            Krieger_Print.Visibility = Visibility.Collapsed; Hunter_Print.Visibility = Visibility.Collapsed; Magier_Print.Visibility = Visibility.Collapsed;
            Auswahl_Krieger.Visibility = Visibility.Collapsed; Auswahl_Hunter.Visibility = Visibility.Collapsed; Auswahl_Magier.Visibility = Visibility.Collapsed;
            Nametag_Krieger.Visibility = Visibility.Collapsed; Nametag_Hunter.Visibility = Visibility.Collapsed; Nametag_Magier.Visibility = Visibility.Collapsed;
            Krieger_Char(); Dorf_blick(); Values.Gewählte_Klasse = "Krieger";
            Values.Wahl1 = Values.Gegner[Zufall()]; Values.Wahl2 = Values.Gegner[Zufall()]; Shopauffüllung();
            Char_Profil.Source = ConvertBytesToBitmap(Properties.Resources.Krieger_Profil);
            Save();
        }
        public void Save()
        {
            string s = JsonSerializer.Serialize(this.Values);
            File.WriteAllText("Dateiname.sv", s);
        }
        public Values? Load() 
        {
            if (!File.Exists("Dateiname.sv"))
                return null;

            string s = File.ReadAllText("Dateiname.sv");
            Values? val = JsonSerializer.Deserialize<Values>(s) ?? null;
            if(val == null ) return null;
            return val;

        }
        public void Dorf_blick()
        {
            Char_Profil.Visibility = Visibility.Visible;
            Münzen_Bild.Source = ConvertBytesToBitmap(Properties.Resources.Kupfermünzenbeutel); Münzen_Bild.Visibility = Visibility.Visible; Münzen_Count.Visibility = Visibility.Visible;
            Drachnen_Bild.Source = ConvertBytesToBitmap(Properties.Resources.Drachnen); Drachnen_Bild.Visibility = Visibility.Visible; Drachnen_Count.Visibility = Visibility.Visible;
            EXP_Bild.Source = ConvertBytesToBitmap(Properties.Resources.EXP); LVL_Balken.Visibility = Visibility.Visible; EXP_Bild.Visibility = Visibility.Visible;
            
            int max_ep = 100;
            if(Values.Level != 1)
            {
                for (int i = 1; i < Values.Level; i++)
                {
                    max_ep = max_ep / 10 * 13;
                }
            }             
            LVL_Balken.Maximum = max_ep; LVL_Balken.Value = Values.EP_Counter; lvl.Visibility = Visibility.Visible; lvl.Text = $"Lvl: {Values.Level}";
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Dorf_);
            Hinter_char_HUD.Visibility = Visibility.Visible; Münzen_Count.Text = Values.Kupfermünzen.ToString();
            if (Values.Drachnenmünzen < 1) { Drachnen_Count.Text = "0"; } else { Drachnen_Count.Text = Values.Drachnenmünzen.ToString(); }
            Dorf_Button_Zeigen();
        }
        public void Char_HUD_zeigen()
        {            
            Char_Profil.Visibility = Visibility.Visible; Hinter_char_HUD.Visibility = Visibility.Visible;
            Drachnen_Bild.Visibility = Visibility.Visible; Drachnen_Count.Visibility = Visibility.Visible; Drachnen_Count.Text = Values.Drachnenmünzen.ToString();
            Münzen_Bild.Visibility = Visibility.Visible; Münzen_Count.Visibility = Visibility.Visible; Münzen_Count.Text = Values.Kupfermünzen.ToString();
            LVL_Balken.Visibility = Visibility.Visible; EXP_Bild.Visibility = Visibility.Visible; LVL_Balken.Maximum = Values.EP_zu_Lvlup; LVL_Balken.Value = Values.EP_Counter;
            lvl.Visibility = Visibility.Visible;
        }
        public void Char_HUD_weg()
        {
            Char_Profil.Visibility = Visibility.Collapsed; Hinter_char_HUD.Visibility = Visibility.Collapsed;
            Drachnen_Bild.Visibility = Visibility.Collapsed; Drachnen_Count.Visibility = Visibility.Collapsed;
            Münzen_Bild.Visibility = Visibility.Collapsed; Münzen_Count.Visibility = Visibility.Collapsed;
            LVL_Balken.Visibility = Visibility.Collapsed; EXP_Bild.Visibility= Visibility.Collapsed; lvl.Visibility = Visibility.Collapsed;
        }
        public void Dorf_Button_weg()
        {
            //soll ausgeführt werden wenn es zum Kampf kommt es soll dann eine Animation kommen die endet wenn der Spieler oder der Gegner das Leben einer von beiden 0 erreicht.
            zur_Taverne.Visibility = Visibility.Collapsed; zur_Gilde.Visibility = Visibility.Collapsed; speicherung.Visibility = Visibility.Collapsed; zur_Arena.Visibility = Visibility.Collapsed;
            zum_Dungeon.Visibility = Visibility.Collapsed; zum_Stall.Visibility = Visibility.Collapsed; zum_Trankhändler.Visibility = Visibility.Collapsed; zum_Waffenhändler.Visibility = Visibility.Collapsed;
            Task.Visibility = Visibility.Collapsed; zum_Charakter.Visibility = Visibility.Collapsed; Back.Visibility = Visibility.Collapsed; Stackpanel_Taskleiste.Visibility = Visibility.Collapsed;
        }
        public void Dorf_Button_Zeigen()
        {
            //die Taskleiste soll die ganze Zeit angezeigt werden bis man in einem Kampf kommt da soll das dann nicht angezeigt werden nur ein Button mit "Weiter" das dann zum Charakter Fanester wechselt
            //was soll standartmäßig immer gezeigt werden
            Task.Source = ConvertBytesToBitmap(Properties.Resources.taskleiste); Stackpanel_Taskleiste.Visibility = Visibility.Visible;
            Task.Visibility = Visibility.Visible; zum_Charakter.Visibility = Visibility.Visible; zur_Taverne.Visibility = Visibility.Visible; zur_Gilde.Visibility = Visibility.Visible; speicherung.Visibility = Visibility.Visible; zur_Arena.Visibility = Visibility.Visible;
            zum_Waffenhändler.Visibility = Visibility.Visible; zum_Trankhändler.Visibility = Visibility.Visible; zum_Stall.Visibility = Visibility.Visible; zum_Dungeon.Visibility = Visibility.Visible;
            //hier kommt alles was entfernt werden soll wie Info Tafeln
            //Speicherung
            speicherunginfo.Visibility = Visibility.Collapsed;
            //Stall
            Back.Visibility = Visibility.Collapsed; Pferd_info.Visibility = Visibility.Collapsed; Pferd_kaufen.Visibility = Visibility.Collapsed; Text_Demo.Visibility = Visibility.Collapsed;
            Pferd_gekauft.Visibility = Visibility.Collapsed; Fehler_Stall.Visibility = Visibility.Collapsed;
            //Charakter
            Stats_Name.Visibility = Visibility.Collapsed; Stats_Werte.Visibility = Visibility.Collapsed; Char_print.Visibility = Visibility.Collapsed; Charakter_Stats_name.Visibility = Visibility.Collapsed;
            Char_print.Visibility = Visibility.Collapsed; punkte_kaufen.Visibility = Visibility.Collapsed; Spieler_waffe.Visibility = Visibility.Collapsed; Spieler_rüstung.Visibility = Visibility.Collapsed;  
            meister.Visibility = Visibility.Collapsed; meisterwaffen.Visibility = Visibility.Collapsed; meisterrüstung.Visibility = Visibility.Collapsed; meisterrüstung_add.Visibility = Visibility.Collapsed;
            meisterwaffen_add.Visibility = Visibility.Collapsed; kosten_training.Visibility = Visibility.Collapsed;
            //Taverne
            zurück_zur_Taverne.Visibility = Visibility.Collapsed; zum_Questgeber.Visibility = Visibility.Collapsed; zum_Barkeeper.Visibility = Visibility.Collapsed;
            Gegner_Wahl1.Visibility = Visibility.Collapsed; Gegner_Wahl2.Visibility = Visibility.Collapsed; Gegner_Slot_1.Visibility = Visibility.Collapsed; Gegner_Slot_2.Visibility = Visibility.Collapsed;
            Zufalls_Wahl.Visibility = Visibility.Collapsed; Zufall_Slot.Visibility = Visibility.Collapsed; barinfo.Visibility = Visibility.Collapsed; infoblock.Visibility = Visibility.Collapsed;
            //Dungeon
            Challange.Visibility = Visibility.Collapsed;
            //Waffenhändler
            Waffekaufen.Visibility = Visibility.Collapsed; Waffenauslage.Visibility = Visibility.Collapsed; Details_waffe_shop.Visibility = Visibility.Collapsed;
            Rüstungkaufen.Visibility = Visibility.Collapsed; Rüstungsauslage.Visibility = Visibility.Collapsed; Details_rüstung_shop.Visibility = Visibility.Collapsed;
            preis_händler_schild.Visibility = Visibility.Collapsed;
            //Trankhändler

        }
        private void zur_Taverne_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Dorf_blick();
            Demo.Visibility = Visibility.Collapsed;
            Back.Visibility = Visibility.Visible;
            Taverne(); Char_HUD_weg();
        }
        public void Taverne()
        {
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Taverne_);
            zum_Questgeber.Visibility = Visibility.Visible; zum_Barkeeper.Visibility = Visibility.Visible;
        }
        private void zum_Questgeber_Click(object sender, RoutedEventArgs e)//Quest auswahl
        {
            Questgeber(); zum_Questgeber.Visibility = Visibility.Collapsed; zum_Barkeeper.Visibility = Visibility.Collapsed;
        }
        private void zum_Barkeeper_Click(object sender, RoutedEventArgs e)//wiki fehlt
        {
            Barkeeper(); zum_Questgeber.Visibility = Visibility.Collapsed; zum_Barkeeper.Visibility = Visibility.Collapsed;
        }
        public void Questgeber()
        {
            //es sollen 3 Quest angezeigt werden die unterschiedlich sein sollen (exp,Drachnen,...)
            //es soll ein anderer Zurück Button angezeigt werden der zur Taverne Zurück führt
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Questgeber_);
            zurück_zur_Taverne.Visibility = Visibility.Visible;
            Gegner_Slot_1.Visibility = Visibility.Visible; Gegner_Wahl1.Visibility = Visibility.Visible;
            Gegner_Slot_2.Visibility = Visibility.Visible; Gegner_Wahl2.Visibility = Visibility.Visible;
            Zufalls_Wahl.Visibility = Visibility.Visible; Zufall_Slot.Visibility = Visibility.Visible;
            //string gegner1 = Gegner[Zufall()];
            object obj = Properties.Resources.ResourceManager.GetObject(Values.Wahl1, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
            //object obj = Properties.Resources.ResourceManager.GetObject(Gegner[Zufall()], CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
            Gegner_Slot_1.Source = ConvertBytesToBitmap((byte[])(obj));
            object obj2 = Properties.Resources.ResourceManager.GetObject(Values.Wahl2, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
            Gegner_Slot_2.Source = ConvertBytesToBitmap((byte[])(obj2));
            Zufall_Slot.Source = ConvertBytesToBitmap(Properties.Resources.Zufall);
        }
        private void Gegner_Wahl1_Click(object sender, RoutedEventArgs e)
        {
            Dorf_Button_Zeigen(); Dorf_Button_weg();
            object obj = Properties.Resources.ResourceManager.GetObject(Values.Wahl1, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
            Gegner_Seite.Source = Gegner_Slot_1.Source; ConvertBytesToBitmap((byte[])(obj));
            Kampf_Start();
        }
        private void Gegner_Wahl2_Click(object sender, RoutedEventArgs e)
        {
            Dorf_Button_Zeigen(); Dorf_Button_weg();
            object obj = Properties.Resources.ResourceManager.GetObject(Values.Wahl2, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
            Gegner_Seite.Source = ConvertBytesToBitmap((byte[])(obj));
            Kampf_Start();
        }
        private void Zufalls_Wahl_Click(object sender, RoutedEventArgs e)
        {
            Dorf_Button_Zeigen(); Dorf_Button_weg(); string Zufalls_Gegner = Values.Gegner[Zufall()];
            object obj = Properties.Resources.ResourceManager.GetObject(Zufalls_Gegner, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
            Gegner_Seite.Source = ConvertBytesToBitmap((byte[])(obj));
            Kampf_Start();
        }
        public int Zufall()
        {
            Random rand = new Random();
            return rand.Next(0, Values.Gegner.Length);
        }
        public void Kampf_Start()
        {
            Gegner_Seite.Visibility = Visibility.Visible; Gegner_LP_Balken.Visibility = Visibility.Visible; Gegner_LP_counter.Visibility = Visibility.Visible; Gegner_lvl_anzeige.Visibility = Visibility.Visible;
            Spieler_Seite.Visibility = Visibility.Visible; Spieler_LP_Balken.Visibility = Visibility.Visible; Spieler_LP_counter.Visibility = Visibility.Visible; Spieler_lvl_anzeige.Visibility = Visibility.Visible;
            string[] Umgebung = new string[] { "Elder-Ebene", "Elder-Fight-Char-Auswahl", "Elder-Gebirge", "Elder-River", "Elder-Waypoint", "Elder-Winter", "skyrim-forest", "Nachthimmel", "Keller",
            "Gewölbe", "Verlies", "Höhle","verfallen"};//12
            Random rnd = new Random(); //var r = rnd.Next(Umgebung.Length);
            object obju = Properties.Resources.ResourceManager.GetObject(Umgebung[rnd.Next(0, Umgebung.Length)], CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
            hintergrund.Source = ConvertBytesToBitmap((byte[])(obju));
            if (Values.Gewählte_Klasse == "Krieger") { Spieler_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Krieger_Profil); }
            if (Values.Gewählte_Klasse == "Magier") { Spieler_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Magier_Profil); }
            if (Values.Gewählte_Klasse == "Hunter") { Spieler_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Hunter_Profil); }
            ATK.Visibility = Visibility.Visible; Block.Visibility = Visibility.Visible; Aufgeben.Visibility = Visibility.Visible;
            Values.Player_HP = (((Values.Vitalität + Values.spieler_rüstung.vit) * 5) + 2) / 2;
            Values.Gegner_Lvl = rnd.Next(Values.Level, Values.Level + 4); int lp = Values.Player_HP + ((4 * Values.Gegner_Lvl) - 10); Values.Gegner_HP = lp; Values.Gegner_MAX_HP = lp;
            Spieler_lvl_anzeige.Text = Values.Level.ToString(); Gegner_lvl_anzeige.Text = Values.Gegner_Lvl.ToString();
            Gegner_LP_Balken.Maximum = Gegner_LP_Balken.Value = Values.Gegner_HP; //100% 
            Spieler_LP_Balken.Maximum = Spieler_LP_Balken.Value = Values.Player_HP; //{ get { return ((Vitalität * 5) + 2) / 2; } } //leben
            Spieler_LP_counter.Text = Spieler_LP_Balken.Maximum.ToString() + "/" + Spieler_LP_Balken.Maximum.ToString();
            Gegner_LP_counter.Text = Gegner_LP_Balken.Maximum.ToString() + "/" + Gegner_LP_Balken.Maximum.ToString();

        }
        private void ATK_Click(object sender, RoutedEventArgs e)
        {
            Values.Spieler_ATK = 0; Values.Gegner_ATK = 0; Values.Spieler_DEF = 0; Values.Gegner_DEF = 0;
            int DMG = 0;
            if (Values.Gewählte_Klasse == "Krieger") { DMG = (Values.Stärke * 5) / 3; }
            if (Values.Gewählte_Klasse == "Magier") { DMG = (Values.Intelligenz * 5) / 3; }
            if (Values.Gewählte_Klasse == "Hunter") { DMG = (Values.Geschick * 5) / 3; }
            Random rnd = new Random();
            int Schaden = rnd.Next((DMG + Values.Schaden_von_ausrüstung) - (Values.Level * 3)* Values.waffenmeisterung, (DMG + Values.Schaden_von_ausrüstung) + (Values.Level * 3)* Values.waffenmeisterung);
            if (Values.Pferd_im_besitz == true) { int bonus = Schaden % 10; Schaden += bonus; }
            Values.Spieler_ATK = Schaden;

            Kampfverlauf();
        }
        private void Block_Click(object sender, RoutedEventArgs e)
        {
            Values.Spieler_ATK = 0; Values.Gegner_ATK = 0; Values.Spieler_DEF = 0; Values.Gegner_DEF = 0;
            Values.Spieler_DEF = (2 * (Values.Rüstung + Values.spieler_rüstung.rüs))* Values.rüstungsmeisterung;
            Random rnd = new Random(); Values.Spieler_DEF = Values.Spieler_DEF + rnd.Next(Values.Level);
            Kampfverlauf();
        }
        private void Aufgeben_Click(object sender, RoutedEventArgs e)
        {
            KampfEnde_Niederlage();
        }
        //wenn zeit reicht wird noch Heiltränke die einen gewissen HP anteil wieder herstellt einmal mit HP punkte und einmal mit HP % wieder herstellung
        //es wird dann einen weitern Button hinzugefügt werden und die Tranke kann man sich dann bei der Trankhändlerin Kaufen
        public void Kampfverlauf()//Gegner Aktion
        {
            int aktion = 0; Random rnd = new Random();
            aktion = rnd.Next(1, 100);
            int angriff = rnd.Next(Values.Gegner_HP / 6, Values.Gegner_HP / 4) - Values.spieler_rüstung.rüs;
            int def = rnd.Next(Values.Gegner_HP / 6, Values.Gegner_HP / 4);
            int HP_Spieler = 0;
            int HP_Gegner = 0;
            if (aktion % 5 == 0) //Gegner verteidigt mit Chance 20% 
            {
                if (Values.Spieler_ATK > def)
                {
                    int dmg = (Values.Spieler_ATK - def);
                    Values.Gegner_HP = Values.Gegner_HP - dmg;
                    Gegner_LP_Balken.Value = Values.Gegner_HP;//Gegner Bekommt Schaden des Spieler reduziert mit seiner Verteidigung

                    //Spieler_LP_counter.Text = Player_HP.ToString() + "/" + Spieler_LP_Balken.Maximum.ToString();
                    Gegner_LP_counter.Text = Values.Gegner_HP.ToString() + "/" + Gegner_LP_Balken.Maximum.ToString();
                    if (Values.Gegner_HP <= 0) { KampfEnde_Sieg(); }
                    if (Values.Player_HP <= 0) { KampfEnde_Niederlage(); }
                }
            }
            else if (aktion % 5 != 0) //Gegner greift an mit Chance 80%
            {
                Values.Gegner_HP = Values.Gegner_HP - Values.Spieler_ATK;
                Gegner_LP_Balken.Value = Values.Gegner_HP; //Gegner verliert 100% Leben vom Schaden des Spielers
                if (angriff > Values.Spieler_DEF)
                {
                    Values.Player_HP -= (angriff - Values.Spieler_DEF);
                    Spieler_LP_Balken.Value = Values.Player_HP; //Spieler
                }
                Spieler_LP_counter.Text = Values.Player_HP.ToString() + "/" + Spieler_LP_Balken.Maximum.ToString();
                Gegner_LP_counter.Text = Values.Gegner_HP.ToString() + "/" + Gegner_LP_Balken.Maximum.ToString();
                if (Values.Gegner_HP <= 0) { KampfEnde_Sieg(); }
                if (Values.Player_HP <= 0) { KampfEnde_Niederlage(); }

            }
        }
        public void KampfEnde_Sieg()
        {
            Gegner_Seite.Visibility = Visibility.Collapsed; Gegner_LP_counter.Visibility = Visibility.Collapsed; Gegner_LP_Balken.Visibility = Visibility.Collapsed; Gegner_lvl_anzeige.Visibility = Visibility.Collapsed;
            Spieler_Seite.Visibility = Visibility.Collapsed; Spieler_LP_counter.Visibility = Visibility.Collapsed; Spieler_LP_Balken.Visibility = Visibility.Collapsed; Spieler_lvl_anzeige.Visibility = Visibility.Collapsed;
            ATK.Visibility = Visibility.Collapsed; Block.Visibility = Visibility.Collapsed; Aufgeben.Visibility = Visibility.Collapsed;
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Sieg);
            weiter.Visibility = Visibility.Visible; Gewinn_Drachnen.Visibility = Visibility.Visible; Gewinn_Drach.Visibility = Visibility.Visible;
            Gewinn_Kupfer.Visibility = Visibility.Visible; Gewinn_Kupf.Visibility = Visibility.Visible; EXP_Logo.Visibility = Visibility.Visible; EXP_Gewinn.Visibility = Visibility.Visible;
            //Hier wird EP und der gewinn ausbezahlt und Der Runden Timer erhöht sowie die neuen Gegner zum Wählen beriet gemacht
            Values.Wahl1 = Values.Gegner[Zufall()]; Values.Wahl2 = Values.Gegner[Zufall()];//neue Gegner
            //Geld auszahlung: ( Verbleibende HP + max HP des Gegners + eigenes LVL + Gegnger LVL ) * Charisma 
            int summe = (Values.Player_HP + Values.Gegner_MAX_HP + Values.Level + Values.Gegner_Lvl) / 2;
            int Geld = summe * ((Values.Charisma + Values.spieler_rüstung.cha) / 3); int kupf = Geld % 100; int Drach = Geld / 100; Values.Guthaben = Values.Guthaben + Geld;
            int exp = summe * ((Values.Charisma + Values.spieler_rüstung.cha) / 8); 
            Gewinn_Drachnen.Source = ConvertBytesToBitmap(Properties.Resources.Drachnen);
            Gewinn_Kupfer.Source = ConvertBytesToBitmap(Properties.Resources.Kupfermünzenbeutel);
            EXP_Logo.Source = ConvertBytesToBitmap(Properties.Resources.EXP);
            Gewinn_Drach.Text = Drach.ToString(); Gewinn_Kupf.Text = kupf.ToString(); EXP_Gewinn.Text = exp.ToString(); Values.EP_gewinn = exp;
            Values.Drachnenmünzen = Drach; Values.Kupfermünzen = kupf; Values.Runden_timer ++; Values.shop = false;
            Save();
        }
        public void KampfEnde_Niederlage()
        {
            Gegner_Seite.Visibility = Visibility.Collapsed; Gegner_LP_counter.Visibility = Visibility.Collapsed; Gegner_LP_Balken.Visibility = Visibility.Collapsed; Gegner_lvl_anzeige.Visibility = Visibility.Collapsed;
            Spieler_Seite.Visibility = Visibility.Collapsed; Spieler_LP_counter.Visibility = Visibility.Collapsed; Spieler_LP_Balken.Visibility = Visibility.Collapsed; Spieler_lvl_anzeige.Visibility = Visibility.Collapsed;
            ATK.Visibility = Visibility.Collapsed; Block.Visibility = Visibility.Collapsed; Aufgeben.Visibility = Visibility.Collapsed;
            D_ATK.Visibility = Visibility.Collapsed; D_Block.Visibility = Visibility.Collapsed;
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Niederlage);
            weiter.Visibility = Visibility.Visible;
        }
        private void weiter_Click(object sender, RoutedEventArgs e)
        {
            weiter.Visibility = Visibility.Collapsed; Gewinn_Drachnen.Visibility = Visibility.Collapsed; Gewinn_Drach.Visibility = Visibility.Collapsed;
            Gewinn_Kupfer.Visibility = Visibility.Collapsed; Gewinn_Kupf.Visibility = Visibility.Collapsed; EXP_Logo.Visibility = Visibility.Collapsed;
            EXP_Gewinn.Visibility = Visibility.Collapsed;
            if(Values.Kupfermünzen >= 100) { Values.Kupfermünzen -= 100; Values.Drachnenmünzen += 1; }
            Level_überprüfung();
            Dorf_blick(); Save();
        }
        public void Level_überprüfung()
        {
            int exp = Values.EP_gewinn; int Lvl_up = Values.EP_zu_Lvlup; int counter = Values.EP_Counter;
            counter += exp; bool test = true; int lvl = Values.Level;
            do
            {
                if (counter >= Lvl_up)
                {
                    Values.Level += 1; counter -= Lvl_up; Values.EP_zu_Lvlup = Values.EP_zu_Lvlup / 10 * 13;
                    test = true;
                }
                else if (counter < Lvl_up)
                {
                    Values.EP_Counter = counter; test = false;
                }
            } while (test == true);
        }
        public void Barkeeper()
        {
            //es soll ein anderer Zurück Button angezeigt werden der zur Taverne Zurück führt
            //Der Barkeeper soll als Wiki bzw als hilfe darstehen bzw info Herausgeben können
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Barkepeer);string leer = string.Empty; infoblock.Text = leer;
            zurück_zur_Taverne.Visibility = Visibility.Visible; barinfo.Visibility = Visibility.Visible; infoblock.Visibility = Visibility.Visible;
        }        
        private void zurück_zur_Taverne_Click(object sender, RoutedEventArgs e) //von Barkepeer/Questgeber Zurücktreten erledigt
        {
            Taverne(); zurück_zur_Taverne.Visibility = Visibility.Collapsed; Gegner_Wahl1.Visibility = Visibility.Collapsed; Gegner_Wahl2.Visibility = Visibility.Collapsed; Gegner_Slot_1.Visibility = Visibility.Collapsed; Gegner_Slot_2.Visibility = Visibility.Collapsed;
            Zufalls_Wahl.Visibility = Visibility.Collapsed; Zufall_Slot.Visibility = Visibility.Collapsed; barinfo.Visibility = Visibility.Collapsed; infoblock.Visibility = Visibility.Collapsed;
        }
        private void zum_Waffenhändler_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Dorf_blick();
            Demo.Visibility = Visibility.Collapsed;
            Back.Visibility = Visibility.Visible;
            Waffenladen(); Char_HUD_zeigen();
        }
        public void Waffenladen()//preis pro item
        {
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Waffenhändler_); preis_händler_schild.Visibility = Visibility.Visible;
            Waffenauslage.Visibility = Visibility.Visible; Waffekaufen.Visibility = Visibility.Visible; Details_waffe_shop.Visibility = Visibility.Visible;
            Rüstungsauslage.Visibility = Visibility.Visible; Rüstungkaufen.Visibility = Visibility.Visible; Details_rüstung_shop.Visibility = Visibility.Visible;
            if (Values.shop == false) { if (Values.Runden_timer >= 3) { Shopauffüllung();} }//es wird frühestens alle 3 Runden Aktualisiert
            if(Values.kosten > Values.Drachnenmünzen) { Waffekaufen.IsEnabled = false; Rüstungkaufen.IsEnabled = false; }
            else if (Values.kosten <= Values.Drachnenmünzen) { Waffekaufen.IsEnabled = true; Rüstungkaufen.IsEnabled = true; }
        }
        public void Shopauffüllung()
        {
            string[] Hunter_Waffen = {"Bogen_1", "Bogen_2", "Bogen_3","Bogen_4","Bogen_5" };
            string[] Krieger_Waffen = { "Schwert_1", "Schwert_2", "Axt_1", "Axt_2", "Axt_3" };
            string[] Magier_Waffen = {"Stab_1", "Stab_2", "Stab_3", "Stab_4","Stab_5" };
            string[] Waffen = {"Dolch_1", "Dolch_2", "Dolch_3", "Dolch_4", "Dolch_5","Dolch_6" };
            string[] Hunter_Rüstung = { "Hunterrüstungset_1", "Hunterrüstungset_2", "Hunterrüstungset_3", "Hunterrüstungset_4", "Hunterrüstungset_5" };
            string[] Krieger_Rüstung = { "Kriegerrüstungset_1", "Kriegerrüstungset_2", "Kriegerrüstungset_3", "Kriegerrüstungset_4", "Kriegerrüstungset_5" };
            string[] Magier_Rüstung = { "Magierrüstungset_1", "Magierrüstungset_2", "Magierrüstungset_3", "Magierrüstungset_4", "Magierrüstungset_5" };
            Random rnd = new Random(); int lvl = rnd.Next(Values.Level /2+((Values.Charisma + Values.spieler_rüstung.cha)%10), Values.Level /2 + 1 + ((Values.Charisma + Values.spieler_rüstung.cha) % 10));
            if (lvl == 0) { lvl++; }
            Values.equipmentlvl = lvl;
            string[] verteilung = { "charm", "luck", "lp" };int charisma = 0; int glück = 0; int leben = 0;
            int stat1 = rnd.Next(verteilung.Length); int stat2 = rnd.Next(verteilung.Length);
            if (verteilung[stat1] == "charm") { charisma++; } if (verteilung[stat2] == "charm") { charisma++;}
            if (verteilung[stat1] == "luck") { glück++;} if(verteilung[stat2] == "luck") { glück++;}
            if (verteilung[stat1] == "lp") { leben++;} if (verteilung[stat2] == "lp") { leben++; }
            int dmg_werte = 5 * lvl;
            int rüst = lvl * (rnd.Next(1,3)+2); int charm = lvl * rnd.Next(1,3)*charisma; int luck = lvl * rnd.Next(1,3)*glück; int lp = lvl * rnd.Next(1,3)*leben;
            string detailrüs = $"Rüstungslevel: {lvl}\nVitalität: {leben}\nGlück: {luck}\nCharisma: {charm}\nRüstung: {rüst}";
            Details_rüstung_shop.Text = detailrüs;// $"Rüstungslevel: {lvl}"+$"\n{lp}"+$"\n{luck}"+$"\n{charm}" + $"\n{rüst}";
            string waffenname = string.Empty; string rüstungsset = string.Empty;
            if (Values.Gewählte_Klasse == "Krieger") 
            {
                waffenname = Krieger_Waffen[rnd.Next(0, Krieger_Waffen.Length)];
                object obju = Properties.Resources.ResourceManager.GetObject(waffenname, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Waffenauslage.Source = ConvertBytesToBitmap((byte[])(obju));
                rüstungsset = Krieger_Rüstung[rnd.Next(0, Krieger_Rüstung.Length)];
                object obju1 = Properties.Resources.ResourceManager.GetObject(rüstungsset, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Rüstungsauslage.Source = ConvertBytesToBitmap((byte[])(obju1));
                Values.shop_rüstung = (rüstungsset,lvl, leben, charm, luck, rüst); Values.shop_waffen = (waffenname, lvl, dmg_werte);                
            }//klassen speziefische waffe und rüstung darstellung
            if (Values.Gewählte_Klasse == "Magier")
            {
                waffenname = Magier_Waffen[rnd.Next(0, Magier_Waffen.Length)];
                object obju = Properties.Resources.ResourceManager.GetObject(waffenname, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Waffenauslage.Source = ConvertBytesToBitmap((byte[])(obju));
                rüstungsset = Magier_Rüstung[rnd.Next(0, Magier_Rüstung.Length)];
                object obju1 = Properties.Resources.ResourceManager.GetObject(rüstungsset, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Rüstungsauslage.Source = ConvertBytesToBitmap((byte[])(obju1));
                Values.shop_rüstung = (rüstungsset, lvl, leben, charm, luck, rüst); Values.shop_waffen = (waffenname, lvl, dmg_werte);
            }
            if (Values.Gewählte_Klasse == "Hunter")
            {
                waffenname = Hunter_Waffen[rnd.Next(0, Hunter_Waffen.Length)];
                object obju = Properties.Resources.ResourceManager.GetObject(waffenname, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Waffenauslage.Source = ConvertBytesToBitmap((byte[])(obju));
                rüstungsset = Hunter_Rüstung[rnd.Next(0, Hunter_Rüstung.Length)];
                object obju1 = Properties.Resources.ResourceManager.GetObject(rüstungsset, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Rüstungsauslage.Source = ConvertBytesToBitmap((byte[])(obju1));
                Values.shop_rüstung = (rüstungsset, lvl, leben, charm, luck, rüst); Values.shop_waffen = (waffenname, lvl, dmg_werte);
            }  
            if (rnd.Next(10) == 0) 
            {
                waffenname = Waffen[rnd.Next(0, Waffen.Length)]; 
                Values.shop_waffen = (waffenname, Values.shop_waffen.lvl, Values.shop_waffen.dmg);
                object obju = Properties.Resources.ResourceManager.GetObject(waffenname, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Waffenauslage.Source = ConvertBytesToBitmap((byte[])(obju)); Values.shop_waffen = (waffenname, lvl, dmg_werte-lvl);
            }//zufall dolch waffen für jede klasse macht aber pro lvl 1 schaden weniger als die klassen spezifische waffe
            Details_waffe_shop.Text = $"Waffenlevel: {Values.shop_waffen.lvl}\nSchaden: {Values.shop_waffen.dmg}";
            Values.shop = true;//hier wird der shop als aktualisiert angesehen
            lvl /= 2; if (lvl == 0) { lvl++; }
            Values.Runden_timer = 0;
            Values.kosten = (lvl * 5) - ((Values.Charisma + Values.spieler_rüstung.cha) / 15);preis_händler_schild.Text = $"{Values.kosten} Drachnen\nPro Item";
        }
        private void Waffekaufen_Click(object sender, RoutedEventArgs e)
        {
            int lvl = Values.equipmentlvl /2; if (lvl == 0) { lvl++; } int kosten = (lvl * 5) - ((Values.Charisma + Values.spieler_rüstung.cha) / 15);
            if (Values.Drachnenmünzen >= kosten) 
            {
                Values.spieler_waffen = Values.shop_waffen; Values.Drachnenmünzen -= kosten; Waffenladen(); Char_HUD_zeigen(); Values.waffe_in_besitz = true; Save();
            }
            else { Fehler_Stall.Visibility = Visibility.Visible; }
            Waffenladen();
        }
        private void Rüstungkaufen_Click(object sender, RoutedEventArgs e)
        {
            int lvl = Values.equipmentlvl /2; if(lvl == 0 ) { lvl++; } int kosten = (lvl * 5 ) - ((Values.Charisma + Values.spieler_rüstung.cha) / 15) ;
            if (Values.Drachnenmünzen >= kosten) 
            {
                Values.spieler_rüstung = Values.shop_rüstung; Values.Drachnenmünzen -= kosten; Waffenladen(); Char_HUD_zeigen(); Values.rüstung_in_besitz = true; Save();
            }
            else { Fehler_Stall.Visibility = Visibility.Visible; }
            Waffenladen();
        }
        private void zum_Trankhändler_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Dorf_blick();
            Demo.Visibility = Visibility.Collapsed;
            Back.Visibility = Visibility.Visible;
            Trankhändler(); Char_HUD_zeigen();
        }        
        public void Trankhändler()
        {
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Trankhändler_);
        }
        private void zum_Stall_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Dorf_blick();
            Demo.Visibility = Visibility.Collapsed;
            Back.Visibility = Visibility.Visible;
            Stall(); Char_HUD_zeigen();
        }
        public void Stall() //erledigt
        {
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Stall);
            Demo.Visibility = Visibility.Collapsed; Pferd_info.Visibility = Visibility.Visible; Text_Demo.Visibility = Visibility.Visible;
            if (Values.Pferd_im_besitz != true) { Pferd_kaufen.Visibility = Visibility.Visible; Pferd_gekauft.Visibility = Visibility.Collapsed; }
            if (Values.Pferd_im_besitz == true) { Pferd_gekauft.Visibility = Visibility.Visible; Pferd_kaufen.Visibility = Visibility.Collapsed; }
        }
        private void Pferd_kaufen_Click(object sender, RoutedEventArgs e)//kauf klappt
        {
            //es soll abfragen ob man genug geld hat um sich das Pferd leisten zu könne
            //bei ja wird das geld abgezogen und Pferd ist dann im Besitz    bei Nein soll fehler kommen und Pferd ist nicht im besitz
            if (Values.Drachnenmünzen >= 15) { Values.Pferd_im_besitz = true; Values.Drachnenmünzen -= 15; Stall(); Char_HUD_zeigen(); Save(); }
            else { Fehler_Stall.Visibility =Visibility.Visible; }
            //Pferd_im_besitz = true; Drachnen -=15;
        }
        private void zum_Dungeon_Click(object sender, RoutedEventArgs e)//erledigt
        {
            //Demo.Visibility = Visibility.Collapsed;Demo_version();
            Dorf_blick(); Char_HUD_weg(); Demo.Visibility = Visibility.Collapsed;
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Dungeon_eingang);
            Back.Visibility = Visibility.Visible; Challange.Visibility = Visibility.Visible;
        }
        private void Challange_Click(object sender, RoutedEventArgs e)
        {
            Back.Visibility = Visibility.Collapsed; Challange.Visibility = Visibility.Collapsed;
            Dorf_Button_Zeigen(); Dorf_Button_weg();
            Dungeon();
        }
        public void Dungeon()
        {
            Random rnd = new Random();
            if (Values.Boss_counter == 0) 
            {
                hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Dungeon); Values.Boss_lvl = 20; Values.Boss_HP = Values.Boss_lvl * 50; Values.Boss_ATK = rnd.Next(100 - Values.Boss_lvl, 100 + Values.Boss_lvl);
                Gegner_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Schwarzer_Drache);
            }
            if(Values.Boss_counter == 1)
            {
                hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Dungeon_1); Values.Boss_lvl = 35; Values.Boss_HP = Values.Boss_lvl * 56; Values.Boss_ATK = rnd.Next(112 - Values.Boss_lvl, 112 + Values.Boss_lvl);
                Gegner_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Weiß_magierin);
            }
            if (Values.Boss_counter == 2)
            {
                hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Katakombe); Values.Boss_lvl = 50; Values.Boss_HP = Values.Boss_lvl * 125; Values.Boss_ATK = rnd.Next(125 - Values.Boss_lvl, 125 + Values.Boss_lvl);
                Gegner_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Ritter);
            }
            //Platz für erweiterung

            Dungeon_Kampf();
        }
        public void Dungeon_Kampf()
        {
            Gegner_Seite.Visibility = Visibility.Visible; Gegner_LP_Balken.Visibility = Visibility.Visible; Gegner_LP_counter.Visibility = Visibility.Visible; Gegner_lvl_anzeige.Visibility = Visibility.Visible;
            Spieler_Seite.Visibility = Visibility.Visible; Spieler_LP_Balken.Visibility = Visibility.Visible; Spieler_LP_counter.Visibility = Visibility.Visible; Spieler_lvl_anzeige.Visibility = Visibility.Visible;
            if (Values.Gewählte_Klasse == "Krieger") { Spieler_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Krieger_Profil); }
            if (Values.Gewählte_Klasse == "Magier") { Spieler_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Magier_Profil); }
            if (Values.Gewählte_Klasse == "Hunter") { Spieler_Seite.Source = ConvertBytesToBitmap(Properties.Resources.Hunter_Profil); }
            D_ATK.Visibility = Visibility.Visible; D_Block.Visibility = Visibility.Visible; Aufgeben.Visibility = Visibility.Visible; //eigene Button im Dungeon
            Spieler_lvl_anzeige.Text = Values.Level.ToString(); Gegner_lvl_anzeige.Text = Values.Boss_lvl.ToString();
            Values.Player_HP = (((Values.Vitalität + Values.spieler_rüstung.vit) * 5) + 2) / 2;
            Gegner_LP_Balken.Maximum = Gegner_LP_Balken.Value = Values.Boss_HP; Spieler_LP_Balken.Maximum = Spieler_LP_Balken.Value = Values.Player_HP;
            Spieler_LP_counter.Text = Spieler_LP_Balken.Maximum.ToString() + "/" + Spieler_LP_Balken.Maximum.ToString();
            Gegner_LP_counter.Text = Gegner_LP_Balken.Maximum.ToString() + "/" + Gegner_LP_Balken.Maximum.ToString();

        }
        private void D_ATK_Click(object sender, RoutedEventArgs e)
        {
            Values.Spieler_ATK = 0; Values.Gegner_ATK = 0; Values.Spieler_DEF = 0; Values.Gegner_DEF = 0;
            int DMG = 0;
            if (Values.Gewählte_Klasse == "Krieger") { DMG = (Values.Stärke * 5) / 3; }
            if (Values.Gewählte_Klasse == "Magier") { DMG = (Values.Intelligenz * 5) / 3; }
            if (Values.Gewählte_Klasse == "Hunter") { DMG = (Values.Geschick * 5) / 3; }
            Random rnd = new Random();
            int Schaden = rnd.Next((DMG + Values.Schaden_von_ausrüstung) - (Values.Level * 3)* Values.waffenmeisterung, (DMG + Values.Schaden_von_ausrüstung) + (Values.Level * 3)* Values.waffenmeisterung);
            if (Values.Pferd_im_besitz == true) { int bonus = Schaden % 10; Schaden += bonus; }
            Values.Spieler_ATK = Schaden;

            Dungeon_verlauf();
        }
        private void D_Block_Click(object sender, RoutedEventArgs e)
        {
            Values.Spieler_ATK = 0; Values.Gegner_ATK = 0; Values.Spieler_DEF = 0; Values.Gegner_DEF = 0;
            Values.Spieler_DEF = 2 * (Values.Rüstung + Values.spieler_rüstung.rüs)* Values.rüstungsmeisterung;
            Random rnd = new Random(); Values.Spieler_DEF = Values.Spieler_DEF + rnd.Next(Values.Level);
            Dungeon_verlauf();
        }
        public void Dungeon_verlauf()
        {
            int aktion = 0; Random rnd = new Random();
            aktion = rnd.Next(1, 100);
            int angriff = Values.Boss_ATK;
            int def = rnd.Next(Values.Boss_HP / 9, Values.Boss_HP / 6);
            if (aktion % 8 == 0) //Gegner verteidigt mit Chance 12,50% 
            {
                if (Values.Spieler_ATK > def)
                {
                    int dmg = (Values.Spieler_ATK - def);
                    Values.Boss_HP = Values.Boss_HP - dmg;
                    Gegner_LP_Balken.Value = Values.Boss_HP;
                    Gegner_LP_counter.Text = Values.Boss_HP.ToString() + "/" + Gegner_LP_Balken.Maximum.ToString();
                    if (Values.Boss_HP <= 0) { DungeonEnde_Sieg(); }
                    if (Values.Player_HP <= 0) { KampfEnde_Niederlage(); }
                }
            }
            else if (aktion % 8 != 0) //Gegner greift an mit Chance 87,50%
            {
                Values.Boss_HP = Values.Boss_HP - Values.Spieler_ATK;
                Gegner_LP_Balken.Value = Values.Boss_HP; //Gegner verliert 100% Leben vom Schaden des Spielers
                if (angriff > Values.Spieler_DEF)
                {
                    Values.Player_HP -= (angriff - Values.Spieler_DEF);
                    Spieler_LP_Balken.Value = Values.Player_HP; //Spieler
                }
                Spieler_LP_counter.Text = Values.Player_HP.ToString() + "/" + Spieler_LP_Balken.Maximum.ToString();
                Gegner_LP_counter.Text = Values.Boss_HP.ToString() + "/" + Gegner_LP_Balken.Maximum.ToString();
                if (Values.Boss_HP <= 0) { DungeonEnde_Sieg(); }
                if (Values.Player_HP <= 0) { KampfEnde_Niederlage(); }

            }
        }
        public void DungeonEnde_Sieg()
        {
            Gegner_Seite.Visibility = Visibility.Collapsed; Gegner_LP_counter.Visibility = Visibility.Collapsed; Gegner_LP_Balken.Visibility = Visibility.Collapsed; Gegner_lvl_anzeige.Visibility = Visibility.Collapsed;
            Spieler_Seite.Visibility = Visibility.Collapsed; Spieler_LP_counter.Visibility = Visibility.Collapsed; Spieler_LP_Balken.Visibility = Visibility.Collapsed; Spieler_lvl_anzeige.Visibility = Visibility.Collapsed;
            D_ATK.Visibility = Visibility.Collapsed; D_Block.Visibility = Visibility.Collapsed; Aufgeben.Visibility = Visibility.Collapsed;
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Sieg);
            weiter.Visibility = Visibility.Visible; Gewinn_Drachnen.Visibility = Visibility.Visible; Gewinn_Drach.Visibility = Visibility.Visible;
            Gewinn_Kupfer.Visibility = Visibility.Visible; Gewinn_Kupf.Visibility = Visibility.Visible; EXP_Logo.Visibility = Visibility.Visible; EXP_Gewinn.Visibility = Visibility.Visible;
            //Hier wird EP und der gewinn ausbezahlt und Der Runden Timer erhöht sowie die neuen Gegner zum Wählen beriet gemacht
            Values.Wahl1 = Values.Gegner[Zufall()]; Values.Wahl2 = Values.Gegner[Zufall()];//neue Gegner
            //Geld auszahlung: ( Verbleibende HP + max HP des Gegners + eigenes LVL + Gegnger LVL ) * Charisma 
            int summe = (Values.Player_HP + Values.Gegner_MAX_HP + Values.Level + Values.Gegner_Lvl) ;
            int Geld = summe * ((Values.Charisma + Values.spieler_rüstung.cha) / 3); int kupf = Geld % 100; int Drach = Geld / 100; Values.Guthaben = Values.Guthaben + Geld;
            int exp = summe * ((Values.Charisma + Values.spieler_rüstung.rüs) / 8);
            Gewinn_Drachnen.Source = ConvertBytesToBitmap(Properties.Resources.Drachnen);
            Gewinn_Kupfer.Source = ConvertBytesToBitmap(Properties.Resources.Kupfermünzenbeutel);
            EXP_Logo.Source = ConvertBytesToBitmap(Properties.Resources.EXP);
            Gewinn_Drach.Text = Drach.ToString(); Gewinn_Kupf.Text = kupf.ToString(); EXP_Gewinn.Text = exp.ToString(); Values.EP_gewinn = exp;
            Values.Drachnenmünzen += Drach; Values.Kupfermünzen += kupf; Values.Boss_counter += 1;
            Save();
        }
        private void zur_Gilde_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Demo_version(); Dorf_blick(); Char_HUD_weg();
            Back.Visibility = Visibility.Visible;

        }
        private void zur_Arena_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Demo_version(); Dorf_blick(); Char_HUD_weg();
            Back.Visibility = Visibility.Visible;

        }
        private void speichrung_Click(object sender, RoutedEventArgs e)
        {
            Save(); speicherunginfo.Visibility = Visibility.Visible;
        }
        public void Demo_version()
        {
            //hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Dorf_);
            Demo.Visibility = Visibility.Visible;
            Demo.Source = ConvertBytesToBitmap(Properties.Resources.Demo_);

            //hintergrund.Source = Demo_Trial;

        }
        private void zum_Charakter_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Dorf_Button_Zeigen();
            Demo.Visibility = Visibility.Collapsed;
            Back.Visibility = Visibility.Visible;
            Charakter(); Char_HUD_weg();
        }
        public void Charakter()
        {
            hintergrund.Source = ConvertBytesToBitmap(Properties.Resources.Charakterinfo);
            if (Values.Gewählte_Klasse == "Krieger") { Char_print.Source = ConvertBytesToBitmap(Properties.Resources.Krieger_Profil); }
            if (Values.Gewählte_Klasse == "Magier") { Char_print.Source = ConvertBytesToBitmap(Properties.Resources.Magier_Profil); }
            if (Values.Gewählte_Klasse == "Hunter") { Char_print.Source = ConvertBytesToBitmap(Properties.Resources.Hunter_Profil); }
            string rüstungsname = Values.spieler_rüstung.name; string waffenname = Values.shop_waffen.name;           
            Stats_Name.Visibility = Visibility.Visible; Stats_Werte.Visibility = Visibility.Visible; Charakter_Stats_name.Visibility = Visibility.Visible; Char_print.Visibility = Visibility.Visible;
            punkte_kaufen.Visibility = Visibility.Visible; Spieler_rüstung.Visibility = Visibility.Visible; Spieler_waffe.Visibility = Visibility.Visible; 
            meister.Visibility = Visibility.Visible; meisterrüstung.Visibility = Visibility.Visible; meisterwaffen.Visibility = Visibility.Visible; 
            meisterrüstung_add.Visibility = Visibility.Visible; meisterwaffen_add.Visibility = Visibility.Visible; kosten_training.Visibility = Visibility.Visible;
            int meisterkosten = Values.anzahl_meisterschaften * 10;
            kosten_training.Text = $"Das Training kostet:\n      {meisterkosten} Drachnen";
            meisterrüstung.Text = $"Rüstungsmeisterung: {Values.rüstungsmeisterung}"; meisterwaffen.Text = $"Waffenmeisterung: {Values.waffenmeisterung}";
            if (Values.Drachnenmünzen < meisterkosten) { meisterwaffen_add.IsEnabled = false; meisterrüstung_add.IsEnabled = false;  } 
            else if (Values.Drachnenmünzen >= meisterkosten ) { meisterwaffen_add.IsEnabled = true; meisterrüstung_add.IsEnabled = true; }
            if (Values.rüstung_in_besitz == false) 
            { 
                Spieler_rüstung.Source = ConvertBytesToBitmap(Properties.Resources.keine_Rüstung);
                Vitalität_count.Text = Values.Vitalität.ToString(); Glück_count.Text = Values.Glück.ToString(); Rüstung_count.Text = Values.Rüstung.ToString(); Charisma_count.Text = Values.Charisma.ToString();
            }//zeigt einen leeren platz für rüstung an
            else 
            {
                object obju = Properties.Resources.ResourceManager.GetObject(rüstungsname, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Spieler_rüstung.Source = ConvertBytesToBitmap((byte[])(obju));
                Vitalität_count.Text = $"{Values.Vitalität}+{Values.shop_rüstung.vit}"; Glück_count.Text = $"{Values.Glück}+{Values.spieler_rüstung.luc}";
                Rüstung_count.Text = $"{Values.Rüstung}+{Values.spieler_rüstung.rüs}"; Charisma_count.Text = $"{Values.Charisma}+{Values.spieler_rüstung.cha}";
            } //zeigt aktuelle rüstung an
            if (Values.waffe_in_besitz == false) {Spieler_waffe.Source = ConvertBytesToBitmap(Properties.Resources.no_Weapon) ;}//bild mit no weapon
            else 
            {
                object obju = Properties.Resources.ResourceManager.GetObject(waffenname, CultureInfo.InvariantCulture) ?? throw new Exception("Resource ist nicht verfügbar...");
                Spieler_waffe.Source = ConvertBytesToBitmap((byte[])(obju));
            }//zeigt aktuelle waffe an
            Stärke_count.Text = Values.Stärke.ToString(); Geschick_count.Text = Values.Geschick.ToString(); Intelligenz_count.Text = Values.Intelligenz.ToString();            
        }
        private void meisterrüstung_add_Click(object sender, RoutedEventArgs e)
        {
            Values.rüstungsmeisterung++; Values.Drachnenmünzen -= Values.anzahl_meisterschaften * 10; Values.anzahl_meisterschaften++; Charakter(); Save();
        }
        private void meisterwaffen_add_Click(object sender, RoutedEventArgs e)
        {
            Values.waffenmeisterung++; Values.Drachnenmünzen -= Values.anzahl_meisterschaften * 10; Values.anzahl_meisterschaften++; Charakter(); Save();
        }
        private void Back_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Dorf_blick(); Demo.Visibility = Visibility.Collapsed;
        }
        private void Window_SizeChanged(object sender, SizeChangedEventArgs e)//Wenn sich die Größe des Fensters ändert
        {
            //(Breite des Fensters - Breite der Buttons) / Abstände
            double abst = (this.Width - 740) / 9 / 2;

            //Durch die Buttons laufen und die Margin neu setzen
            foreach (Button element in Stackpanel_Taskleiste.Children)
            {
                element.Margin = new(abst, 20, abst, 20);
            }
        }
        private void punkte_kaufen_Click(object sender, RoutedEventArgs e)//Verteilung starten
        {

            Attributspunkte_erhöhen.Visibility = Visibility.Visible; Attributspunkte_verringern.Visibility = Visibility.Visible; Punkte_Verteilung.Visibility = Visibility.Visible;
            Kosten_Drachnen_Attribut.Visibility = Visibility.Visible; Kosten_kupfer_Attribut.Visibility = Visibility.Visible;
            meister.Visibility = Visibility.Collapsed; meisterwaffen.Visibility = Visibility.Collapsed; meisterrüstung.Visibility = Visibility.Collapsed; meisterrüstung_add.Visibility = Visibility.Collapsed;
            meisterwaffen_add.Visibility = Visibility.Collapsed; kosten_training.Visibility = Visibility.Collapsed;
            Drachnen_attribut.Visibility = Visibility.Visible; Kupfer_attribut.Visibility = Visibility.Visible;
            Drachnen_attribut.Source = ConvertBytesToBitmap(Properties.Resources.Drachnen);
            Kupfer_attribut.Source = ConvertBytesToBitmap(Properties.Resources.Kupfermünzenbeutel);
            Dorf_Button_weg(); Back.Visibility = Visibility.Collapsed; Attribut(); punkte_kaufen.Visibility = Visibility.Collapsed;
            Spieler_waffe.Visibility = Visibility.Collapsed; Spieler_rüstung.Visibility = Visibility.Collapsed;
            Kosten_Drachnen_Attribut.Text = "0"; Kosten_kupfer_Attribut.Text = "0";
            Abbrechen.Background = Brushes.Green; Abbrechen.Visibility = Visibility.Visible;
            Char_HUD_zeigen();
        }        
        private void Punkte_Verteilung_Click_1(object sender, RoutedEventArgs e)//verteilung beenden
        {
            /*
            Attributspunkte_verringern.Visibility = Visibility.Collapsed; Attributspunkte_erhöhen.Visibility = Visibility.Collapsed; Punkte_Verteilung.Visibility = Visibility.Collapsed;
            Kosten_Drachnen_Attribut.Visibility = Visibility.Collapsed; Kosten_kupfer_Attribut.Visibility = Visibility.Collapsed;
            Drachnen_attribut.Visibility = Visibility.Collapsed; Kupfer_attribut.Visibility = Visibility.Collapsed;
            Dorf_blick(); Char_HUD_weg(); Charakter(); Back.Visibility = Visibility.Visible; punkte_kaufen.Visibility = Visibility.Visible;
            */
            //überprüfung ob man sich die Punkte kaufen kann
            Kaufüberprüfung_Attribut();
        }
        public void Kaufüberprüfung_Attribut()//erledigt
        {
            //um verwechelungen zu vermeiden wird der Kosten int außerhalb der Abfrage erstellt
            int costs = Values.preis_Stats; int drach = Values.Drachnenmünzen * 100; int kupfer = Values.Kupfermünzen; int geld = drach + kupfer;
            //hier wird nach gefragt ob man genug vermögen hat sowie ob überhaupt ein Attributs Punkt erhöht wurde wurde
            if (costs > geld || (Values.add_Stärke == 0 && Values.add_Intelligenz == 0 && Values.add_Geschick == 0 && Values.add_Vitalität == 0 && Values.add_Charisma == 0 && Values.add_Glück == 0))
            {
                Fehlermeldung.Visibility = Visibility.Visible; Fehlermeldung.Source = ConvertBytesToBitmap(Properties.Resources.Fehler);
                Abbrechen.Visibility = Visibility.Visible; Abbrechen.Background = Brushes.Red;
            } //Brushes verändert die Button farbe in eine andere
            //hier wird das gegenteil wie oben abgefragt und es werden die add klassen (int) auf 0 zurückgesetz sowie die punkte richtig verteilt und addiert sowie das kosten abgezogen
            if (costs <= geld && (Values.add_Stärke != 0 || Values.add_Intelligenz != 0 || Values.add_Geschick != 0 || Values.add_Vitalität != 0 || Values.add_Charisma != 0 || Values.add_Glück != 0))
            {
                Values.Stärke += Values.add_Stärke; Values.Geschick += Values.add_Geschick; Values.Intelligenz += Values.add_Intelligenz; Values.Vitalität += Values.add_Vitalität; Values.Glück += Values.add_Glück; Values.Charisma += Values.add_Charisma;
                Values.add_Stärke = 0; Values.add_Geschick = 0; Values.add_Intelligenz = 0; Values.add_Vitalität = 0; Values.add_Glück = 0; Values.add_Charisma = 0;
                Fehlermeldung.Visibility = Visibility.Collapsed; Abbrechen.Visibility = Visibility.Collapsed;
                Attributspunkte_verringern.Visibility = Visibility.Collapsed; Attributspunkte_erhöhen.Visibility = Visibility.Collapsed; Punkte_Verteilung.Visibility = Visibility.Collapsed;
                Kosten_Drachnen_Attribut.Visibility = Visibility.Collapsed; Kosten_kupfer_Attribut.Visibility = Visibility.Collapsed;
                Drachnen_attribut.Visibility = Visibility.Collapsed; Kupfer_attribut.Visibility = Visibility.Collapsed;
                Dorf_blick(); Char_HUD_weg(); Charakter(); Back.Visibility = Visibility.Visible; punkte_kaufen.Visibility = Visibility.Visible; 
                geld -= costs; Values.Drachnenmünzen = geld / 100; Values.Kupfermünzen = geld % 100; Save();
            }
        }
        private void Abbrechen_Click(object sender, RoutedEventArgs e)//erledigt
        {
            Attributspunkte_verringern.Visibility = Visibility.Collapsed; Attributspunkte_erhöhen.Visibility = Visibility.Collapsed; Punkte_Verteilung.Visibility = Visibility.Collapsed;
            Kosten_Drachnen_Attribut.Visibility = Visibility.Collapsed; Kosten_kupfer_Attribut.Visibility = Visibility.Collapsed;
            Drachnen_attribut.Visibility = Visibility.Collapsed; Kupfer_attribut.Visibility = Visibility.Collapsed;
            Spieler_rüstung.Visibility = Visibility.Visible; Spieler_waffe.Visibility = Visibility.Visible;
            Dorf_blick(); Char_HUD_weg(); Charakter(); Back.Visibility = Visibility.Visible; punkte_kaufen.Visibility = Visibility.Visible;
            Fehlermeldung.Visibility = Visibility.Collapsed; Abbrechen.Visibility = Visibility.Collapsed; Char_HUD_weg();
        }
        public void Attribut()//plus und minus sowwie der Kauf und bearbeitung der Attribute erledigt
        {

            //hier wird gefragt ob plus geklickt wurde oder nicht und bei ja wird das minus aktiviert aber nur so lange bis es wieder bei 0 ist
            if (Values.add_Stärke == 0) { Minus_Stärke.IsEnabled = false; } else if (Values.add_Stärke != 0) { Minus_Stärke.IsEnabled = true; }
            if (Values.add_Geschick == 0) { Minus_Geschick.IsEnabled = false; } else if (Values.add_Geschick != 0) { Minus_Geschick.IsEnabled = true; }
            if (Values.add_Intelligenz == 0) { Minus_Intelligenz.IsEnabled = false; } else if (Values.add_Intelligenz != 0) { Minus_Intelligenz.IsEnabled = true; }
            if (Values.add_Vitalität == 0) { Minus_Vitalität.IsEnabled = false; } else if (Values.add_Vitalität != 0) { Minus_Vitalität.IsEnabled = true; }
            if (Values.add_Glück == 0) { Minus_Glück.IsEnabled = false; } else if (Values.add_Glück != 0) { Minus_Glück.IsEnabled = true; }
            if (Values.add_Charisma == 0) { Minus_Charisma.IsEnabled = false; } else if (Values.add_Charisma != 0) { Minus_Charisma.IsEnabled = true; }
            //es soll der alte attributsstand dran stehen + die wo dazu kommen sollen Bsp: 20 + 4
            Stärke_count.Text = $"{Values.Stärke}+{Values.add_Stärke}";
            Geschick_count.Text = $"{Values.Geschick}+{Values.add_Geschick}";
            Intelligenz_count.Text = $"{Values.Intelligenz}+{Values.add_Intelligenz}";
            Vitalität_count.Text = $"{Values.Vitalität}+{Values.add_Vitalität}";
            Glück_count.Text = $"{Values.Glück}+{Values.add_Glück}";
            Charisma_count.Text = $"{Values.Charisma}+{Values.add_Charisma}";
            //die kosten
            int costs = Values.preis_Stats; int drach = costs / 100; int kupfer = costs % 100; //hier werden die kosten zu den jeweiligen Drachnen und Kupfer getrennt
            Kosten_Drachnen_Attribut.Text = drach.ToString(); Kosten_kupfer_Attribut.Text = kupfer.ToString();

        }
        private void Plus_Stärke_Click(object sender, RoutedEventArgs e)//hier wird plus Buttons erklärt
        {
            Values.add_Stärke += 1; Values.Gekaufte_stats += 1; //es wird der Counter bei + um 1 bei den jeweligen Attributen erhöht sowie bei der gesammt anzahl der Attribute 
            Values.preis_Stats += 15 * Values.Gekaufte_stats; //hier wird der preis berechnet bevor es an die Klasse Attribut() weitergeleitet wird
            Attribut();
        }
        private void Minus_Stärke_Click(object sender, RoutedEventArgs e) //hier wird minus Buttons erklärt
        {
            Values.preis_Stats -= 15 * Values.Gekaufte_stats; //es muss erst den preis abziehen bevor die Punkte abgezogen werden sonst wird der Falsche preis abgezogen
            Values.add_Stärke -= 1; Values.Gekaufte_stats -= 1;
            Attribut();
        }
        private void Plus_Geschick_Click(object sender, RoutedEventArgs e)
        {
            Values.add_Geschick += 1; Values.Gekaufte_stats += 1; Values.preis_Stats += 15 * Values.Gekaufte_stats;
            Attribut();
        }
        private void Minus_Geschick_Click(object sender, RoutedEventArgs e)
        {
            Values.preis_Stats -= 15 * Values.Gekaufte_stats;
            Values.add_Geschick -= 1; Values.Gekaufte_stats -= 1;
            Attribut();
        }
        private void Plus_Intelligenz_Click(object sender, RoutedEventArgs e)
        {
            Values.add_Intelligenz += 1; Values.Gekaufte_stats += 1; Values.preis_Stats += 15 * Values.Gekaufte_stats;
            Attribut();
        }
        private void Minus_Intelligenz_Click(object sender, RoutedEventArgs e)
        {
            Values.preis_Stats -= 15 * Values.Gekaufte_stats;
            Values.add_Intelligenz -= 1; Values.Gekaufte_stats -= 1;
            Attribut();
        }
        private void Plus_Vitalität_Click(object sender, RoutedEventArgs e)
        {
            Values.add_Vitalität += 1; Values.Gekaufte_stats += 1; Values.preis_Stats += 15 * Values.Gekaufte_stats;
            Attribut();
        }
        private void Minus_Vitalität_Click(object sender, RoutedEventArgs e)
        {
            Values.preis_Stats -= 15 * Values.Gekaufte_stats;
            Values.add_Vitalität -= 1; Values.Gekaufte_stats -= 1;
            Attribut();
        }
        private void Plus_Glück_Click(object sender, RoutedEventArgs e)
        {
            Values.add_Glück += 1; Values.Gekaufte_stats += 1; Values.preis_Stats += 15 * Values.Gekaufte_stats;
            Attribut();
        }
        private void Minus_Glück_Click(object sender, RoutedEventArgs e)
        {
            Values.preis_Stats -= 15 * Values.Gekaufte_stats;
            Values.add_Glück -= 1; Values.Gekaufte_stats -= 1;
            Attribut();
        }
        private void Plus_Charisma_Click(object sender, RoutedEventArgs e)
        {
            Values.add_Charisma += 1; Values.Gekaufte_stats += 1; Values.preis_Stats += 15 * Values.Gekaufte_stats;
            Attribut();
        }
        private void Minus_Charisma_Click(object sender, RoutedEventArgs e)
        {
            Values.preis_Stats -= 15 * Values.Gekaufte_stats;
            Values.add_Charisma -= 1; Values.Gekaufte_stats -= 1;
            Attribut();
        }
        private void questinfo_Click(object sender, RoutedEventArgs e)
        {
            infoblock.Text = "Questgeber \r\n\r\nDer Questgeber befindet sich in der Taverne er hat einen Blauen Umhang an." +
                " \r\n\r\nBei Ihm kannst Du dir aussuchen gegen wen du Kämpfen möchtest oder den Zufall entscheiden lassen (Zufall gibt keine bessere Belohnung). ";
        }
        private void kampfinfo_Click(object sender, RoutedEventArgs e)
        {
            infoblock.Text = "Angreifen oder Blocken? \r\n\r\nAngreifen: Du greifst den Gegner an. \r\n\r\nBlocken:  " +
                "Du machst dich auf einen Angriff vom Gegner bereit. \r\n\r\nGegner: der kann entweder Blocken oder Angreifen" +
                " \r\n\r\nBeim Blocken wird der Angriffsschaden reduziert. Wenn die Blockstärke hoch genug ist, kann man keinen Schaden erhalten oder Verursachen.";
        }
        private void Ende_des_Kampfes_Click(object sender, RoutedEventArgs e)
        {
            infoblock.Text = "Sieg oder Niederlage? \r\n\r\nWenn die HP des Gegners bei 0 ist, ist der Kampf vorbei und Du hast gewonnen." +
                " \r\n\r\nWenn deine HP bei 0 ist, ist der Kampf vorbei und Du hast verloren. \r\n\r\nSieg: Du bekommst Drachnen und Kupfermünzen sowie EXP als Belohnung. ";
        }
        private void währung_Click(object sender, RoutedEventArgs e)
        {
            infoblock.Text = "Drachnen und Kupfermünzen \r\n\r\nDrachnen und Kupfermünzen sind die Heimische Währung. \r\n\r\n100 Kupfermünzen ergeben 1 Drachnen. ";
        }
        private void ladeninfo_Click(object sender, RoutedEventArgs e)
        {
            infoblock.Text = "Waffenladen und Trankhändlerin \r\n\r\nDer Waffenladen verkauft Rüstung und Waffen. Rüstungen und Waffen sind Klassen spezifisch angepasst. " +
                "(wird alle 3 erfolgreichen Kämpfe aus der Taverne neu aufgefüllt) \r\n\r\nEs gibt aber auch Dolche. Dolche sind nicht Klassen spezifisch und daher etwas schwacher." +
                " \r\n\r\nBei der Trankhändlerin kann man sich tränke kaufen die Lebenspunkte auffüllen können. (noch nicht im Spiel) ";
        }
        private void charinfo_Click(object sender, RoutedEventArgs e)
        {
            infoblock.Text = "Charakter \r\n\r\nBeim Charakter kannst Du deine Rüstung und Waffe sehen, falls du eine Besitzt." +
                " \r\n\r\nDu kannst auch dort deine Attribute verbessern das kostet aber. \r\n\r\nDein Meister ist auf der rechten Seite und Er trainiert dich in Waffenkunst und Rüstungshandhabung. ";
        }
        private void attributinfo_Click(object sender, RoutedEventArgs e)
        {
            infoblock.Text = "Klassen Spezifische Attribute: \r\n\r\nStärke ist für den Krieger \r\n\r\nGeschick ist für Kundschafter \r\n\r\nIntelligenz ist für den Magier. " +
                "\r\n\r\nJe höher dein Wert, desto mehr Schaden machst du. \r\n\r\nDer Rüstungswert kann nur durch die Rüstung erhöht werden. Die Rüstung reduziert den verursachten Schaden vom Gegner";
        }
        private void attributinfo2_Click(object sender, RoutedEventArgs e)
        {
            infoblock.Text = "Allgemeine Attribute: \r\n\r\nVitalität ist für dein Leben da je höher der Wert, desto mehr Leben hast Du. " +
                "\r\n\r\nWenn Du viel Glück hast, kannst du bessere Rüstungen und Waffen sowie das du bessere Chancen hast mehr schaden zu verursachen und die Chance auf bessere Belohnung nach einem erfolgreichen Kampf. " +
                "\r\n\r\nDu hast Charisma? Dann bekommst du mehr Belohnung und mehr Erfahrung nach einem erfolgreichen Kampf. ";
        }
    }

    /*Stand 18.11.2024
     * Heute wurde Charatere und Taverne sowie Questgeber erstellt und eingearbeitet = Hauptbildschirm und Charakter Auswahl zusammen geführt.
     * Innerhalb dieser Woche Wird noch weiter Bilder Wie Dorf und Arena erstellt. Zudem noch einige Waffen aber als Sammlung erstellt. So das es ein Bild ist aber durch das man per position wechseln kann
     * Dorf muss erstellt werden Taverne und Questgeber Image wurden festgehalten.Was noch fehlt sind Waffen und Rüstungshändler ein bauen und erstellen. 
     * Zudem die Speicherung muss inplementiert werden.
     * 
     * Stand 25.11.2024
     * letzte Woche wurde Dorf, Waffenladen und Trankhändler Grafisch erstellt
     * die Bilder wurden eingebaut und es wurde die Taskleiste erstellt sowie die fixierung der jeweiligen Button Positionen die sich an die Fenster Größe dran anpasst.
     * problem mit Microsoft Desinger (ging am 25.11.2024 nicht beim eigenen Profil testen an anderen Tagen ggf anderen PC/Profil)
     * Ziel bis nächste Woche einschließlich Montag:
     * Speicherung, Questgaber und interaktion mit jeweiligen Händler.
     * Charakter_HUD erstellen und ggf einbauen mit den jeweiligen änderungen der Ausrüstungen
     * 
     * Stand 09.12.2024
     * der Charakter Wurde eingearbeitet und die Stats werden erfolgreich vergeben an die Klasse die man wählt.
     * Barkepper und Questgeber sind eingebunden. das Guthaben passt auch soweit
     * der Waffenhändler braucht eine erweiterung im Verkauf das er 2 Angebote hat die sich nach jedem 2 Kapmf ändert
     * die Trankhändlerin bekommt tranke die angriffe, Leben, stat punkte temporär erhöhen und einen trank der den erhalt von geld und exp erhöht
     * Fehlt: Statpunkte erwerben, Dungeon, Quest, Barkeeper wiki
     * 
     * Stand 10.12.2024
     * der kauf der Attributspunkte ist erfolgreich und zusätzlich ist das Char_HUD mit aktiv während dem kauf das man sieht wieviel geld man hat
     * 
     * Stand 16.12.2024
     * der Preis der Attributspunkte wurd korrigiert und passt jetz es wurde sogar so beabeitet das es ein Fehler raus gibt falls man den Kauf abschließen möchte aber kein Punkt verteilt hat.
     * Gegner algorithmus wurde ein gebaut muss nur der neue roll nach abschluss vom kampf passieren und die bearbeitung mit ProgressBar weiter gemacht werden für die hp anzeige das die richtig geht
     * 
     * Stand 17.12.2024
     * Der Kampf Verlauf fast reibungslos bis zum Sieg oder Niederlage
     * berechnung des Sieges vollendet fehlt nur noch übergabe/auszahlung und lvl anpassung
     * 
     * Stand 18.12.2024
     * Der kampfverlauf wurden die restlichen probleme gefixt und die auszahlung und ep verteilung klappt
     * die Ep und der ep balken funktionieren reibungslos
     * 
     * Stand 19.12.2024
     * das Kaufen vom Pferd ist erfolgreich eingebaut und es Fehlt die überprüfung ob die Schaden erhöhung auch funktioniert
     * das grobe skript für Dungeon wurde erstellt mit plan und festgelegten Gegner
     * der Dungeon ist soweit fertig was fehlt sind bug finding und bug fix evt muss noch der Dungeon etwas an Schwierigkeit angepasst werden aber an sich ist es ja ne herausforderung
     * 
     * Plan für die Ferien:
     * Waffenladen bietet Rüstung und Waffen an.
     * Rüstung gibt bonus stats und Rüstung erhöhung
     * Waffen geben stats und grundschaden
     * Trankhändlerin verkauft Tränke
     * es können nur 3 unterschiedliche tranke im besitz geben (tuble string,int (name,anzahl))
     * die Tränke kann man im kampf verwenden, nach verwendung vom trank ist Gegner aktion
     * 
     * Stand 22.12.2024 und 21.12.2024
     * Der einbau mit Waffen und Rüstungen hatten erfolge und fehlschläge da die idee erst war das man eine ausgerüstete Waffen bzw Rüstung und je zwei weitere Slots hätte 
     * hat kam schon das problem mit den sichern der informationen es hat erst geklappt das ein freier slot belegt wurde aber es war die selbe wie die ausgerüstete.
     * die umsetzung falls sie geklappt hätte wäre eine verschachtelte if abfrage mit welche slots alles belegt sind aber soweit kam es nicht.
     * die veränderung wurde einfach gehalten das man Waffen und Rüstung Meistern kann um somit den Schaden und die Verteidigung zu verbessern zu wurden die Kauf buttons
     * beim Händler und Meisterung werden frei wenn man genug geld hat
     * 
     * Stand 07.01.2025
     * Save und Load eingebaut
     * Barkeeper hat seine Info
     * 
     */
}