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