Exemplo n.º 1
0
        private void Edytuj_Click(object sender, EventArgs e)             //przycisk edycji postaci - aktualizuje dane
        {
            if (listaPos.Count == 0 || ListaPostaci.SelectedItem == null) //sprawdzenie czy wybrano postac z listy
            {
                MessageBox.Show("Brak postaci do edycji!"); return;
            }
            bool czydobre = Sprawdz(); //sprawdzenie czy pola są uzupełnione odpowiednimi wartosciami

            if (!czydobre)
            {
                return;
            }
            Postać edytowana = listaPos[ListaPostaci.SelectedIndex]; //aktualizacja danych

            edytowana.Imię         = ImięPos.Text;
            edytowana.Level        = Int32.Parse(LevelPos.Text);
            edytowana.Opis         = OpisPos.Text;
            edytowana.klasaPostaci = WybórKlasaPostaci.SelectedItem.ToString();
            edytowana.Moc          = listaKlas[WybórKlasaPostaci.SelectedIndex].moc;
            edytowana.Obrona       = listaKlas[WybórKlasaPostaci.SelectedIndex].obrona;
            edytowana.Udźwig       = listaKlas[WybórKlasaPostaci.SelectedIndex].udźwig;
            edytowana.ZwiekszWartosc(edytowana.Level);
            ListaPostaci.Items[ListaPostaci.SelectedIndex] = edytowana.Imię; //jesli zmienione imie - jego aktualizacja w comboboxie (+ jesli zmieniony lvl, to pola mocy obrony udzwigu tez sie zaktualizuja)
            if (wybrany != null && wybrany.ID == edytowana.ID)               //jesli edytowana postac byla wczesniej wybrana i wyswietlona w oknie glownym to wyswietl komunikat o zmianie (info w oknie głownym sie nie zmieni dopoki jeszcze raz nie wybierze sie przycisku wyboru postaci)
            {
                MessageBox.Show("Uwaga: zmieniono dane wybranej wcześniej postaci." + Environment.NewLine + "Jeśli chcesz zaktualizować te dane w oknie głównym, kliknij ponownie \"Wybierz postać\" (bieżące ustawienia w oknie głównym zostaną usunięte).");
            }
        }
Exemplo n.º 2
0
        public void WczytajPostać(Postać nowa) //metoda dodająca postac z okna głównego do listy postaci w przypadku wczytywania gotowej postaci z pliku
        {
            Postać nowaPostać = nowa;

            listaPos.Add(nowaPostać);
            ListaPostaci.Items.Add(nowaPostać.Imię);
        }
Exemplo n.º 3
0
        private void Odczyt_Click(object sender, EventArgs e)
        {
            int          size   = -1;
            DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.

            if (result == DialogResult.OK)                      // Test result.
            {
                string   file = openFileDialog1.FileName;
                Encoding enc  = Encoding.GetEncoding("Windows-1250");//zmiana kodowania do prawidlowego wczytania polskich znakow
                try
                {
                    if (listaPos != null) //wczytujac plik, czyscimy textboxy itd
                    {
                        ListaPostaci.DropDownHeight = 106;
                        WyczyśćTextBoxyiComboboxy();
                    }
                    List <Postać> tmp       = new List <Postać>(listaPos);  //lista przechowujaca stan sprzed dodawania postaci
                    string[]      filelines = File.ReadAllLines(file, enc); //kazda linia jest kolejnym elementem tablicy, jedna linia-jedna postac
                    size = filelines.Length;
                    if (size == 0)
                    {
                        MessageBox.Show("Pusty plik!"); return;
                    }
                    for (int i = 0; i < size; i++)               //petla po tablicy z liniami pliku
                    {
                        string[] dane = filelines[i].Split(';'); //tablica przechowujaca kolejne dane przedmiotow, dzieli po ';'
                        if (dane.Length != 7)
                        {
                            MessageBox.Show("Nieprawidłowy format pliku!"); return;
                        }
                        bool czydobre = SprawdzPlik(dane);
                        if (!czydobre)
                        { //jesli jakas postac jest zle zapisana w pliku - usun dotychczas dodane dane
                            listaPos = tmp;
                            ListaPostaci.Items.Clear();
                            for (int j = 0; j < listaPos.Count; j++)
                            {
                                ListaPostaci.Items.Add(listaPos[j].Imię);
                            }
                            ListaPostaci.DropDownHeight = 106;
                            return;
                        }
                        Postać nowy = new Postać(Id, dane[0], Int32.Parse(dane[1]), dane[2], dane[3], double.Parse(dane[4]), double.Parse(dane[5]), double.Parse(dane[6]));
                        Id++;
                        ListaPostaci.Items.Add(dane[0]);
                        listaPos.Add(nowy);
                    }
                }
                catch (IOException)
                {
                    MessageBox.Show("Błąd odczytu pliku!");
                    return;
                }
            }
        }
Exemplo n.º 4
0
        private void ListaPostaci_SelectedIndexChanged(object sender, EventArgs e) //wybor elementu (postaci) z comboboxa i wyswietlenie go w textboxach
        {
            Postać wyswietlony = listaPos[ListaPostaci.SelectedIndex];

            ImięPos.Text           = wyswietlony.Imię;
            LevelPos.Text          = wyswietlony.Level.ToString();
            OpisPos.Text           = wyswietlony.Opis;
            WybórKlasaPostaci.Text = wyswietlony.klasaPostaci;
            MocPos.Text            = wyswietlony.Moc.ToString();
            ObronaPos.Text         = wyswietlony.Obrona.ToString();
            UdźwigPos.Text         = wyswietlony.Udźwig.ToString();
        }
Exemplo n.º 5
0
        public bool SprawdzPlik(string[] dane)
        {
            if (dane[0] == "" || dane[1] == "" || dane[2] == "" || dane[3] == "" || dane[4] == "" || dane[5] == "" || dane[6] == "")
            {
                MessageBox.Show("Brak wartości pola postaci!"); return(false);
            }
            if (dane[0].Length < 4 || dane[0].Length > 15)
            {
                MessageBox.Show("Nieprawidłowa długość imienia!"); return(false);
            }
            int result;

            if (!Int32.TryParse(dane[1], out result))
            {
                MessageBox.Show("Level musi być liczbą!"); return(false);
            }
            if (Int32.Parse(dane[1]) < 0 || Int32.Parse(dane[1]) > 99)
            {
                MessageBox.Show("Niepoprawny level! (0-99)"); return(false);
            }
            if (dane[2].Length < 3 || dane[2].Length > 100)
            {
                MessageBox.Show("Długość opisu spoza zakresu (3-100 znaków)!"); return(false);
            }
            if (dane[3] != "Tropiciel" && dane[3] != "Mag" && dane[3] != "Wojownik")
            {
                MessageBox.Show("Niepoprawna klasa postaci!"); return(false);
            }
            double result2;

            if (!double.TryParse(dane[4], out result2) || !double.TryParse(dane[5], out result2) || !double.TryParse(dane[6], out result2))
            {
                MessageBox.Show("Nieprawidłowa wartość mocy/obrony/udźwigu!"); return(false);
            }
            int id = 0;

            if (dane[3] == "Tropiciel")
            {
                id = 1;
            }
            if (dane[3] == "Wojownik")
            {
                id = 2;
            }                                                                                                                                            //w zaleznosci od wybranej klasy, bierzemy jej wartosci bazowe mocy/obrony/udzwigu do stworzenia nowej postaci
            Postać nowy = new Postać(0, dane[0], Int32.Parse(dane[1]), dane[2], dane[3], listaKlas[id].moc, listaKlas[id].obrona, listaKlas[id].udźwig); //tworzymy nową postac na podstawie wartosci z tablicy i porownujemy moc/obrone/udzwig jakie powinny być na postawie levelu postaci a wartosciami z pliku, czy sa takie same

            nowy.ZwiekszWartosc(Int32.Parse(dane[1]));
            if ((nowy.Moc.ToString() != dane[4]) || (nowy.Obrona.ToString() != dane[5]) || (nowy.Udźwig.ToString() != dane[6]))
            {
                MessageBox.Show("Niepoprawne wartości mocy/obrony/udźwigu w zależności od levelu postaci!"); return(false);
            }
            return(true);
        }
Exemplo n.º 6
0
 private void WybierzPos_Click(object sender, EventArgs e) //przycisk wyboru postaci - user wybiera postać z listy (combobox), która jest nastepnie wysyłana i wyświetlana w oknie głównym
 {
     if (listaPos.Count == 0)
     {
         MessageBox.Show("Brak postaci na liście! Nie ma z czego wybierać!"); return;
     }
     if (ListaPostaci.SelectedItem == null)
     {
         MessageBox.Show("Wybierz postać z listy!"); return;
     }
     wybrany = listaPos[ListaPostaci.SelectedIndex];
     //string text = (nowy.Imię + ';' + nowy.Level.ToString() + ';' + nowy.Opis + ';' + nowy.klasaPostaci + ';' + nowy.Moc.ToString() + ';' + nowy.Obrona.ToString() + ';' + nowy.Udźwig.ToString());
     this.mainForm.Wybrana = wybrany;
 }
Exemplo n.º 7
0
        private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            string name = saveFileDialog1.FileName;
            string text = "";

            string[] tab = new string[listaPos.Count];

            for (int i = 0; i < listaPos.Count; i++)
            {
                Postać nowy = listaPos[i];
                text   = (nowy.Imię + ';' + nowy.Level.ToString() + ';' + nowy.Opis + ';' + nowy.klasaPostaci + ';' + nowy.Moc.ToString() + ';' + nowy.Obrona.ToString() + ';' + nowy.Udźwig.ToString());
                tab[i] = text;
            }
            File.WriteAllLines(name, tab, Encoding.UTF8); //zapis do pliku z odpowiednim kodowaniem (by przy otwieraniu pliku były polskie znaki)
        }
Exemplo n.º 8
0
        private void StwórzPostać_Click(object sender, EventArgs e) //przycisk tworzenia postaci
        {                                                           //Postać(pola: ID, Imię, lvl, Moc, Obrona, Opis, Udźwig, klasaPostaci)
            bool czydobre = Sprawdz();

            if (!czydobre)
            {
                return;
            }                         //sprawdzenie czy podane wartosci sa prawidlowe, jesli nie-zakoncz działanie
            string imię   = ImięPos.Text;
            int    lvl    = Int32.Parse(LevelPos.Text);
            string opis   = OpisPos.Text;
            string klasa  = WybórKlasaPostaci.SelectedItem.ToString(); //do zmiennych lokalnych przypisujemy wartosci wprowadzone/wybrane przez użytkownika
            double moc    = listaKlas[WybórKlasaPostaci.SelectedIndex].moc;
            double obrona = listaKlas[WybórKlasaPostaci.SelectedIndex].obrona;
            double udźwig = listaKlas[WybórKlasaPostaci.SelectedIndex].udźwig; //bazowe wartosci pochodzace z klas postaci
            // MessageBox.Show(moc.ToString(), obrona.ToString());
            Postać nowaPostać = new Postać(Id, imię, lvl, opis, klasa, moc, obrona, udźwig);

            nowaPostać.ZwiekszWartosc(lvl); //wywołanie metody zwiekszajacej bazowe wartosci na podstawie lvl
            listaPos.Add(nowaPostać);
            ListaPostaci.Items.Add(imię);
            Id++;
        }
        public bool SprawdzDane(Postać nowa, List <Przedmiot> lista, string[] dane)
        {
            double udzwig = 0;
            double moc    = nowa.Moc;
            double obrona = nowa.Obrona; //zmienne opisujące postac

            for (int i = 0; i < lista.Count; i++)
            {
                udzwig += lista[i].Waga;    //waga wszystkich wybranych przedmiotow
                if (lista[i].Typ == "broń") //jesli typ = bron, zwiekszamy moc na podstawie bonusu. w przeciwnym razie obrone
                {
                    moc += lista[i].Bonus;
                }
                else
                {
                    obrona += lista[i].Bonus;
                }
            }

            if (lista.Count.ToString() != dane[1])
            {
                MessageBox.Show("Różna ilość przedmiotów!"); return(false);
            }
            string text = (udzwig.ToString() + "/" + nowa.Udźwig.ToString());

            if (text != dane[2])
            {
                MessageBox.Show("Różna wartość udźwigu!"); return(false);
            }
            string text2 = (moc.ToString() + " ; " + obrona.ToString());

            if (text2 != dane[3])
            {
                MessageBox.Show("Różna wartość mocy/obrony!"); return(false);
            }
            return(true);
        }
        private void Wczytaj_Click(object sender, EventArgs e) //odczyt gotowej postaci z pliku + "dostawa" czyli wczytanie aktualnego stanu sklepu(listy przedmiotow z okna przedmiotow)
        {
            int          size   = -1;
            DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.

            if (result == DialogResult.OK)                      // Test result.
            {
                string   file = openFileDialog1.FileName;
                Encoding enc  = Encoding.GetEncoding("Windows-1250");//zmiana kodowania do prawidlowego wczytania polskich znakow
                try
                {
                    if (Info.Text != "") //wczytujac plik, usuwamy wszystkie dotychczasowe dane w oknie gł - nadpisanie danych
                    {
                        Info.Text = "";
                        Wyczyść();
                    }
                    string[] filelines = File.ReadAllLines(file, enc); //kazda linia jest kolejnym elementem tablicy
                    size = filelines.Length;
                    if (size == 0 || size < 4)
                    {
                        MessageBox.Show("Zły format pliku!"); return;
                    }
                    string[] dane = filelines[0].Split(';'); //tablica przechowujaca kolejne dane przedmiotow (1 linia pliku), dzieli po ';'
                    if (dane.Length != 7)
                    {
                        MessageBox.Show("Nieprawidłowy format pliku!"); return;
                    }
                    if (!lista_postaci.SprawdzPlik(dane))
                    {
                        return;
                    }                    //sprawdzamy info o postaci z pliku za pomoca metody z okna postaci

                    if (nowy == null)    //jeśli od razu odpalamy wczytywanie, bez wczesniejszego wyboru postaci, musimy stworzyć jakąkolwiek postać żeby nie była z wartością null
                    {
                        nowy = new Postać(0, "Arya", 10, "przykładowy opis", "Tropiciel", 30, 30, 30);
                    }
                    nowy.Imię = dane[0]; nowy.Level = Int32.Parse(dane[1]); nowy.Opis = dane[2];  nowy.klasaPostaci = dane[3]; nowy.Moc = double.Parse(dane[4]); nowy.Obrona = double.Parse(dane[5]); nowy.Udźwig = double.Parse(dane[6]);
                    Info.Text = ("Imię: " + nowy.Imię + Environment.NewLine + "Level: " + nowy.Level.ToString() + Environment.NewLine + "Opis: " + nowy.Opis + Environment.NewLine + "Klasa postaci: " + nowy.klasaPostaci + Environment.NewLine + "Moc: " + nowy.Moc.ToString() + Environment.NewLine + "Obrona: " + nowy.Obrona.ToString() + Environment.NewLine + "Udźwig: " + nowy.Udźwig.ToString());

                    for (int i = 4; i < size; i++)                //petla po tablicy z liniami pliku, licznik 'i' bedzie takze ID kolejnych elementow
                    {
                        string[] danep = filelines[i].Split(';'); //tablica przechowujaca kolejne dane przedmiotow, dzieli po ';'
                        if (danep.Length != 7)
                        {
                            Info.Text = ""; MessageBox.Show("Nieprawidłowy format pliku!"); return;
                        }
                        if (!lista_przedmiotow.SprawdzPlik(danep))
                        {
                            Info.Text = ""; Wyczyść(); return;
                        }                                                                                //jak wyzej - sprawdzenie przedmiotow za pomoca metody z okna przedmiotow, jak ktorys zły to usun wszystkie dodane wczesniej dane
                        Przedmiot nowyPrz = new Przedmiot(i - 4, danep[0], danep[1], danep[2], danep[3], Int32.Parse(danep[4]), danep[5], Int32.Parse(danep[6]));
                        PrzedmiotyPostaci.Items.Add(danep[0]);
                        listaWybrPrz.Add(nowyPrz);
                    }

                    if (!SprawdzDane(nowy, listaWybrPrz, filelines))
                    {
                        Info.Text = ""; Wyczyść(); return;
                    }
                    IlośćPrzedmiotów.Text = filelines[1];
                    UdźwigPostaci.Text    = filelines[2];
                    MocIObrona.Text       = filelines[3];
                    for (int i = 0; i < listaWybrPrz.Count; i++) //jesli wszystkie przedmioty i reszta pliku sa ok, zmieniamy im unikalne id na postawie id z okna przedmiotow
                    {
                        listaWybrPrz[i].ID = lista_przedmiotow.Id;
                        lista_przedmiotow.Id++;
                        ListaWybranychPrzedmiotów.Items.Add(listaWybrPrz[i].Nazwa);
                    }

                    nowy.ID = lista_postaci.Id; //to samo z postacia
                    lista_postaci.Id++;

                    lista_przedmiotow.WyślijListę();                                                                   //wczytanie listy przedmiotow do sklepu
                    for (int i = 0; i < listaPrzedm.Count; i++)                                                        //wczytujemy do sklepu wszystkie dostepne przedmioty z wyjatkiem tych ostatnio wczytanych i dodanych do wybranych
                    {
                        ListaPrzedmiotówSklep.Items.Add(listaPrzedm[i].Nazwa + " [" + listaPrzedm[i].Wymagania + "]"); //dodajemy przedmioty do listboxa w zakładce sklepu (dostepne przedmioty w sklepie)
                    }
                    //dodajemy postac i przedmioty do odpowiednich okienek tylko gdy caly plik jest w porzadku
                    lista_postaci.WczytajPostać(nowy);                 //metoda - dodanie postaci do listy postaci w oknie postaci
                    lista_przedmiotow.WczytajPrzedmioty(listaWybrPrz); //metoda - dodanie wszystkich przedmiotow z listy wybranych przedmiotow do listy z okna przedmiotów
                }
                catch (IOException)
                {
                    MessageBox.Show("Błąd odczytu pliku!");
                    return;
                }
            }
        }