コード例 #1
0
        public void Render()
        {
            if (!_parentControl.Created)
            {
                return;
            }

            DrawTitle();
            _systemTime = DateTime.Now;
            _tick       = _systemTime.Ticks;
            BackSurface.Draw(_mapRect, MapSurface, 0);

            foreach (var bomb in Bombs)
            {
                bomb.Draw();
            }

            foreach (var mySprite in MySprites)
            {
                mySprite.Move();
                mySprite.Draw();
                mySprite.DrawWeapon();
                mySprite.DrawLife();

                if (mySprite.Live < 0)
                {
                    mySprite.Killed = true;
                    GameMap.MapChars[mySprite.MapPoint.X][mySprite.MapPoint.Y] = 'T';
                    GameMap.Draw();
                }
            }

            DrawFps();

            _fPrimarySurface.Draw(
                new Rectangle(
                    _parentControl.Location,
                    new Size(SCREEN_WIDTH, SCREEN_HEIGHT)),
                _backSurface,
                DrawFlags.DoNotWait);
        }
コード例 #2
0
        /// <summary>
        /// Inits DirectDraw and map.
        /// </summary>
        public void InitDraw()
        {
            _map = new Map(this, MAP_WIDTH_CELLS, MAP_HEIGHT_CELLS);
            var clipper = new Clipper {
                Window = _parentControl
            };

            _renderRect = new Rectangle(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
            _mapRect    = new Rectangle(
                0,
                MAP_TOP_BORDER_OFFSET,
                MAP_WIDTH_CELLS * CELL_SIZE,
                MAP_HEIGHT_CELLS * CELL_SIZE);

            _fDirectDraw = new Device();
            _fDirectDraw.SetCooperativeLevel(_parentControl, CooperativeLevelFlags.Normal);

//            _fDirectDraw.SetCooperativeLevel(_parentControl, CooperativeLevelFlags.FullscreenExclusive);
//            _fDirectDraw.SetDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, BIT_DEPTH, 0, false);

            var ddPrimarySurfaceDesc = new SurfaceDescription
            {
                SurfaceCaps = new SurfaceCaps
                {
                    PrimarySurface = true,
                    VideoMemory    = true
                }
            };

            _fPrimarySurface = new Surface(ddPrimarySurfaceDesc, _fDirectDraw)
            {
                Clipper = clipper
            };


            var ddBackSurfaceDesc = new SurfaceDescription
            {
                SurfaceCaps =
                {
                    OffScreenPlain = true,
                    VideoMemory    = true
                },
                Width  = _renderRect.Width,
                Height = _renderRect.Height
            };

            _backSurface = new Surface(ddBackSurfaceDesc, _fDirectDraw);

            var ddSurfaceDesc2 = new SurfaceDescription
            {
                SurfaceCaps =
                {
                    OffScreenPlain = true,
                    VideoMemory    = true
                },
                Width  = MAP_WIDTH_CELLS * CELL_SIZE,
                Height = MAP_HEIGHT_CELLS * CELL_SIZE
            };

            MapSurface = new Surface(ddSurfaceDesc2, _fDirectDraw);

            BackSurface.ColorFill(Color.Black);
        }