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); }
/// <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); }