Jypeli 10
The simple game programming library
Background.cs
Siirry tämän tiedoston dokumentaatioon.
1#region MIT License
2/*
3 * Copyright (c) 2009-2011 University of Jyväskylä, Department of Mathematical
4 * Information Technology.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 */
24#endregion
25
26/*
27 * Authors: Tomi Karppinen, Tero Jäntti
28 */
29
30using System;
31using Microsoft.Xna.Framework;
32
34{
38 public class Background : Widget
39 {
41 public override Animation Animation
42 {
43 get { return base.Animation; }
44 set
45 {
46 base.Animation = value;
47 if ( value != null )
48 Size = new Vector( value.Width, value.Height );
49 }
50 }
51
56 public bool MovesWithCamera { get; set; }
57
65 public double Scale { get; set; }
66
70 public void FitToLevel()
71 {
72 Level level = Game.Instance.Level;
73 Size = new Vector( level.Width, level.Height );
75 }
76
80 public void TileToLevel()
81 {
82 Level level = Game.Instance.Level;
83 Size = level.Size;
84 TextureWrapSize = new Vector( level.Width / Image.Width, level.Height / Image.Height );
85 }
86
91 public void ScaleToLevel()
92 {
93 Level level = Game.Instance.Level;
94 Size *= Math.Min( level.Width / this.Width, level.Height / this.Height );
95 }
96
101 public void ScaleToLevelFull()
102 {
103 Level level = Game.Instance.Level;
104 Size *= Math.Max( level.Width / this.Width, level.Height / this.Height );
105 }
106
112 {
113 Level level = Game.Instance.Level;
114 Size *= level.Width / this.Width;
115 }
116
122 {
123 Level level = Game.Instance.Level;
124 Size *= level.Height / this.Height;
125 }
126
132 public Background( double width, double height )
133 : base( width, height )
134 {
135 this.Size = new Vector( width, height );
136 this.Scale = 1.0f;
137 this.MovesWithCamera = true;
138 }
139
144 public Background( Vector size )
145 : this( size.X, size.Y )
146 {
147 }
148
154 public Image CreateStars( int amount )
155 {
156 int imageWidth = (int)Game.Screen.Width;
157 int imageHeight = (int)Game.Screen.Height;
158
159 Image image = Image.CreateStarSky( imageWidth, imageHeight, amount );
160
161 Image = image;
162 MovesWithCamera = false;
163
164 return image;
165 }
166
172 {
173 int textureWidth = (int)Game.Screen.Width;
174 int textureHeight = (int)Game.Screen.Height;
175 int amount = ( textureWidth * textureHeight ) / 1000;
176
177 Image image = this.CreateStars( amount );
178
179 Image = image;
180 MovesWithCamera = false;
181
182 return image;
183 }
184
191 public Image CreateGradient( Color lowerColor, Color upperColor )
192 {
193 int textureWidth = (int)Game.Screen.Width;
194 int textureHeight = (int)Game.Screen.Height;
195 int amount = ( textureWidth * textureHeight ) / 800;
196
197 Image image = Image.FromGradient( textureWidth, textureHeight, lowerColor, upperColor );
198
199 Image = image;
200 MovesWithCamera = false;
201
202 return image;
203 }
204
206 public override void Draw( Matrix parentTransformation, Matrix transformation )
207 {
208 if ( Image == null ) return;
209
210 if ( MovesWithCamera )
211 {
212 Matrix matrix =
213 Matrix.CreateScale( (float)Size.X, (float)Size.Y, 1f )
214 * transformation
215 * parentTransformation;
216 Renderer.DrawImage( Image, ref matrix, TextureWrapSize );
217 }
218 }
219 }
220}
Sarja kuvia, jotka vaihtuvat halutulla nopeudella. Yksi animaatio koostuu yhdestä tai useammasta kuva...
Definition: Animation.cs:62
Animation(params Image[] frames)
Luo uuden animaation.
Definition: Animation.cs:187
Level Level
Aktiivinen kenttä.
Definition: Game.cs:145
static Game Instance
Käynnissä olevan pelin pääolio.
Definition: Game.cs:96
static ScreenView Screen
Näytön dimensiot, eli koko ja reunat.
Definition: Graphics.cs:90
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 X
Olion paikan X-koordinaatti.
double Height
Olion korkeus (Y-suunnassa, korkeimmassa kohdassa).
double Y
Olion paikan Y-koordinaatti.
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
Kuva.
Definition: Image.cs:30
int Width
Leveys pikseleinä.
Definition: Image.cs:374
static Image CreateStarSky(int width, int height, int stars, bool transparent=false)
Luo tähtitaivaskuvan.
Definition: Image.cs:711
static Image FromGradient(int imageWidth, int imageHeight, Color lowerColor, Color upperColor)
Luo pystysuuntaisen liukuväritetyn kuvan.
Definition: Image.cs:862
int Height
Korkeus pikseleinä.
Definition: Image.cs:382
Pelikenttä, johon voi lisätä olioita. Kentällä voi myös olla reunat ja taustaväri tai taustakuva.
Definition: Borders.cs:6
Vector Size
Kentän koko (leveys ja korkeus).
Definition: Level.cs:127
double Width
Kentän leveys.
Definition: Level.cs:109
double Height
Kentän korkeus.
Definition: Level.cs:118
Luokka, joka sisältää metodeita kuvioiden ja tekstuurien piirtämiseen 2D-tasossa.
Definition: Renderer.cs:50
static void DrawImage(Image texture, ref Matrix matrix, Vector wrapSize)
Piirtää kuvan
Definition: Renderer.cs:133
double Width
Näytön leveys x-suunnassa.
Definition: View.cs:222
double Height
Näytön korkeus y-suunnassa.
Definition: View.cs:235
Käyttöliittymän komponentti.
Definition: Appearance.cs:6
Background(double width, double height)
Luo uuden taustakuvan.
Definition: Background.cs:132
void TileToLevel()
Toistaa kuvaa vaaka- ja pystysuunnassa niin että kuvio peittää koko kentän.
Definition: Background.cs:80
void ScaleToLevelByWidth()
Sovittaa taustakuvan kentän kokoiseksi pitäen kuvasuhteen. Kuva sovitetaan niin, että se täyttää kent...
Definition: Background.cs:111
void ScaleToLevelByHeight()
Sovittaa taustakuvan kentän kokoiseksi pitäen kuvasuhteen. Kuva sovitetaan niin, että se täyttää kent...
Definition: Background.cs:121
Image CreateGradient(Color lowerColor, Color upperColor)
Luo liukuväritaustan taustakuvaksi.
Definition: Background.cs:191
double Scale
Taustakuvan skaala. Jos halutaan kaksinkertainen kuva, niin laitetaan skaalaksi 2,...
Definition: Background.cs:65
bool MovesWithCamera
Liikkuuko taustakuva kameran mukana vai ei.
Definition: Background.cs:56
Image CreateStars(int amount)
Luo avaruustaustakuvan.
Definition: Background.cs:154
Image CreateStars()
Luo avaruustaustakuvan.
Definition: Background.cs:171
override void Draw(Matrix parentTransformation, Matrix transformation)
Piirtää elementin ruudulle
Definition: Background.cs:206
void ScaleToLevel()
Sovittaa taustakuvan kentän kokoiseksi pitäen kuvasuhteen. Kuva sovitetaan niin, että se ei ylitä ken...
Definition: Background.cs:91
Background(Vector size)
Luo uuden taustakuvan.
Definition: Background.cs:144
void ScaleToLevelFull()
Sovittaa taustakuvan kentän kokoiseksi pitäen kuvasuhteen. Kuva sovitetaan niin, että se täyttää koko...
Definition: Background.cs:101
void FitToLevel()
Sovittaa taustakuvan kentän kokoiseksi.
Definition: Background.cs:70
Microsoft.Xna.Framework.Matrix Matrix
Definition: Mouse.cs:36
Väri.
Definition: Color.cs:13
2D-vektori.
Definition: Vector.cs:67
static Vector Max(params Vector[] vectors)
Palauttaa pisimmän vektorin.
Definition: Vector.cs:273
double Y
Vektorin Y-komponentti
Definition: Vector.cs:339
double X
Vektorin X-komponentti.
Definition: Vector.cs:334
static Vector Min(params Vector[] vectors)
Palauttaa lyhimmän vektorin.
Definition: Vector.cs:250
static readonly Vector Diagonal
Diagonaalivektori (1,1)
Definition: Vector.cs:91