Esempio n. 1
0
        public void Har_dimensioner()
        {
            var glMock = Substitute.For <IGrafikkommandon>();
            var bricka = new Bricka(glMock, new Skärmposition(0, 0), new Skärmyta(16, 16));

            Assert.That(bricka.Dimensioner, Is.EqualTo(new Skärmyta(16, 16)));
        }
Esempio n. 2
0
        public void Visar_inte_bilden_om_delen_som_ska_visas_är_mindre_än_1()
        {
            var gl     = Substitute.For <IGrafikkommandon>();
            var bricka = new Bricka(gl, new Skärmposition(0, 0), new Skärmyta(16, 16));

            bricka.Visa(new Skärmposition(0, 0), new Andel(1.0 / 16.0 - 0.01));
            gl.DidNotReceive().DefinieraFyrkanter();
        }
Esempio n. 3
0
        public void Visar_bilden_klippt_enligt_andel(double procent, int maxBredd, int bredd)
        {
            var gl     = Substitute.For <IGrafikkommandon>();
            var bricka = new Bricka(gl, new Skärmposition(0, 0), new Skärmyta(maxBredd, 16));

            bricka.Visa(new Skärmposition(0, 0), new Andel(procent));
            gl.Received().KopieraTexturrektangelTillRityta(0, 0, 0, 0, bredd, 16);
        }
Esempio n. 4
0
        public void Visar_bild_med_rätt_dimensioner(int bredd, int höjd)
        {
            var gl     = Substitute.For <IGrafikkommandon>();
            var bricka = new Bricka(gl, new Skärmposition(0, 0), new Skärmyta(bredd, höjd));

            bricka.Visa(new Skärmposition(0, 0));
            gl.Received().KopieraTexturrektangelTillRityta(0, 0, 0, 0, bredd, höjd);
        }
Esempio n. 5
0
        public void Visar_bild_på_rätt_skärmposition(int x, int y)
        {
            var gl     = Substitute.For <IGrafikkommandon>();
            var bricka = new Bricka(gl, new Skärmposition(0, 0), new Skärmyta(1, 1));

            bricka.Visa(new Skärmposition(x, y));
            gl.Received().KopieraTexturrektangelTillRityta(0, 0, x, y, 1, 1);
        }
Esempio n. 6
0
        public void Har_samma_dimensioner_som_rutan_när_det_bara_är_en_ruta(int x, int y)
        {
            var gl           = Substitute.For <IGrafikkommandon>();
            var brickstorlek = new Skärmyta(x, y);
            var definitioner = new Bricka[] {
                new Bricka(gl, new Skärmposition(0, 0), brickstorlek)
            };
            var fält = new Brickfält(definitioner, new int[] { 0 }, 1, brickstorlek);

            Assert.That(fält.Dimensioner, Is.EqualTo(new Skärmyta(x, y)));
        }
Esempio n. 7
0
        public void Visa_enda_brickan_i_1x1_brickfält_på_position(int x, int y)
        {
            var gl           = Substitute.For <IGrafikkommandon>();
            var brickstorlek = new Skärmyta(1, 1);
            var definitioner = new Bricka[] { new Bricka(gl, new Skärmposition(0, 0), brickstorlek) };
            var karta        = new int[] { 0 };
            var fält         = new Brickfält(definitioner, karta, 1, brickstorlek);

            fält.Visa(new Skärmposition(x, y));

            gl.Received().KopieraTexturrektangelTillRityta(0, 0, x, y, 1, 1);
        }
Esempio n. 8
0
        public void Har_samma_dimensioner_som_rutans_storlek_multiplicerad_med_kartans_dimensioner(
            int brickbredd, int brickhöjd, int antal, int kartbredd, int fältbredd, int fälthöjd)
        {
            var gl           = Substitute.For <IGrafikkommandon>();
            var brickstorlek = new Skärmyta(brickbredd, brickhöjd);
            var definitioner = new Bricka[] {
                new Bricka(gl, new Skärmposition(0, 0), brickstorlek)
            };
            var karta = new int[antal];
            var fält  = new Brickfält(definitioner, karta, kartbredd, brickstorlek);

            Assert.That(fält.Dimensioner, Is.EqualTo(new Skärmyta(fältbredd, fälthöjd)));
        }
Esempio n. 9
0
        public void Gör_undantag_för_att_skapas_med_karta_utan_element()
        {
            var definition = new Bricka[] { new Bricka(Substitute.For <IGrafikkommandon>(), new Skärmposition(0, 0), new Skärmyta(1, 1)) };

            try
            {
                new Brickfält(definition, new int[0], 1, new Skärmyta(4, 4));
                Assert.Fail("Inget undantag gjordes.");
            }
            catch (ArgumentException undantag)
            {
                Assert.That(undantag.Message.ToLower(), Does.Contain("kartelement"));
            }
        }
Esempio n. 10
0
        public void Gör_undantag_för_att_skapas_utan_brickdefinition(string parameter)
        {
            var definition = new Bricka[] { new Bricka(Substitute.For <IGrafikkommandon>(), new Skärmposition(0, 0), new Skärmyta(1, 1)) };

            try
            {
                new Brickfält(
                    parameter == "brickdefinition" ? null : definition,
                    parameter == "karta" ? null : new int[1],
                    1,
                    parameter == "brickstorlek" ? null : new Skärmyta(4, 4));
                Assert.Fail("Inget undantag gjordes.");
            }
            catch (ArgumentException undantag)
            {
                Assert.That(undantag.Message.ToLower(), Does.Contain(parameter));
            }
        }
Esempio n. 11
0
        public void Visar_två_brickor_i_1x2_brickfält()
        {
            var gl           = Substitute.For <IGrafikkommandon>();
            var brickstorlek = new Skärmyta(2, 2);
            var definitioner = new Bricka[] {
                new Bricka(gl, new Skärmposition(1, 2), brickstorlek),
                new Bricka(gl, new Skärmposition(3, 4), brickstorlek)
            };
            var karta = new int[] { 0, 1 };
            var fält  = new Brickfält(definitioner, karta, 1, brickstorlek);

            fält.Visa(new Skärmposition(0, 0));

            Received.InOrder(() =>
            {
                gl.KopieraTexturrektangelTillRityta(1, 2, 0, 0, 2, 2);
                gl.KopieraTexturrektangelTillRityta(3, 4, 0, 2, 2, 2);
            });
        }
Esempio n. 12
0
        public void Visar_brickfält_där_typ_bestäms_av_kartan()
        {
            var gl           = Substitute.For <IGrafikkommandon>();
            var definitioner = new Bricka[] {
                new Bricka(gl, new Skärmposition(4 * 1, 4 * 1), new Skärmyta(4, 4)),
                new Bricka(gl, new Skärmposition(4 * 2, 4 * 1), new Skärmyta(4, 4))
            };
            var brickstorlek = new Skärmyta(4, 4);
            var kartbredd    = 2;
            var karta        = new int[] { 0, 1 };
            var fält         = new Brickfält(definitioner, karta, kartbredd, brickstorlek);

            fält.Visa(new Skärmposition(0, 0));

            Received.InOrder(() =>
            {
                gl.KopieraTexturrektangelTillRityta(4, 4, 0, 0, 4, 4);
                gl.KopieraTexturrektangelTillRityta(8, 4, 4, 0, 4, 4);
            });
        }
Esempio n. 13
0
        private void Initiera()
        {
            var tileset = new BildWrapper("Images/tiles.png");

            var inställningar = new SpelfönsterInställningar
            {
                Fullskärm   = true,
                DoldaKanter = true,
                VSync       = true,
                Bredd       = 16 * 32,
                Höjd        = 16 * 32
            };
            var tangentmappning = new Dictionary <Key, Tangent> {
                { Key.Right, Tangent.Höger },
                { Key.Left, Tangent.Vänster },
                { Key.Up, Tangent.Upp },
                { Key.Down, Tangent.Ner },
                { Key.Escape, Tangent.Escape }
            };

            _fönster = new Spelfönster(tangentmappning, inställningar);
            var spelvärld             = new Spelvärld();
            var grafikkommandon       = new GLWrapper();
            var brickstorlek          = new Rektangel(16, 16);
            var kamera                = new Kamera(new Skärmyta(100, 100));
            var positionskonverterare = new Positionskonverterare(new Skärmyta(16, 16));

            var radioaktivInsektBricka = new Bricka(grafikkommandon, new Skärmposition(5 * 16, 0), new Skärmyta(16, 16));
            var tomBricka           = new Bricka(grafikkommandon, new Skärmposition(15 * 16, 15 * 16), new Skärmyta(16, 16));
            var takBricka           = new Bricka(grafikkommandon, new Skärmposition(2 * 16, 1 * 16), new Skärmyta(16, 16));
            var kabel1Bricka        = new Bricka(grafikkommandon, new Skärmposition(3 * 16, 1 * 16), new Skärmyta(16, 16));
            var kabel2Bricka        = new Bricka(grafikkommandon, new Skärmposition(4 * 16, 1 * 16), new Skärmyta(16, 16));
            var takMedRevaBricka    = new Bricka(grafikkommandon, new Skärmposition(1 * 16, 1 * 16), new Skärmyta(16, 16));
            var ammoBricka          = new Bricka(grafikkommandon, new Skärmposition(0 * 16, 1 * 16), new Skärmyta(16, 16));
            var huvudkaraktärBricka = new Bricka(grafikkommandon, new Skärmposition(0 * 16, 0 * 16), new Skärmyta(16, 16));
            var medicinBricka       = new Bricka(grafikkommandon, new Skärmposition(3 * 16, 2 * 16), new Skärmyta(16, 16));
            var paradisBricka       = new Bricka(grafikkommandon, new Skärmposition(3 * 16, 3 * 16), new Skärmyta(16, 16));
            var hälsomätarram       = new Bricka(grafikkommandon, new Skärmposition(80, 32), new Skärmyta(80, 16));
            var hälsomätargrönt     = new Bricka(grafikkommandon, new Skärmposition(80, 48), new Skärmyta(80, 16));

            spelvärld.Huvudkaraktär = new Huvudkaraktär(4)
            {
                Position = new Spelvärldsposition(1, 1),
                Grafik   = huvudkaraktärBricka
            };

            var skärm = new Skärm();

            var ucVisaSpelvärld = new VisaSpelvärld(spelvärld, positionskonverterare);
            var ucVisaStatus    = new VisaStatus(hälsomätarram, hälsomätargrönt, spelvärld.Huvudkaraktär, skärm);

            var karta       = SkapaKarta();
            var hinderlista = new[] { 0 };
            var hinderkarta = karta.SkapaHinderkarta(hinderlista);

            var ucFlyttaVarelser      = new FlyttaVarelser(spelvärld, hinderkarta);
            var ucUtdelaSkada         = new UtdelaSkada(spelvärld);
            var ucDödaKritisktSkadade = new DödaKritisktSkadade(spelvärld);
            var ucUppdateraSpelvärld  = new UppdateraSpelvärld(ucFlyttaVarelser, ucUtdelaSkada, ucDödaKritisktSkadade);
            var openTKHanterare       = new GrafikHändelser(grafikkommandon, tileset, _fönster, ucVisaSpelvärld, kamera, ucVisaStatus, skärm);
            var kontrollhändelser     = new KontrollHändelser(ucUppdateraSpelvärld, _fönster);

            _fönster.Laddare(openTKHanterare);
            _fönster.StorleksÄndrare(openTKHanterare);
            _fönster.Uppdaterare(openTKHanterare);
            _fönster.Visare(openTKHanterare);
            _fönster.Tangentbordsmottagare(kontrollhändelser);

            var omgivningensBrickor = new Bricka[] {
                tomBricka,
                takBricka,
                kabel1Bricka,
                kabel2Bricka,
                takMedRevaBricka,
                paradisBricka
            };

            spelvärld.MiljöGrafik = new Brickfält(omgivningensBrickor, karta.Indexar, karta.Bredd, new Skärmyta(16, 16));

            var slumpgenerator = new Random();
            var väderstrecken  = new List <Spelvärldsposition>
            {
                new Spelvärldsposition(1, 0),
                new Spelvärldsposition(0, 1),
                new Spelvärldsposition(-1, 0),
                new Spelvärldsposition(0, -1)
            };

            var irraRunt = new SekvensFörflyttning(väderstrecken, new SekvensFörflyttning.SlumpmässigIndexgenerator(slumpgenerator));

            spelvärld.Fienden = new List <Fiende>
            {
                new Fiende {
                    Position           = new Spelvärldsposition(5, 5),
                    Grafik             = radioaktivInsektBricka,
                    Riktningsgenerator = irraRunt
                },
                new Fiende {
                    Position           = new Spelvärldsposition(13, 5),
                    Grafik             = radioaktivInsektBricka,
                    Riktningsgenerator = irraRunt
                }
            };
        }