Ejemplo n.º 1
0
    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();
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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));
        }
    }
Ejemplo n.º 4
0
    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();
        }
    }