@@ -4,7 +4,7 @@ namespace SpriteKind {
4
4
5
5
//% color="#FF9F00"
6
6
//% icon="\uf0ae"
7
- //% groups="['Splash']"
7
+ //% groups="['Splash', 'Loading' ]"
8
8
namespace LoadingAnimations {
9
9
class InhouseAnimation {
10
10
private running : boolean ;
@@ -302,7 +302,7 @@ namespace LoadingAnimations {
302
302
}
303
303
}
304
304
305
- export class Loading extends InhouseAnimation {
305
+ class Loading extends InhouseAnimation {
306
306
private _current : number ;
307
307
private _minimum : number ;
308
308
private _maximum : number ;
@@ -494,7 +494,7 @@ namespace LoadingAnimations {
494
494
bar . image . fillRect (
495
495
2 ,
496
496
2 ,
497
- this . scale ( this . _current , this . _minimum , this . _maximum , 0 , inner_width + 1 ) ,
497
+ this . scale ( this . _current , this . _minimum , this . _maximum , 0 , inner_width ) ,
498
498
inner_height ,
499
499
1
500
500
) ;
@@ -546,4 +546,119 @@ namespace LoadingAnimations {
546
546
_splash . stop ( ) ;
547
547
}
548
548
}
549
+
550
+ let _loading : Loading | undefined = undefined ;
551
+
552
+ /**
553
+ * Show and start the loading screen animation.
554
+ *
555
+ * @param z_index The Z index of the sprites for the animation.
556
+ */
557
+ //% block="show loading || at z %z_index"
558
+ //% group="Loading"
559
+ //% expandableArgumentMode="toggle"
560
+ //% weight=80
561
+ export function show_loading ( z_index : number = 0 ) : void {
562
+ if ( _loading ) {
563
+ hide_loading ( ) ;
564
+ }
565
+ _loading = new Loading ( z_index ) ;
566
+ _loading . start ( ) ;
567
+ }
568
+
569
+ /**
570
+ * Hide and destroy the loading screen animation.
571
+ */
572
+ //% block="hide loading"
573
+ //% group="Loading"
574
+ //% expandableArgumentMode="toggle"
575
+ //% weight=70
576
+ export function hide_loading ( ) : void {
577
+ if ( _loading ) {
578
+ _loading . stop ( ) ;
579
+ }
580
+ }
581
+
582
+ export enum LoadingValue {
583
+ //% block="minimum"
584
+ Minimum ,
585
+ //% block="current"
586
+ Current ,
587
+ //% block="maximum"
588
+ Maximum
589
+ }
590
+
591
+ /**
592
+ * Set a value on the loading animation.
593
+ *
594
+ * @param option A property from the LoadingValue enum.
595
+ * @param value The value to set it to.
596
+ */
597
+ //% block="set loading %option to %value"
598
+ //% group="Loading"
599
+ //% weight=60
600
+ export function set_loading_value ( option : LoadingValue , value : number ) : void {
601
+ if ( ! _loading ) {
602
+ return ;
603
+ }
604
+ switch ( option ) {
605
+ case ( LoadingValue . Minimum ) : {
606
+ _loading . minimum = value ;
607
+ break ;
608
+ }
609
+ case ( LoadingValue . Current ) : {
610
+ _loading . current = value ;
611
+ break ;
612
+ }
613
+ case ( LoadingValue . Maximum ) : {
614
+ _loading . maximum = value ;
615
+ break ;
616
+ }
617
+ default : {
618
+ throw "Not a valid property to set on the loading bar" ;
619
+ }
620
+ }
621
+ }
622
+
623
+ /**
624
+ * Get a value on the loading animation.
625
+ *
626
+ * @param option A property from the LoadingValue enum.
627
+ * @return A number. 0 if the loading screen hasn't started yet.
628
+ */
629
+ //% block="get loading %option"
630
+ //% group="Loading"
631
+ //% weight=50
632
+ export function get_loading_value ( option : LoadingValue ) : number {
633
+ if ( ! _loading ) {
634
+ return 0 ;
635
+ }
636
+ switch ( option ) {
637
+ case ( LoadingValue . Minimum ) : {
638
+ return _loading . minimum ;
639
+ }
640
+ case ( LoadingValue . Current ) : {
641
+ return _loading . current ;
642
+ }
643
+ case ( LoadingValue . Maximum ) : {
644
+ return _loading . maximum ;
645
+ }
646
+ default : {
647
+ throw "Not a valid property to get on the loading bar" ;
648
+ }
649
+ }
650
+ }
651
+
652
+ /**
653
+ * Change a value on the loading animation.
654
+ *
655
+ * @param option A property from the LoadingValue enum.
656
+ * @param value The value to set it to.
657
+ */
658
+ //% block="change loading %option by %value"
659
+ //% group="Loading"
660
+ //% weight=40
661
+ export function change_loading_value ( option : LoadingValue , value : number ) : void {
662
+ set_loading_value ( option , get_loading_value ( option ) + value ) ;
663
+ }
549
664
}
0 commit comments