Jypeli 10
The simple game programming library
ProgressBar.cs
Siirry tämän tiedoston dokumentaatioon.
1using Microsoft.Xna.Framework;
2
3namespace Jypeli.Widgets
4{
9 {
10 // private double h = -1;
11 // private double w = -1;
12
13 private static readonly Vector[] barVertices = new Vector[]
14 {
15 new Vector(-0.5, 0),
16 new Vector(0.5, 0),
17 new Vector(0.5, 1.0),
18 new Vector(-0.5, 1.0)
19 };
20
21 private static readonly IndexTriangle[] barIndices = new IndexTriangle[]
22 {
23 new IndexTriangle(0, 3, 2),
24 new IndexTriangle(0, 2, 1)
25 };
26
27 private static readonly Vector[] borderVertices = new Vector[]
28 {
29 new Vector(-0.5, 0.5),
30 new Vector(-0.5, -0.5),
31 new Vector(0.5, -0.5),
32 new Vector(0.5, 0.5),
33 };
34
35 private static readonly ShapeCache shapeCache = new ShapeCache(barVertices, barIndices);
36
41 public Image BarImage { get; set; }
42
46 public Color BarColor { get; set; }
47
53 public ProgressBar(double width, double height)
54 : base(width, height)
55 {
58 BarImage = null;
59 }
60
67 public ProgressBar(double width, double height, Meter meter)
68 : this(width, height)
69 {
70 BindTo(meter);
71 }
72
76
80 protected override void UpdateValue()
81 {
82 double barLength = Size.X * Meter.RelativeValue;
83
84 imgPart =
85 Matrix.CreateScale((float)barLength, (float)Size.Y, 1f)
86 * Matrix.CreateTranslation((float)(barLength / 2), 0, 0)
87 * Matrix.CreateTranslation((float)(-Width / 2), 0, 0)
88 * Matrix.CreateRotationZ((float)(Angle).Radians)
89 * Matrix.CreateTranslation((float)Position.X, (float)Position.Y, 0.0f);
90
91 imgFull =
92 Matrix.CreateScale((float)Size.X, (float)Size.Y, 1f)
93 * Matrix.CreateRotationZ((float)(Angle).Radians)
94 * Matrix.CreateTranslation((float)Position.X, (float)Position.Y, 0.0f);
95
96 colorPart =
97 Matrix.CreateScale((float)barLength, (float)Size.Y, 1f)
98 * Matrix.CreateTranslation((float)(barLength / 2), 0, 0)
99 * Matrix.CreateTranslation((float)(-Width / 2), (float)(-Height / 2), 0)
100 * Matrix.CreateRotationZ((float)(Angle).Radians)
101 * Matrix.CreateTranslation((float)Position.X, (float)Position.Y, 0.0f);
102 }
103
105 public override void Draw(Matrix parentTransformation, Matrix transformation)
106 {
107 // TODO: Optimization?
108 UpdateValue();
109
110 if (BarImage != null)
111 {
112 Matrix imp = imgPart * parentTransformation;
113 Matrix imf = imgFull * parentTransformation;
114
118 }
119 else
120 {
121 Matrix m = colorPart * parentTransformation;
123 }
124
125 // The border that is drawn by base class gets obscured by the bar.
126 // Let's draw it again.
127 Renderer.DrawPolygon(borderVertices, ref transformation, BorderColor);
128
129 base.Draw(parentTransformation, transformation);
130 }
131 }
132}
override Vector?? Position
Definition: Dimensions.cs:72
Vector TextureWrapSize
Määrittää kuinka moneen kertaan kuva piirretään. Esimerkiksi (3.0, 2.0) piirtää kuvan 3 kerta...
Definition: Appearance.cs:56
override Vector Size
Olion koko pelimaailmassa. Kertoo olion äärirajat, ei muotoa.
Definition: Dimensions.cs:44
double Height
Olion korkeus (Y-suunnassa, korkeimmassa kohdassa).
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
Kuva.
Definition: Image.cs:30
Mittari, joka mittaa erityyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge.
Definition: Meter.cs:100
abstract double RelativeValue
Mittarin suhteellinen arvo (minimi 0, maksimi 1)
Definition: Meter.cs:65
Luokka, joka sisältää metodeita kuvioiden ja tekstuurien piirtämiseen 2D-tasossa.
Definition: Renderer.cs:50
static void DrawPolygon(Vector[] vertices, ref Matrix matrix, Color color)
Piirtää monikulmion ruudulle
Definition: Renderer.cs:460
static void EndDrawingInsideShape()
Lopettaa muodon sisälle piirtämisen
Definition: Renderer.cs:270
static void DrawImage(Image texture, ref Matrix matrix, Vector wrapSize)
Piirtää kuvan
Definition: Renderer.cs:133
static void BeginDrawingInsideShape(Shape shape, ref Matrix transformation)
Makes all the subsequent draw calls until EndDrawingInsideShape limit the drawing inside shape (trans...
Definition: Renderer.cs:249
static void DrawFilledShape(ShapeCache cache, ref Matrix matrix, Color color)
Definition: Renderer.cs:409
Sisältää valmiiksi lasketut kolmiot, joiden avulla piirtäminen on suoraviivaista.
Definition: Shapes.cs:628
Kuvio.
Definition: Shapes.cs:47
static readonly Rectangle Rectangle
Suorakulmio.
Definition: Shapes.cs:73
Color BorderColor
Reunojen väri.
Definition: Appearance.cs:10
Widget, joka voidaan asettaa näyttämään halutun mittarin arvoa.
virtual void BindTo(Meter meter)
Asettaa kontrollin seuraamaan mittarin arvoa.
Palkki, jolla voidaan ilmaista mittarin arvoa graafisesti.
Definition: ProgressBar.cs:9
override void UpdateValue()
Päivittää mittarin näkymän vastaamaan sen arvoa
Definition: ProgressBar.cs:80
ProgressBar(double width, double height)
Palkin rakentaja.
Definition: ProgressBar.cs:53
Color BarColor
Palkin väri.
Definition: ProgressBar.cs:46
ProgressBar(double width, double height, Meter meter)
Palkin rakentaja. Sitoo palkin arvon mittarin arvoon.
Definition: ProgressBar.cs:67
static readonly Vector[] barVertices
Definition: ProgressBar.cs:13
static readonly ShapeCache shapeCache
Definition: ProgressBar.cs:35
override void Draw(Matrix parentTransformation, Matrix transformation)
Piirtää elementin ruudulle
Definition: ProgressBar.cs:105
static readonly Vector[] borderVertices
Definition: ProgressBar.cs:27
Image BarImage
Palkin kuva. Jos erisuuri kuin null, piirretään värin (BarColor) sijasta.
Definition: ProgressBar.cs:41
static readonly IndexTriangle[] barIndices
Definition: ProgressBar.cs:21
Microsoft.Xna.Framework.Matrix Matrix
Definition: Mouse.cs:36
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
Definition: Angle.cs:40
Väri.
Definition: Color.cs:13
static readonly Color Transparent
Läpinäkyvä väri.
Definition: Color.cs:931
static readonly Color Red
Punainen.
Definition: Color.cs:866
Muotojen määrityksessä käytettävä kolmio.
Definition: Shapes.cs:598
2D-vektori.
Definition: Vector.cs:67
double Y
Vektorin Y-komponentti
Definition: Vector.cs:339
double X
Vektorin X-komponentti.
Definition: Vector.cs:334