@@ -94,6 +94,19 @@ enum SettingType {
94
94
Shape ,
95
95
Samples ,
96
96
}
97
+ impl SettingType {
98
+ fn label ( & self ) -> & str {
99
+ match self {
100
+ SettingType :: XOffset => "X Offset" ,
101
+ SettingType :: YOffset => "Y Offset" ,
102
+ SettingType :: Blur => "Blur" ,
103
+ SettingType :: Spread => "Spread" ,
104
+ SettingType :: Count => "Count" ,
105
+ SettingType :: Shape => "Shape" ,
106
+ SettingType :: Samples => "Samples" ,
107
+ }
108
+ }
109
+ }
97
110
98
111
#[ derive( Resource , Default ) ]
99
112
struct HeldButton {
@@ -191,50 +204,50 @@ fn setup(
191
204
) )
192
205
. insert ( children ! [
193
206
build_setting_row(
194
- "Shape:" ,
207
+ SettingType :: Shape ,
195
208
SettingsButton :: ShapePrev ,
196
209
SettingsButton :: ShapeNext ,
197
210
shape. index as f32 ,
198
211
& asset_server,
199
212
) ,
200
213
build_setting_row(
201
- "X Offset:" ,
214
+ SettingType :: XOffset ,
202
215
SettingsButton :: XOffsetDec ,
203
216
SettingsButton :: XOffsetInc ,
204
217
shadow. x_offset,
205
218
& asset_server,
206
219
) ,
207
220
build_setting_row(
208
- "Y Offset:" ,
221
+ SettingType :: YOffset ,
209
222
SettingsButton :: YOffsetDec ,
210
223
SettingsButton :: YOffsetInc ,
211
224
shadow. y_offset,
212
225
& asset_server,
213
226
) ,
214
227
build_setting_row(
215
- "Blur:" ,
228
+ SettingType :: Blur ,
216
229
SettingsButton :: BlurDec ,
217
230
SettingsButton :: BlurInc ,
218
231
shadow. blur,
219
232
& asset_server,
220
233
) ,
221
234
build_setting_row(
222
- "Spread:" ,
235
+ SettingType :: Spread ,
223
236
SettingsButton :: SpreadDec ,
224
237
SettingsButton :: SpreadInc ,
225
238
shadow. spread,
226
239
& asset_server,
227
240
) ,
228
241
build_setting_row(
229
- "Count:" ,
242
+ SettingType :: Count ,
230
243
SettingsButton :: CountDec ,
231
244
SettingsButton :: CountInc ,
232
245
shadow. count as f32 ,
233
246
& asset_server,
234
247
) ,
235
248
// Add BoxShadowSamples as a setting row
236
249
build_setting_row(
237
- "Samples:" ,
250
+ SettingType :: Samples ,
238
251
SettingsButton :: SamplesDec ,
239
252
SettingsButton :: SamplesInc ,
240
253
shadow. samples as f32 ,
@@ -278,22 +291,18 @@ fn setup(
278
291
279
292
// Helper to return an input to the children! macro for a setting row
280
293
fn build_setting_row (
281
- label : & str ,
294
+ setting_type : SettingType ,
282
295
dec : SettingsButton ,
283
296
inc : SettingsButton ,
284
297
value : f32 ,
285
298
asset_server : & Res < AssetServer > ,
286
299
) -> impl Bundle {
287
- let label_type = match label {
288
- "X Offset:" => SettingType :: XOffset ,
289
- "Y Offset:" => SettingType :: YOffset ,
290
- "Blur:" => SettingType :: Blur ,
291
- "Spread:" => SettingType :: Spread ,
292
- "Count:" => SettingType :: Count ,
293
- "Shape:" => SettingType :: Shape ,
294
- "Samples:" => SettingType :: Samples ,
295
- _ => panic ! ( "Unknown label: {}" , label) ,
300
+ let value_text = match setting_type {
301
+ SettingType :: Shape => SHAPES [ value as usize % SHAPES . len ( ) ] . 0 . to_string ( ) ,
302
+ SettingType :: Count => format ! ( "{}" , value as usize ) ,
303
+ _ => format ! ( "{:.1}" , value) ,
296
304
} ;
305
+
297
306
(
298
307
Node {
299
308
flex_direction : FlexDirection :: Row ,
@@ -311,7 +320,7 @@ fn build_setting_row(
311
320
} ,
312
321
// Attach SettingType to the value label node, not the parent row
313
322
children![ (
314
- Text :: new( label) ,
323
+ Text :: new( setting_type . label( ) ) ,
315
324
TextFont {
316
325
font: asset_server. load( "fonts/FiraSans-Bold.ttf" ) ,
317
326
font_size: 16.0 ,
@@ -333,7 +342,11 @@ fn build_setting_row(
333
342
BorderRadius :: all( Val :: Px ( 6. ) ) ,
334
343
dec,
335
344
children![ (
336
- Text :: new( if label == "Shape:" { "<" } else { "-" } ) ,
345
+ Text :: new( if setting_type == SettingType :: Shape {
346
+ "<"
347
+ } else {
348
+ "-"
349
+ } ) ,
337
350
TextFont {
338
351
font: asset_server. load( "fonts/FiraSans-Bold.ttf" ) ,
339
352
font_size: 18.0 ,
@@ -352,31 +365,15 @@ fn build_setting_row(
352
365
} ,
353
366
BorderRadius :: all( Val :: Px ( 6. ) ) ,
354
367
children![ {
355
- if label_type == SettingType :: Shape {
356
- (
357
- Text :: new( SHAPES [ value as usize % SHAPES . len( ) ] . 0 ) ,
358
- TextFont {
359
- font: asset_server. load( "fonts/FiraSans-Bold.ttf" ) ,
360
- font_size: 16.0 ,
361
- ..default ( )
362
- } ,
363
- label_type,
364
- )
365
- } else {
366
- (
367
- Text :: new( if label_type == SettingType :: Count {
368
- format!( "{}" , value as usize )
369
- } else {
370
- format!( "{:.1}" , value)
371
- } ) ,
372
- TextFont {
373
- font: asset_server. load( "fonts/FiraSans-Bold.ttf" ) ,
374
- font_size: 16.0 ,
375
- ..default ( )
376
- } ,
377
- label_type,
378
- )
379
- }
368
+ (
369
+ Text :: new( value_text) ,
370
+ TextFont {
371
+ font: asset_server. load( "fonts/FiraSans-Bold.ttf" ) ,
372
+ font_size: 16.0 ,
373
+ ..default ( )
374
+ } ,
375
+ setting_type,
376
+ )
380
377
} ] ,
381
378
) ,
382
379
(
@@ -392,7 +389,11 @@ fn build_setting_row(
392
389
BorderRadius :: all( Val :: Px ( 6. ) ) ,
393
390
inc,
394
391
children![ (
395
- Text :: new( if label == "Shape:" { ">" } else { "+" } ) ,
392
+ Text :: new( if setting_type == SettingType :: Shape {
393
+ ">"
394
+ } else {
395
+ "+"
396
+ } ) ,
396
397
TextFont {
397
398
font: asset_server. load( "fonts/FiraSans-Bold.ttf" ) ,
398
399
font_size: 18.0 ,
0 commit comments