From 0a1747d651fc2c5e3574c2129cbb46e8d58d8d94 Mon Sep 17 00:00:00 2001 From: Markus Date: Mon, 29 Jan 2024 15:04:44 -0600 Subject: [PATCH] replayability added, popup window for victory added, png files for new skins and popups added --- .gitmodules | 4 ++ CMakeLists.txt | 10 ++- assets/Player1Victory.png | Bin 0 -> 7492 bytes assets/Player2Victory.png | Bin 0 -> 7428 bytes assets/VictoryBackup.aseprite | Bin 0 -> 7462 bytes assets/chicken_gentleman_spritesheet.png | Bin 0 -> 1426 bytes assets/chicken_wizzard_spritesheet.png | Bin 0 -> 1809 bytes assets/iconImage.bmp | Bin 0 -> 3126 bytes extern/SDL_ttf | 1 + include/Game.h | 4 +- include/HealthComponent.h | 2 + include/PopupWindow.h | 34 ++++++++++ src/Game.cpp | 40 ++++++++++-- src/PopupWindow.cpp | 76 +++++++++++++++++++++++ src/main.cpp | 44 +++++++++---- 15 files changed, 192 insertions(+), 23 deletions(-) create mode 100644 assets/Player1Victory.png create mode 100644 assets/Player2Victory.png create mode 100644 assets/VictoryBackup.aseprite create mode 100644 assets/chicken_gentleman_spritesheet.png create mode 100644 assets/chicken_wizzard_spritesheet.png create mode 100644 assets/iconImage.bmp create mode 160000 extern/SDL_ttf create mode 100644 include/PopupWindow.h create mode 100644 src/PopupWindow.cpp diff --git a/.gitmodules b/.gitmodules index e1f447a..f8904e1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -14,3 +14,7 @@ path = extern/zlib url = https://github.com/madler/zlib.git branch = master +[submodule "extern/SDL_ttf"] + path = extern/SDL_ttf + url = https://github.com/libsdl-org/SDL_ttf.git + branch = release-2.22.x diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e5c48a..72d3221 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,8 +12,11 @@ set(PROJECT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(BUILD_SHARED_LIBS FALSE) +set(SDL2TTF_VENDORED ON) + add_subdirectory(extern/SDL EXCLUDE_FROM_ALL) add_subdirectory(extern/SDL_image EXCLUDE_FROM_ALL) +add_subdirectory(extern/SDL_ttf EXCLUDE_FROM_ALL) file(GLOB_RECURSE SOURCES ${PROJECT_SOURCE_DIR}/src/*.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) @@ -21,9 +24,10 @@ add_executable(${PROJECT_NAME} ${SOURCES}) target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_INCLUDE_DIR}) target_link_libraries(${PROJECT_NAME} PRIVATE - SDL2::SDL2main - SDL2::SDL2-static - SDL2_image::SDL2_image-static + SDL2::SDL2main + SDL2::SDL2-static + SDL2_image::SDL2_image-static + SDL2_ttf::SDL2_ttf-static ) file(COPY ${PROJECT_SOURCE_DIR}/assets DESTINATION ${PROJECT_BINARY_DIR}) \ No newline at end of file diff --git a/assets/Player1Victory.png b/assets/Player1Victory.png new file mode 100644 index 0000000000000000000000000000000000000000..f50a386fbcbe14e540d3b9370c73422b9bbbad1e GIT binary patch literal 7492 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 M?rlT`+%fvU0QYwdod5s; literal 0 HcmV?d00001 diff --git a/assets/Player2Victory.png b/assets/Player2Victory.png new file mode 100644 index 0000000000000000000000000000000000000000..7a20be37d5b0997b417cb7f14b19cf2ac8e1dd27 GIT binary patch literal 7428 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 S=30svQT?VifMk&-*;@ z^ZWCC{`Gyn9ax8AP}gCjpKS%Jjw}23@7JxockiB^zM4f_2zbqE!$P5e*XwQgd<$Sk zfI^c=u$%zcvS4*>w}Sv%33%RU2LY~@_xOV0l}~_`DWCxCeEgV;KOO_%!iRt8wR_>V zLowFgOF-=D+F;wZ^#oWz8xqiV0?ejBM=TaI zI)Kz*VP=B0tz#p|R>Lp>$(z>|Arz)l4B~S83_FrD8CD+|u+$vdPJm$o@+Fzq z#h|5*1W_aq?zUyz3|m2f;WnrSwAuKdH$G|HnXtpQ14hV~WIEeSfZ+%TA3Dj(;w-DT zF5~rN0l1xA=HGXIg&XfNdg798gLYskHT3gP3Zft z5Z;K^JRd!AsctRk6oW`}(~26f`rGC2#S__Q%P|#Qr@kTobDsS599_pg#q;)shPJi# z(I^Wu6E!Z-vThqz7+&_4{Ns7DcDK^Oh;Rpf$|ka2EK|-cla*Js5-Z83sR@hBG*dxGnVlPdeS4bzIJEEP(t<<#wOOxjn z9{!^BA3k-hqprTn{^t6YL7FV+qO@8~&8C$g7DAFy=gwBqgaYvn>RhwtdQO2H#)&!4A0z~%O_I`ySi z4!rwC>+}KA)S0?HvyjXo?|t8r^IM@0$p3y3x+6~;rxSJlJ(E6Qa}o;4T;2VD^)yk@ zYK?%NK0sLcyZ+%u66_FQ+E7h|-rak35?UR+S%Ryt#hcX!Z2OOxW(k(2&M1XqfL$N_ gu?6S|gZJS`qS6q*&TQX{F>r z`cM#>7Y%Jh)IwE^(L9Jqi8YF;u?C|g#vEJ{HhR6g&6(RJw|&^`xc6^%Z})N<+z*c1 z-PxJnpKoS%XXmrP032u&mFE#0vlwabdEgbj73JXHs{9B5aQFV{EV-1q4>I%+U^QY` z8GNqUSNb6Pku$>%w22$MzlowKiis@b(ucar3u0a61w%e$)B|Kgv*J+zz}stn*K1cd zWFOXgw_{+W$#Cz}oB*Za>hi+?0A85ZYgZQ*g8)qlkPWY1RZW8aXLOHYTN zx?b`h8vih<0awKtQVzsF4vjdLD*`n20QoVa3{-gxWIym+5ukd*)RmK>_q~g%jz1b~ zL6{A|+t`|w?w>0Hs5eesIVsxQ9^|=-U}YTChJ;WE!SVYf0qYos1Tez$x|6cl1W;dv zBfNkTSCOWMY%UiHJjDQ{;2r$?SZlAxyS9(33NstNfPqb?y0BnGqYbAjC7?cB2 zGfo<_Elav~O*o;cZYo500eJ=p*kJh%`F$Fo<67Kxpco24`*}!d${_@kd>A zz*t|msE2^Z|6UdW?F3NgfG`_CL46yZe0>A}P}=o_M)#j#gy${nV2=m@o{hUQN(3PQ zz#L-*@{0fp0XBCTW`=G8SReqvZSj)+IRKE7;Qr-%*j_JFbvVyelr-Mh!5-1-TmgIO z8rAx#P}qD3kv}7doa9ir{Y%(4AEe)37VoD_fJ{On(k5W6uUjmvsFWJyITU{NIn{8C zk0f2|zuON0uoXBFogAgsPlYfWfDj6ywCiV01jP6V8aC~WyQW4!+9BXzYyhNgB?l+} zCr(Pj_#JZGfAu&Tw(iD_i6QAiffK@vKcgNXCm%cq@En8?;68MKS|=R=F>ablfTmAk zv{^VhISQ+DIlwppNROi%6GITj@4!~E9?{8B*h|-B)B`d}K46RhdIES3fQx!dm<_%=%jybVegy`kVW5VYp_^pbM0f%2npyx70Wskz)dyAQ#`?O&!m={Ngr@)it8)b@ z%d<-zNEv+Z`J?36$jVSl@~w=6%nf=8(B$A)UpMuuYtsjxlH=aG&Hfk~ja6#4dW%Ca5p=kV9* zPvB|p(rQ-|e5cw)JUl~edz!l}N#%h_az4WI7H?x~R(${fuxIy*zEkZfnV^*|wr#nb zw%j#g!UPqDW^Gd+08<|Tz|;qr`hZ-*)Ca)S2blT*z|;p2nEC)yA0Xkm=>zJ@Yshgn zzXmCNcwzMcb>%hK#|-0|Z~_ma194wwvVkR`4=}R-uZAU~4|otA0B3ou$11JhI^V&^?a(Uc03drGM#uWPMQ>v({+qak@ZZPC_elHZgK({^O1VWY zZ{jp;+KHG@3#YgoYwh(^jRLg?gxLV{>)WW?(_{}$;do*@wC!mcG8Jgp++_&*r6gz- zXi&Gufz0#)fb@x44pt6)N$LXtK&w6=u@_iv%gDYw@RH~Q`mY`*=W+XaFQYyHz>?7i z(3is+wy4u>Pd99p7AV=!2Pl7uh)#|I&gDSKYM^8_Y!&N?K0q$Fxyy2^57^eYhtz%1 z^#N&zfG~0z!iaS2*s`DcMpjZKt<$ZH1KSku1!{ZqY7l1ps`>zTO|7I42y&PYa@o-b z_&Qs}{FP2}J~zd|v1Pw>Vt*!?k@W%d(HLUfG{Ot-;>tCF-WMY^eSnp5Ab9p$a=xSe z962_u4`9#kO?qa|O>q$3NM4Vpg152Nl8r5Mnm!;0-okB zOR6L!HYjTblt`r?&m*GH_C}f+?$u7OhRJt>lj9tOg>fH zscgvG=5h~M41vaThp)3mlz*wpO?`j~6Nd0Vb}&Eth;L-S00000NkvXXu0mjfWB*f) literal 0 HcmV?d00001 diff --git a/assets/iconImage.bmp b/assets/iconImage.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6eddbefc55ade778d7ad509e6d00db55652a5cc4 GIT binary patch literal 3126 zcmeH{ze)o^5Qk%}m6fHXPY?t9lDhB&NEsUdOv^pZZ|#1VLJ zsUZzXuj(s{o`TL$d_EruIIAmdfM!&l54WR colliders; static AssetManager* assets; - bool getWinner(); + bool getWinner() const; + + void refreshPlayers(); private: int counter = 0; diff --git a/include/HealthComponent.h b/include/HealthComponent.h index 7cfd2e7..2dd0737 100644 --- a/include/HealthComponent.h +++ b/include/HealthComponent.h @@ -19,6 +19,8 @@ public: void createAllHearts(); void createHeartComponents(int x); + void setHealth(int health) {this->health = health;} + private: diff --git a/include/PopupWindow.h b/include/PopupWindow.h new file mode 100644 index 0000000..e09d9b1 --- /dev/null +++ b/include/PopupWindow.h @@ -0,0 +1,34 @@ +#ifndef SDL_MINIGAME_POPUPWINDOW_H +#define SDL_MINIGAME_POPUPWINDOW_H + +#include +#include +#include + +class Game; + +class PopupWindow { + +public: + PopupWindow(const char* title, const std::string& message); + ~PopupWindow(); + + void handleWinnerEvents(); + bool shouldContinue() const; + + bool interacted; + + void renderWinnerPopup(bool winner); + +private: + SDL_Renderer* renderer; + SDL_Window* window; + SDL_Texture* texture; + bool continueGame; + + +}; + + + +#endif //SDL_MINIGAME_POPUPWINDOW_H diff --git a/src/Game.cpp b/src/Game.cpp index a979a8b..d7c580f 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -47,6 +47,15 @@ void Game::init(const char* title, int xpos, int ypos, int width, int height, bo return; } + SDL_Surface* icon = SDL_LoadBMP("assets/iconImage.bmp"); + if(!icon) + { + std::cout << "ERROR: Couldn't create icon!" << std::endl; + return; + } + + SDL_SetWindowIcon(window, icon); + renderer = SDL_CreateRenderer(window, -1, 0); if (!renderer) { @@ -102,11 +111,11 @@ void Game::init(const char* title, int xpos, int ypos, int width, int height, bo map->loadMap("assets/SDL_map_test.txt", 25, 20); //adding textures to the library in AssetManager - + /* assets->addTexture("player1", "assets/chicken_neutral_knight.png"); assets->addTexture("player2", "assets/chicken_neutral.png"); assets->addTexture("egg", "assets/egg.png"); - +*/ //ecs implementation @@ -118,12 +127,11 @@ void Game::init(const char* title, int xpos, int ypos, int width, int height, bo player.addGroup((size_t)GroupLabel::PLAYERS); //tell programm what group it belongs to for rendering order enemy.addComponent(600, 500, 2); - enemy.addComponent("assets/chicken_spritesheet.png", true); + enemy.addComponent("assets/chicken_wizzard_spritesheet.png", true); enemy.addComponent(SDL_SCANCODE_UP, SDL_SCANCODE_DOWN, SDL_SCANCODE_LEFT, SDL_SCANCODE_RIGHT, SDL_SCANCODE_RCTRL, Vector2D(-1, 0)); enemy.addComponent("enemy", 0.8f); enemy.addComponent(5, &manager, false); enemy.addGroup((size_t)GroupLabel::ENEMIES); - } auto& tiles(manager.getGroup((size_t)GroupLabel::MAP)); @@ -259,6 +267,26 @@ bool Game::running() const return isRunning; } -bool Game::getWinner() { +bool Game::getWinner() const { return this->winner; -} \ No newline at end of file +} + +void Game::refreshPlayers() { + + for(auto& p : projectiles) + p->destroy(); + + + player.getComponent().position.x = 80; + player.getComponent().position.y = 80; + + player.getComponent().setHealth(5); + enemy.getComponent().setHealth(5); + + player.getComponent().createAllHearts(); + enemy.getComponent().createAllHearts(); + + isRunning = true; + + update(); +} diff --git a/src/PopupWindow.cpp b/src/PopupWindow.cpp new file mode 100644 index 0000000..185d069 --- /dev/null +++ b/src/PopupWindow.cpp @@ -0,0 +1,76 @@ +#include +#include "PopupWindow.h" +#include "TextureManager.h" +#include "SDL_image.h" +#include "Game.h" + +PopupWindow::PopupWindow(const char* title, const std::string &message) : +continueGame(false), interacted(false) { + this->window = SDL_CreateWindow(title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 400, 250, 0); + //font = TTF_OpenFont("assets/Trajan.ttf", 24); // Change the path and size as needed + + this->renderer = SDL_CreateRenderer(window, -1, 0); + SDL_SetRenderDrawColor(this->renderer, 255, 255, 255, 255); + + //SDL_Surface* surface = TTF_RenderText_Blended(font, message.c_str(), {255, 255, 255}); + //texture = SDL_CreateTextureFromSurface(renderer, surface); + + //SDL_FreeSurface(surface); +} + +PopupWindow::~PopupWindow() { + SDL_DestroyTexture(this->texture); + SDL_DestroyWindow(this->window); + SDL_DestroyRenderer(this->renderer); +} + +void PopupWindow::handleWinnerEvents() { + + SDL_Event e; + + while (SDL_PollEvent(&e)) + { + if (e.type == SDL_QUIT) + { + continueGame = false; + interacted = true; + } + else if (e.type == SDL_KEYDOWN) + { + if (e.key.keysym.sym == SDLK_c) + { + continueGame = true; + interacted = true; + } + else if (e.key.keysym.sym == SDLK_q) + { + continueGame = false; + interacted = true; + } + } + } +} + +bool PopupWindow::shouldContinue() const { + return continueGame; +} + +void PopupWindow::renderWinnerPopup(bool winner) { + + SDL_RenderClear(this->renderer); + + this->texture = winner ? IMG_LoadTexture(this->renderer, "assets/Player1Victory.png") + : IMG_LoadTexture(this->renderer, "assets/Player2Victory.png"); + + SDL_RenderCopy(this->renderer, this->texture, NULL, NULL); + + SDL_RenderPresent(this->renderer); + + //Error handling for debugging + const char* sdlError = SDL_GetError(); + if (*sdlError != '\0') { + std::cerr << "SDL Error: " << sdlError << std::endl; + SDL_ClearError(); + } + +} diff --git a/src/main.cpp b/src/main.cpp index 2e7a993..7cb30c3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,10 +1,14 @@ +#include #include "Game.h" #include "Constants.h" +#include "PopupWindow.h" Game* game = nullptr; int main(int argc, char* argv[]) { + bool playing = true; + const int frameDelay = 1000 / FPS; Uint32 frameStart; @@ -13,23 +17,37 @@ int main(int argc, char* argv[]) game = new Game(); game->init("No_Name_Chicken_Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_SIZE_WIDTH, SCREEN_SIZE_HEIGHT, false); - while (game->running()) - { - frameStart = SDL_GetTicks(); + while(playing) { + std::cout << "djslfsldkfj" << std::endl; + while (game->running()) { + frameStart = SDL_GetTicks(); - game->handleEvents(); - game->update(); - game->render(); + game->handleEvents(); + game->update(); + game->render(); - frameTime = SDL_GetTicks() - frameStart; + frameTime = SDL_GetTicks() - frameStart; - if (frameDelay > frameTime) - { - SDL_Delay(frameDelay - frameTime); - } - } + if (frameDelay > frameTime) { + SDL_Delay(frameDelay - frameTime); + } + } + bool winner = game->getWinner(); - game->clean(); + PopupWindow popupWindow("Game over",winner ? "Player1 won! Press 'C' to continue or 'Q' to quit." + : "Player2 won! Press 'C' to continue or 'Q' to quit."); + + popupWindow.renderWinnerPopup(winner); + + while (!popupWindow.interacted) { + popupWindow.handleWinnerEvents(); + SDL_Delay(10); + } + playing = popupWindow.shouldContinue(); + game->refreshPlayers(); + } + + game->clean(); return 0; } \ No newline at end of file