From 2daecbf7c0fb37174df2314cf4463efc998241a8 Mon Sep 17 00:00:00 2001 From: PreacherDHM Date: Mon, 3 Nov 2025 13:05:45 -0800 Subject: [PATCH] Made the rtb only use 1 string and made the Nomai Branches have a start pos and use a beter cordent system --- source/main.c | 62 +++++++++++++++++++++++++-------------------------- source/nomi.c | 26 +++++++++++++-------- source/nomi.h | 1 + 3 files changed, 49 insertions(+), 40 deletions(-) diff --git a/source/main.c b/source/main.c index 88503aa..86b5a5a 100644 --- a/source/main.c +++ b/source/main.c @@ -34,7 +34,6 @@ unsigned char __Close__ = 0; void programClose(int sig) { term_threaded_input_stop(); - term_enable_cursor(); __Close__ = 1; } @@ -57,41 +56,36 @@ void SetRichTextBox(richTextBox* rtb, char* text, int len, char* p = text; unsigned char found = 0; rtb->stringCount = 5; + rtb->text = text; int sizeOfString = 0; - for(int i = 0; i < len; i++) { - sizeOfString = i - textOffset; - - if(p[i] == '\n') { - // This means that it will start splitting strings - found = 1; - - //p[i] = '\0'; // Sets this to be the end of the string - - //Add the address to the cstring - if(lineCount == 5) { - break; - } - - rtb->textBox[lineCount] = tart_cstring(p + textOffset, - sizeOfString, rtb->cell); - textOffset = i + 1; // Sets the start of the next string. - lineCount++; - } - } - tart_cstring_free(&rtb->textBox[lineCount]); - rtb->textBox[lineCount] = tart_cstring(p + textOffset, - strlen(p), rtb->cell); - } void drawTextBox(struct tart_window* window, richTextBox* rtb, tart_byte id) { struct tart_buffer* sb = tart_get_buffer(window, id); - // This makes sure that we dont go outside of memeery with the string count. - for (int lineNo = 0; lineNo < rtb->stringCount; lineNo++) { - tart_draw_cstring_position(sb, - rtb->textBox[lineNo], - (struct tart_vec2){rtb->pos.x,rtb->pos.y + lineNo}); + int lineNo = 0; + int lineStart = 0; + for(int i = 0; i < strlen(rtb->text); i++) { + if(rtb->text[i] == '\n') { + rtb->textBox[0] = tart_cstring( + &rtb->text[0]+lineStart, + i - lineStart, + NULL_CELL); + tart_draw_cstring_position(sb, + rtb->textBox[0], + (struct tart_vec2){rtb->pos.x, rtb->pos.y+lineNo}); + tart_cstring_free(&rtb->textBox[0]); + lineNo++; + lineStart = i + 1; + } } + rtb->textBox[0] = tart_cstring( + &rtb->text[0]+lineStart, + strlen(rtb->text) - lineStart, + NULL_CELL); + tart_draw_cstring_position(sb, + rtb->textBox[0], + (struct tart_vec2){rtb->pos.x, rtb->pos.y+lineNo}); + tart_cstring_free(&rtb->textBox[0]); } //############ Init Commands ############ @@ -124,6 +118,10 @@ int main (int argc, char *argv[]) { char commandInput[255] = ""; unsigned char keyPressed = 0; + branch b = { + .startPos = (struct tart_vec2){term_current_size().x/2,term_current_size().y- 10}, + }; + // Window Createion struct tart_window window = tart_create_window(); @@ -260,7 +258,8 @@ int main (int argc, char *argv[]) { drawTextBox(&window, &inputRtb, 0); - DrawBranch(NULL, &window, 0); + + DrawBranch(&b, &window, 0); tart_draw_window(&window, 0); if(mode == COMMAND_MODE) { @@ -285,5 +284,6 @@ int main (int argc, char *argv[]) { } tart_destroy_window(&window); + term_enable_cursor(); return 0; } diff --git a/source/nomi.c b/source/nomi.c index 5dfa881..8eb978f 100644 --- a/source/nomi.c +++ b/source/nomi.c @@ -50,13 +50,21 @@ void DrawBranch(branch* branch, struct tart_window* w, tart_byte b) { cell.display = '*'; struct nomiSpirel spirel; int SizeOfFile = 600; - char cellChart[] = {'%','*','\\','/','l','&','b','+','=','^',':'}; + char cellChart[] = {'%','*','\\','/','l','&','7','+','=','^',':'}; unsigned int iderations = 0; - struct tart_vec2 pos0 = {15+30, 0/2}; - struct tart_vec2 c0 = { 0+30,30/2}; // controle point 0 - struct tart_vec2 c1 = {30+30,19/2}; // controle point 1 - struct tart_vec2 pos1 = {17+30,11/2}; + struct tart_vec2 pos0 = { + (( 3) * -1)+branch->startPos.x, + (( 0/2) * -1)+branch->startPos.y}; + struct tart_vec2 c0 = { + (( 25) * -1)+branch->startPos.x, + ((35/2) * -1)+branch->startPos.y}; // controle point 0 + struct tart_vec2 c1 = { + (( -10) * -1)+branch->startPos.x, + ((35/2) * -1)+branch->startPos.y}; // controle point 1 + struct tart_vec2 pos1 = { + (( 3) * -1)+branch->startPos.x, + ((10/2) * -1)+branch->startPos.y}; struct tart_vec2 dpos = {0,0}; float count = 0; @@ -74,10 +82,10 @@ void DrawBranch(branch* branch, struct tart_window* w, tart_byte b) { cell.display = cellChart[rand_r(&iderations)%11]; dpos = (struct tart_vec2){ - (1-count)*((1-count)*((1-count)*pos0.x + count * c0.x) + count * - ((1-count)*c0.x + count*c1.x)) + - count *((1-count)*((1-count)*c0.x + count * c1.x) + - count * ((1-count)*c1.x + pos1.x)), + (1-count)*((1-count)*((1-count)*pos0.x + count * c0.x) + + count * ((1-count)*c0.x + count*c1.x)) + + count * ((1-count)*((1-count)*c0.x + count * c1.x) + + count * ((1-count)*c1.x + pos1.x)), (1-count)*((1-count)*((1-count)*pos0.y + count * c0.y) + count * ((1-count)*c0.y + count*c1.y)) + count *((1-count)*((1-count)*c0.y + count * c1.y) + diff --git a/source/nomi.h b/source/nomi.h index 418d7ef..a40f118 100644 --- a/source/nomi.h +++ b/source/nomi.h @@ -30,6 +30,7 @@ typedef struct { branchId children[MAX_CHILDREN]; // holds the branchIds of its children void* parent; // points the the branches parent char type; // holds the type as in if this struct is a branch or a trunk + struct tart_vec2 startPos; // the starting position of the branch branchId id; // This holds the branch id. } branch;