private void DrawRayTracer(AbstractMap map, RayTracer rayTracer, Surface surface) { int positionX; int positionY; foreach (RayTracerPoint rayTracerPoint in rayTracer) { positionX = (int)(rayTracerPoint.X / precision); positionY = (int)(rayTracerPoint.Y / precision); if (PointLoader.IsPositionValid(positionX, positionY)) { surface.Draw(PointLoader.GetPoint(positionX, positionY), Color.White); } } }
private Surface GetOrCreateMapSurface(AbstractMap map) { if (this.currentMap != map) { this.currentMap = map; mapSurface = null; } if (mapSurface != null) { return(mapSurface); } int pixelWidth = (int)Math.Ceiling((double)map.Width / precision); int pixelHeight = (int)Math.Ceiling((double)map.Height / precision); mapSurface = new Surface(pixelWidth, pixelHeight); int pixelLocationX = 0; for (double mapLocationX = 0; mapLocationX < map.Width; mapLocationX += precision) { int pixelLocationY = 0; for (double mapLocationY = 0; mapLocationY < map.Height; mapLocationY += precision) { if (map.GetMatterTypeAt(mapLocationX, mapLocationY) != null) { if (PointLoader.IsPositionValid(pixelLocationX, pixelLocationY)) { mapSurface.Draw(PointLoader.GetPoint(pixelLocationX, pixelLocationY), Color.Gray); } } pixelLocationY++; } pixelLocationX++; } mapSurface.Transparent = true; return(mapSurface); }
public override void Update(World world, RayTracer rayTracer) { int receivedAttackCycle = world.CurrentPlayer.ReceivedAttackCycle.GetCycleState(); if (receivedAttackCycle > 0 && (receivedAttackCycle == 0 || (random.Next(6) == 0))) { mainSurface.Fill(Color.Red); } else { int gradientOffset = (int)(world.CurrentPlayer.MouseLook * screenHeight) - screenHeight / 2; mainSurface.Blit(gradient.Surface, PointLoader.GetPoint(0, gradientOffset)); columnViewer.Update(world.CurrentPlayer, rayTracer, world.Map, mainSurface); if (isMiniMapOn) { minimap.Update(world, rayTracer, mainSurface); } } mainSurface.Update(); }