Exemple #1
0
        /// <summary>
        /// Konstruktorissa liitetään olio tiettyyn peli-instanssiin ja luodaan tarvittavat käyttöliittymäkomponentit.
        /// </summary>
        /// <param name="peli"></param>
        public Kayttoliittyma(Peli peli)
        {
            this.peli = peli;

            LataaUiGrafiikka();

            //Luodaan komponentti, joka näyttää ammustilanteen ja päivittää sitä tilanteen muuttuessa
            ammuksetUI                 = new GameObject(ammusKuvat[6]);
            ammuksetUI.Position        = new Vector(440, 230);
            peli.Ase.Ammukset.Changed += delegate { ammuksetUI.Image = ammusKuvat[peli.Ase.Ammukset.Value]; };
            peli.Add(ammuksetUI, 3);

            //Luodaan komponentti, joka näyttää osumapisteet ja päivittää sitä tilanteen muuttuessa
            hitpointsUI             = new GameObject(hitpointKuvat[3]);
            hitpointsUI.Position    = new Vector(Game.Screen.Right - 20 - hitpointsUI.Width / 2, 350);
            peli.Hitpoints.Changed += delegate { hitpointsUI.Image = hitpointKuvat[peli.Hitpoints]; };
            peli.Add(hitpointsUI, 3);

            //Luodaan muut tarvittavat komponentit
            LuoBonusPalkki();
            LuoPisteNaytot();
            LuoTasoNaytto();
            luoAjastinNaytto();
            LuoViestiNaytto();

            //Luodaan tason vaihtumiseen reagoiva tapahtumankäsittelijä
            peli.Taso.Changed += delegate
            {
                tasoAjastin          = new Timer();
                tasoAjastin.Interval = 1;
                tasoAjastin.Timeout += delegate
                {
                    ajastinLaskuri.Value = ajastinLaskuri.Value - 1;
                };

                ajastinLaskuri.Value = ajastinLaskuri.MaxValue;

                tasoAjastin.Start(3);
            };


            //Ladataan tähtäin kuvatiedostosta
            tahtainMusta = Game.Instance.Content.Load <Texture2D>("tahtain_musta");

            //Ladataan kuvatiedosto, joka näytetään kun aseella ei voi ampua
            noCanShoot = Game.Instance.Content.Load <Texture2D>("no_can_shoot");
        }
Exemple #2
0
        /// <summary>
        /// Luodaan pelaajan korkuinen näkymätön este. Pelaajan ampuessa vihollista tätä objektia
        /// hyödynnetään tarkistaessa osuiko pelaaja suojaan, jonka takana vihollinen on.
        /// </summary>
        /// <returns>Palauttaa luodun esteen, jonka konstruktori lisää olion attribuutiksi</returns>
        private GameObject LuoEste()
        {
            GameObject este = new GameObject(this.Width / 2, this.Height, Shape.Rectangle);

            este.Position = this.Position;
            este.Color    = Color.Transparent;
            peli.Add(este);
            return(este);
        }
Exemple #3
0
        /// <summary>
        /// Luo käyttöliittymään pistetilannetta seuraavan labelin
        /// </summary>
        private void LuoPisteNaytot()
        {
            pisteNaytto           = new Label();
            pisteNaytto.TextColor = Color.Red;
            pisteNaytto.Title     = "Pisteet";
            pisteNaytto.X         = Game.Screen.Left + 50 + pisteNaytto.Width / 2;
            pisteNaytto.Y         = 360;

            //Päivitetään näytön lukemaa pelin pistetilanteen muuttuessa
            pisteNaytto.BindTo(peli.Pisteet);

            //Muutetaan vielä automaattisesti sijaintia siten, että vasen reuna pysyy 50px vasemmasta reunasta vaikka pistelukema kasvaa
            peli.Pisteet.Changed += delegate { pisteNaytto.X = Game.Screen.Left + 50 + pisteNaytto.Width / 2; };

            peli.Add(pisteNaytto);

            //Luodaan label joka näyttää nykyiset ennätyspisteet. Päivittyy vain uuden pelin alussa.
            Label ennatysPisteNaytto = new Label();

            ennatysPisteNaytto.TextColor = Color.Red;
            ennatysPisteNaytto.Text      = "Paras tulos: " + peli.EnnatysPisteet.ToString() + " (Taso " + peli.EnnatysTaso.ToString() + ")";
            ennatysPisteNaytto.X         = Game.Screen.Left + 50 + ennatysPisteNaytto.Width / 2;
            ennatysPisteNaytto.Y         = 330;
            peli.Add(ennatysPisteNaytto);
        }
Exemple #4
0
        /// <summary>
        /// Ase-luokan ainut konstruktori. Ottaa parametreinaan pelin alussa ladatut peligrafiikat ja ääniefektit. Kutsuu yläluokan konstruktoria, joka luo oliosta oikean kokoisen ja muotoisen.
        /// </summary>
        /// <param name="peli">Peli, johon ase kuuluuu</param>
        /// <param name="asePeruskuvat">Taulukko, joka sisältää aseen normaalin kuvan sekä laukauksen aukaisen kuvan</param>
        /// <param name="aseLatauskuvat">Taulukko, joka sisältää kuvasarjan aseen lataamisesta</param>
        /// <param name="aseAanet">Taulukko, joka sisältää aseeseen liittyvät äänitehosteet</param>
        public Ase(Peli peli) : base(450, 400)
        {
            this.peli = peli;

            LataaGrafiikkaJaAanet();
            this.Image = asePerusKuvat[0];

            this.Y = -384;
            this.X = 384;
            peli.Add(this, 3);

            //Luodaan ammustilannetta seuraava mittari. Käyttöliittymä kuuntelee suoraan muutoksia mittarin arvoihin.
            Ammukset             = new IntMeter(6);
            Ammukset.LowerLimit += LataaAse;

            //Luodaan bonuksen aktivoituessa käynnistyvä ajastin
            bonusAjastin          = new Timer();
            bonusLaskuri          = new DoubleMeter(0);
            bonusLaskuri.MaxValue = 5;
        }