@@ -370,7 +370,8 @@ void flipchess_scene_1_draw(Canvas* canvas, FlipChessScene1Model* model) {
370370static int flipchess_scene_1_model_init (
371371 FlipChessScene1Model * const model ,
372372 const int white_mode ,
373- const int black_mode ) {
373+ const int black_mode ,
374+ char * import_game_text ) {
374375 model -> paramPlayerW = white_mode ;
375376 model -> paramPlayerB = black_mode ;
376377
@@ -380,7 +381,7 @@ static int flipchess_scene_1_model_init(
380381 model -> paramFlipBoard = 0 ;
381382 model -> paramExit = FlipChessStatusSuccess ;
382383 model -> paramStep = 0 ;
383- model -> paramFEN = NULL ;
384+ model -> paramFEN = import_game_text ;
384385 model -> paramPGN = NULL ;
385386 model -> clockSeconds = -1 ;
386387
@@ -487,6 +488,7 @@ static int flipchess_scene_1_model_init(
487488bool flipchess_scene_1_input (InputEvent * event , void * context ) {
488489 furi_assert (context );
489490 FlipChessScene1 * instance = context ;
491+ FlipChess * app = instance -> context ;
490492
491493 if (event -> type == InputTypeRelease ) {
492494 switch (event -> key ) {
@@ -583,6 +585,8 @@ bool flipchess_scene_1_input(InputEvent* event, void* context) {
583585 {
584586 // first turn of round, probably player but could be AI
585587 flipchess_turn (model );
588+ SCL_boardToFEN (model -> game .board , app -> import_game_text );
589+ app -> import_game = 1 ;
586590 flipchess_drawBoard (model );
587591 },
588592 true);
@@ -605,6 +609,8 @@ bool flipchess_scene_1_input(InputEvent* event, void* context) {
605609 // if player played, let AI play
606610 if (!flipchess_isPlayerTurn (model )) {
607611 flipchess_turn (model );
612+ SCL_boardToFEN (model -> game .board , app -> import_game_text );
613+ app -> import_game = 1 ;
608614 flipchess_drawBoard (model );
609615 }
610616 },
@@ -628,7 +634,6 @@ void flipchess_scene_1_exit(void* context) {
628634void flipchess_scene_1_enter (void * context ) {
629635 furi_assert (context );
630636 FlipChessScene1 * instance = (FlipChessScene1 * )context ;
631-
632637 FlipChess * app = instance -> context ;
633638
634639 flipchess_play_happy_bump (app );
@@ -637,7 +642,14 @@ void flipchess_scene_1_enter(void* context) {
637642 instance -> view ,
638643 FlipChessScene1Model * model ,
639644 {
640- int init = flipchess_scene_1_model_init (model , app -> white_mode , app -> black_mode );
645+ // load imported game if applicable
646+ char * import_game_text = NULL ;
647+ if (app -> import_game == 1 && strlen (app -> import_game_text ) > 0 ) {
648+ import_game_text = app -> import_game_text ;
649+ }
650+
651+ int init = flipchess_scene_1_model_init (
652+ model , app -> white_mode , app -> black_mode , import_game_text );
641653
642654 // nonzero status
643655 if (init == FlipChessStatusSuccess ) {
@@ -647,6 +659,8 @@ void flipchess_scene_1_enter(void* context) {
647659 if (turn == FlipChessStatusReturn ) {
648660 init = turn ;
649661 } else {
662+ SCL_boardToFEN (model -> game .board , app -> import_game_text );
663+ app -> import_game = 1 ;
650664 flipchess_drawBoard (model );
651665 }
652666 }
0 commit comments