@@ -10,30 +10,18 @@ class TextInput : Container, IInput
1010 {
1111 public string Text = "" ;
1212 private bool focused = false ;
13- public bool Focused
14- {
15- set
16- {
17- focused = value ;
18- }
19- }
20-
13+ public bool Focused { set { focused = value ; } }
2114 public Color FocusFrameColor = Main . TrackColor ;
15+ public Color TextColor = Color . Yellow ;
2216
23- private Action < IInput > onChangeCallback = null ;
24- public Action < IInput > OnChangeCallback
25- {
26- set
27- {
28- onChangeCallback = value ;
29- }
30- }
17+ public SpriteFont Font = Main . DefaultFont ;
18+
19+ public Action < IInput > OnChangeCallback { private get ; set ; }
20+ public Action < IInput > OnSubmitCallback { private get ; set ; }
3121
3222 private int caretPosition = 0 ;
3323 private float caretTime = 0 ;
3424
35- public Color TextColor = Color . Yellow ;
36-
3725 public TextInput ( int x , int y , int w , int h ) : base ( x , y , w , h , Main . BackgroundColor )
3826 {
3927 MouseEnabled = true ;
@@ -47,6 +35,8 @@ protected override void OnMouseDown()
4735
4836 public override void Update ( float time , float dTime )
4937 {
38+ if ( ! Visible ) return ;
39+
5040 base . Update ( time , dTime ) ;
5141 caretTime += dTime ;
5242 }
@@ -65,8 +55,8 @@ public override void Draw(SpriteBatch spriteBatch)
6555 // text
6656 int x = worldRect . X + 2 ;
6757 int y = worldRect . Y - 1 ;
68- if ( Main . DefaultFont == Main . FontS ) y += 4 ;
69- spriteBatch . DrawString ( Main . DefaultFont , Text , new Vector2 ( x , y ) , TextColor ) ;
58+ if ( Font == Main . FontS ) y += 4 ;
59+ spriteBatch . DrawString ( Font , Text , new Vector2 ( x , y ) , TextColor ) ;
7060
7161 // caret
7262 if ( caretPosition > Text . Length ) caretPosition = Text . Length ;
@@ -76,7 +66,7 @@ public override void Draw(SpriteBatch spriteBatch)
7666
7767 Vector2 textSize = Main . DefaultFont . MeasureString ( left ) ;
7868 x += ( int ) Math . Round ( textSize . X ) ;
79- if ( Main . DefaultFont == Main . FontL ) y += 3 ;
69+ if ( Font == Main . FontL ) y += 3 ;
8070 else y -= 1 ;
8171
8272 spriteBatch . Draw ( Main . WhiteTexture , new Rectangle ( x , y , 1 , Transform . Height - 4 ) , Color . White ) ;
@@ -130,52 +120,52 @@ public bool ProcessKey(Keys key)
130120 if ( ! Main . KeyboardState . IsKeyDown ( Keys . LeftShift ) && ! Main . KeyboardState . IsKeyDown ( Keys . RightShift ) ) s = s . ToLower ( ) ;
131121
132122 Text = left + s + right ;
133- onChangeCallback ? . Invoke ( this ) ;
123+ OnChangeCallback ? . Invoke ( this ) ;
134124 caretPosition += 1 ;
135125 break ;
136126
137127 case Keys . Space :
138128 Text = left + " " + right ;
139- onChangeCallback ? . Invoke ( this ) ;
129+ OnChangeCallback ? . Invoke ( this ) ;
140130 caretPosition += 1 ;
141131 break ;
142132
143133 case Keys . Add :
144134 case Keys . OemPlus :
145135 Text = left + "+" + right ;
146- onChangeCallback ? . Invoke ( this ) ;
136+ OnChangeCallback ? . Invoke ( this ) ;
147137 caretPosition += 1 ;
148138 break ;
149139
150140 case Keys . Subtract :
151141 case Keys . OemMinus :
152142 Text = left + "-" + right ;
153- onChangeCallback ? . Invoke ( this ) ;
143+ OnChangeCallback ? . Invoke ( this ) ;
154144 caretPosition += 1 ;
155145 break ;
156146
157147 case Keys . Decimal :
158148 case Keys . OemComma :
159149 Text = left + "," + right ;
160- onChangeCallback ? . Invoke ( this ) ;
150+ OnChangeCallback ? . Invoke ( this ) ;
161151 caretPosition += 1 ;
162152 break ;
163153
164154 case Keys . OemPeriod :
165155 Text = left + "." + right ;
166- onChangeCallback ? . Invoke ( this ) ;
156+ OnChangeCallback ? . Invoke ( this ) ;
167157 caretPosition += 1 ;
168158 break ;
169159
170160 case Keys . Multiply :
171161 Text = left + "*" + right ;
172- onChangeCallback ? . Invoke ( this ) ;
162+ OnChangeCallback ? . Invoke ( this ) ;
173163 caretPosition += 1 ;
174164 break ;
175165
176166 case Keys . Divide :
177167 Text = left + "/" + right ;
178- onChangeCallback ? . Invoke ( this ) ;
168+ OnChangeCallback ? . Invoke ( this ) ;
179169 caretPosition += 1 ;
180170 break ;
181171
@@ -220,28 +210,29 @@ public bool ProcessKey(Keys key)
220210 }
221211
222212 Text = left + s + right ;
223- onChangeCallback ? . Invoke ( this ) ;
213+ OnChangeCallback ? . Invoke ( this ) ;
224214 caretPosition += 1 ;
225215 break ;
226216
227217 case Keys . Delete :
228218 if ( right . Length > 0 )
229219 {
230220 Text = left + right . Substring ( 1 ) ;
231- onChangeCallback ? . Invoke ( this ) ;
221+ OnChangeCallback ? . Invoke ( this ) ;
232222 }
233223 break ;
234224
235225 case Keys . Back :
236226 if ( left . Length > 0 )
237227 {
238228 Text = left . Substring ( 0 , left . Length - 1 ) + right ;
239- onChangeCallback ? . Invoke ( this ) ;
229+ OnChangeCallback ? . Invoke ( this ) ;
240230 caretPosition -= 1 ;
241231 }
242232 break ;
243233
244234 case Keys . Enter :
235+ OnSubmitCallback ? . Invoke ( this ) ;
245236 Main . SetFocus ( null ) ;
246237 break ;
247238
0 commit comments