Jypeli 10
The simple game programming library
SplashScreen.cs
Siirry tämän tiedoston dokumentaatioon.
1using System;
2
3namespace Jypeli.Widgets
4{
8 public class SplashScreen : Window
9 {
11 private string _loadingText = "Loading...";
12
16 public Label NameLabel { get; private set; }
17
21 public Label CopyrightLabel { get; private set; }
22
26 public Label AuthorsLabel { get; private set; }
27
31 public StringListWidget TextBody { get; private set; }
32
37 public Label StartLabel { get; private set; }
38
42 public string ControlHelp
43 {
44 get { return _controlHelp; }
45 set
46 {
48 _controlHelp = value;
49 }
50 }
51
55 public string LoadingText
56 {
57 get { return _loadingText; }
58 set
59 {
61 _loadingText = value;
62 }
63 }
64
69 public event Action GameStarted;
70
71 #region Default dimensions
72
73 private static double DefaultWidth
74 {
75 get
76 {
77#if WINDOWS_PHONE || ANDROID
78 return Game.Screen.Width;
79#else
80 return 600;
81#endif
82 }
83 }
84
85 private static double DefaultTextWidth
86 {
87 get
88 {
89#if WINDOWS_PHONE
90 return Game.Instance.Phone.DisplayResolution == DisplayResolution.Small ? 300 : 500;
91#else
92 return 500;
93#endif
94 }
95 }
96
97 private static double DefaultHeight
98 {
99 get
100 {
101#if WINDOWS_PHONE || ANDROID
102 return Game.Screen.Height;
103#else
104 return 600;
105#endif
106 }
107 }
108
109 private static double DefaultSpacing
110 {
111 get
112 {
113#if WINDOWS_PHONE
114 return Game.Instance.Phone.DisplayResolution == WP7.DisplayResolution.Small ? 0 : 20;
115#else
116 return 50;
117#endif
118 }
119 }
120
121 private static string DefaultControlHelp
122 {
123 get
124 {
125#if WINDOWS_PHONE || ANDROID
126 return "Start the game by tapping here";
127#elif XBOX
128 return "Start the game by pressing A";
129#else
130 return "Start the game by pressing Enter";
131#endif
132 }
133 }
134
135 #endregion
136
140 public SplashScreen(string gameName, string authors, string copyright, string textBody)
142 {
143 Layout = new VerticalLayout() { Spacing = DefaultSpacing };
144
149
150 double targetWidth = 2 * this.Width / 3;
151 NameLabel.TextScale = new Vector(targetWidth / NameLabel.TextSize.X, 2);
154
159 TextBody.Color = new Color(0, 0, 255, 4);
160#if WINDOWS_PHONE || ANDROID
161 if ( DefaultTextWidth < 500 )
162 TextBody.Font = Font.DefaultSmall;
163 else
164 TextBody.Font = Font.DefaultLarge;
165#endif
166 TextBody.Text = textBody;
167
169
171
172 Add(NameLabel);
175 Add(TextBody);
177 }
178
179 private void AddControls()
180 {
181 var l1 = Game.Keyboard.Listen(Key.Enter, ButtonState.Pressed, BeginLoad, null, StartLabel).InContext(this);
182 var l2 = Game.Keyboard.Listen(Key.Escape, ButtonState.Pressed, Game.Instance.Exit, null).InContext(this); ;
183 var l3 = Game.Mouse.Listen(MouseButton.Left, ButtonState.Down, BeginLoad, null, StartLabel).InContext(this);
184 associatedListeners.AddItems(l1, l2, l3);
185
186 for (int i = 0; i < Game.GameControllers.Count; i++)
187 {
188 l1 = Game.GameControllers[i].Listen(Button.A, ButtonState.Pressed, BeginLoad, null, StartLabel).InContext(this);
189 l2 = Game.GameControllers[i].Listen(Button.B, ButtonState.Pressed, Game.Instance.Exit, null).InContext(this);
190 associatedListeners.AddItems(l1, l2);
191 }
192
193 l1 = Game.TouchPanel.ListenOn(StartLabel, ButtonState.Pressed, delegate { BeginLoad(StartLabel); }, null).InContext(this);
194 l2 = Game.PhoneBackButton.Listen(Game.Instance.Exit, null).InContext(this);
195 associatedListeners.AddItems(l1, l2);
196 }
197
198 private void BeginLoad(Label aloitusohje)
199 {
200 // Don't trigger twice
201 if (aloitusohje.Text == LoadingText)
202 return;
203
204 aloitusohje.TextColor = Color.Red;
205 aloitusohje.Text = LoadingText;
207 }
208
209 private void ResumeLoad()
210 {
211 Close();
212 if (GameStarted != null)
213 GameStarted();
214 }
215
216 private Label InitializeTextDisplay(string text, Color textColor)
217 {
218 Label kentta = new Label(text);
219
222 kentta.Width = DefaultTextWidth;
223 kentta.Text = text;
224 kentta.TextColor = textColor;
225
226 return kentta;
227 }
228 }
229}
Listener Listen(Action handler, string helpText)
Kuuntelee puhelimen takaisin-näppäintä.
Definition: BackButton.cs:31
Mobiililaitteiden resoluutiovaihtoehdot
static readonly DisplayResolution Small
Pieni tarkkuus (WVGA, 400 x 240). WP7-yhteensopivuustila, ei varsinaisesti paranna suorituskykyä.
Fontti.
Definition: Font.cs:24
BackButton PhoneBackButton
Puhelimen takaisin-näppäin.
Definition: Controls.cs:67
Device Phone
Phone-olio esim. puhelimen tärisyttämiseen.
Definition: Game.cs:121
Mouse Mouse
Hiiri.
Definition: Controls.cs:49
List< GamePad > GameControllers
Lista kaikista peliohjaimista järjestyksessä.
Definition: Controls.cs:72
Keyboard Keyboard
Näppäimistö.
Definition: Controls.cs:44
static Game Instance
Käynnissä olevan pelin pääolio.
Definition: Game.cs:96
TouchPanel TouchPanel
Kosketusnäyttö
Definition: Controls.cs:62
static ScreenView Screen
Näytön dimensiot, eli koko ja reunat.
Definition: Graphics.cs:90
ILayout Layout
Asettelija lapsiolioille. Asettaa lapsiolioiden koon sekä paikan.
Definition: Layout.cs:99
void Add(IGameObject childObject)
Lisää annetun peliolion tämän olion lapseksi. Lapsiolio liikkuu tämän olion mukana.
Definition: ChildObjects.cs:98
Action AddedToGame
Tapahtuu, kun olio lisätään peliin.
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
Listener Listen(Key k, ButtonState state, Action handler, string helpText)
Kuuntelee näppäinten painalluksia.
Definition: Keyboard.cs:161
Tekstikenttä.
Definition: Label.cs:70
Vector TextSize
Näytettävän tekstin koko. Ei välttämättä sama kuin Size.
Definition: Label.cs:199
virtual string Text
Teksti.
Definition: Label.cs:96
Color TextColor
Tekstin väri.
Definition: Label.cs:204
TextSizeMode SizeMode
Kuinka tekstikentän koko määräytyy.
Definition: Label.cs:190
HorizontalAlignment HorizontalAlignment
Tekstin sijoitus vaakasuunnassa. Vaikuttaa vain, jos tekstikentän koko on suurempi kuin tekstin koko ...
Definition: Label.cs:231
VerticalAlignment VerticalAlignment
Tekstin sijoitus pystysuunnassa. Vaikuttaa vain, jos tekstikentän koko on suurempi kuin tekstin koko ...
Definition: Label.cs:238
Vector TextScale
Tekstin skaalaus. Oletus (1,1) ; isompi suurempi.
Definition: Label.cs:121
Listener Listen(MouseButton button, ButtonState state, Action handler, string helpText)
Kuuntelee hiiren nappulan painalluksia.
Definition: Mouse.cs:350
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äkomponentti, joka näyttää listan merkkijonoja.
string? Text
Kaikki listan alkiot rivinvaihdoilla erotettuna.
Color TextColor
Tekstin väri.
HorizontalAlignment ItemAligment
Listan alkioiden sijoitus vaakasuunnassa.
Font Font
Tekstifontti.
Ajastin, joka voidaan asettaa laukaisemaan tapahtumia tietyin väliajoin.
Definition: Timer.cs:38
static void SingleShot(double seconds, Action onTimeout)
Kutsuu aliohjelmaa onTimeout annetun ajan kuluttua. Ajastin luodaan automaattisesti.
Definition: Timer.cs:220
Listener ListenOn(GameObject obj, HoverState hoverstate, ButtonState buttonstate, TouchHandler handler, string helpText)
Kuuntelee kosketusnäyttöä olion päällä.
Definition: TouchPanel.cs:354
Asettelee widgetit päällekäin, järjestyksessä ylhäältä alas.
List< Listener > associatedListeners
Tähän listaan lisätyt kuuntelijat tuhotaan automaattisesti kun Widget poistetaan pelistä.
Definition: Control.cs:14
Aloitusruutu, joka voidaan näyttää ennen pelin käynnistämistä.
Definition: SplashScreen.cs:9
SplashScreen(string gameName, string authors, string copyright, string textBody)
Alustaa aloitusruudun.
StringListWidget TextBody
Päätekstikenttä.
Definition: SplashScreen.cs:31
Label AuthorsLabel
Pelin tekijät näyttävä tekstikenttä.
Definition: SplashScreen.cs:26
Label NameLabel
Pelin nimen näyttävä tekstikenttä.
Definition: SplashScreen.cs:16
string ControlHelp
Kontrolliohje (Aloita peli painamalla Enter / Xbox A).
Definition: SplashScreen.cs:43
Label StartLabel
Aloita peli painamalla... -tekstin näyttävä tekstikenttä. Käytä ominaisuuksia ControlHelp ja LoadingT...
Definition: SplashScreen.cs:37
Label InitializeTextDisplay(string text, Color textColor)
void BeginLoad(Label aloitusohje)
string LoadingText
Latausteksti.
Definition: SplashScreen.cs:56
Action GameStarted
Tapahtuu kun ruudusta poistutaan. Tee varsinaiset pelin alustukset tämän tapahtuman käsittelijässä.
Definition: SplashScreen.cs:69
static string DefaultControlHelp
static double DefaultTextWidth
Definition: SplashScreen.cs:86
Label CopyrightLabel
Pelin tekijänoikeudet näyttävä tekstikenttä.
Definition: SplashScreen.cs:21
Ikkuna.
Definition: Window.cs:37
void Close()
Sulkee ikkunan.
Definition: Window.cs:215
override Color Color
Ikkunan väri.
Definition: Window.cs:51
Listener InContext(ListenContext context)
Kuuntelee tapahtumaa vain tietyssä kontekstissa.
VerticalAlignment
Asemointi pystysuunnassa.
Definition: View.cs:487
ButtonState
Napin (minkä tahansa) asento.
Definition: ButtonState.cs:37
Button
Definition: Button.cs:36
TextSizeMode
Kuinka tekstikentän kokoa käsitellään.
Definition: Label.cs:42
Key
Näppäimistön näppäin.
Definition: Key.cs:39
HorizontalAlignment
Asemointi vaakasuunnassa.
Definition: View.cs:466
MouseButton
Hiiren napit.
Definition: MouseButton.cs:7
Väri.
Definition: Color.cs:13
static readonly Color Blue
Sininen.
Definition: Color.cs:566
static readonly Color Green
Vihreä.
Definition: Color.cs:701
static readonly Color Black
Musta.
Definition: Color.cs:556
static readonly Color Red
Punainen.
Definition: Color.cs:866
2D-vektori.
Definition: Vector.cs:67
double X
Vektorin X-komponentti.
Definition: Vector.cs:334