summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/ProgressBar.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/ProgressBar.cs')
-rw-r--r--Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/ProgressBar.cs62
1 files changed, 62 insertions, 0 deletions
diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/ProgressBar.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/ProgressBar.cs
new file mode 100644
index 0000000..6983d09
--- /dev/null
+++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/ProgressBar.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.Xna.Framework;
+using MonoGame.Extended.TextureAtlases;
+
+namespace MonoGame.Extended.Gui.Controls
+{
+ public class ProgressBar : Control
+ {
+ public ProgressBar()
+ {
+ }
+
+ private float _progress = 1.0f;
+ public float Progress
+ {
+ get { return _progress; }
+ set
+ {
+ // ReSharper disable once CompareOfFloatsByEqualityOperator
+ if(_progress != value)
+ {
+ _progress = value;
+ ProgressChanged?.Invoke(this, EventArgs.Empty);
+ }
+ }
+ }
+
+ public TextureRegion2D BarRegion { get; set; }
+ public Color BarColor { get; set; } = Color.White;
+
+ public event EventHandler ProgressChanged;
+
+ public override IEnumerable<Control> Children { get; } = Enumerable.Empty<Control>();
+
+ public override Size GetContentSize(IGuiContext context)
+ {
+ return new Size(5, 5);
+ }
+
+ public override void Draw(IGuiContext context, IGuiRenderer renderer, float deltaSeconds)
+ {
+ base.Draw(context, renderer, deltaSeconds);
+
+ var boundingRectangle = ContentRectangle;
+ var clippingRectangle = new Rectangle(boundingRectangle.X, boundingRectangle.Y, (int)(boundingRectangle.Width * Progress), boundingRectangle.Height);
+
+ if (BarRegion != null)
+ renderer.DrawRegion(BarRegion, BoundingRectangle, BarColor, clippingRectangle);
+ else
+ renderer.FillRectangle(BoundingRectangle, BarColor, clippingRectangle);
+ }
+
+ //protected override void DrawBackground(IGuiContext context, IGuiRenderer renderer, float deltaSeconds)
+ //{
+ // base.DrawBackground(context, renderer, deltaSeconds);
+
+
+ //}
+ }
+} \ No newline at end of file