refactor: Modernize switch; use switch-expressions and no break; (#3133)

Replaces the switch cases that can be replaces with switch expressions
and removes `break;` where it isn't needed.

https://dart.dev/language/branches#switch-statements
This commit is contained in:
Lukas Klingsbo
2024-04-18 23:41:08 +02:00
committed by GitHub
parent 69f5c388ce
commit b283b82f6c
29 changed files with 183 additions and 425 deletions

View File

@ -10,29 +10,16 @@ void main() {
if (page.startsWith('?')) { if (page.startsWith('?')) {
page = page.substring(1); page = page.substring(1);
} }
switch (page) { return switch (page) {
case 'step2': 'step2' => step2.main(),
step2.main(); 'step3' => step3.main(),
break; 'step4' => step4.main(),
'step5' => step5.main(),
case 'step3': _ => runApp(
step3.main();
break;
case 'step4':
step4.main();
break;
case 'step5':
step5.main();
break;
default:
runApp(
Directionality( Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
child: Text('Error: unknown page name "$page"'), child: Text('Error=> unknown page name "$page"'),
), ),
); ),
} };
} }

View File

@ -97,29 +97,24 @@ class Card extends PositionComponent {
switch (rank.value) { switch (rank.value) {
case 1: case 1:
_drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5); _drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5);
break;
case 2: case 2:
_drawSprite(canvas, suitSprite, 0.5, 0.25); _drawSprite(canvas, suitSprite, 0.5, 0.25);
_drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true);
break;
case 3: case 3:
_drawSprite(canvas, suitSprite, 0.5, 0.2); _drawSprite(canvas, suitSprite, 0.5, 0.2);
_drawSprite(canvas, suitSprite, 0.5, 0.5); _drawSprite(canvas, suitSprite, 0.5, 0.5);
_drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true);
break;
case 4: case 4:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 5: case 5:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.5); _drawSprite(canvas, suitSprite, 0.5, 0.5);
break;
case 6: case 6:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
@ -127,7 +122,6 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.7, 0.5); _drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 7: case 7:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -136,7 +130,6 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.7, 0.5); _drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
break;
case 8: case 8:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -146,7 +139,6 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true);
break;
case 9: case 9:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -157,7 +149,6 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 10: case 10:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -169,16 +160,12 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 11: case 11:
_drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5);
break;
case 12: case 12:
_drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5);
break;
case 13: case 13:
_drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5);
break;
} }
} }

View File

@ -105,29 +105,24 @@ class Card extends PositionComponent with DragCallbacks {
switch (rank.value) { switch (rank.value) {
case 1: case 1:
_drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5); _drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5);
break;
case 2: case 2:
_drawSprite(canvas, suitSprite, 0.5, 0.25); _drawSprite(canvas, suitSprite, 0.5, 0.25);
_drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true);
break;
case 3: case 3:
_drawSprite(canvas, suitSprite, 0.5, 0.2); _drawSprite(canvas, suitSprite, 0.5, 0.2);
_drawSprite(canvas, suitSprite, 0.5, 0.5); _drawSprite(canvas, suitSprite, 0.5, 0.5);
_drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true);
break;
case 4: case 4:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 5: case 5:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.5); _drawSprite(canvas, suitSprite, 0.5, 0.5);
break;
case 6: case 6:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
@ -135,7 +130,6 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.7, 0.5); _drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 7: case 7:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -144,7 +138,6 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.7, 0.5); _drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
break;
case 8: case 8:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -154,7 +147,6 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true);
break;
case 9: case 9:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -165,7 +157,6 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 10: case 10:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -177,16 +168,12 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 11: case 11:
_drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5);
break;
case 12: case 12:
_drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5);
break;
case 13: case 13:
_drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5);
break;
} }
} }

View File

@ -143,29 +143,24 @@ class Card extends PositionComponent
switch (rank.value) { switch (rank.value) {
case 1: case 1:
_drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5); _drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5);
break;
case 2: case 2:
_drawSprite(canvas, suitSprite, 0.5, 0.25); _drawSprite(canvas, suitSprite, 0.5, 0.25);
_drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true);
break;
case 3: case 3:
_drawSprite(canvas, suitSprite, 0.5, 0.2); _drawSprite(canvas, suitSprite, 0.5, 0.2);
_drawSprite(canvas, suitSprite, 0.5, 0.5); _drawSprite(canvas, suitSprite, 0.5, 0.5);
_drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true);
break;
case 4: case 4:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 5: case 5:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.5); _drawSprite(canvas, suitSprite, 0.5, 0.5);
break;
case 6: case 6:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
@ -173,7 +168,6 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.7, 0.5); _drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 7: case 7:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -182,7 +176,6 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.7, 0.5); _drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
break;
case 8: case 8:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -192,7 +185,6 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true);
break;
case 9: case 9:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -203,7 +195,6 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 10: case 10:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -215,16 +206,12 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 11: case 11:
_drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5);
break;
case 12: case 12:
_drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5);
break;
case 13: case 13:
_drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5); _drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5);
break;
} }
} }

View File

@ -401,29 +401,24 @@ of drawing various sprites in different places on the card's face:
switch (rank.value) { switch (rank.value) {
case 1: case 1:
_drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5); _drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5);
break;
case 2: case 2:
_drawSprite(canvas, suitSprite, 0.5, 0.25); _drawSprite(canvas, suitSprite, 0.5, 0.25);
_drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true);
break;
case 3: case 3:
_drawSprite(canvas, suitSprite, 0.5, 0.2); _drawSprite(canvas, suitSprite, 0.5, 0.2);
_drawSprite(canvas, suitSprite, 0.5, 0.5); _drawSprite(canvas, suitSprite, 0.5, 0.5);
_drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true);
break;
case 4: case 4:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 5: case 5:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.5); _drawSprite(canvas, suitSprite, 0.5, 0.5);
break;
case 6: case 6:
_drawSprite(canvas, suitSprite, 0.3, 0.25); _drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25); _drawSprite(canvas, suitSprite, 0.7, 0.25);
@ -431,7 +426,6 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.7, 0.5); _drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 7: case 7:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -440,7 +434,6 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.7, 0.5); _drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
break;
case 8: case 8:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -450,7 +443,6 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true);
break;
case 9: case 9:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -461,7 +453,6 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 10: case 10:
_drawSprite(canvas, suitSprite, 0.3, 0.2); _drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2); _drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -473,16 +464,12 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true); _drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true); _drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 11: case 11:
_drawSprite(canvas, suit.isRed? redJack : blackJack, 0.5, 0.5); _drawSprite(canvas, suit.isRed? redJack : blackJack, 0.5, 0.5);
break;
case 12: case 12:
_drawSprite(canvas, suit.isRed? redQueen : blackQueen, 0.5, 0.5); _drawSprite(canvas, suit.isRed? redQueen : blackQueen, 0.5, 0.5);
break;
case 13: case 13:
_drawSprite(canvas, suit.isRed? redKing : blackKing, 0.5, 0.5); _drawSprite(canvas, suit.isRed? redKing : blackKing, 0.5, 0.5);
break;
} }
``` ```

View File

@ -56,40 +56,26 @@ class EmberQuestGame extends FlameGame
void loadGameSegments(int segmentIndex, double xPositionOffset) { void loadGameSegments(int segmentIndex, double xPositionOffset) {
for (final block in segments[segmentIndex]) { for (final block in segments[segmentIndex]) {
switch (block.blockType) { final component = switch (block.blockType) {
case GroundBlock: GroundBlock => GroundBlock(
world.add( gridPosition: block.gridPosition,
GroundBlock( xOffset: xPositionOffset,
gridPosition: block.gridPosition, ),
xOffset: xPositionOffset, PlatformBlock => PlatformBlock(
), gridPosition: block.gridPosition,
); xOffset: xPositionOffset,
break; ),
case PlatformBlock: Star => Star(
world.add( gridPosition: block.gridPosition,
PlatformBlock( xOffset: xPositionOffset,
gridPosition: block.gridPosition, ),
xOffset: xPositionOffset, WaterEnemy => WaterEnemy(
), gridPosition: block.gridPosition,
); xOffset: xPositionOffset,
break; ),
case Star: _ => throw UnimplementedError(),
world.add( };
Star( world.add(component);
gridPosition: block.gridPosition,
xOffset: xPositionOffset,
),
);
break;
case WaterEnemy:
world.add(
WaterEnemy(
gridPosition: block.gridPosition,
xOffset: xPositionOffset,
),
);
break;
}
} }
} }

View File

@ -235,13 +235,9 @@ void loadGameSegments(int segmentIndex, double xPositionOffset) {
for (final block in segments[segmentIndex]) { for (final block in segments[segmentIndex]) {
switch (block.blockType) { switch (block.blockType) {
case GroundBlock: case GroundBlock:
break;
case PlatformBlock: case PlatformBlock:
break;
case Star: case Star:
break;
case WaterEnemy: case WaterEnemy:
break;
} }
} }
} }
@ -434,7 +430,6 @@ case PlatformBlock:
gridPosition: block.gridPosition, gridPosition: block.gridPosition,
xOffset: xPositionOffset, xOffset: xPositionOffset,
)); ));
break;
``` ```
If you run your code, you should now see: If you run your code, you should now see:

View File

@ -90,7 +90,6 @@ case Star:
xOffset: xPositionOffset, xOffset: xPositionOffset,
), ),
); );
break;
``` ```
If you run your game, you should now see pulsating stars! If you run your game, you should now see pulsating stars!
@ -177,7 +176,6 @@ case WaterEnemy:
xOffset: xPositionOffset, xOffset: xPositionOffset,
), ),
); );
break;
``` ```
If you run the game now, the Water Enemy should be displayed and moving! If you run the game now, the Water Enemy should be displayed and moving!
@ -397,7 +395,6 @@ case GroundBlock:
xOffset: xPositionOffset, xOffset: xPositionOffset,
), ),
); );
break;
``` ```
If you run your code, your game should now look like this: If you run your code, your game should now look like this:

View File

@ -14,32 +14,18 @@ void main() {
page = page.substring(1); page = page.substring(1);
} }
switch (page) { return switch (page) {
case 'step1': 'step1' => step1.main(),
step1.main(); 'step2' => step2.main(),
break; 'step3' => step3.main(),
case 'step2': 'step4' => step4.main(),
step2.main(); 'step5' => step5.main(),
break; 'step6' => step6.main(),
case 'step3': _ => runApp(
step3.main();
break;
case 'step4':
step4.main();
break;
case 'step5':
step5.main();
break;
case 'step6':
step6.main();
break;
default:
runApp(
Directionality( Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
child: Text('Error: unknown page name "$page"'), child: Text('Error: unknown page name "$page"'),
), ),
); ),
} };
} }

View File

@ -8,12 +8,10 @@ enum GameColors {
extension GameColorExtension on GameColors { extension GameColorExtension on GameColors {
Color get color { Color get color {
switch (this) { return switch (this) {
case GameColors.green: GameColors.green => ColorExtension.fromRGBHexString('#14F596'),
return ColorExtension.fromRGBHexString('#14F596'); GameColors.blue => ColorExtension.fromRGBHexString('#81DDF9'),
case GameColors.blue: };
return ColorExtension.fromRGBHexString('#81DDF9');
}
} }
Paint get paint => Paint()..color = color; Paint get paint => Paint()..color = color;

View File

@ -89,19 +89,17 @@ class ObstacleTypeSettings {
); );
Sprite sprite(Image spriteImage) { Sprite sprite(Image spriteImage) {
switch (type) { return switch (type) {
case ObstacleType.cactusSmall: ObstacleType.cactusSmall => Sprite(
return Sprite(
spriteImage, spriteImage,
srcPosition: Vector2(446.0, 2.0), srcPosition: Vector2(446.0, 2.0),
srcSize: size, srcSize: size,
); ),
case ObstacleType.cactusLarge: ObstacleType.cactusLarge => Sprite(
return Sprite(
spriteImage, spriteImage,
srcPosition: Vector2(652.0, 2.0), srcPosition: Vector2(652.0, 2.0),
srcSize: size, srcSize: size,
); ),
} };
} }
} }

View File

@ -115,16 +115,10 @@ class CalculatePrimeNumber extends PositionComponent
final nextInt = _primeData.key + 1; final nextInt = _primeData.key + 1;
try { try {
final bool isPrime; final isPrime = switch (computeType) {
ComputeType.isolate => await isolateCompute(_isPrime, nextInt),
switch (computeType) { ComputeType.synchronous => _isPrime(nextInt),
case ComputeType.isolate: };
isPrime = await isolateCompute(_isPrime, nextInt);
break;
case ComputeType.synchronous:
isPrime = _isPrime(nextInt);
break;
}
_primeData = MapEntry(nextInt, isPrime); _primeData = MapEntry(nextInt, isPrime);
} on BackpressureDropException catch (_) { } on BackpressureDropException catch (_) {

View File

@ -287,15 +287,13 @@ MyCollidable randomCollidable(
final rng = random ?? Random(); final rng = random ?? Random();
final rotationSpeed = 0.5 - rng.nextDouble(); final rotationSpeed = 0.5 - rng.nextDouble();
final shapeType = Shapes.values[rng.nextInt(Shapes.values.length)]; final shapeType = Shapes.values[rng.nextInt(Shapes.values.length)];
switch (shapeType) { return switch (shapeType) {
case Shapes.circle: Shapes.circle => CollidableCircle(position, size, velocity, screenHitbox)
return CollidableCircle(position, size, velocity, screenHitbox) ..rotationSpeed = rotationSpeed,
..rotationSpeed = rotationSpeed; Shapes.rectangle =>
case Shapes.rectangle: CollidableRectangle(position, size, velocity, screenHitbox)
return CollidableRectangle(position, size, velocity, screenHitbox) ..rotationSpeed = rotationSpeed,
..rotationSpeed = rotationSpeed; Shapes.polygon => CollidablePolygon(position, size, velocity, screenHitbox)
case Shapes.polygon: ..rotationSpeed = rotationSpeed,
return CollidablePolygon(position, size, velocity, screenHitbox) };
..rotationSpeed = rotationSpeed;
}
} }

View File

@ -18,18 +18,15 @@ class SpawnComponentWorld extends World with TapCallbacks {
@override @override
void onTapDown(TapDownEvent info) { void onTapDown(TapDownEvent info) {
final shapeType = Shapes.values.random(); final shapeType = Shapes.values.random();
final Shape shape;
final position = info.localPosition; final position = info.localPosition;
switch (shapeType) { final shape = switch (shapeType) {
case Shapes.rectangle: Shapes.rectangle => Rectangle.fromCenter(
shape = Rectangle.fromCenter(
center: position, center: position,
size: Vector2.all(200), size: Vector2.all(200),
); ),
case Shapes.circle: Shapes.circle => Circle(position, 150),
shape = Circle(position, 150); Shapes.polygon => Polygon(
case Shapes.polygon:
shape = Polygon(
[ [
Vector2(-1.0, 0.0), Vector2(-1.0, 0.0),
Vector2(-0.8, 0.6), Vector2(-0.8, 0.6),
@ -44,8 +41,8 @@ class SpawnComponentWorld extends World with TapCallbacks {
..scale(200) ..scale(200)
..add(position); ..add(position);
}).toList(), }).toList(),
); ),
} };
add( add(
SpawnComponent( SpawnComponent(

View File

@ -27,21 +27,19 @@ class _GestureHitboxesWorld extends World with TapCallbacks {
final shapeSize = final shapeSize =
Vector2.all(100) + Vector2.all(50.0).scaled(_rng.nextDouble()); Vector2.all(100) + Vector2.all(50.0).scaled(_rng.nextDouble());
final shapeAngle = _rng.nextDouble() * 6; final shapeAngle = _rng.nextDouble() * 6;
ShapeHitbox hitbox; final hitbox = switch (shapeType) {
switch (shapeType) { Shapes.circle => CircleHitbox(),
case Shapes.circle: Shapes.rectangle => RectangleHitbox(),
hitbox = CircleHitbox(); Shapes.polygon => PolygonHitbox.relative(
case Shapes.rectangle: [
hitbox = RectangleHitbox(); -Vector2.random(_rng),
case Shapes.polygon: Vector2.random(_rng)..x *= -1,
final points = [ Vector2.random(_rng),
-Vector2.random(_rng), Vector2.random(_rng)..y *= -1,
Vector2.random(_rng)..x *= -1, ],
Vector2.random(_rng), parentSize: shapeSize,
Vector2.random(_rng)..y *= -1, ),
]; };
hitbox = PolygonHitbox.relative(points, parentSize: shapeSize);
}
return MyShapeComponent( return MyShapeComponent(
hitbox: hitbox, hitbox: hitbox,
position: position, position: position,

View File

@ -369,18 +369,13 @@ enum _QuadTreeZone {
const _QuadTreeZone(this.value); const _QuadTreeZone(this.value);
factory _QuadTreeZone.fromIndex(int i) { factory _QuadTreeZone.fromIndex(int i) {
switch (i) { return switch (i) {
case 0: 0 => _QuadTreeZone.topLeft,
return _QuadTreeZone.topLeft; 1 => _QuadTreeZone.topRight,
case 1: 2 => _QuadTreeZone.bottomLeft,
return _QuadTreeZone.topRight; 3 => _QuadTreeZone.bottomRight,
case 2: _ => _QuadTreeZone.root,
return _QuadTreeZone.bottomLeft; };
case 3:
return _QuadTreeZone.bottomRight;
default:
return _QuadTreeZone.root;
}
} }
final int value; final int value;

View File

@ -86,31 +86,23 @@ class ComponentTreeRoot extends Component {
_blocked.contains(identityHashCode(parent))) { _blocked.contains(identityHashCode(parent))) {
continue; continue;
} }
var status = LifecycleEventStatus.done;
switch (event.kind) { final status = switch (event.kind) {
case _LifecycleEventKind.add: _LifecycleEventKind.add => child.handleLifecycleEventAdd(parent),
status = child.handleLifecycleEventAdd(parent); _LifecycleEventKind.remove =>
break; child.handleLifecycleEventRemove(parent),
case _LifecycleEventKind.remove: _LifecycleEventKind.move => child.handleLifecycleEventMove(parent),
status = child.handleLifecycleEventRemove(parent); _LifecycleEventKind.unknown => LifecycleEventStatus.done,
break; };
case _LifecycleEventKind.move:
status = child.handleLifecycleEventMove(parent);
break;
case _LifecycleEventKind.unknown:
break;
}
switch (status) { switch (status) {
case LifecycleEventStatus.done: case LifecycleEventStatus.done:
_queue.removeCurrent(); _queue.removeCurrent();
repeatLoop = true; repeatLoop = true;
break;
case LifecycleEventStatus.block: case LifecycleEventStatus.block:
_blocked.add(identityHashCode(child)); _blocked.add(identityHashCode(child));
_blocked.add(identityHashCode(parent)); _blocked.add(identityHashCode(parent));
break;
default: default:
break;
} }
} }
_blocked.clear(); _blocked.clear();

View File

@ -250,14 +250,11 @@ class ParallaxLayer {
void resize(Vector2 size) { void resize(Vector2 size) {
double scale(LayerFill fill) { double scale(LayerFill fill) {
switch (fill) { return switch (fill) {
case LayerFill.height: LayerFill.height => parallaxRenderer.image.height / size.y,
return parallaxRenderer.image.height / size.y; LayerFill.width => parallaxRenderer.image.width / size.x,
case LayerFill.width: _ => _scale,
return parallaxRenderer.image.width / size.x; };
default:
return _scale;
}
} }
_scale = scale(parallaxRenderer.fill); _scale = scale(parallaxRenderer.fill);
@ -299,15 +296,11 @@ class ParallaxLayer {
switch (parallaxRenderer.repeat) { switch (parallaxRenderer.repeat) {
case ImageRepeat.repeat: case ImageRepeat.repeat:
_scroll.setValues(_scroll.x % 1, _scroll.y % 1); _scroll.setValues(_scroll.x % 1, _scroll.y % 1);
break;
case ImageRepeat.repeatX: case ImageRepeat.repeatX:
_scroll.setValues(_scroll.x % 1, _scroll.y); _scroll.setValues(_scroll.x % 1, _scroll.y);
break;
case ImageRepeat.repeatY: case ImageRepeat.repeatY:
_scroll.setValues(_scroll.x, _scroll.y % 1); _scroll.setValues(_scroll.x, _scroll.y % 1);
break;
case ImageRepeat.noRepeat: case ImageRepeat.noRepeat:
break;
} }
_paintArea = Rect.fromLTWH( _paintArea = Rect.fromLTWH(

View File

@ -58,20 +58,7 @@ void main() {
final pixels = Uint8List.fromList( final pixels = Uint8List.fromList(
List<int>.generate( List<int>.generate(
100 * 4, 100 * 4,
(index) { (index) => _colorBit(index, originalColor),
switch (index % 4) {
case 0:
return originalColor.red;
case 1:
return originalColor.green;
case 2:
return originalColor.blue;
case 3:
return originalColor.alpha;
default:
throw 'No 4 in switch % 4';
}
},
), ),
); );
final image = await ImageExtension.fromPixels(pixels, 10, 10); final image = await ImageExtension.fromPixels(pixels, 10, 10);
@ -85,20 +72,7 @@ void main() {
final expectedDarkenPixels = Uint8List.fromList( final expectedDarkenPixels = Uint8List.fromList(
List<int>.generate( List<int>.generate(
100 * 4, 100 * 4,
(index) { (index) => _colorBit(index, darkenColor),
switch (index % 4) {
case 0:
return darkenColor.red;
case 1:
return darkenColor.green;
case 2:
return darkenColor.blue;
case 3:
return darkenColor.alpha;
default:
throw 'No 4 in switch % 4';
}
},
), ),
); );
expect(originalDarkenPixelsList, expectedDarkenPixels); expect(originalDarkenPixelsList, expectedDarkenPixels);
@ -109,20 +83,7 @@ void main() {
final pixels = Uint8List.fromList( final pixels = Uint8List.fromList(
List<int>.generate( List<int>.generate(
100 * 4, 100 * 4,
(index) { (index) => _colorBit(index, originalColor),
switch (index % 4) {
case 0:
return originalColor.red;
case 1:
return originalColor.green;
case 2:
return originalColor.blue;
case 3:
return originalColor.alpha;
default:
throw 'No 4 in switch % 4';
}
},
), ),
); );
final image = await ImageExtension.fromPixels(pixels, 10, 10); final image = await ImageExtension.fromPixels(pixels, 10, 10);
@ -136,20 +97,7 @@ void main() {
final expectedBrightenPixels = Uint8List.fromList( final expectedBrightenPixels = Uint8List.fromList(
List<int>.generate( List<int>.generate(
100 * 4, 100 * 4,
(index) { (index) => _colorBit(index, brightenColor),
switch (index % 4) {
case 0:
return brightenColor.red;
case 1:
return brightenColor.green;
case 2:
return brightenColor.blue;
case 3:
return brightenColor.alpha;
default:
throw 'No 4 in switch % 4';
}
},
), ),
); );
expect(originalBrightenPixelsList, expectedBrightenPixels); expect(originalBrightenPixelsList, expectedBrightenPixels);
@ -170,3 +118,13 @@ void main() {
}); });
}); });
} }
int _colorBit(int index, Color color) {
return switch (index % 4) {
0 => color.red,
1 => color.green,
2 => color.blue,
3 => color.alpha,
_ => throw UnimplementedError(),
};
}

View File

@ -18,16 +18,12 @@ class Inverter extends BaseNode implements NodeInterface {
} }
void _invertStatus() { void _invertStatus() {
switch (child.status) { status = switch (child.status) {
case NodeStatus.notStarted: NodeStatus.notStarted => NodeStatus.notStarted,
status = NodeStatus.notStarted; NodeStatus.running => NodeStatus.running,
case NodeStatus.running: NodeStatus.success => NodeStatus.failure,
status = NodeStatus.running; NodeStatus.failure => NodeStatus.success,
case NodeStatus.success: };
status = NodeStatus.failure;
case NodeStatus.failure:
status = NodeStatus.success;
}
} }
@override @override

View File

@ -26,34 +26,25 @@ class BulletComponent extends SpriteAnimationComponent
} }
double _mapWidth() { double _mapWidth() {
switch (weapon) { return switch (weapon) {
case Weapon.bullet: Weapon.bullet => 10,
return 10; Weapon.laser || Weapon.plasma => 5,
case Weapon.laser: };
case Weapon.plasma:
return 5;
}
} }
String _mapSpritePath() { String _mapSpritePath() {
switch (weapon) { return switch (weapon) {
case Weapon.bullet: Weapon.bullet => 'bullet.png',
return 'bullet.png'; Weapon.laser => 'laser.png',
case Weapon.laser: Weapon.plasma => 'plasma.png',
return 'laser.png'; };
case Weapon.plasma:
return 'plasma.png';
}
} }
double _mapSpriteWidth() { double _mapSpriteWidth() {
switch (weapon) { return switch (weapon) {
case Weapon.bullet: Weapon.bullet => 8,
return 8; Weapon.laser || Weapon.plasma => 4,
case Weapon.laser: };
case Weapon.plasma:
return 4;
}
} }
@override @override

View File

@ -6,25 +6,19 @@ class Inventory extends StatelessWidget {
const Inventory({super.key}); const Inventory({super.key});
Color _mapWeaponColor(Weapon weapon) { Color _mapWeaponColor(Weapon weapon) {
switch (weapon) { return switch (weapon) {
case Weapon.bullet: Weapon.bullet => Colors.orange,
return Colors.orange; Weapon.laser => Colors.red,
case Weapon.laser: Weapon.plasma => Colors.blue,
return Colors.red; };
case Weapon.plasma:
return Colors.blue;
}
} }
String _mapWeaponName(Weapon weapon) { String _mapWeaponName(Weapon weapon) {
switch (weapon) { return switch (weapon) {
case Weapon.bullet: Weapon.bullet => 'Kinetic',
return 'Kinetic'; Weapon.laser => 'Laser',
case Weapon.laser: Weapon.plasma => 'Plasma',
return 'Laser'; };
case Weapon.plasma:
return 'Plasma';
}
} }
@override @override

View File

@ -135,16 +135,12 @@ class BodyComponent<T extends Forge2DGame> extends Component
switch (fixture.type) { switch (fixture.type) {
case ShapeType.chain: case ShapeType.chain:
_renderChain(canvas, fixture); _renderChain(canvas, fixture);
break;
case ShapeType.circle: case ShapeType.circle:
_renderCircle(canvas, fixture); _renderCircle(canvas, fixture);
break;
case ShapeType.edge: case ShapeType.edge:
_renderEdge(canvas, fixture); _renderEdge(canvas, fixture);
break;
case ShapeType.polygon: case ShapeType.polygon:
_renderPolygon(canvas, fixture); _renderPolygon(canvas, fixture);
break;
} }
canvas.restore(); canvas.restore();
} }

View File

@ -95,26 +95,19 @@ class WorkerOvermind extends Component
pathFinderData: game.pathFinderData, pathFinderData: game.pathFinderData,
); );
final List<List<IntVector2>> paths; final paths = switch (isolateHud.computeType) {
switch (isolateHud.computeType) { ComputeType.isolate => await isolateCompute(
case ComputeType.isolate:
paths = await isolateCompute(
_calculateWork, _calculateWork,
calculateWorkData, calculateWorkData,
); ),
break; ComputeType.synchronous => _calculateWork(
case ComputeType.synchronous:
paths = _calculateWork(
calculateWorkData, calculateWorkData,
); ),
break; ComputeType.compute => await compute(
case ComputeType.compute:
paths = await compute(
_calculateWork, _calculateWork,
calculateWorkData, calculateWorkData,
); ),
break; };
}
for (var i = 0; i < paths.length; i++) { for (var i = 0; i < paths.length; i++) {
idleWorkers[i].issueWork( idleWorkers[i].issueWork(

View File

@ -205,7 +205,6 @@ class _Cmd {
'which is not a boolean', 'which is not a boolean',
); );
} }
break;
case _Type.integer: case _Type.integer:
final value = int.tryParse(strValue); final value = int.tryParse(strValue);
if (value == null) { if (value == null) {
@ -215,7 +214,6 @@ class _Cmd {
); );
} }
_arguments[i] = value; _arguments[i] = value;
break;
case _Type.double: case _Type.double:
final value = double.tryParse(strValue); final value = double.tryParse(strValue);
if (value == null) { if (value == null) {
@ -225,7 +223,6 @@ class _Cmd {
); );
} }
_arguments[i] = value; _arguments[i] = value;
break;
case _Type.numeric: case _Type.numeric:
final value = num.tryParse(strValue); final value = num.tryParse(strValue);
if (value == null) { if (value == null) {
@ -235,10 +232,8 @@ class _Cmd {
); );
} }
_arguments[i] = value; _arguments[i] = value;
break;
case _Type.string: case _Type.string:
_arguments[i] = strValue; _arguments[i] = strValue;
break;
} }
} }
return _arguments; return _arguments;

View File

@ -99,16 +99,12 @@ class FunctionStorage {
return (List<FunctionArgument> args, YarnProject yarn, ErrorFn errorFn) { return (List<FunctionArgument> args, YarnProject yarn, ErrorFn errorFn) {
final arguments = function.checkAndUnpackArguments(args, errorFn); final arguments = function.checkAndUnpackArguments(args, errorFn);
function.useYarnProject(yarn); function.useYarnProject(yarn);
switch (function.returnType) { return switch (function.returnType) {
case ExpressionType.boolean: ExpressionType.boolean => BooleanUserDefinedFn(function, arguments),
return BooleanUserDefinedFn(function, arguments); ExpressionType.numeric => NumericUserDefinedFn(function, arguments),
case ExpressionType.numeric: ExpressionType.string => StringUserDefinedFn(function, arguments),
return NumericUserDefinedFn(function, arguments); _ => throw AssertionError('Bad return type'), // coverage:ignore-line
case ExpressionType.string: };
return StringUserDefinedFn(function, arguments);
default:
throw AssertionError('Bad return type'); // coverage:ignore-line
}
}; };
} }

View File

@ -45,30 +45,18 @@ class FlameMarkdown {
.map(_castCheck<InlineTextNode>) .map(_castCheck<InlineTextNode>)
.toList(); .toList();
final child = _groupInlineChildren(children); final child = _groupInlineChildren(children);
switch (element.tag) { return switch (element.tag) {
case 'h1': 'h1' => HeaderNode(child, level: 1),
return HeaderNode(child, level: 1); 'h2' => HeaderNode(child, level: 2),
case 'h2': 'h3' => HeaderNode(child, level: 3),
return HeaderNode(child, level: 2); 'h4' => HeaderNode(child, level: 4),
case 'h3': 'h5' => HeaderNode(child, level: 5),
return HeaderNode(child, level: 3); 'h6' => HeaderNode(child, level: 6),
case 'h4': 'p' => ParagraphNode(child),
return HeaderNode(child, level: 4); 'em' || 'i' => ItalicTextNode(child),
case 'h5': 'strong' || 'b' => BoldTextNode(child),
return HeaderNode(child, level: 5); _ => throw Exception('Unknown element tag: ${element.tag}'),
case 'h6': } as TextNode;
return HeaderNode(child, level: 6);
case 'p':
return ParagraphNode(child);
case 'em':
case 'i':
return ItalicTextNode(child);
case 'strong':
case 'b':
return BoldTextNode(child);
default:
throw Exception('Unknown element tag: ${element.tag}');
}
} }
static PlainTextNode _convertText(Text text) { static PlainTextNode _convertText(Text text) {

View File

@ -112,33 +112,26 @@ class RiveArtboardRenderer {
case BoxFit.fill: case BoxFit.fill:
scaleX = size.width / contentWidth; scaleX = size.width / contentWidth;
scaleY = size.height / contentHeight; scaleY = size.height / contentHeight;
break;
case BoxFit.contain: case BoxFit.contain:
final minScale = final minScale =
min(size.width / contentWidth, size.height / contentHeight); min(size.width / contentWidth, size.height / contentHeight);
scaleX = scaleY = minScale; scaleX = scaleY = minScale;
break;
case BoxFit.cover: case BoxFit.cover:
final maxScale = final maxScale =
max(size.width / contentWidth, size.height / contentHeight); max(size.width / contentWidth, size.height / contentHeight);
scaleX = scaleY = maxScale; scaleX = scaleY = maxScale;
break;
case BoxFit.fitHeight: case BoxFit.fitHeight:
final minScale = size.height / contentHeight; final minScale = size.height / contentHeight;
scaleX = scaleY = minScale; scaleX = scaleY = minScale;
break;
case BoxFit.fitWidth: case BoxFit.fitWidth:
final minScale = size.width / contentWidth; final minScale = size.width / contentWidth;
scaleX = scaleY = minScale; scaleX = scaleY = minScale;
break;
case BoxFit.none: case BoxFit.none:
scaleX = scaleY = 1.0; scaleX = scaleY = 1.0;
break;
case BoxFit.scaleDown: case BoxFit.scaleDown:
final minScale = final minScale =
min(size.width / contentWidth, size.height / contentHeight); min(size.width / contentWidth, size.height / contentHeight);
scaleX = scaleY = minScale < 1.0 ? minScale : 1.0; scaleX = scaleY = minScale < 1.0 ? minScale : 1.0;
break;
} }
Mat2D.setIdentity(_transform); Mat2D.setIdentity(_transform);

View File

@ -71,9 +71,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
throw StateError('Map orientation should be present'); throw StateError('Map orientation should be present');
} }
switch (mapOrientation) { return switch (mapOrientation) {
case MapOrientation.isometric: MapOrientation.isometric => IsometricTileLayer(
return IsometricTileLayer(
layer: layer, layer: layer,
parent: parent, parent: parent,
map: map, map: map,
@ -83,9 +82,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
ignoreFlip: ignoreFlip, ignoreFlip: ignoreFlip,
filterQuality: filterQuality, filterQuality: filterQuality,
layerPaintFactory: layerPaintFactory, layerPaintFactory: layerPaintFactory,
); ),
case MapOrientation.staggered: MapOrientation.staggered => StaggeredTileLayer(
return StaggeredTileLayer(
layer: layer, layer: layer,
parent: parent, parent: parent,
map: map, map: map,
@ -95,9 +93,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
ignoreFlip: ignoreFlip, ignoreFlip: ignoreFlip,
filterQuality: filterQuality, filterQuality: filterQuality,
layerPaintFactory: layerPaintFactory, layerPaintFactory: layerPaintFactory,
); ),
case MapOrientation.hexagonal: MapOrientation.hexagonal => HexagonalTileLayer(
return HexagonalTileLayer(
layer: layer, layer: layer,
parent: parent, parent: parent,
map: map, map: map,
@ -107,9 +104,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
ignoreFlip: ignoreFlip, ignoreFlip: ignoreFlip,
filterQuality: filterQuality, filterQuality: filterQuality,
layerPaintFactory: layerPaintFactory, layerPaintFactory: layerPaintFactory,
); ),
case MapOrientation.orthogonal: MapOrientation.orthogonal => OrthogonalTileLayer(
return OrthogonalTileLayer(
layer: layer, layer: layer,
parent: parent, parent: parent,
map: map, map: map,
@ -119,8 +115,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
ignoreFlip: ignoreFlip, ignoreFlip: ignoreFlip,
filterQuality: filterQuality, filterQuality: filterQuality,
layerPaintFactory: layerPaintFactory, layerPaintFactory: layerPaintFactory,
); ),
} };
} }
@override @override