Eriugena - Eriugena.cs - I. část
Hlavní třída hry Eriugena.
C# .NET
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Audio;
using System.Collections.Generic;
using System;
namespace Eriugena
{
/*
*
* Hra vznikla primárně pro ITNetwork,
* prosím o nešíření kódu.
*
* Jakub Raida, 2022
*
*/
public class Eriugena : Game
{
private GraphicsDeviceManager _graphics;
private SpriteBatch _spriteBatch;
// Vstup
public KeyboardState Ovladani_Klavesnice { get; private set; }
public MouseState Ovladani_Mysi { get; private set; }
public bool Mys_Ma_Cil { get; private set; }
public int Mys_Cil_X { get; private set; }
public int Mys_Cil_Y { get; private set; }
// Rozměry okna
public int SirkaOkna { get; private set; }
public int VyskaOkna { get; private set; }
// Fonty
public SpriteFont Pismo_Normalni { get; private set; }
public SpriteFont Pismo_Pribeh { get; private set; }
// Grafické proměnné
public Texture2D[] Gfx_Pozadi { get; private set; }
public Texture2D Gfx_Eriugena_Vlevo { get; private set; }
public Texture2D Gfx_Eriugena_Vlevo_LN { get; private set; }
public Texture2D Gfx_Eriugena_Vlevo_PN { get; private set; }
public Texture2D Gfx_Eriugena_Vpravo { get; private set; }
public Texture2D Gfx_Eriugena_Vpravo_LN { get; private set; }
public Texture2D Gfx_Eriugena_Vpravo_PN { get; private set; }
public Texture2D Gfx_NPC_Smadny { get; private set; }
public Texture2D Gfx_NPC_Knihovnik { get; private set; }
public Texture2D Gfx_NPC_Kucharka { get; private set; }
public Texture2D Gfx_NPC_Opat { get; private set; }
public Texture2D Gfx_NPC_Prizrak { get; private set; }
public Texture2D Gfx_NPC_Sklepnik { get; private set; }
public int Eriugena_Casovac_Preslapnuti { get; private set; }
public Texture2D Gfx_Pergamen { get; private set; }
// NPC
public Npcka NPC_Smadny { get; private set; }
public Npcka NPC_Knihovnik { get; private set; }
public Npcka NPC_Kucharka { get; private set; }
public Npcka NPC_Opat { get; private set; }
public Npcka NPC_Prizrak { get; private set; }
public Npcka NPC_Sklepnik { get; private set; }
public int Faze_Dialogu_Smadny { get; private set; }
public int Faze_Dialogu_Knihovnik { get; private set; }
public int Faze_Dialogu_Kucharka { get; private set; }
public int Faze_Dialogu_Opat { get; private set; }
public int Faze_Dialogu_Prizrak { get; private set; }
public int Faze_Dialogu_Sklepnik { get; private set; }
public List<Npcka> NPC_List { get; private set; }
public int NPC_PolohaX { get; private set; }
public Npcka NPC_V_Mistnosti { get; private set; }
// Herní proměnné
public enum Otoceni { KoukatDoleva, KoukatDoprava };
public enum HorizontalniPohyb { Stat, JitVlevo, JitVpravo };
public enum VertikalniPohyb { Stat, JitNahoru, JitDolu };
public Otoceni Eriugena_Otoceni { get; private set; }
public HorizontalniPohyb Eriugena_HorizontalniPohyb { get; private set; }
public VertikalniPohyb Eriugena_VertikalniPohyb { get; private set; }
public int Eriugena_PoziceX { get; private set; }
public int Eriugena_PoziceY { get; private set; }
public int Eriugena_Mistnost { get; private set; }
public int Eriugena_Rychlost { get; private set; }
public string Eriugena_Nazev_Rychlosti { get; private set; }
public bool Eriugena_PreslapujeNaMiste { get; private set; }
public string[] Popisky_Mistnosti { get; private set; }
public bool Pribeh_Aktivovan { get; private set; }
public int Faze_Pribehu { get; private set; }
public int Dvojklik_Mezerniku { get; private set; }
public int Dvojklik_R { get; private set; }
public int Posun_Radku { get; private set; }
public bool Dialog_S_Postavou { get; private set; }
public bool PortalOtevren { get; private set; }
public enum StavHry { Intro, Hra, Outro }
public StavHry AktualniStavHry { get; private set; }
public Texture2D Gfx_Intro { get; private set; }
public Texture2D Gfx_Outro { get; private set; }
// Předměty
public List<Predmety> Predmety_List { get; private set; }
public Texture2D Gfx_Krucifix { get; private set; }
public Texture2D Gfx_Soudek { get; private set; }
public Texture2D Gfx_Korbel { get; private set; }
public Texture2D Gfx_Necro { get; private set; }
public Texture2D Gfx_Flaska { get; private set; }
public Texture2D Gfx_Voda { get; private set; }
public Texture2D Gfx_Sadlo { get; private set; }
public Texture2D Gfx_Houby { get; private set; }
public Texture2D Gfx_Jahody { get; private set; }
public Texture2D Gfx_Krucifix_Inv { get; private set; }
public Texture2D Gfx_Soudek_Inv { get; private set; }
public Texture2D Gfx_Korbel_Inv { get; private set; }
public Texture2D Gfx_Necro_Inv { get; private set; }
public Texture2D Gfx_Flaska_Inv { get; private set; }
public Texture2D Gfx_Voda_Inv { get; private set; }
public Texture2D Gfx_Sadlo_Inv { get; private set; }
public Texture2D Gfx_Houby_Inv { get; private set; }
public Texture2D Gfx_Jahody_Inv { get; private set; }
public Predmety Predmet_Krucifix { get; private set; }
public Predmety Predmet_Soudek { get; private set; }
public Predmety Predmet_Korbel { get; private set; }
public Predmety Predmet_Necro { get; private set; }
public Predmety Predmet_Flaska { get; private set; }
public Predmety Predmet_Voda { get; private set; }
public Predmety Predmet_Sadlo { get; private set; }
public Predmety Predmet_Houby { get; private set; }
public Predmety Predmet_Jahody { get; private set; }
// Pomocné proměnné
public int Pocitadlo { get; private set; }
public Random Nahoda { get; private set; }
public bool SicEtNon { get; private set; }
public bool ChozeniNPCSude { get; private set; }
// Hudba (ROYALTY FREE ZDROJ: https://www.youtube.com/watch?v=7_cwKd81z7Q)
public Song Podkres { get; private set; }
public Eriugena()
{
// Rozměry okna
SirkaOkna = 1600;
VyskaOkna = 900;
// Další základní nastavení
_graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
IsMouseVisible = true;
}
protected override void Initialize()
{
// TODO: Add your initialization logic here
NastavPromenneNaZacatekHry();
_graphics.PreferredBackBufferWidth = SirkaOkna;
_graphics.PreferredBackBufferHeight = VyskaOkna;
_graphics.IsFullScreen = true;
_graphics.ApplyChanges();
base.Initialize();
}
protected override void LoadContent()
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
ZalozRuznaPozadi();
ZalozPisma();
ZalozAktery();
ZalozPredmety();
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
Exit();
// TODO: Add your update logic here
PocitejHru();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Black);
// TODO: Add your drawing code here
_spriteBatch.Begin();
KresliHru();
_spriteBatch.End();
base.Draw(gameTime);
}
/*
#########
INICIALIZAČNÍ METODY
#########
*/
public void ZalozAktery()
{
Gfx_Pergamen = Content.Load<Texture2D>(@"Rozhrani\pergamen");
Gfx_Eriugena_Vlevo = Content.Load<Texture2D>(@"Akteri\eriugena-doleva");
Gfx_Eriugena_Vlevo_LN = Content.Load<Texture2D>(@"Akteri\eriugena-doleva-na-leve-noze");
Gfx_Eriugena_Vlevo_PN = Content.Load<Texture2D>(@"Akteri\eriugena-doleva-na-prave-noze");
Gfx_Eriugena_Vpravo = Content.Load<Texture2D>(@"Akteri\eriugena-doprava");
Gfx_Eriugena_Vpravo_LN = Content.Load<Texture2D>(@"Akteri\eriugena-doprava-na-leve-noze");
Gfx_Eriugena_Vpravo_PN = Content.Load<Texture2D>(@"Akteri\eriugena-doprava-na-prave-noze");
Gfx_NPC_Smadny = Content.Load<Texture2D>(@"Akteri\npc-smadny-mnich");
Gfx_NPC_Knihovnik = Content.Load<Texture2D>(@"Akteri\npc-knihovnik");
Gfx_NPC_Kucharka = Content.Load<Texture2D>(@"Akteri\npc-kucharka");
Gfx_NPC_Sklepnik = Content.Load<Texture2D>(@"Akteri\npc-sklepnik");
Gfx_NPC_Opat = Content.Load<Texture2D>(@"Akteri\npc-opat");
Gfx_NPC_Prizrak = Content.Load<Texture2D>(@"Akteri\npc-prizrak");
NPC_Smadny = new Npcka(2, 1, 3, "žíznivý mnich Servác", Gfx_NPC_Smadny, true, 300, 1f, Color.HotPink); NPC_List.Add(NPC_Smadny);
NPC_Knihovnik = new Npcka(5, 4, 7, "knihovník Laurentius", Gfx_NPC_Knihovnik, true, 1100, 1f, Color.RosyBrown); NPC_List.Add(NPC_Knihovnik);
NPC_Kucharka = new Npcka(11, 10, 12, "dočasná kuchařka Dulcinea", Gfx_NPC_Kucharka, true, 370, 1f, Color.Aquamarine); NPC_List.Add(NPC_Kucharka);
NPC_Sklepnik = new Npcka(20, 19, 21, "sklepník Benedikt", Gfx_NPC_Sklepnik, true, 550, 1f, Color.OrangeRed); NPC_List.Add(NPC_Sklepnik);
NPC_Opat = new Npcka(14, 13, 15, "opat Reamurus", Gfx_NPC_Opat, true, 300, 1f, Color.MediumSeaGreen); NPC_List.Add(NPC_Opat);
NPC_Prizrak = new Npcka(24, 23, 24, "neklidný přízrak", Gfx_NPC_Prizrak, false, 825, 0.7f, Color.Yellow); NPC_List.Add(NPC_Prizrak);
Faze_Dialogu_Smadny = 1;
Faze_Dialogu_Knihovnik = 1;
Faze_Dialogu_Kucharka = 1;
Faze_Dialogu_Sklepnik = 1;
Faze_Dialogu_Opat = 1;
Faze_Dialogu_Prizrak = 1;
Faze_Pribehu = 1;
Posun_Radku = 0;
Eriugena_Nazev_Rychlosti = String.Format("polospěch");
NPC_V_Mistnosti = null;
NPC_PolohaX = 0;
}
public void ZalozPredmety()
{
Gfx_Krucifix = Content.Load<Texture2D>(@"Predmety\krucifix");
Gfx_Soudek = Content.Load<Texture2D>(@"Predmety\soudek");
Gfx_Korbel = Content.Load<Texture2D>(@"Predmety\korbel");
Gfx_Necro = Content.Load<Texture2D>(@"Predmety\necro");
Gfx_Flaska = Content.Load<Texture2D>(@"Predmety\flaska");
Gfx_Voda = Content.Load<Texture2D>(@"Predmety\voda");
Gfx_Sadlo = Content.Load<Texture2D>(@"Predmety\sadlo");
Gfx_Houby = Content.Load<Texture2D>(@"Predmety\houby");
Gfx_Jahody = Content.Load<Texture2D>(@"Predmety\jahody");
Gfx_Krucifix_Inv = Content.Load<Texture2D>(@"Predmety\krucifix-inv");
Gfx_Soudek_Inv = Content.Load<Texture2D>(@"Predmety\soudek-inv");
Gfx_Korbel_Inv = Content.Load<Texture2D>(@"Predmety\korbel-inv");
Gfx_Necro_Inv = Content.Load<Texture2D>(@"Predmety\necro-inv");
Gfx_Flaska_Inv = Content.Load<Texture2D>(@"Predmety\flaska-inv");
Gfx_Voda_Inv = Content.Load<Texture2D>(@"Predmety\voda-inv");
Gfx_Sadlo_Inv = Content.Load<Texture2D>(@"Predmety\sadlo-inv");
Gfx_Houby_Inv = Content.Load<Texture2D>(@"Predmety\houby-inv");
Gfx_Jahody_Inv = Content.Load<Texture2D>(@"Predmety\jahody-inv");
Predmety_List = new List<Predmety>();
Predmet_Krucifix = new Predmety("Krucifix", false, false, 0, 850, 660, 70, 70, Gfx_Krucifix, Gfx_Krucifix_Inv); Predmety_List.Add(Predmet_Krucifix);
Predmet_Soudek = new Predmety("Soudek vína", true, false, 1, 1100, 500, 120, 200, Gfx_Soudek, Gfx_Soudek_Inv); Predmety_List.Add(Predmet_Soudek);
Predmet_Korbel = new Predmety("Pivní korbel", true, false, 5, 900, 650, 40, 40, Gfx_Korbel, Gfx_Korbel_Inv); Predmety_List.Add(Predmet_Korbel);
Predmet_Necro = new Predmety("Necronomicon", false, false, 7, 500, 700, 110, 60, Gfx_Necro, Gfx_Necro_Inv); Predmety_List.Add(Predmet_Necro);
Predmet_Flaska = new Predmety("Láhev vína", false, false, 9, 1000, 650, 60, 110, Gfx_Flaska, Gfx_Flaska_Inv); Predmety_List.Add(Predmet_Flaska);
Predmet_Voda = new Predmety("Kyblík s vodou", true, false, 11, 600, 600, 100, 100, Gfx_Voda, Gfx_Voda_Inv); Predmety_List.Add(Predmet_Voda);
Predmet_Sadlo = new Predmety("Žejdlíček sádla", true, false, 12, 950, 600, 100, 100, Gfx_Sadlo, Gfx_Sadlo_Inv); Predmety_List.Add(Predmet_Sadlo);
Predmet_Houby = new Predmety("Houby", true, false, 23, 1000, 720, 40, 40, Gfx_Houby, Gfx_Houby_Inv); Predmety_List.Add(Predmet_Houby);
Predmet_Jahody = new Predmety("Lesní jahody", true, false, 24, 900, 600, 50, 70, Gfx_Jahody, Gfx_Jahody_Inv); Predmety_List.Add(Predmet_Jahody);
}
public void ZalozPisma()
{
Pismo_Normalni = Content.Load<SpriteFont>(@"Fonty\zakladniPismo");
Pismo_Pribeh = Content.Load<SpriteFont>(@"Fonty\pribehPismo");
}
public void ZalozRuznaPozadi()
{
Gfx_Pozadi = new Texture2D[25];
Popisky_Mistnosti = new string[25];
Pocitadlo = -1;
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-policky"); Popisky_Mistnosti[Pocitadlo] = "Studovna na konci chodby";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-prazdna"); Popisky_Mistnosti[Pocitadlo] = "Jižní křídlo kláštera";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-stolek"); Popisky_Mistnosti[Pocitadlo] = "Pisatelův koutek";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-tapiserie"); Popisky_Mistnosti[Pocitadlo] = "Stará tapisérie";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-tri-knihovny"); Popisky_Mistnosti[Pocitadlo] = "Hlavní knihovna";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-krb"); Popisky_Mistnosti[Pocitadlo] = "U krbu";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-prazdna-3"); Popisky_Mistnosti[Pocitadlo] = "Západní koridor";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-zakazane"); Popisky_Mistnosti[Pocitadlo] = "Sekce s omezeným přístupem";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-prazdna-2"); Popisky_Mistnosti[Pocitadlo] = "Střed kláštera";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-skriptorium"); Popisky_Mistnosti[Pocitadlo] = "Skriptorium";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-cesnek"); Popisky_Mistnosti[Pocitadlo] = "Sklad česneku";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-refektar"); Popisky_Mistnosti[Pocitadlo] = "Refektář";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-kuchyne"); Popisky_Mistnosti[Pocitadlo] = "Kuchyně";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-prazdna-4"); Popisky_Mistnosti[Pocitadlo] = "Tichý koridor";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-kaple"); Popisky_Mistnosti[Pocitadlo] = "Kaple";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-chram"); Popisky_Mistnosti[Pocitadlo] = "Chrám";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-schody"); Popisky_Mistnosti[Pocitadlo] = "Schodiště";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-prazdna-5"); Popisky_Mistnosti[Pocitadlo] = "Východní křídlo kláštera";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-misto-cinu"); Popisky_Mistnosti[Pocitadlo] = "Místo činu";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-prazdna-6"); Popisky_Mistnosti[Pocitadlo] = "Severní křídlo kláštera";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-vrata"); Popisky_Mistnosti[Pocitadlo] = "Východ z kláštera";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-pred-klasterem"); Popisky_Mistnosti[Pocitadlo] = "Před klášterem";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-vresoviste"); Popisky_Mistnosti[Pocitadlo] = "Vřesoviště";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-les"); Popisky_Mistnosti[Pocitadlo] = "Les";
Pocitadlo++; Gfx_Pozadi[Pocitadlo] = Content.Load<Texture2D>(@"Mistnosti\mistnost-lesni-kriz"); Popisky_Mistnosti[Pocitadlo] = "Lesní kříž";
}
public void NastavPromenneNaZacatekHry()
{
Podkres = Content.Load<Song>(@"Hudba\royalty-free-music");
AktualniStavHry = StavHry.Intro;
Gfx_Intro = Content.Load<Texture2D>(@"Mistnosti\intro");
Gfx_Outro = Content.Load<Texture2D>(@"Mistnosti\outro");
Eriugena_Otoceni = Otoceni.KoukatDoleva;
Eriugena_HorizontalniPohyb = HorizontalniPohyb.Stat;
Eriugena_VertikalniPohyb = VertikalniPohyb.Stat;
Eriugena_Mistnost = 22;
Eriugena_PoziceX = 1200;
Eriugena_PoziceY = 500;
Eriugena_Rychlost = 5;
Eriugena_Casovac_Preslapnuti = 0;
Eriugena_PreslapujeNaMiste = true;
Dvojklik_Mezerniku = 0;
Dvojklik_R = 0;
Mys_Ma_Cil = false;
Dialog_S_Postavou = false;
NPC_List = new List<Npcka>();
Nahoda = new Random();
Pribeh_Aktivovan = true;
SicEtNon = false;
PortalOtevren = false;
ChozeniNPCSude = false;
MediaPlayer.IsRepeating = true;
MediaPlayer.Play(Podkres);
}
/*
#########
LOGICKÉ HERNÍ METODY
#########
*/
public void PocitejHru()
{
if (AktualniStavHry == StavHry.Hra)
{
PeriodickeZalezitosti();
EriugenuvPohyb();
EriugenovaZmenaPolohy();
ZmenyMistnosti();
}
else if (AktualniStavHry == StavHry.Intro)
{
Ovladani_Klavesnice = Keyboard.GetState();
if (Ovladani_Klavesnice.IsKeyDown(Keys.Space))
{
Dvojklik_Mezerniku = 60;
AktualniStavHry = StavHry.Hra;
Pribeh_Aktivovan = true;
}
}
}
public void PeriodickeZalezitosti()
{
if (Dvojklik_Mezerniku > 0) { Dvojklik_Mezerniku--; }
if (Dvojklik_R > 0) { Dvojklik_R--; }
}
public void ZmenyMistnosti()
{
if (Eriugena_PoziceX < 50 && Eriugena_Mistnost > 0)
{
Eriugena_Mistnost--;
Eriugena_PoziceX = SirkaOkna - 160;
Mys_Ma_Cil = false;
ChozeniNpcek();
MistnostiPrepinace();
}
if (Eriugena_PoziceX > (SirkaOkna - 80) && Eriugena_Mistnost < 24)
{
Eriugena_Mistnost++;
Eriugena_PoziceX = 90;
Mys_Ma_Cil = false;
ChozeniNpcek();
MistnostiPrepinace();
}
}
public void ChozeniNpcek()
{
if (ChozeniNPCSude)
{
foreach (Npcka i in NPC_List)
{
switch (Nahoda.Next(1, 4))
{
case 2:
if ((i.PoziceMistnost - 1) >= i.LevaHranice && (i.PoziceMistnost - 1) != Eriugena_Mistnost)
{
i.PoziceMistnost--;
}
break;
case 3:
if ((i.PoziceMistnost + 1) <= i.PravaHranice && (i.PoziceMistnost - 1) != Eriugena_Mistnost)
{
i.PoziceMistnost++;
}
break;
default:
break;
}
}
ChozeniNPCSude = false;
}
else
{
ChozeniNPCSude = true;
}
}
public void EriugenovaZmenaPolohy()
{
if (!Dialog_S_Postavou && !Pribeh_Aktivovan)
{
switch (Eriugena_HorizontalniPohyb)
{
case HorizontalniPohyb.JitVlevo:
if (Eriugena_Mistnost <= 0 && Eriugena_PoziceX < 40)
{
Eriugena_Mistnost = 16;
Eriugena_PoziceX = 780;
Eriugena_PoziceY = 400;
Mys_Ma_Cil = false;
}
else
{
Eriugena_PoziceX -= Eriugena_Rychlost;
}
Eriugena_Otoceni = Otoceni.KoukatDoleva;
PosunCasovacPreslapnuti(3);
break;
case HorizontalniPohyb.JitVpravo:
if (Eriugena_Mistnost >= 24 && Eriugena_PoziceX > (SirkaOkna - 400))
{
// Dál vpravo to už nejde
Mys_Ma_Cil = false;
}
else
{
Eriugena_PoziceX += Eriugena_Rychlost;
}
Eriugena_Otoceni = Otoceni.KoukatDoprava;
PosunCasovacPreslapnuti(3);
break;
default:
case HorizontalniPohyb.Stat:
PreslapovaniNaMiste();
break;
}
switch (Eriugena_VertikalniPohyb)
{
case VertikalniPohyb.JitNahoru:
if (Eriugena_PoziceY <= 400)
{
// Výše už to nejde
Mys_Ma_Cil = false;
}
else
{
Eriugena_PoziceY -= Eriugena_Rychlost;
PosunCasovacPreslapnuti(4);
}
break;
case VertikalniPohyb.JitDolu:
if (Eriugena_PoziceY >= 550)
{
// Níže už to nejde
Mys_Ma_Cil = false;
}
else
{
Eriugena_PoziceY += Eriugena_Rychlost;
PosunCasovacPreslapnuti(4);
}
break;
default:
case VertikalniPohyb.Stat:
PreslapovaniNaMiste();
break;
}
}
}
public void PreslapovaniNaMiste()
{
if (Eriugena_PreslapujeNaMiste)
{
if (Nahoda.Next(1, 180) == 7)
{
switch (Nahoda.Next(1, 3))
{
case 1:
Eriugena_Otoceni = Otoceni.KoukatDoleva;
PosunCasovacPreslapnuti(Nahoda.Next(1, 3));
break;
default:
case 2:
Eriugena_Otoceni = Otoceni.KoukatDoprava;
PosunCasovacPreslapnuti(Nahoda.Next(1, 3));
break;
}
}
}
}
public void PosunCasovacPreslapnuti(int oKolik)
{
if (Eriugena_Casovac_Preslapnuti < 20)
{
Eriugena_Casovac_Preslapnuti += oKolik;
}
else
{
Eriugena_Casovac_Preslapnuti = 0;
}
}
public void EriugenuvPohyb()
{
PohybVyhodnoceniKlavesnice();
PohybVyhodnoceniMysi();
}
public void PohybVyhodnoceniMysi()
{
Ovladani_Mysi = Mouse.GetState();
if (Ovladani_Mysi.LeftButton == ButtonState.Pressed)
{
if (!Pribeh_Aktivovan)
{
if (NPC_V_Mistnosti != null
&& Ovladani_Mysi.X > NPC_PolohaX && Ovladani_Mysi.X < (NPC_PolohaX + 250)
&& Ovladani_Mysi.Y > 350 && Ovladani_Mysi.Y < 700)
{
Dialog_S_Postavou = true;
}
else
{
Mys_Ma_Cil = true;
Dialog_S_Postavou = false;
Mys_Cil_X = Ovladani_Mysi.X;
Mys_Cil_Y = Ovladani_Mysi.Y - 350;
}
}
else
{
Pribeh_Aktivovan = false;
}
foreach (Predmety i in Predmety_List)
{
if (i.Mistnost == Eriugena_Mistnost
&& Ovladani_Mysi.X > i.PoziceX && Ovladani_Mysi.X < (i.PoziceX + i.Sirka)
&& Ovladani_Mysi.Y > i.PoziceY && Ovladani_Mysi.Y < (i.PoziceY + i.Vyska))
{
i.JeVeSvete = false;
i.JeVInventari = true;
}
}
}
if (Mys_Ma_Cil)
{
if (Mys_Cil_X > Eriugena_PoziceX)
{
Eriugena_HorizontalniPohyb = HorizontalniPohyb.JitVpravo;
}
else if (Mys_Cil_X < Eriugena_PoziceX)
{
Eriugena_HorizontalniPohyb = HorizontalniPohyb.JitVlevo;
}
if ((Mys_Cil_X + 20) > Eriugena_PoziceX && (Mys_Cil_X - 20) < Eriugena_PoziceX)
{
if (Mys_Cil_Y < Eriugena_PoziceY)
{
Eriugena_VertikalniPohyb = VertikalniPohyb.JitNahoru;
}
else if (Mys_Cil_Y > Eriugena_PoziceY)
{
Eriugena_VertikalniPohyb = VertikalniPohyb.JitDolu;
}
}
VyhodnoceniDojitiDoMysovehoCile();
}
}
public void VyhodnoceniDojitiDoMysovehoCile()
{
if (((Mys_Cil_X + 20) > Eriugena_PoziceX && (Mys_Cil_X - 20) < Eriugena_PoziceX)
&& ((Mys_Cil_Y + 20) > Eriugena_PoziceY && (Mys_Cil_Y - 20) < Eriugena_PoziceY))
{
Mys_Ma_Cil = false;
Eriugena_HorizontalniPohyb = HorizontalniPohyb.Stat;
Eriugena_VertikalniPohyb = VertikalniPohyb.Stat;
}
}
public void PrepnoutPribehovyMod()
{
if (Dvojklik_Mezerniku <= 0)
{
if (Dialog_S_Postavou)
{
Dialog_S_Postavou = false;
}
if (Pribeh_Aktivovan)
{
Pribeh_Aktivovan = false;
Dvojklik_Mezerniku = 30;
}
else
{
Pribeh_Aktivovan = true;
Dvojklik_Mezerniku = 30;
}
}
}
public void PrepnoutRychlost()
{
if (Dvojklik_R <= 0)
{
switch (Eriugena_Rychlost)
{
case 5:
Eriugena_Rychlost = 7;
Eriugena_Nazev_Rychlosti = String.Format("spěch");
break;
case 7:
Eriugena_Rychlost = 10;
Eriugena_Nazev_Rychlosti = String.Format("kmit");
break;
case 10:
Eriugena_Rychlost = 15;
Eriugena_Nazev_Rychlosti = String.Format("supermnich");
break;
case 15:
Eriugena_Rychlost = 1;
Eriugena_Nazev_Rychlosti = String.Format("hynutí");
break;
case 1:
Eriugena_Rychlost = 2;
Eriugena_Nazev_Rychlosti = String.Format("procházka");
break;
default:
case 2:
Eriugena_Rychlost = 5;
Eriugena_Nazev_Rychlosti = String.Format("polospěch");
break;
}
Dvojklik_R = 30;
}
}
public void UkoncitHru()
{
AktualniStavHry = StavHry.Outro;
}
public void PohybVyhodnoceniKlavesnice()
{
Ovladani_Klavesnice = Keyboard.GetState();
if (Ovladani_Klavesnice.IsKeyDown(Keys.R))
{
PrepnoutRychlost();
}
else if (Ovladani_Klavesnice.IsKeyDown(Keys.Space))
{
if (Eriugena_Mistnost == 14 && PortalOtevren)
{
UkoncitHru();
}
else
{
PrepnoutPribehovyMod();
}
}
else if (Ovladani_Klavesnice.IsKeyDown(Keys.Left) && !Pribeh_Aktivovan)
{
Eriugena_HorizontalniPohyb = HorizontalniPohyb.JitVlevo;
}
else if (Ovladani_Klavesnice.IsKeyDown(Keys.Right) && !Pribeh_Aktivovan)
{
Eriugena_HorizontalniPohyb = HorizontalniPohyb.JitVpravo;
}
else if (Ovladani_Klavesnice.IsKeyDown(Keys.Up) && !Pribeh_Aktivovan)
{
Eriugena_VertikalniPohyb = VertikalniPohyb.JitNahoru;
}
else if (Ovladani_Klavesnice.IsKeyDown(Keys.Down) && !Pribeh_Aktivovan)
{
Eriugena_VertikalniPohyb = VertikalniPohyb.JitDolu;
}
else
{
Eriugena_HorizontalniPohyb = HorizontalniPohyb.Stat;
Eriugena_VertikalniPohyb = VertikalniPohyb.Stat;
}
}
/*
#########
VÝTVARNÉ HERNÍ METODY
#########
*/
public void KresliHru()
{
switch (AktualniStavHry)
{
default:
case StavHry.Hra:
VykresliPozadiMistnosti();
VykresliVeci();
VykresliNpcka();
VykresliEriugenu();
VyzvaKPribehu();
VykresliPribeh();
VykresliDialog();
VykresliInventar();
break;
case StavHry.Intro:
_spriteBatch.Draw(Gfx_Intro, new Vector2(0, 0), Color.White);
break;
case StavHry.Outro:
_spriteBatch.Draw(Gfx_Outro, new Vector2(0, 0), Color.White);
break;
}
}
public void VykresliInventar()
{
Pocitadlo = 20;
foreach (Predmety i in Predmety_List)
{
if (i.JeVInventari)
{
_spriteBatch.Draw(i.VzhledInventar, new Vector2(Pocitadlo, 800), Color.White);
Pocitadlo += 100;
}
}
if (Pocitadlo > 20)
{
_spriteBatch.DrawString(Pismo_Normalni, "Inventář", new Vector2(20, 760), Color.LightSlateGray);
}
}
public void VykresliVeci()
{
foreach (Predmety i in Predmety_List)
{
if (Eriugena_Mistnost == i.Mistnost && i.JeVeSvete)
{
_spriteBatch.Draw(i.VzhledSvet, new Vector2(i.PoziceX, i.PoziceY), Color.White);
}
}
}
public void VykresliPribeh()
{
if (Pribeh_Aktivovan)
{
_spriteBatch.Draw(Gfx_Pergamen, new Vector2(200, 60), Color.White);
PopisPergamenZakladniDej();
}
}
public void PisP(string text, int radek, Color barva)
{
Posun_Radku = 35 * radek + 70;
_spriteBatch.DrawString(Pismo_Pribeh, text, new Vector2(280, Posun_Radku), barva);
}
public void VykresliDialog()
{
if (Dialog_S_Postavou && NPC_V_Mistnosti != null)
{
PopisPergamenNPC(NPC_V_Mistnosti);
}
}
public void DialogySeSklepnikem(Npcka postava)
{
switch (Faze_Dialogu_Sklepnik)
{
default:
case 1:
PisP("\"Vítej v našem klášteře. Já jsem tady sklepník, šafář a klíčník, takže", 1, postava.BarvaPisma);
PisP("kdybys potřeboval cokoliv, řekněme, méně duchovního, jsem pro tebe", 2, postava.BarvaPisma);
PisP("ten správný člověk. Ale teď mě omluv, mám nějakou práci.\"", 3, postava.BarvaPisma);
PisP("", 4, postava.BarvaPisma);
PisP("Sklepník se nervózně ošije.", 5, Color.Silver);
PisP("", 6, postava.BarvaPisma);
PisP("\"No, být tebou se radši zamykám. Staly se tu dvě vraždy a mám pocit,", 7, postava.BarvaPisma);
PisP("že tady už není tak bezpečno.\"", 8, postava.BarvaPisma);
break;
case 2:
PisP("\"Eriugena! Nejslavnější karolinský platonik poctil náš klášter svou přítomností!\"", 1, postava.BarvaPisma);
PisP("", 2, postava.BarvaPisma);
PisP("\"Budu rád, když zapadnu. Opat mě za tebou poslal ohledně toho místa činu...\"", 3, Color.AntiqueWhite);
PisP("", 4, postava.BarvaPisma);
PisP("\"Ano, ano... Těla dvou našich bratrů byla doslova na kusy.", 5, postava.BarvaPisma);
PisP("Jako by je roztrhala nelidská síla. Musel jsem to čistit.\"", 6, postava.BarvaPisma);
PisP("", 7, postava.BarvaPisma);
PisP("\"Mám pocit, že knihovník to celé slyšel. Promluvil bych s ním...\"", 8, postava.BarvaPisma);
if (Faze_Dialogu_Knihovnik < 2) { Faze_Dialogu_Knihovnik = 2; }
if (Faze_Pribehu < 5) { Faze_Pribehu = 5; }
break;
case 3:
PisP("\"Rád bych ti pomohl, dobrý filozofe, ale víno ve sklepech už není, Servác", 1, postava.BarvaPisma);
PisP("všechno vypil. Dokud nepřijdou obchodníci z Limericku, tak jsme bez kvasu...", 2, postava.BarvaPisma);
PisP("Ale počkej, mám nápad. Jestli se nepletu, Servác si jednu flašku schovává někde", 3, postava.BarvaPisma);
PisP("ve skriptoriu. Je to zvláštní víno, které mu daroval mnich až z daleké Velké Moravy.", 4, postava.BarvaPisma);
PisP("Servác bude jistě bědovat, ale pro náš účel by mohlo posloužit.\"", 5, postava.BarvaPisma);
if (Faze_Pribehu < 15) { Faze_Pribehu = 15; }
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Flaska && !i.JeVInventari)
{
i.JeVeSvete = true;
}
}
break;
}
}
public void DialogySKnihovnikem(Npcka postava)
{
switch (Faze_Dialogu_Knihovnik)
{
default:
case 1:
PisP("\"Jistě jsi z Franské říše zvyklý na něco jiného, ale naše knihovna", 1, postava.BarvaPisma);
PisP("je velmi dobře vybavená. Máme i poslední opis druhého dílu Aristotelovy Poetiky.", 2, postava.BarvaPisma);
PisP("Snad se nám neztratí. Každopádně se mě zeptej, kdybys hledal nějakou knihu.\"", 3, postava.BarvaPisma);
PisP("", 4, Color.Silver);
PisP("Starý knihovník si odkašle a jeho vous pokryje", 5, Color.Silver);
PisP("prach z knih, který ten dobrý muž celé dny inhaluje.", 6, Color.Silver);
break;
case 2:
PisP("Dialog s knihovníkem ruší písničky pořvávající mnich, který popíjí opodál.", 1, Color.Silver);
PisP("", 2, postava.BarvaPisma);
PisP("\"Ano, skutečně jsem slyšel tu vraždu... Šel jsem na ranní mši, když", 3, postava.BarvaPisma);
PisP("to začalo... Ty podivné hlasy, vrčení a pak křik našich bratrů. Něco jsem", 4, postava.BarvaPisma);
PisP("i zahlédl. Něco, co jsem už viděl v knize. Ech, vzpomněl bych si, ale z toho,", 5, postava.BarvaPisma);
PisP("jak bratr Servác pořád vyřvává ty svoje šansony, mi třeští hlava. Mohl bys mu,", 6, postava.BarvaPisma);
PisP("prosím, něco říct? Chtěl bych ticho v příbytku Páně, ne halekání jak v putyce.\"", 7, postava.BarvaPisma);
if (Faze_Dialogu_Smadny < 2) { Faze_Dialogu_Smadny = 2; }
if (Faze_Pribehu < 6) { Faze_Pribehu = 6; }
break;
case 3:
PisP("\"Chválabohu, žes utišil to zvíře převlečené za mnicha! Ty ale určitě chceš", 1, postava.BarvaPisma);
PisP("vědět víc o té vraždě, že? No, řeknu ti tohle: vím, že to je něco nečistého", 2, postava.BarvaPisma);
PisP("ze zahrady samotného Antikrista! A tuším také, kde by to mohlo sídlit...", 3, postava.BarvaPisma);
PisP("Ve zdejších lesích žijí zlé síly. Najdi si krucifix a vydej se je vyhledat.\"", 4, postava.BarvaPisma);
if (Faze_Pribehu < 10) { Faze_Pribehu = 10; }
foreach (Npcka i in NPC_List)
{
if (i == NPC_Prizrak && !i.Pritomnost)
{
i.Pritomnost = true;
}
}
break;
case 4:
PisP("\"Temnou literaturu, Eriugeno? Není temnější knihy než Necronomicon!", 1, postava.BarvaPisma);
PisP("Někde jsem tady tu zlou knihu viděl. Přines mi ji, prosím.\"", 2, postava.BarvaPisma);
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Necro && i.JeVInventari && Faze_Dialogu_Knihovnik < 5)
{
Faze_Dialogu_Knihovnik = 5;
}
}
break;
case 5:
PisP("\"Ach, Necronomicon, kniha z pergamenů z osla, vázaná v lidské kůži!", 1, postava.BarvaPisma);
PisP("Doufal jsem, že už v ni nikdy nebudu muset nic hledat.\"", 2, postava.BarvaPisma);
PisP("", 3, Color.AntiqueWhite);
PisP("Knihovník listuje a mračí se. Konečně udeří prstem do stránky.", 4, Color.Silver);
PisP("", 5, Color.AntiqueWhite);
PisP("\"Tady to je! Ach, ano. Démon se dá zahnat speciálním lektvarem.", 6, postava.BarvaPisma);
PisP("Budeme potřebovat houby, víno, sádlo a trochu vody. Seženeš to?", 7, postava.BarvaPisma);
PisP("Jestliže ingredience nalezneš, Dulcinea by mohla lektvar uvařit.\"", 8, postava.BarvaPisma);
if (Faze_Dialogu_Kucharka < 4) { Faze_Dialogu_Kucharka = 4; }
if (Faze_Pribehu < 13) { Faze_Pribehu = 13; }
break;
case 6:
PisP("\"Vím naprosto bezpečně, příteli, kterou knihu jsem naposledy půjčoval", 1, postava.BarvaPisma);
PisP("opatovi. Byla to tvá vlastní kniha, mistře Eriugeno, tvůj dialog Periphyseon.\"", 2, postava.BarvaPisma);
PisP("", 3, postava.BarvaPisma);
PisP("\"Ale... jak by to bylo možné? Pomocí mé knihy nelze vyvolávat démony!\"", 4, Color.AntiqueWhite);
PisP("", 5, postava.BarvaPisma);
PisP("\"Jak vidno lze. Když se správně čte... Jak já to vidím, autora takového textu", 6, postava.BarvaPisma);
PisP("musí prostoupit démonická energie. Stejná pak prostoupí toho, kdo jej čte a kdo", 7, postava.BarvaPisma);
PisP("mezi řádky objeví bránu do jiných světů.\"", 8, postava.BarvaPisma);
if (Faze_Pribehu < 20) { Faze_Pribehu = 20; }
if (Faze_Dialogu_Prizrak < 4) { Faze_Dialogu_Prizrak = 4; }
break;
}
}
public void DialogySOpatem(Npcka postava)
{
switch (Faze_Dialogu_Opat)
{
default:
case 1:
PisP("Opat si tě pomalu prohlíží temně zelenýma očima.", 1, Color.Silver);
PisP("", 2, Color.Silver);
PisP("\"Takže největší mistr na franském dvoře se vrací domů", 3, postava.BarvaPisma);
PisP("jako zpráskaný pes. Prý tě Frankové pobodali. Je to pravda?\"", 4, postava.BarvaPisma);
PisP("", 5, postava.BarvaPisma);
PisP("\"Hm. Měl jsem štěstí a přežil. Ale co se stalo tady? Co ty fleky od krve?\"", 6, Color.AntiqueWhite);
PisP("", 7, Color.AntiqueWhite);
PisP("\"Typický Eriugena! Jen přijel a už chce řešit vraždu. Nu, proč ne.", 8, postava.BarvaPisma);
PisP("Promluv si s bratrem Benediktem. Vykonává zde funkci cellelaria.\"", 9, postava.BarvaPisma);
if (Faze_Dialogu_Sklepnik < 2) { Faze_Dialogu_Sklepnik = 2; }
if (Faze_Pribehu < 4) { Faze_Pribehu = 4; }
break;
case 2:
PisP("\"Říkáš, že démon mluvil jazykem urážejícím Boha? Temné věci se dějí", 1, postava.BarvaPisma);
PisP("v našem opatství. Snad bys se o nich dalo něco zjistit v literatuře,", 2, postava.BarvaPisma);
PisP("a to v takové, která je zrovna tak temná... Bratr Laurentius tě jistě", 3, postava.BarvaPisma);
PisP("odkáže na ty správné texty...\"", 4, postava.BarvaPisma);
if (Faze_Dialogu_Knihovnik < 4) { Faze_Dialogu_Knihovnik = 4; }
if (Faze_Pribehu < 12) { Faze_Pribehu = 12; }
break;
case 3:
PisP("\"Dulcinea mi už přinesla lektvar. Přehnala to ovšem se sádlem, proto", 1, postava.BarvaPisma);
PisP("je z něj spíše mast. Pojď za mnou. Dostaneš pomazání.\"", 2, postava.BarvaPisma);
PisP("", 3, postava.BarvaPisma);
PisP("Opat tě důkladně pomaže smrdutou, ale mocnou mastí.", 4, Color.Silver);
PisP("", 5, postava.BarvaPisma);
PisP("\"Teď bys měl přízraku již rozumnět a být schopen jej zapudit!\"", 6, postava.BarvaPisma);
if (Faze_Pribehu < 17) { Faze_Pribehu = 17; }
if (Faze_Dialogu_Prizrak < 3) { Faze_Dialogu_Prizrak = 3; }
break;
case 4:
PisP("\"Už se mi to všechno vybavuje. Ano, vyvolal jsem ho já.", 1, postava.BarvaPisma);
PisP("Byl to hrozný omyl. Jen jsem zkoušel nakreslit obrazce", 2, postava.BarvaPisma);
PisP("z jednoho manuskriptu, který pořizoval bratr Laurentius.", 3, postava.BarvaPisma);
PisP("On bude vědět, co to bylo za text! Ne, nebyl to Necronomicon...", 4, postava.BarvaPisma);
PisP("Musela to být ještě mnohem temnější kniha. A teď, prosím, odejdi", 5, postava.BarvaPisma);
PisP("Musím přemýšlet o všem, co jsem způsobil. A uložit si pokání.\"", 6, postava.BarvaPisma);
if (Faze_Dialogu_Knihovnik < 6) { Faze_Dialogu_Knihovnik = 6; }
if (Faze_Pribehu < 19) { Faze_Pribehu = 19; }
break;
}
}
public void DialogySOpilcem(Npcka postava)
{
switch (Faze_Dialogu_Smadny)
{
default:
case 1:
PisP("\"Prý jsi přijel z Franské říše, kamaráde!", 1, postava.BarvaPisma);
PisP("Tam umí pít víno, nemám pravdu? No, dáš si se mnou?\"", 2, postava.BarvaPisma);
PisP("", 3, postava.BarvaPisma);
PisP("Mnich chce ještě mluvit, ale viditelně mu ztěžkne jazyk,", 4, Color.Silver);
PisP("tak se radši jen pořádně napije. Potom škytne a k tobě dorazí", 5, Color.Silver);
PisP("těžký závan, připomínající nikdy nekončící noc v plesnivém vinném sklípku.", 6, Color.Silver);
break;
case 2:
PisP("\"Mohl by ses trochu ztišit? Bratra Laurentia z tvého zpěvu bolí hlava.\"", 1, Color.AntiqueWhite);
PisP("", 2, Color.AntiqueWhite);
PisP("Opilý Servác na tebe mžourá narudlýma očima. Pak se divoce zasměje.", 3, Color.Silver);
PisP("", 4, Color.AntiqueWhite);
PisP("\"Ha! Laurentius byl vždycky suchar! Nelíbí se mu moje písničky, a to", 5, postava.BarvaPisma);
PisP("přitom zpívám ty nejlepší, co znám! Eh, k čertu, ale stejně zpívám", 6, postava.BarvaPisma);
PisP("jenom pro to, abych nemusel myslet na svůj hlad! Nechceš se, kamaráde,", 7, postava.BarvaPisma);
PisP("zeptat té dobré ženy, co tu teď vaří, kdy bude nějaký moučník? Askeze", 8, postava.BarvaPisma);
PisP("a půst mě už omrzely!\"", 9, postava.BarvaPisma);
if (Faze_Dialogu_Kucharka < 2) { Faze_Dialogu_Kucharka = 2; }
if (Faze_Pribehu < 7) { Faze_Pribehu = 7; }
break;
case 3:
PisP("\"Říkáš, že bude pudink? Ojoj! Dobře, přestanu zpívat, brachu!", 1, postava.BarvaPisma);
PisP("Konec konců, kdybych zpíval a u toho slintal v očekávání jídla,", 2, postava.BarvaPisma);
PisP("jistě bych si potřísnil svou kutnu! Přitom jsem si ji letos už pral.\"", 3, postava.BarvaPisma);
if (Faze_Dialogu_Knihovnik < 3) { Faze_Dialogu_Knihovnik = 3; }
if (Faze_Pribehu < 9) { Faze_Pribehu = 9; }
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Krucifix && !i.JeVInventari)
{
i.JeVeSvete = true;
}
}
break;
case 4:
PisP("\"Potřebuji trochu tvého vína do lektvaru, bratře. Můžu...\"", 1, Color.AntiqueWhite);
PisP("", 2, Color.AntiqueWhite);
PisP("\"Tak to ne! Napít se se mnou nechceš, ale do lektvaru bys to lil!", 3, postava.BarvaPisma);
PisP("Taková škoda vína! Běž si za sklepníkem, ať ti dá nějaký horší patok.\"", 4, postava.BarvaPisma);
if (Faze_Dialogu_Sklepnik < 3) { Faze_Dialogu_Sklepnik = 3; }
break;
}
}
public void DialogySKucharkou(Npcka postava)
{
switch (Faze_Dialogu_Kucharka)
{
default:
case 1:
PisP("\"Buď zdráv, dobrý muži. Jsem tady kuchařka. Ano, já vím... divíš se,", 1, postava.BarvaPisma);
PisP("co dělám tady, v mužském klášteře. No, to se má tak... Můj muž má závoznictví", 2, postava.BarvaPisma);
PisP("s mnoha koni. A jeden z těch koňů se splašil a kopytem zabil mnišského kuchaře.", 3, postava.BarvaPisma);
PisP("Přislíbil, že dokud si nenajdou nového, budu jim zde chodit pomáhat vařit.", 4, postava.BarvaPisma);
PisP("Mniši mou přítomnost zatím snáší dobře a jsou vlídní. Ale teď s tou vraždou...", 5, postava.BarvaPisma);
PisP("nevím, běhá mi z toho mráz po zádech...\"", 6, postava.BarvaPisma);
break;
case 2:
PisP("\"Bratr Servác se ptá, kdy bude moci něco sníst. Z hladu už blouzní a zpívá", 1, Color.AntiqueWhite);
PisP("sprosté písničky, kvůli čemuž pro změnu bratra Laurentia bolí hlava.\"", 2, Color.AntiqueWhite);
PisP("", 3, Color.AntiqueWhite);
PisP("\"Oh, to mě mrzí, že má ten mnich prázdný žaludek! I když jsem myslela,", 4, postava.BarvaPisma);
PisP("že si v klášterech potrpí na odříkání. No nic, mám tady cukr, vajíčka,", 5, postava.BarvaPisma);
PisP("mléko i škrob. Můžu Servácovi udělat pudink, aby se dožil večeře.", 6, postava.BarvaPisma);
PisP("nepřineseš mi do něj ale trochu lesních jahod?\"", 7, postava.BarvaPisma);
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Jahody && i.JeVInventari && Faze_Dialogu_Kucharka < 3)
{
Faze_Dialogu_Kucharka = 3;
i.JeVInventari = false;
}
}
break;
case 3:
PisP("\"Tyhle lesní jahody vypadají výborně! Díky! Pochutnám si na nich sama,", 1, postava.BarvaPisma);
PisP("zatímco pro Serváce budu dělat neochucený pudink. Co by taky chtěl, je", 2, postava.BarvaPisma);
PisP("přece mnich, že? Můžeš mu jít vyřídit, že to bude za chvilku hotové?\"", 3, postava.BarvaPisma);
if (Faze_Dialogu_Smadny < 3) { Faze_Dialogu_Smadny = 3; }
if (Faze_Pribehu < 8) { Faze_Pribehu = 8; }
break;
case 4:
PisP("\"Jako základ do lektvaru patří voda.\"", 2, postava.BarvaPisma);
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Voda && i.JeVInventari && Faze_Dialogu_Kucharka < 5)
{
Faze_Dialogu_Kucharka = 5;
i.JeVInventari = false;
}
}
break;
case 5:
PisP("\"Voda se musí zahustit přepuštěným sádlem.\"", 2, postava.BarvaPisma);
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Sadlo && i.JeVInventari && Faze_Dialogu_Kucharka < 6)
{
Faze_Dialogu_Kucharka = 6;
i.JeVInventari = false;
}
}
break;
case 6:
PisP("\"Nyní tomu dáme barvu pomocí vína. Někde tu bude soudek.\"", 2, postava.BarvaPisma);
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Soudek && i.JeVInventari && Faze_Dialogu_Kucharka < 7)
{
Faze_Dialogu_Kucharka = 7;
i.JeVInventari = false;
}
}
break;
case 7:
PisP("\"Musíme přidat houby z lesa.\"", 2, postava.BarvaPisma);
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Houby && i.JeVInventari && Faze_Dialogu_Kucharka < 8)
{
Faze_Dialogu_Kucharka = 8;
i.JeVInventari = false;
}
}
break;
case 8:
PisP("\"Výborně, přinesl jsi mi všechny ingredience. Ale běda!", 1, postava.BarvaPisma);
PisP("Nemá to správnou barvu... Vína bylo v soudku málo. Seženeš mi další?\"", 2, postava.BarvaPisma);
if (Faze_Pribehu < 14) { Faze_Pribehu = 14; }
if (Faze_Dialogu_Smadny < 4) { Faze_Dialogu_Smadny = 4; }
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Flaska && i.JeVInventari && Faze_Dialogu_Kucharka < 9)
{
Faze_Dialogu_Kucharka = 9;
i.JeVInventari = false;
}
}
break;
case 9:
PisP("\"Hahaha! Dělala jsem si legraci. V lektvaru je vína dost...", 1, postava.BarvaPisma);
PisP("Vlastně jsem už lektvar udělala a předala opatovi.", 2, postava.BarvaPisma);
PisP("Děkuji ale za tuto láhev, určitě ji upotřebím večer,", 3, postava.BarvaPisma);
PisP("až budu dočítat biblickou knihu Ester a budu chtít", 4, postava.BarvaPisma);
PisP("zklidnit slzy dojetí kapkou něčeho dobrého.\"", 5, postava.BarvaPisma);
if (Faze_Pribehu < 16) { Faze_Pribehu = 16; }
if (Faze_Dialogu_Opat < 3) { Faze_Dialogu_Opat = 3; }
break;
}
}
public void DialogySPrizrakem(Npcka postava)
{
switch (Faze_Dialogu_Prizrak)
{
default:
case 1:
PisP("\"Budu potřebovat krucifix!\"", 1, Color.AntiqueWhite);
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Krucifix && i.JeVInventari && Faze_Dialogu_Prizrak < 2)
{
Faze_Dialogu_Prizrak = 2;
}
}
break;
case 2:
PisP("\"Muem mudnum da erider olov olov iuqol,", 1, postava.BarvaPisma);
PisP("cih em tacov euqmuciuq nmucet iuqol non!\"", 2, postava.BarvaPisma);
PisP("", 3, postava.BarvaPisma);
PisP("\"Ech, vůbec ti nerozumím, přízraku.", 4, Color.AntiqueWhite);
PisP("Měl bych to všechno říct opatovi.\"", 5, Color.AntiqueWhite);
if (Faze_Pribehu < 11) { Faze_Pribehu = 11; }
if (Faze_Dialogu_Opat < 2) { Faze_Dialogu_Opat = 2; }
foreach (Predmety i in Predmety_List)
{
if (i == Predmet_Necro && !i.JeVInventari)
{
i.JeVeSvete = true;
}
}
break;
case 3:
PisP("\"Ve jménu Spasitele, mluv se mnou přízraku! Řekni mi,", 1, Color.AntiqueWhite);
PisP("proč jsi tady? Kdo tě poslal? Lucifer? Belzebub? Či Mefisto?\"", 2, Color.AntiqueWhite);
PisP("", 3, Color.AntiqueWhite);
PisP("\"Ne, mnichu... Z mého domova mne vytrhl a do vaší mrzké reality", 4, postava.BarvaPisma);
PisP("uvěznil muž jménem Reamurus. Váš opat. Dva vaši bratři mě chtěli", 5, postava.BarvaPisma);
PisP("ovládat, ale vymaloval jsem stěny jejich vnitřnostmi.", 6, postava.BarvaPisma);
PisP("Chci jen domů.\"", 7, postava.BarvaPisma);
if (Faze_Dialogu_Opat < 4) { Faze_Dialogu_Opat = 4; }
if (Faze_Pribehu < 18) { Faze_Pribehu = 18; }
break;
case 4:
PisP("\"Přicházíš za mnou s otázkou na rtech. S otázkou, kterou ti nikdo jiný", 1, postava.BarvaPisma);
PisP("nemůže zodpovědět, bratře Eriugeno... nebo spíše bratře Obscure. Protože", 2, postava.BarvaPisma);
PisP("to je tvé pravé jméno, které jsi dostal v našem světe: Obscurus Druhý,", 3, postava.BarvaPisma);
PisP("Praporečník Korouhve Pekel. Vyhnaný mezi smrtelníky za povstávní proti", 4, postava.BarvaPisma);
PisP("našim pánům. Zapomněl jsi a stal se mnichem, ale tvá duše, když jsi", 5, postava.BarvaPisma);
PisP("tvořil své největší dílo, ta hledala cestu zpátky. A vložila do", 6, postava.BarvaPisma);
PisP("slov toho spisu způsob, jak mě zavolat. Abychom spolu mohli jít", 7, postava.BarvaPisma);
PisP("domů. Jsi připraven, Obscure, můj bratře?", 8, postava.BarvaPisma);
if (Faze_Pribehu < 21) { Faze_Pribehu = 21; }
break;
}
}
public void PopisPergamenNPC(Npcka postava)
{
if (Pribeh_Aktivovan) { Pribeh_Aktivovan = false; }
_spriteBatch.Draw(Gfx_Pergamen, new Vector2(200, 60), Color.White);
if (postava == NPC_Smadny)
{
DialogySOpilcem(postava);
}
else if (postava == NPC_Knihovnik)
{
DialogySKnihovnikem(postava);
}
else if (postava == NPC_Kucharka)
{
DialogySKucharkou(postava);
}
else if (postava == NPC_Opat)
{
DialogySOpatem(postava);
}
else if (postava == NPC_Sklepnik)
{
DialogySeSklepnikem(postava);
}
else if (postava == NPC_Prizrak)
{
DialogySPrizrakem(postava);
}
else
{
PisP("Slyšíš temné, dunivé a zneklidňující zvuky.", 3, Color.Silver);
}
}
Neformátovaný
Pridané: 1.3.2022
Exspirácia: Nebolo