Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
        }