Jypeli 10
The simple game programming library
InputWindow.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
30
31
32#if WINDOWS_PHONE || ANDROID
33using Microsoft.Xna.Framework;
34#endif
35
36namespace Jypeli
37{
42 public class InputWindow : CustomQueryWindow<InputBox>
43 {
44 internal override bool OkButtonOnPhone { get { return true; } }
45
49 public int MaxCharacters
50 {
51 get { return InputBox.MaxCharacters; }
52 set { InputBox.MaxCharacters = value; }
53 }
54
59 {
60 get { return QueryWidget; }
61 }
62
66 public Font Font
67 {
68 get { return InputBox.Font; }
69 set { InputBox.Font = value; }
70 }
71
76 public bool ShowWindowOnPhone { get; set; }
77
81 public delegate void InputWindowHandler( InputWindow sender );
82
87
88 private void OnTextEntered()
89 {
90 TextEntered?.Invoke(this);
91 }
92
97 public InputWindow( string question )
98 : base( question )
99 {
100 Init();
101 }
102
109 public InputWindow( double width, double height, string question )
110 : base( width, height, question )
111 {
112 Init();
113 }
114
115 private void Init()
116 {
117 Closed += new WindowHandler(InputWindow_Closed);
118 AddedToGame += AddListeners;
119
120#if ANDROID
121 // Display window at the top of the screen to make space for the virtual keyboard
122
123 // 1.5 is just a magic number that makes it show up properly on my phone,
124 // logically it should be positioned perfectly at the top with 2.0 but
125 // that doesn't seem to be the case
126 Y += Game.Screen.Top - (Height / 1.5);
127#endif
128 }
129
131 protected override InputBox CreateQueryWidget()
132 {
133 //double widthInChars = Width / Font.Default.CharacterWidth;
134 //return new InputBox( (int)widthInChars - 1 );
135 return new InputBox( 40 );
136 }
137
138 static void InputWindow_Closed( Window sender )
139 {
140 ((InputWindow)sender).OnTextEntered();
141 }
142
143 private void Cancel()
144 {
145 InputBox.Text = "";
146 Close();
147 }
148
149 private void AddListeners()
150 {
151 var l1 = Game.Instance.Keyboard.Listen( Key.Enter, ButtonState.Pressed, Close, null ).InContext( this );
152 var l2 = Game.Instance.Keyboard.Listen( Key.Escape, ButtonState.Pressed, Cancel, null ).InContext( this );
153 var l3 = Game.Instance.PhoneBackButton.Listen( Cancel, null ).InContext( this );
154 associatedListeners.AddItems(l1, l2, l3);
155 }
156
157#if WINDOWS_PHONE && TESTING
158 void TouchTextEntered( IAsyncResult result )
159 {
160 string typedText = Guide.EndShowKeyboardInput( result );
161 InputBox.Text = typedText != null ? typedText : "";
162 Close();
163 }
164#endif
165 }
166}
Listener Listen(Action handler, string helpText)
Kuuntelee puhelimen takaisin-näppäintä.
Definition: BackButton.cs:31
Abstrakti kyselyikkuna
Fontti.
Definition: Font.cs:24
BackButton PhoneBackButton
Puhelimen takaisin-näppäin.
Definition: Controls.cs:67
Keyboard Keyboard
Näppäimistö.
Definition: Controls.cs:44
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
Laatikko, johon käyttäjä voi syöttää tekstiä.
Definition: InputBox.cs:39
int MaxCharacters
Suurin määrä merkkejä joita tekstilaatikkoon voi kirjoittaa.
Definition: InputBox.cs:58
override string? Text
Laatikkoon kirjoitettu teksti. Jos asetetaan teksti joka on pidempi kuin MaxCharacters,...
Definition: InputBox.cs:99
Ikkuna, joka sisältää käyttäjän määrittelemän kysymyksen, tekstinsyöttökentän ja OK-painikkeen....
Definition: InputWindow.cs:43
bool ShowWindowOnPhone
Näytetäänkö ikkuna puhelimella. Oletuksena false, jolloin näytetään vain puhelimen oma tekstinsyöttöi...
Definition: InputWindow.cs:76
int MaxCharacters
Suurin määrä merkkejä joita tekstilaatikkoon voi kirjoittaa.
Definition: InputWindow.cs:50
override bool OkButtonOnPhone
Definition: InputWindow.cs:44
static void InputWindow_Closed(Window sender)
Definition: InputWindow.cs:138
InputWindowHandler TextEntered
Tapahtuu kun käyttäjä on syöttänyt tekstin ja painanut OK / sulkenut ikkunan.
Definition: InputWindow.cs:86
InputWindow(double width, double height, string question)
Alustaa uuden tekstinkyselyikkunan.
Definition: InputWindow.cs:109
override InputBox CreateQueryWidget()
Luo widgetin kyselyikkunan käyttöön
Definition: InputWindow.cs:131
delegate void InputWindowHandler(InputWindow sender)
Syöttöikkunatapahtumien käsittelijä.
InputWindow(string question)
Alustaa uuden tekstinkyselyikkunan.
Definition: InputWindow.cs:97
InputBox InputBox
Vastauslaatikko.
Definition: InputWindow.cs:59
Listener Listen(Key k, ButtonState state, Action handler, string helpText)
Kuuntelee näppäinten painalluksia.
Definition: Keyboard.cs:161
virtual Font Font
Tekstin fontti.
Definition: Label.cs:221
double Top
Näytön yläreunan y-koordinaatti.
Definition: View.cs:308
Ikkuna.
Definition: Window.cs:37
Listener InContext(ListenContext context)
Kuuntelee tapahtumaa vain tietyssä kontekstissa.
ButtonState
Napin (minkä tahansa) asento.
Definition: ButtonState.cs:37
Key
Näppäimistön näppäin.
Definition: Key.cs:39