Przeglądaj źródła

feat: updated voice

xtruan 2 lat temu
rodzic
commit
8b0f4d74c8

+ 2 - 2
flipchess.c

@@ -31,8 +31,8 @@ static void text_input_callback(void* context) {
             if(app->import_game == 1) {
                 strncpy(app->import_game_text, app->input_text, TEXT_SIZE);
 
-                uint8_t status = FlipChessStatusSuccess;
-                if(status == FlipChessStatusSuccess) {
+                uint8_t status = FlipChessStatusNone;
+                if(status == FlipChessStatusNone) {
                     //notification_message(app->notification, &sequence_blink_cyan_100);
                     flipchess_play_happy_bump(app);
                 } else {

+ 4 - 1
flipchess.h

@@ -68,7 +68,10 @@ typedef enum {
 typedef enum { FlipChessTextInputDefault, FlipChessTextInputGame } FlipChessTextInputState;
 
 typedef enum {
-    FlipChessStatusSuccess = 0,
+    FlipChessStatusNone = 0,
+    FlipChessStatusMovePlayer = 1,
+    FlipChessStatusMoveAI = 2,
+    FlipChessStatusMoveUndo = 3,
     FlipChessStatusReturn = 10,
     FlipChessStatusLoadError = 11,
     FlipChessStatusSaveError = 12,

+ 0 - 5
scenes/flipchess_scene_menu.c

@@ -1,5 +1,4 @@
 #include "../flipchess.h"
-#include "../helpers/flipchess_voice.h"
 
 enum SubmenuIndex {
     SubmenuIndexScene1New = 10,
@@ -16,10 +15,6 @@ void flipchess_scene_menu_submenu_callback(void* context, uint32_t index) {
 void flipchess_scene_menu_on_enter(void* context) {
     FlipChess* app = context;
 
-    if(app->sound == 1) {
-        flipchess_voice_shall_we_play();
-    }
-
     submenu_add_item(
         app->submenu,
         "New Game",

+ 5 - 1
scenes/flipchess_scene_startscreen.c

@@ -1,4 +1,5 @@
 #include "../flipchess.h"
+#include "../helpers/flipchess_voice.h"
 #include "../helpers/flipchess_file.h"
 #include "../helpers/flipchess_custom_event.h"
 #include "../views/flipchess_startscreen.h"
@@ -59,5 +60,8 @@ bool flipchess_scene_startscreen_on_event(void* context, SceneManagerEvent event
 
 void flipchess_scene_startscreen_on_exit(void* context) {
     FlipChess* app = context;
-    UNUSED(app);
+
+    if(app->sound == 1) {
+        flipchess_voice_shall_we_play();
+    }
 }

+ 19 - 13
views/flipchess_scene_1.c

@@ -7,6 +7,7 @@
 //#include <dolphin/dolphin.h>
 #include <string.h>
 //#include "flipchess_icons.h"
+#include "../helpers/flipchess_voice.h"
 #include "../helpers/flipchess_haptic.h"
 
 #define SCL_960_CASTLING 0 // setting to 1 compiles a 960 version of smolchess
@@ -161,7 +162,7 @@ void flipchess_drawBoard(FlipChessScene1Model* model) {
 
 uint8_t flipchess_turn(FlipChessScene1Model* model) {
     // 0: none, 1: player, 2: AI, 3: undo
-    uint8_t moveType = 0;
+    uint8_t moveType = FlipChessStatusNone;
 
     // if(model->paramInfo) {
 
@@ -207,7 +208,7 @@ uint8_t flipchess_turn(FlipChessScene1Model* model) {
     // }
 
     if(model->game.state != SCL_GAME_STATE_PLAYING) {
-        model->paramExit = FlipChessStatusReturn;
+        model->paramExit = FlipChessStatusNone;
         return model->paramExit;
     }
 
@@ -215,7 +216,7 @@ uint8_t flipchess_turn(FlipChessScene1Model* model) {
 
     if(flipchess_isPlayerTurn(model)) {
         // if(stringsEqual(string, "undo", 5))
-        //     moveType = 3;
+        //     moveType = FlipChessStatusMoveUndo;
         // else if(stringsEqual(string, "quit", 5))
         //     break;
 
@@ -237,7 +238,7 @@ uint8_t flipchess_turn(FlipChessScene1Model* model) {
             }
         } else if(model->turnState == 2) {
             if(SCL_squareSetContains(model->moveHighlight, model->squareTo)) {
-                moveType = 1;
+                moveType = FlipChessStatusMovePlayer;
             }
             model->turnState = 0;
             SCL_squareSetClear(model->moveHighlight);
@@ -247,11 +248,11 @@ uint8_t flipchess_turn(FlipChessScene1Model* model) {
         model->squareSelected = 255;
         flipchess_makeAIMove(
             model->game.board, &(model->squareFrom), &(model->squareTo), &movePromote, model);
-        moveType = 2;
+        moveType = FlipChessStatusMoveAI;
         model->turnState = 0;
     }
 
-    if(moveType == 1 || moveType == 2) {
+    if(moveType == FlipChessStatusMovePlayer || moveType == FlipChessStatusMoveAI) {
         flipchess_shiftMessages(model);
 
         SCL_moveToString(
@@ -262,7 +263,7 @@ uint8_t flipchess_turn(FlipChessScene1Model* model) {
         SCL_squareSetClear(model->moveHighlight);
         SCL_squareSetAdd(model->moveHighlight, model->squareFrom);
         SCL_squareSetAdd(model->moveHighlight, model->squareTo);
-    } else if(moveType == 3) {
+    } else if(moveType == FlipChessStatusMoveUndo) {
         flipchess_shiftMessages(model);
 
         if(model->paramPlayerW != 0 || model->paramPlayerB != 0) SCL_gameUndoMove(&(model->game));
@@ -381,7 +382,7 @@ static int flipchess_scene_1_model_init(
     model->paramMoves = 0;
     model->paramInfo = 1;
     model->paramFlipBoard = 0;
-    model->paramExit = FlipChessStatusSuccess;
+    model->paramExit = FlipChessStatusNone;
     model->paramStep = 0;
     model->paramFEN = import_game_text;
     model->paramPGN = NULL;
@@ -484,7 +485,7 @@ static int flipchess_scene_1_model_init(
     model->msg = (SCL_boardWhitesTurn(model->game.board) ? "white to move" : "black to move");
 
     // 0 = success
-    return FlipChessStatusSuccess;
+    return FlipChessStatusNone;
 }
 
 bool flipchess_scene_1_input(InputEvent* event, void* context) {
@@ -586,7 +587,10 @@ bool flipchess_scene_1_input(InputEvent* event, void* context) {
                 FlipChessScene1Model * model,
                 {
                     // first turn of round, probably player but could be AI
-                    flipchess_turn(model);
+                    if(flipchess_turn(model) == FlipChessStatusReturn) {
+                        if(app->sound == 1) flipchess_voice_a_strange_game();
+                        flipchess_play_long_bump(app);
+                    }
                     SCL_boardToFEN(model->game.board, app->import_game_text);
                     app->import_game = 1;
                     flipchess_drawBoard(model);
@@ -610,7 +614,10 @@ bool flipchess_scene_1_input(InputEvent* event, void* context) {
                 {
                     // if player played, let AI play
                     if(!flipchess_isPlayerTurn(model)) {
-                        flipchess_turn(model);
+                        if(flipchess_turn(model) == FlipChessStatusReturn) {
+                            if(app->sound == 1) flipchess_voice_a_strange_game();
+                            flipchess_play_long_bump(app);
+                        }
                         SCL_boardToFEN(model->game.board, app->import_game_text);
                         app->import_game = 1;
                         flipchess_drawBoard(model);
@@ -653,8 +660,7 @@ void flipchess_scene_1_enter(void* context) {
             int init = flipchess_scene_1_model_init(
                 model, app->white_mode, app->black_mode, import_game_text);
 
-            // nonzero status
-            if(init == FlipChessStatusSuccess) {
+            if(init == FlipChessStatusNone) {
                 // perform initial turn, sets up and lets white
                 // AI play if applicable
                 const uint8_t turn = flipchess_turn(model);

+ 8 - 6
views/flipchess_startscreen.c

@@ -46,7 +46,7 @@ void flipchess_startscreen_draw(Canvas* canvas, FlipChessStartscreenModel* model
     //canvas_draw_icon(canvas, 0, 40, &I_Background_128x11);
     //canvas_draw_str(canvas, 10, 61, "FLIPR");
 
-    elements_button_center(canvas, "Sound");
+    elements_button_left(canvas, "Sound");
     elements_button_right(canvas, "Silent");
 }
 
@@ -72,11 +72,9 @@ bool flipchess_startscreen_input(InputEvent* event, void* context) {
                 true);
             break;
         case InputKeyLeft:
-        case InputKeyUp:
-        case InputKeyDown:
-        case InputKeyOk:
-            // sound on
+            // sound on, haptic off
             app->sound = 1;
+            app->haptic = FlipChessHapticOff;
             with_view_model(
                 instance->view,
                 FlipChessStartscreenModel * model,
@@ -87,8 +85,9 @@ bool flipchess_startscreen_input(InputEvent* event, void* context) {
                 true);
             break;
         case InputKeyRight:
-            // sound off
+            // sound off, haptic on
             app->sound = 0;
+            app->haptic = FlipChessHapticOn;
             with_view_model(
                 instance->view,
                 FlipChessStartscreenModel * model,
@@ -98,6 +97,9 @@ bool flipchess_startscreen_input(InputEvent* event, void* context) {
                 },
                 true);
             break;
+        case InputKeyUp:
+        case InputKeyDown:
+        case InputKeyOk:
         case InputKeyMAX:
             break;
         }