Jypeli  5
The simple game programming library
Appearance.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using Microsoft.Xna.Framework;
6 
7 namespace Jypeli
8 {
9  public partial class Widget
10  {
14  public Color BorderColor { get; set; }
15 
16  private void InitAppearance()
17  {
19  this.IgnoresLighting = true;
20  }
21 
22  protected virtual void Draw( Matrix parentTransformation, Matrix transformation )
23  {
24  }
25 
26  public void Draw( Matrix parentTransformation )
27  {
28  if ( !IsVisible )
29  return;
30 
31  Matrix transformation =
32  Matrix.CreateScale( (float)Size.X, (float)Size.Y, 1f )
33  * Matrix.CreateRotationZ( (float)Angle.Radians )
34  * Matrix.CreateTranslation( (float)Position.X, (float)Position.Y, 0f )
35  * parentTransformation;
36 
37  var lightingEnabled = Renderer.LightingEnabled;
39 
40  if ( Image != null && ( !TextureFillsShape ) )
41  {
42  Renderer.DrawImage( Image, ref transformation, TextureWrapSize );
43  }
44  else if ( Image != null )
45  {
46  Renderer.DrawShape( Shape, ref transformation, ref transformation, Image, TextureWrapSize, Color );
47  }
48  else
49  {
50  Renderer.DrawShape( Shape, ref transformation, Color );
51  }
52 
53  if ( BorderColor != Color.Transparent )
54  {
55  Graphics.LineBatch.Begin( ref transformation );
56  {
57  Vector[] vertices = Shape.Cache.OutlineVertices;
58  for ( int i = 0; i < vertices.Length - 1; i++ )
59  {
60  Graphics.LineBatch.Draw( vertices[i], vertices[i + 1], BorderColor );
61  }
62  Graphics.LineBatch.Draw( vertices[vertices.Length - 1], vertices[0], BorderColor );
63  }
64  Graphics.LineBatch.End();
65  }
66 
67  Draw( parentTransformation, transformation );
68 
69  if ( _childObjects != null && _childObjects.Count > 0 )
70  {
71  Matrix childTransformation =
72  Matrix.CreateRotationZ( (float)Angle.Radians )
73  * Matrix.CreateTranslation( (float)Position.X, (float)Position.Y, 0f )
74  * parentTransformation;
75 
76  DrawChildObjects( ref parentTransformation, ref transformation, ref childTransformation );
77  }
78 
79  Renderer.LightingEnabled = lightingEnabled;
80  }
81 
82  internal protected virtual void DrawChildObjects( ref Matrix parentTransformation, ref Matrix transformation, ref Matrix childTransformation )
83  {
84  foreach ( var child in Objects )
85  {
86  Widget wc = child as Widget;
87 
88  if ( wc != null && wc.IsVisible )
89  {
90  wc.Draw( childTransformation );
91  }
92  }
93  }
94  }
95 }
static void DrawShape(Shape shape, ref Matrix transformation, ref Matrix textureTransformation, Image texture, Vector textureWrapSize, Color color)
Piirtää kuvion niin, että tekstuuri täyttää sen.
Definition: Renderer.cs:285
readonly Vector [] OutlineVertices
Ulkoreunan verteksit, lueteltuna vastapäivään.
Definition: Shapes.cs:586
Kuvio.
Definition: Shapes.cs:48
bool IsVisible
Piirretäänkö oliota ruudulle.
Definition: __GameObject.cs:91
static void DrawImage(Image texture, ref Matrix matrix, Vector wrapSize)
Definition: Renderer.cs:126
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
Definition: Angle.cs:40
void Draw(Matrix parentTransformation)
Definition: Appearance.cs:26
override Vector Size
Olion koko pelimaailmassa. Kertoo olion äärirajat, ei muotoa.
Definition: __GameObject.cs:98
IEnumerable< IGameObject > Objects
Olion lapsioliot. Ei voi muokata.
Definition: __GameObject.cs:84
bool TextureFillsShape
Jos true, kuva piirretään niin, ettei se mene olion muodon ääriviivojen yli. Toisin sanoen kuva piirr...
Käyttöliittymän komponentti.
Definition: Appearance.cs:9
Color BorderColor
Reunojen väri.
Definition: Appearance.cs:14
Kuva.
Definition: Image.cs:24
static readonly Color Transparent
Läpinäkyvä väri.
Definition: Color.cs:869
double Y
Definition: Vector.cs:275
Widget(Animation animation)
Alustaa widgetin.
Definition: Widget.cs:20
double X
Definition: Vector.cs:274
double Radians
Palauttaa tai asettaa kulman radiaaneina.
Definition: Angle.cs:86
static bool LightingEnabled
Definition: Renderer.cs:73
Vector TextureWrapSize
Määrittää kuinka moneen kertaan kuva piirretään. Esimerkiksi (3.0, 2.0) piirtää kuvan 3 kertaa vaakas...
bool IgnoresLighting
Jättääkö olio kentän valaistuksen huomiotta. Asetettu oletuksena käyttöliittymäkomponenteilla (widget)...
Definition: Appearance.cs:97
Väri.
Definition: Color.cs:13
Luokka, joka sisältää metodeita kuvioiden ja tekstuurien piirtämiseen 2D-tasossa. ...
Definition: Renderer.cs:51
virtual void DrawChildObjects(ref Matrix parentTransformation, ref Matrix transformation, ref Matrix childTransformation)
Definition: Appearance.cs:82
2D-vektori.
Definition: Vector.cs:56
virtual Vector Position
Olion paikka. Jos olio on jonkun toisen peliolion lapsi, paikka on suhteessa tämän vanhempaan (Parent...
virtual void Draw(Matrix parentTransformation, Matrix transformation)
Definition: Appearance.cs:22