public static void DrawAllTasks() { lock (_lock_TaskDictEdit) { if (TaskDict.Count > 0) { GFX.SpriteBatchBegin(); //int i = 0; int currentVerticalOffset = 0; foreach (var kvp in TaskDict) { int taskRectHeight = GuiTaskRectHeightWithBar; if (kvp.Value.ProgressRatio < 0) { taskRectHeight = GuiTaskRectHeightNoBar; } // Draw Task Rect Rectangle thisTaskRect = new Rectangle( GFX.Device.Viewport.Width - GuiTaskRectWidth - GuiDistFromEdgesOfScreenX, GuiDistFromEdgesOfScreenY + currentVerticalOffset, GuiTaskRectWidth, taskRectHeight); GFX.SpriteBatch.Draw(Main.DEFAULT_TEXTURE_DIFFUSE, thisTaskRect, Color.Black * 0.85f); if (kvp.Value.ProgressRatio >= 0) { // Draw Progress Background Rect Rectangle progBackgroundRect = new Rectangle(thisTaskRect.X + GuiProgBarDistFromRectEdge, thisTaskRect.Y + taskRectHeight - GuiProgBarDistFromRectEdge - GuiProgBarHeight, thisTaskRect.Width - (GuiProgBarDistFromRectEdge * 2), GuiProgBarHeight); GFX.SpriteBatch.Draw(Main.DEFAULT_TEXTURE_DIFFUSE, progBackgroundRect, new Color(0.25f, 0.25f, 0.25f) * 0.95f); // Draw Progress Foreground Rect Rectangle progForegroundRect = new Rectangle( progBackgroundRect.X + GuiProgBarEdgeThickness, progBackgroundRect.Y + GuiProgBarEdgeThickness, (int)((progBackgroundRect.Width - (GuiProgBarEdgeThickness * 2)) * kvp.Value.ProgressRatio), progBackgroundRect.Height - (GuiProgBarEdgeThickness * 2)); GFX.SpriteBatch.Draw(Main.DEFAULT_TEXTURE_DIFFUSE, progForegroundRect, kvp.Value.IsBeingKilledManually ? Color.Red : Color.White); } // Draw Task Name Vector2 taskNamePos = new Vector2(thisTaskRect.X + GuiProgNameDistFromEdge, thisTaskRect.Y + GuiProgNameDistFromEdge); DBG.DrawOutlinedText(kvp.Value.DisplayString, taskNamePos, Color.White, DBG.DEBUG_FONT_SMALL, startAndEndSpriteBatchForMe: false); currentVerticalOffset += (GuiDistBetweenProgressRects + taskRectHeight); } GFX.SpriteBatchEnd(); } } }