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); } } }
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(); }
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(); }
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(); }