public override void Begin() { // Tätä aliohjelmaa kutsumalla peli lataa kaikki PajaPeliin tehdyt sisällöt levyltä. LataaSisallotTiedostoista(); Mouse.IsCursorVisible = true; // Nollaa valinnat ValittuPelaajaHahmo = null; ValittuKartta = null; ValittuTausta = null; ValittuMusiikki = null; Apuri.NaytaAlkuValikko(); }
protected void LataaSisallotTiedostoista() { Apuri.AsetaPeli(this); // Ladataan peliin lisätty sisältö (taikuutta tapahtuu Apurit-luokassa) Apuri.LataaKuvatKansiosta(@"DynamicContent\Hahmot", RUUDUN_KUVAN_LEVEYS, RUUDUN_KUVAN_KORKEUS, ref Nimet, out HahmoKuvat); Apuri.LataaKuvatKansiosta(@"DynamicContent\Maasto", RUUDUN_KUVAN_LEVEYS, RUUDUN_KUVAN_KORKEUS, ref Nimet, out MaastoKuvat); Apuri.LataaKuvatKansiosta(@"DynamicContent\Esineet", RUUDUN_KUVAN_LEVEYS, RUUDUN_KUVAN_KORKEUS, ref Nimet, out EsineKuvat); Apuri.LataaKentatKansiosta(@"DynamicContent\Kartat", KARTAN_MAKSIMILEVEYS, KARTAN_MAKSIMIKORKEUS, ref Nimet, out Kartat); Apuri.LataaKentatKansiosta(@"DynamicContent\Taustat", TAUSTAN_MAKSIMILEVEYS, TAUSTAN_MAKSIMIKORKEUS, ref Nimet, out Taustakuvat); // TODO: Tee lataaja äänille ja lataa Apuri.LataaAanetKansiosta(@"DynamicContent\Tehosteet", out Tehosteet); Apuri.LataaAanetKansiosta(@"DynamicContent\Musiikki", out Musiikki); }
public static void LataaKuvatKansiosta(string kansio, int vaadittuLeveys, int vaadittuKorkeus, ref Dictionary <Image, string> nimet, out Dictionary <Color, List <Image> > kuvaKokoelma) { kuvaKokoelma = new Dictionary <Color, List <Image> >(); string[] kuvatiedostonPolut = Directory.GetFiles(kansio, "*.png", SearchOption.TopDirectoryOnly); foreach (var kuvaPolku in kuvatiedostonPolut) { Image ladattuKuva = Image.FromFile(kuvaPolku); if (ladattuKuva.Width != vaadittuLeveys || ladattuKuva.Height != vaadittuKorkeus) { Peli.MessageDisplay.Add("Kuva " + Path.GetFileName(kuvaPolku) + " on väärän kokoinen."); continue; // Hyppää seuraavaan tiedostoon (for silmukassa) } // Lue värikoodi Color varikoodi = ladattuKuva[0, 0]; if (varikoodi == Color.White || varikoodi.AlphaComponent == 0) { Peli.MessageDisplay.Add("Kuvan " + Path.GetFileName(kuvaPolku) + " värikoodi on valkoinen tai läpinäkyvä, mitä ei sallita."); continue; // Hyppää seuraavaan tiedostoon (for silmukassa) } // Korvaa värikoodi naapuripikseleistä yleisimmällä. Color[] viereiset = new Color[] { ladattuKuva[1, 0], ladattuKuva[0, 1], ladattuKuva[1, 1] }; ladattuKuva[0, 0] = Apuri.HaeYleisinVariKomponenteittain(viereiset); // Pistä kuva, siihen liittyvä värikoodi ja kuvan nimi talteen if (!kuvaKokoelma.ContainsKey(varikoodi)) { kuvaKokoelma.Add(varikoodi, new List <Image>()); } kuvaKokoelma[varikoodi].Add(ladattuKuva); nimet.Add(ladattuKuva, Path.GetFileNameWithoutExtension(kuvaPolku)); } }
void LataaKentta() { //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä. ColorTileMap ruudut = new ColorTileMap(ValittuKartta); //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. HashSet <Color> varatutVarit = new HashSet <Color>(); Apuri.LisaaKasittelijatVareille(new List <Color>() { KENTÄN_MAALIN_VARI }, ruudut, LisaaMaaliKartalle, ref varatutVarit); Apuri.LisaaKasittelijatVareille(new List <Color>(MaastoKuvat.Keys), ruudut, LisaaMaastoaKartalle, ref varatutVarit); Apuri.LisaaKasittelijatVareille(new List <Color>(HahmoKuvat.Keys), ruudut, LisaaHahmoKartalle, ref varatutVarit); Apuri.LisaaKasittelijatVareille(new List <Color>(EsineKuvat.Keys), ruudut, LisaaEsineKartalle, ref varatutVarit); // Loput värit tulkitaan maastoksi Apuri.LisaaKasittelijatVareille(Apuri.AnnaKaikkiKuvanVarit(ValittuKartta), ruudut, LisaaMaastoaKartalle, ref varatutVarit); //3. Execute luo kentän // Parametreina leveys ja korkeus ruudut.Execute(RUUDUN_LEVEYS + 1, RUUDUN_KORKEUS + 1); // Pelaaja aloittaa keskeltä, jos ei ole merkattuja aloituspaikkoja if (PelaajanAloitusPaikat.Count == 0) { PelaajanAloitusPaikat.Add(new Vector(0, 0)); } // Aseta taustakuva if (ValittuTausta != null) { Level.Background.Image = ValittuTausta; Level.Background.ScaleToLevel(); Level.Background.TileToLevel(); } }