]> git.lizzy.rs Git - nothing.git/commitdiff
Static private methods for edit_field_t
authorrexim <reximkut@gmail.com>
Sat, 4 Aug 2018 18:15:55 +0000 (01:15 +0700)
committerrexim <reximkut@gmail.com>
Sat, 4 Aug 2018 18:15:55 +0000 (01:15 +0700)
src/game.c
src/game/edit_field.c

index 190f4a3d80020b56e3232e9c6ec203b6e8e2ad54..9b35f27e8006413a821533f40f810836785d0394 100644 (file)
@@ -29,6 +29,7 @@ typedef struct game_t {
     camera_t *camera;
     sprite_font_t *font;
     debug_tree_t *debug_tree;
+    /* TODO: remove edit_field from game when edit_field_t functionality is fully implemented */
     edit_field_t *edit_field;
     SDL_Renderer *renderer;
 } game_t;
index b65bf648e29e2cfb4bf43971768129260cc799a5..7fced388f3806dcdd1c6ae55cc1b10166a31d54a 100644 (file)
@@ -20,6 +20,11 @@ struct edit_field_t
     color_t font_color;
 };
 
+static void edit_field_left(edit_field_t *edit_field);
+static void edit_field_right(edit_field_t *edit_field);
+static void edit_field_backspace(edit_field_t *edit_field);
+static void edit_field_insert_char(edit_field_t *edit_field, char c);
+
 edit_field_t *create_edit_field(const sprite_font_t *font,
                                 vec_t font_size,
                                 color_t font_color)
@@ -45,6 +50,7 @@ edit_field_t *create_edit_field(const sprite_font_t *font,
         RETURN_LT(lt, NULL);
     }
 
+    /* TODO: remove test_text when edit_field_t functionality is fully implemented */
     const char *test_text = "Hello World";
 
     strcpy(edit_field->buffer, test_text);
@@ -108,18 +114,20 @@ int edit_field_handle_event(edit_field_t *edit_field,
     case SDL_KEYDOWN:
         switch (event->key.keysym.sym) {
         case SDLK_LEFT:
-            if (edit_field->cursor > 0) {
-                edit_field->cursor--;
-            }
+            edit_field_left(edit_field);
             break;
 
         case SDLK_RIGHT:
-            if (edit_field->cursor < edit_field->buffer_size) {
-                edit_field->cursor++;
-            }
+            edit_field_right(edit_field);
+            break;
+
+        case SDLK_BACKSPACE:
+            edit_field_backspace(edit_field);
             break;
 
-        default: {}
+        default: {
+            edit_field_insert_char(edit_field, (char) event->key.keysym.sym);
+        }
         }
         break;
 
@@ -134,3 +142,27 @@ const char *edit_field_as_text(const edit_field_t *edit_field)
     assert(edit_field);
     return edit_field->buffer;
 }
+
+static void edit_field_left(edit_field_t *edit_field) {
+    if (edit_field->cursor > 0) {
+        edit_field->cursor--;
+    }
+}
+
+static void edit_field_right(edit_field_t *edit_field) {
+    assert(edit_field);
+    if (edit_field->cursor < edit_field->buffer_size) {
+        edit_field->cursor++;
+    }
+}
+
+static void edit_field_backspace(edit_field_t *edit_field) {
+    assert(edit_field);
+    /* TODO: edit_field_backspace is not implemented */
+}
+
+static void edit_field_insert_char(edit_field_t *edit_field, char c) {
+    assert(edit_field);
+    (void) c;
+    /* TODO: edit_field_insert_char is not implemented */
+}