diff --git a/cmake-build-debug/CMakeFiles/nhf.dir/C.includecache b/cmake-build-debug/CMakeFiles/nhf.dir/C.includecache index 329d995b860a023992fdfbfad6eacde8584faa7f..1c78782560361d9c6bfff55590643da049869509 100644 --- a/cmake-build-debug/CMakeFiles/nhf.dir/C.includecache +++ b/cmake-build-debug/CMakeFiles/nhf.dir/C.includecache @@ -14,30 +14,20 @@ stdlib.h stdio.h - -/home/blint/projects/nhf/move.h -view.h -/home/blint/projects/nhf/view.h - -/home/blint/projects/nhf/view.c +/home/blint/projects/nhf/main.c view.h /home/blint/projects/nhf/view.h -files.h -/home/blint/projects/nhf/files.h move.h /home/blint/projects/nhf/move.h -SDL2/SDL.h -- -SDL2/SDL_image.h -- -SDL2/SDL2_gfxPrimitives.h -- -SDL2/SDL_ttf.h -- -stdlib.h -- -stdio.h +files.h +/home/blint/projects/nhf/files.h +time.h - +/home/blint/projects/nhf/move.h +view.h +/home/blint/projects/nhf/view.h + /home/blint/projects/nhf/view.h SDL2/SDL.h - diff --git a/cmake-build-debug/CMakeFiles/nhf.dir/view.c.o b/cmake-build-debug/CMakeFiles/nhf.dir/view.c.o index 08dfd4323e67564fc24b9daf16f38761f6dc3906..66256bf5c466f6c93b1f5fe5caed78c1da282633 100644 Binary files a/cmake-build-debug/CMakeFiles/nhf.dir/view.c.o and b/cmake-build-debug/CMakeFiles/nhf.dir/view.c.o differ diff --git a/cmake-build-debug/asd.txt b/cmake-build-debug/asd.txt new file mode 100644 index 0000000000000000000000000000000000000000..3586ded5029adb4ae179d6d331d292f23dac5910 --- /dev/null +++ b/cmake-build-debug/asd.txt @@ -0,0 +1,6 @@ +Blint Mester | 2 +Player1 a | 12 +unknown Player | 25023 +Mike was here | 999999 +Jani :D | 999997 +egy rakás szar vagyok | 88321 \ No newline at end of file diff --git a/cmake-build-debug/nhf b/cmake-build-debug/nhf index 0747f644b7e6ad2785d4197ed3a85e5adc8cc25a..3d84832ac32450ae71a71f9367421700368cdf8a 100755 Binary files a/cmake-build-debug/nhf and b/cmake-build-debug/nhf differ diff --git a/files.c b/files.c index 30cd4e9526c7bf0c22d4480f3d6cddd40d78ed26..267599e9ba6d1bb9c8e1f49144acd5f694c44a88 100644 --- a/files.c +++ b/files.c @@ -114,7 +114,7 @@ Player *open_file_to_read(char *filename) elem = beolvas(fp, elem); elem = rendez(elem); - listakiir(elem); + //listakiir(elem); fclose(fp); return elem; } \ No newline at end of file diff --git a/main.c b/main.c index 645d07a00f6f395deabe7fa9aea0845c435ad458..4d98154fc8947dc97574dfc14c50ba68a0e75eef 100644 --- a/main.c +++ b/main.c @@ -110,21 +110,42 @@ int main(int argc, char *argv[]) { moving = starting; if (moving){ + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); + SDL_RenderClear(renderer); + palyakirajzol(platf); + palyakirajzol(itemke); move_draw(ev, bagoly, &elozo_x, &elozo_y, platf, &itemke); sprintf(scoretitle.title, "Score: %6d", max_score); draw_button(scoretitle, green, white); - palyakirajzol(itemke); + } - } else if (!scoring) + if (!scoring && !moving && !starting) { menu(ev, &start, &load, &scoreboard, &close, &starting, &loading, &scoring, &quit); - moving = starting; - } else if (scoring) + } + + if (scoring) { SDL_RenderClear(renderer); - draw_score_board(players); + draw_score_board(players, ev, &scoring); } + if (!moving && starting) + { + char username[50+1]; + SDL_Rect r; + r.x = W/6; + r.y = (2*H/9 + H/18); + r.w = W - (2*W/6); + r.h = H/9; + SDL_Color text = {255, 255, 255, 255}; + SDL_Color bg = {0, 0, 0, 255}; + input_text(username, 50+1, r, bg, text); + printf("%s\n", username); + moving = true; + } + + SDL_RenderPresent(renderer); } diff --git a/move.c b/move.c index 389705dc07c64f4efc5b60c3544ebbd9ea26c8db..4e3d9c098124f97d17fec841eacae45d29e77c63 100644 --- a/move.c +++ b/move.c @@ -314,7 +314,8 @@ void menu(SDL_Event ev, Button *start, Button *load, Button *scoreboard, Button if (scoreboard->click) *scoring = true; else - *scoring = false; + // *scoring = false; + {} if (close->click) *quit = true; diff --git a/view.c b/view.c index d9f51efa1e4f152ba7e539a3ddf82872fbb1c8ad..4a9d16e515f109f451453faf0ec92e947f0dd6d0 100644 --- a/view.c +++ b/view.c @@ -247,7 +247,7 @@ int last_stand(Palyaelem *elem) return mozgo->x; } -void draw_score_board(Player *players) +void draw_score_board(Player *players, SDL_Event ev, bool *scoring) { int i = 1; Player *mozgo = players; @@ -287,10 +287,114 @@ void draw_score_board(Player *players) draw_button(button, red, white); SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); - /*button = clickwatcher(ev, button); + button = clickwatcher(ev, button); if (button.click) *scoring = false; else - *scoring = true;*/ + *scoring = true; +} + +bool input_text(char *dest, size_t hossz, SDL_Rect teglalap, SDL_Color hatter, SDL_Color szoveg) { + /* Ez tartalmazza az aktualis szerkesztest */ + char composition[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; + composition[0] = '\0'; + /* Ezt a kirajzolas kozben hasznaljuk */ + char textandcomposition[hossz + SDL_TEXTEDITINGEVENT_TEXT_SIZE + 1]; + /* Max hasznalhato szelesseg */ + int maxw = teglalap.w - 2; + int maxh = teglalap.h - 2; + + dest[0] = '\0'; + + bool enter = false; + bool kilep = false; + + SDL_StartTextInput(); + while (!kilep && !enter) { + /* doboz kirajzolasa */ + boxRGBA(renderer, teglalap.x, teglalap.y, teglalap.x + teglalap.w - 1, teglalap.y + teglalap.h - 1, hatter.r, hatter.g, hatter.b, 255); + rectangleRGBA(renderer, teglalap.x, teglalap.y, teglalap.x + teglalap.w - 1, teglalap.y + teglalap.h - 1, szoveg.r, szoveg.g, szoveg.b, 255); + /* szoveg kirajzolasa */ + int w; + strcpy(textandcomposition, dest); + strcat(textandcomposition, composition); + if (textandcomposition[0] != '\0') { + SDL_Surface *felirat = TTF_RenderUTF8_Blended(font, textandcomposition, szoveg); + SDL_Texture *felirat_t = SDL_CreateTextureFromSurface(renderer, felirat); + SDL_Rect cel = { teglalap.x, teglalap.y, felirat->w < maxw ? felirat->w : maxw, felirat->h < maxh ? felirat->h : maxh }; + SDL_RenderCopy(renderer, felirat_t, NULL, &cel); + SDL_FreeSurface(felirat); + SDL_DestroyTexture(felirat_t); + w = cel.w; + } else { + w = 0; + } + /* kurzor kirajzolasa */ + if (w < maxw) { + vlineRGBA(renderer, teglalap.x + w + 2, teglalap.y + 2, teglalap.y + teglalap.h - 3, szoveg.r, szoveg.g, szoveg.b, 192); + } + /* megjeleniti a képernyon az eddig rajzoltakat */ + SDL_RenderPresent(renderer); + + SDL_Event event; + SDL_WaitEvent(&event); + switch (event.type) { + /* Kulonleges karakter */ + case SDL_KEYDOWN: + if (event.key.keysym.sym == SDLK_BACKSPACE) { + int textlen = strlen(dest); + do { + if (textlen == 0) { + break; + } + if ((dest[textlen-1] & 0x80) == 0x00) { + /* Egy bajt */ + dest[textlen-1] = 0x00; + break; + } + if ((dest[textlen-1] & 0xC0) == 0x80) { + /* Bajt, egy tobb-bajtos szekvenciabol */ + dest[textlen-1] = 0x00; + textlen--; + } + if ((dest[textlen-1] & 0xC0) == 0xC0) { + /* Egy tobb-bajtos szekvencia elso bajtja */ + dest[textlen-1] = 0x00; + break; + } + } while(true); + } + if (event.key.keysym.sym == SDLK_RETURN) { + enter = true; + } + break; + + /* A feldolgozott szoveg bemenete */ + case SDL_TEXTINPUT: + if (strlen(dest) + strlen(event.text.text) < hossz) { + strcat(dest, event.text.text); + } + + /* Az eddigi szerkesztes torolheto */ + composition[0] = '\0'; + break; + + /* Szoveg szerkesztese */ + case SDL_TEXTEDITING: + strcpy(composition, event.edit.text); + break; + + case SDL_QUIT: + /* visszatesszuk a sorba ezt az eventet, mert + * sok mindent nem tudunk vele kezdeni */ + SDL_PushEvent(&event); + kilep = true; + break; + } + } + + /* igaz jelzi a helyes beolvasast; = ha enter miatt allt meg a ciklus */ + SDL_StopTextInput(); + return enter; } \ No newline at end of file diff --git a/view.h b/view.h index bb1c93baedeaf49b00629617d8ba787cf431ef66..eb404d153b9481e09c2a099edc19cfbb5cc71910 100644 --- a/view.h +++ b/view.h @@ -71,6 +71,8 @@ Palyaelem *gen_item(Palyaelem *platforms, Type type); int last_stand(Palyaelem *elem); -void draw_score_board(Player *players); +void draw_score_board(Player *players, SDL_Event ev, bool *scoring); + +bool input_text(char *dest, size_t hossz, SDL_Rect teglalap, SDL_Color hatter, SDL_Color szoveg); #endif //NHF_VIEW_H \ No newline at end of file