Пример #1
0
        public Spelfönster(Dictionary <Key, Tangent> tangentmappning, SpelfönsterInställningar inställningar = null)
        {
            _openTKTangentMappning = tangentmappning;
            _openTKWindow          = new GameWindow();

            if (inställningar != null)
            {
                if (inställningar.Bredd > 0)
                {
                    _openTKWindow.Width = inställningar.Bredd;
                }
                if (inställningar.Höjd > 0)
                {
                    _openTKWindow.Height = inställningar.Höjd;
                }
                if (inställningar.VSync)
                {
                    _openTKWindow.VSync = VSyncMode.On;
                }
                if (inställningar.DoldaKanter)
                {
                    _openTKWindow.WindowBorder = WindowBorder.Hidden;
                }
                if (inställningar.Fullskärm)
                {
                    _openTKWindow.WindowState = WindowState.Fullscreen;
                }
            }
        }
Пример #2
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
                }
            };
        }