Esempio n. 1
0
        public override void draw(SpriteBatch sprite_batch, GraphicsDevice device, RenderTarget2D[] render_targets)
        {
            Vector2 offset = new Vector2((int)Offset.X, (int)Offset.Y) -
                             (new Vector2(Config.WINDOW_WIDTH, Config.WINDOW_HEIGHT) / 2);

            // Draws the map
            device.SetRenderTarget(render_targets[1]);
            device.Clear(Color.Transparent);
            sprite_batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null);
            Map.draw(sprite_batch, offset + Constants.WorldMap.WORLDMAP_MAP_OFFSET);
            sprite_batch.End();

            // Draw world map event objects
            if (Phase >= Worldmap_Phases.Worldmap_Event && Phase != Worldmap_Phases.Return_To_Title)
            {
                draw_events(sprite_batch, Zoomed_Map_Visible ? Vector2.Zero : offset);
                draw_message(sprite_batch, device, render_targets);
            }

            if (!MenuData.AutoSelectChapter)
            {
                // Draw controls and menus
                if (Phase < Worldmap_Phases.Worldmap_Event || Phase == Worldmap_Phases.Return_To_Title)
                {
                    // Copies the menus onto the map
                    int alpha = 255;
                    if (Phase == Worldmap_Phases.Controls_Fade)
                    {
                        alpha = Fade_Timer * 255 / Constants.WorldMap.WORLDMAP_CONTROLS_FADE_TIME;
                    }

                    // Draw minimap and lord
                    device.SetRenderTarget(render_targets[0]);
                    device.Clear(Color.Transparent);
                    draw_map_objects(sprite_batch, offset);
                    draw_render_target(
                        sprite_batch, device,
                        render_targets[0], render_targets[1],
                        Vector2.Zero, alpha);
                    // Draw menus
                    if (MenuManager != null)
                    {
                        device.SetRenderTarget(render_targets[0]);
                        device.Clear(Color.Transparent);
                        MenuManager.Draw(sprite_batch, device, render_targets);
                        draw_render_target(
                            sprite_batch, device,
                            render_targets[0], render_targets[1],
                            MenuOffset, alpha);
                    }
                }
            }

            device.SetRenderTarget(render_targets[1]);
            if (Hard_Mode_Blocked_Window != null)
            {
                Hard_Mode_Blocked_Window.draw(sprite_batch);
            }

            // Draws the composite image, to allow fading the whole thing
            int fade_alpha = 255;

            if (Phase != Worldmap_Phases.Controls_Fade)
            {
                fade_alpha = ((Phase == Worldmap_Phases.Fade_Out ||
                               Phase == Worldmap_Phases.Return_To_Title) ?
                              Fade_Timer :
                              (Constants.WorldMap.WORLDMAP_FADE_TIME - Fade_Timer)) *
                             255 / Constants.WorldMap.WORLDMAP_FADE_TIME;
            }
            draw_render_target(
                sprite_batch, device,
                render_targets[1], render_targets[0],
                Vector2.Zero, fade_alpha,
                true);

            device.SetRenderTarget(render_targets[0]);

            base.draw(sprite_batch, device, render_targets);
        }