From 996347d70ad94894e0e96681afbbfaead5e9870c Mon Sep 17 00:00:00 2001 From: Alexandre Date: Tue, 20 Aug 2024 22:28:37 +0200 Subject: [PATCH] QoL improvments to editor --- README.md | 9 +++- bin/mamaker | Bin 113648 -> 114424 bytes src/edit.c | 121 ++++++++++++++++++++++++++++++++++++++++++++-------- src/edit.h | 4 +- 4 files changed, 115 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 0633a4b..26b1e11 100644 --- a/README.md +++ b/README.md @@ -1 +1,8 @@ -Ever wished you could make your own mario party board ? \ No newline at end of file +Ever wished you could make your own mario party board ? +---| Editor commands |--- +> 1, 2, 3, 4 : go to next cell +> 0, 9, 8, 7 : go to previous cell +> p : add new cell +> l : link cells +> r (press twice) : remove cell +> TAB : exit current menu / close window \ No newline at end of file diff --git a/bin/mamaker b/bin/mamaker index 67509b158906cab03996017326a838a45c314a51..dbf0e3648b020ab86382c0cf29c550dcb83f8bbc 100755 GIT binary patch delta 22996 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 diff --git a/src/edit.c b/src/edit.c index df3260b..c1c346e 100644 --- a/src/edit.c +++ b/src/edit.c @@ -74,6 +74,22 @@ void unlink_cells(cell* parent, cell* child) { }; } +cell* redirect_cell(cell* cl) { + if(cl != NULL) { + if(cl->prev_1 != NULL) { + return cl->prev_1; + } else if(cl->prev_2 != NULL) { + return cl->prev_2; + } else if(cl->prev_3 != NULL) { + return cl->prev_3; + } else if(cl->prev_4 != NULL) { + return cl->prev_4; + } else { + fprintf(stderr, "Unable to redirect cell : no parent.\n"); + } + } +} + void append_cell(int cell_type, int X, int Y, cell* parent) { cell* new = malloc(sizeof(cell)); new->id = parent->id; // mostly for parkour @@ -109,20 +125,24 @@ void append_cell_orthogonal(int cell_type, char dir, cell* parent) { } } -void destroy_cell(cell* cl) { - unlink_cells(cl, cl->next_1); - unlink_cells(cl, cl->next_2); - unlink_cells(cl, cl->next_3); - unlink_cells(cl, cl->next_4); +void destroy_cell() { + cell* new_current = redirect_cell(current); - unlink_cells(cl->prev_1, cl); - unlink_cells(cl->prev_2, cl); - unlink_cells(cl->prev_3, cl); - unlink_cells(cl->prev_4, cl); + unlink_cells(current, current->next_1); + unlink_cells(current, current->next_2); + unlink_cells(current, current->next_3); + unlink_cells(current, current->next_4); - cell_count[(int)cl->type] -= 1; + unlink_cells(current->prev_1, current); + unlink_cells(current->prev_2, current); + unlink_cells(current->prev_3, current); + unlink_cells(current->prev_4, current); - free(cl); + cell_count[(int)current->type] -= 1; + + free(current); + + current = new_current ; } bool isAdding = false ; @@ -132,6 +152,17 @@ int phase = 0 ; int editCellType = 0 ; int editDirection = 0 ; +// -------------------------------- // + +bool isLinking = false ; +cell* par ; +cell* chd ; + +// -------------------------------- // + +bool confirmRemove = false ; +bool cooldownRemove = false ; + void playerEditActions(bool* finished) { SDL_Event event; while(SDL_PollEvent(&event)) { @@ -139,6 +170,11 @@ void playerEditActions(bool* finished) { case SDL_QUIT: break; case SDL_KEYDOWN: + if(cooldownRemove) { + cooldownRemove = false; + } else { + confirmRemove = false ; + }; switch (event.key.keysym.sym) { case SDLK_1: if(!isAdding && current->next_1 != NULL) { @@ -215,7 +251,7 @@ void playerEditActions(bool* finished) { editBuffer += 5; }; break; - case SDLK_MINUS: + case SDLK_BACKSPACE: if (isAdding) { editBuffer = editBuffer / 10; }; @@ -239,19 +275,59 @@ void playerEditActions(bool* finished) { dir = 'w'; }; append_cell_orthogonal(editCellType, dir, current); - printf("exit adding...\n"); }; phase += 1; editBuffer = 0; + } + else if(isLinking) { + if(phase == 0) { + par = current ; + } else if(phase == 1) { + if(current != par) { + chd = current; + link_cells(par, chd); + phase = -1; + isLinking = false; + } else { + phase -= 1; + } + }; + phase += 1; }; break; case SDLK_p: - isAdding = true ; - phase = 0 ; - printf("now adding...\n"); + if(!isLinking) { + isAdding = true ; + phase = 0 ; + printf("now adding...\n"); + }; + break; + case SDLK_l: + if(!isAdding) { + isLinking = true; + phase = 0 ; + printf("now linking...\n"); + }; + break; + case SDLK_r: + if(!confirmRemove) { + confirmRemove = true ; + cooldownRemove = true ; + } else { + destroy_cell(); + confirmRemove = false ; + cooldownRemove = false ; + }; break; case SDLK_TAB: - *finished = true; + if(isAdding || isLinking || confirmRemove) { + isAdding = false; + isLinking = false; + confirmRemove = false; + cooldownRemove = false ; + } else { + *finished = true; + }; break; } } @@ -284,6 +360,7 @@ void edit_main(SDL_Renderer* renderer) { resetRenderer(renderer); draw_board(renderer, current->coord_x - tile_size * 7, current->coord_x + tile_size * 7, current->coord_y - tile_size * 7, current->coord_y + tile_size * 7, current); if(isAdding) { + drawStringToRenderer(renderer, letters, "add cell", 50, __height__ - 50, 75/2, 105/2); if(phase == 0) { drawStringToRenderer(renderer, letters, "choose type", 50, 50, 75/2, 105/2); draw_types(renderer); @@ -292,6 +369,16 @@ void edit_main(SDL_Renderer* renderer) { draw_directions(renderer); }; drawNumberToRenderer(renderer, digits, editBuffer, 50, 150, 75/2, 105/2, 0); + } + else if(isLinking) { + drawStringToRenderer(renderer, letters, "link cells", 50, __height__ - 50, 75/2, 105/2); + if(phase == 0) { + drawStringToRenderer(renderer, letters, "choose parent", 50, 50, 75/2, 105/2); + } else { + drawStringToRenderer(renderer, letters, "choose child", 50, 50, 75/2, 105/2); + } + } else if(confirmRemove) { + drawStringToRenderer(renderer, letters, "press r again to remove", 50, __height__ - 50, 75/2, 105/2); }; updateRenderer(renderer); playerEditActions(&finished); diff --git a/src/edit.h b/src/edit.h index 97c467c..7178644 100644 --- a/src/edit.h +++ b/src/edit.h @@ -5,9 +5,11 @@ void link_cells(cell* parent, cell* child); void unlink_cells(cell* parent, cell* child); +cell* redirect_cell(cell* cl); + void append_cell(int cell_type, int X, int Y, cell* parent); -void destroy_cell(cell* cl); +void destroy_cell(); void playerEditActions(bool* finished);