示例#1
0
        public void Renderuj()
        {
            tlo.CopyTo(BackBuffer, 0);
            CzyscZBuffor();

            foreach (WavefrontObj model in Swiat)
            {
                Vector3D[] modelRzut     = Math3D.RzutPerspektywiczny(model.VertexCoords, Odleglosc, srodek, Kamera);
                Vector3D   srodekObiektu = model.VertexNormalsCoords.ZnajdzSrodek();

                if (model.Sciany == null || modelRzut == null || model.Renderowanie == null)
                {
                    continue;
                }

                foreach (Sciana sciana in model.ScianyTrojkatne)
                {
                    if (modelRzut[sciana.Vertex[0]].Z <= MinOdleglosc && modelRzut[sciana.Vertex[1]].Z <= MinOdleglosc &&
                        modelRzut[sciana.Vertex[2]].Z <= MinOdleglosc)
                    {
                        continue;
                    }

                    var gradient = Swiat.IndexOf(model) != ZrodloSwiatlaIndeks ? new double[]
                    {
                        Renderowanie.Jasnosc(ZrodloSwiatla, model.VertexNormalsCoords[sciana.VertexNormal[0]], srodekObiektu),
                        Renderowanie.Jasnosc(ZrodloSwiatla, model.VertexNormalsCoords[sciana.VertexNormal[1]], srodekObiektu),
                        Renderowanie.Jasnosc(ZrodloSwiatla, model.VertexNormalsCoords[sciana.VertexNormal[2]], srodekObiektu),
                    } : new double[] { 1, 1, 1 };

                    var obszar = new Vector3D[]
                    {
                        modelRzut[sciana.Vertex[0]],
                        modelRzut[sciana.Vertex[1]],
                        modelRzut[sciana.Vertex[2]],
                    };

                    var tekstura = sciana.VertexTexture[0] >= 0 && sciana.VertexTexture[1] >= 0 && sciana.VertexTexture[2] >= 0 ?
                                   new Vector2D[]
                    {
                        model.VertexTextureCoords[sciana.VertexTexture[0]],
                        model.VertexTextureCoords[sciana.VertexTexture[1]],
                        model.VertexTextureCoords[sciana.VertexTexture[2]],
                    } : new Vector2D[] { new Vector2D(0, 0), new Vector2D(0, 0), new Vector2D(0, 0) };

                    model.Renderowanie.RenderujTrojkat(obszar, gradient, tekstura, zBufor);
                }
            }
        }
示例#2
0
        private void btnUzyjMikstury_Click(object sender, EventArgs e)
        {
            MiksturaLeczenia mikstura = (MiksturaLeczenia)cboMikstury.SelectedItem;

            _gracz.BiezacePunktyZdrowia = (_gracz.BiezacePunktyZdrowia + mikstura.LiczbaPunktowLeczenia);

            if (_gracz.BiezacePunktyZdrowia > _gracz.MaksymalnePunktyZdrowia)
            {
                _gracz.BiezacePunktyZdrowia = _gracz.MaksymalnePunktyZdrowia;
            }

            foreach (PrzedmiotInwentarza przedmiotInwentarza in _gracz.Inwentarz)
            {
                if (przedmiotInwentarza.Szczegoly.ID == mikstura.ID)
                {
                    przedmiotInwentarza.Ilosc--;
                    break;
                }
            }

            rbtWiadomosci.Text += "Wypiłeś miksturę o nazwie " + mikstura.Nazwa + Environment.NewLine;

            int obrazeniaZadaneGraczowi = GeneratorLiczbPseudolosowych.LiczbaPomiedzy(0, _biezacyPotwor.MaksymalneObrazenia);

            rbtWiadomosci.Text += _biezacyPotwor.Nazwa + " zadał Ci " + obrazeniaZadaneGraczowi.ToString() + " punktów obrażeń." + Environment.NewLine;

            _gracz.BiezacePunktyZdrowia -= obrazeniaZadaneGraczowi;

            if (_gracz.BiezacePunktyZdrowia <= 0)
            {
                rbtWiadomosci.Text += "Zostałeś zabity przez " + _biezacyPotwor.Nazwa + Environment.NewLine;
                IdzDo(Swiat.LokalizacjaPoID(Swiat.ID_LOKALIZACJI_DOM));
                _gracz.BiezacePunktyZdrowia = _gracz.MaksymalnePunktyZdrowia;
            }

            lblPunktyZdrowia.Text = _gracz.BiezacePunktyZdrowia.ToString();
            ZaktualizujSpisInwentarzaWInterfejsieUzytkownika();
            ZaktualizujSpisMiskturWInterfejsieUzytkownika();
            PrzewinNaDolOkienkaWiadomosci();
        }
示例#3
0
        private void IdzDo(Lokalizacja nowaLokalizacja)
        {
            if (!_gracz.PosiadaWymaganyPrzedmiotDoWejscia(nowaLokalizacja))
            {
                rbtWiadomosci.Text += "Musisz posiadać " + nowaLokalizacja.PrzedmiotWymaganyDoWejscia.Nazwa + ", aby móc przejść do tej lokalizacji." + Environment.NewLine;
                return;
            }

            _gracz.BiezacaLokalizacja = nowaLokalizacja;

            btnPolnoc.Visible   = (nowaLokalizacja.LokalizacjaNaPolnoc != null);
            btnWschod.Visible   = (nowaLokalizacja.LokalizacjaNaWschod != null);
            btnPoludnie.Visible = (nowaLokalizacja.LokalizacjaNaPoludnie != null);
            btnZachod.Visible   = (nowaLokalizacja.LokalizacjaNaZachod != null);

            rbtLokalizacja.Text  = nowaLokalizacja.Nazwa + Environment.NewLine;
            rbtLokalizacja.Text += nowaLokalizacja.Opis + Environment.NewLine;

            _gracz.BiezacePunktyZdrowia = _gracz.BiezacePunktyZdrowia;

            lblPunktyZdrowia.Text = _gracz.BiezacePunktyZdrowia.ToString();

            if (nowaLokalizacja.DostepneZadanieTegoMiejsca != null)
            {
                bool graczMaJuzZadanie        = _gracz.MaJuzToZadanie(nowaLokalizacja.DostepneZadanieTegoMiejsca);
                bool graczWykonalJuzToZadanie = _gracz.WykonalJuzToZadanie(nowaLokalizacja.DostepneZadanieTegoMiejsca);

                if (graczMaJuzZadanie)
                {
                    if (!graczWykonalJuzToZadanie)
                    {
                        bool graczPosiadaWszystkiePrzedmiotyDoWykonaniaZadania = _gracz.PosiadaWszystkiePrzedmiotyDoWykonaniaZadania(nowaLokalizacja.DostepneZadanieTegoMiejsca);

                        if (graczPosiadaWszystkiePrzedmiotyDoWykonaniaZadania)
                        {
                            rbtWiadomosci.Text += Environment.NewLine;
                            rbtWiadomosci.Text += "Gratulacje! Wykonałeś zadanie o nazwie " + nowaLokalizacja.DostepneZadanieTegoMiejsca.Nazwa + "." + Environment.NewLine;

                            _gracz.UsunPrzedmiotyWymaganeDoWykonaniaZadania(nowaLokalizacja.DostepneZadanieTegoMiejsca);

                            rbtWiadomosci.Text += "Otrzymałeś: " + Environment.NewLine;
                            rbtWiadomosci.Text += nowaLokalizacja.DostepneZadanieTegoMiejsca.PunktyDoswiadczeniaDoZdobycia.ToString() + " punktów doświadczenia" + Environment.NewLine;
                            rbtWiadomosci.Text += nowaLokalizacja.DostepneZadanieTegoMiejsca.ZlotoDoZdobycia.ToString() + " złota" + Environment.NewLine;
                            rbtWiadomosci.Text += "1 " + nowaLokalizacja.DostepneZadanieTegoMiejsca.PrzedmiotNagroda.Nazwa + Environment.NewLine + Environment.NewLine;

                            _gracz.DodajPunktyDoswiadczenia(nowaLokalizacja.DostepneZadanieTegoMiejsca.PunktyDoswiadczeniaDoZdobycia);
                            _gracz.Zloto += nowaLokalizacja.DostepneZadanieTegoMiejsca.ZlotoDoZdobycia;
                            _gracz.DodajPrzedmiotDoInwentarza(nowaLokalizacja.DostepneZadanieTegoMiejsca.PrzedmiotNagroda);
                            _gracz.OznaczZadanieJakoUkonczone(nowaLokalizacja.DostepneZadanieTegoMiejsca);
                        }
                    }
                }
                else
                {
                    rbtWiadomosci.Text += "Otrzymałeś zadanie o nazwie:" + Environment.NewLine + nowaLokalizacja.DostepneZadanieTegoMiejsca.Nazwa + "." + Environment.NewLine;
                    rbtWiadomosci.Text += nowaLokalizacja.DostepneZadanieTegoMiejsca.Opis + Environment.NewLine;
                    rbtWiadomosci.Text += "Aby ukończyć to zadanie, powróć tu z:" + Environment.NewLine;
                    foreach (PrzedmiotDoWykonaniaZadania przedmiotDoWykonaniaZadania in nowaLokalizacja.DostepneZadanieTegoMiejsca.PrzedmiotyDoWykonaniaZadania)
                    {
                        if (przedmiotDoWykonaniaZadania.Ilosc == 1)
                        {
                            rbtWiadomosci.Text += " - " + przedmiotDoWykonaniaZadania.Ilosc.ToString() + " " + przedmiotDoWykonaniaZadania.Szczegoly.Nazwa + Environment.NewLine;
                        }
                        else
                        {
                            rbtWiadomosci.Text += " - " + przedmiotDoWykonaniaZadania.Ilosc.ToString() + " " + przedmiotDoWykonaniaZadania.Szczegoly.NazwaMnoga + Environment.NewLine;
                        }
                    }
                    rbtWiadomosci.Text += Environment.NewLine;
                    PrzewinNaDolOkienkaWiadomosci();

                    _gracz.Zadania.Add(new ZadanieGracza(nowaLokalizacja.DostepneZadanieTegoMiejsca));
                }
            }

            if (nowaLokalizacja.PotworZyjacyWTymMiejscu != null)
            {
                rbtWiadomosci.Text += "Widzisz " + nowaLokalizacja.PotworZyjacyWTymMiejscu.Nazwa + "a." + Environment.NewLine;

                Potwor typowyPotwor = Swiat.PotworPoID(nowaLokalizacja.PotworZyjacyWTymMiejscu.ID);
                _biezacyPotwor = new Potwor(typowyPotwor.ID, typowyPotwor.Nazwa, typowyPotwor.MaksymalneObrazenia, typowyPotwor.PunktyDoswiadczeniaDoZdobycia, typowyPotwor.ZlotoDoZdobycia, typowyPotwor.BiezacePunktyZdrowia, typowyPotwor.MaksymalnePunktyZdrowia);

                foreach (PrzedmiotLupu przedmiotLupu in typowyPotwor.TabelaLupu)
                {
                    _biezacyPotwor.TabelaLupu.Add(przedmiotLupu);
                }

                cboBronie.Visible       = true;
                cboMikstury.Visible     = true;
                btnUzyjBroni.Visible    = true;
                btnUzyjMikstury.Visible = true;
            }
            else
            {
                _biezacyPotwor = null;

                cboBronie.Visible       = false;
                cboMikstury.Visible     = false;
                btnUzyjBroni.Visible    = false;
                btnUzyjMikstury.Visible = false;
            }

            ZaktualizujStatystykiGracza();
            ZaktualizujSpisInwentarzaWInterfejsieUzytkownika();
            ZaktualizujSpisZadanWInterfejsieUzytkownika();
            ZaktualizujSpisBroniWInterfejsieUzytkownika();
            ZaktualizujSpisMiskturWInterfejsieUzytkownika();
        }
示例#4
0
        private void btnUzyjBroni_Click(object sender, EventArgs e)
        {
            Bron biezacaBron = (Bron)cboBronie.SelectedItem;

            int obrazeniaZadaniePotworowi = GeneratorLiczbPseudolosowych.LiczbaPomiedzy(biezacaBron.MinimalneObrazenia, biezacaBron.MaksymalneObrazenia);

            _biezacyPotwor.BiezacePunktyZdrowia -= obrazeniaZadaniePotworowi;

            rbtWiadomosci.Text += "Zadałeś potworowi " + _biezacyPotwor.Nazwa + " " + obrazeniaZadaniePotworowi.ToString() + " punktów obrażeń." + Environment.NewLine;

            if (_biezacyPotwor.BiezacePunktyZdrowia <= 0)
            {
                rbtWiadomosci.Text += "Pokonałeś potwora " + _biezacyPotwor.Nazwa + "." + Environment.NewLine;

                _gracz.DodajPunktyDoswiadczenia(_biezacyPotwor.PunktyDoswiadczeniaDoZdobycia);
                rbtWiadomosci.Text += "Otrzymałeś " + _biezacyPotwor.PunktyDoswiadczeniaDoZdobycia.ToString() + " punktów doświadczenia." + Environment.NewLine;

                _gracz.Zloto       += _biezacyPotwor.ZlotoDoZdobycia;
                rbtWiadomosci.Text += "Otrzymałeś " + _biezacyPotwor.ZlotoDoZdobycia.ToString() + " złoto" + Environment.NewLine;

                List <PrzedmiotInwentarza> przedmiotyLupu = new List <PrzedmiotInwentarza>();

                foreach (PrzedmiotLupu przedmiotLupu in _biezacyPotwor.TabelaLupu)
                {
                    if (GeneratorLiczbPseudolosowych.LiczbaPomiedzy(1, 100) <= przedmiotLupu.ProcentowaSzansaZdobyciaPrzedmiotu)
                    {
                        przedmiotyLupu.Add(new PrzedmiotInwentarza(przedmiotLupu.Szczegoly, 1));
                    }
                }

                if (przedmiotyLupu.Count == 0)
                {
                    foreach (PrzedmiotLupu przedmiotLupu in _biezacyPotwor.TabelaLupu)
                    {
                        if (przedmiotLupu.JestPrzedmiotemDomyslnym)
                        {
                            przedmiotyLupu.Add(new PrzedmiotInwentarza(przedmiotLupu.Szczegoly, 1));
                        }
                    }
                }

                foreach (PrzedmiotInwentarza przedmiotInwentarza in przedmiotyLupu)
                {
                    _gracz.DodajPrzedmiotDoInwentarza(przedmiotInwentarza.Szczegoly);

                    if (przedmiotInwentarza.Ilosc == 1)
                    {
                        rbtWiadomosci.Text += "Zdobyłeś " + przedmiotInwentarza.Ilosc.ToString() + " " + przedmiotInwentarza.Szczegoly.Nazwa + Environment.NewLine;
                    }
                    else
                    {
                        rbtWiadomosci.Text += "Zdobyłeś " + przedmiotInwentarza.Ilosc.ToString() + " " + przedmiotInwentarza.Szczegoly.NazwaMnoga + Environment.NewLine;
                    }
                }

                ZaktualizujStatystykiGracza();
                ZaktualizujSpisInwentarzaWInterfejsieUzytkownika();
                ZaktualizujSpisBroniWInterfejsieUzytkownika();
                ZaktualizujSpisMiskturWInterfejsieUzytkownika();

                rbtWiadomosci.Text += Environment.NewLine;

                IdzDo(_gracz.BiezacaLokalizacja);
            }
            else
            {
                int obrazeniaZadaneGraczowi = GeneratorLiczbPseudolosowych.LiczbaPomiedzy(0, _biezacyPotwor.MaksymalneObrazenia);

                rbtWiadomosci.Text += _biezacyPotwor.Nazwa + " zadał Ci " + obrazeniaZadaneGraczowi.ToString() + " punktów obrażeń." + Environment.NewLine;

                _gracz.BiezacePunktyZdrowia -= obrazeniaZadaneGraczowi;

                lblPunktyZdrowia.Text = _gracz.BiezacePunktyZdrowia.ToString();

                if (_gracz.BiezacePunktyZdrowia <= 0)
                {
                    rbtWiadomosci.Text += "Zostałeś zabity przez " + _biezacyPotwor.Nazwa + Environment.NewLine;
                    IdzDo(Swiat.LokalizacjaPoID(Swiat.ID_LOKALIZACJI_DOM));
                    _gracz.BiezacePunktyZdrowia = _gracz.MaksymalnePunktyZdrowia;
                }
            }
            PrzewinNaDolOkienkaWiadomosci();
        }