From 643e312983cb6f88d79b81dd001713189a342c69 Mon Sep 17 00:00:00 2001 From: ezveee Date: Wed, 24 Jan 2024 07:48:51 +0100 Subject: [PATCH] startscreen implemented --- assets/startscreen.png | Bin 0 -> 20568 bytes src/Game.cpp | 138 +++++++++++++++++++++++++++-------------- 2 files changed, 90 insertions(+), 48 deletions(-) create mode 100644 assets/startscreen.png diff --git a/assets/startscreen.png b/assets/startscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..e32627345b4e0a768401307b9d28a1b74c76e997 GIT binary patch literal 20568 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 E0I&Kd8~^|S literal 0 HcmV?d00001 diff --git a/src/Game.cpp b/src/Game.cpp index 40aebc1..46354a4 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -59,16 +59,58 @@ void Game::init(const char* title, int xpos, int ypos, int width, int height, bo return; } SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); + + SDL_Texture* backgroundTexture = TextureManager::get().loadTexture("assets/startscreen.png"); + + SDL_RenderClear(renderer); + SDL_RenderCopy(renderer, backgroundTexture, NULL, NULL); + SDL_RenderPresent(renderer); + + SDL_Event event; + bool hasQuit = false; + + while (!hasQuit) + { + SDL_PollEvent(&event); + + if (event.type == SDL_QUIT) + { + hasQuit = true; + break; + } + + if (event.type == SDL_KEYDOWN) + { + if (event.key.keysym.scancode == SDL_SCANCODE_RETURN) + { + std::cout << "Enter pressed > Game start..." << std::endl; + break; + } + + if (event.key.keysym.scancode == SDL_SCANCODE_ESCAPE) + { + std::cout << "Escape pressed > Game quit..." << std::endl; + hasQuit = true; + } + } + } + + if (hasQuit) + { + this->isRunning = false; + return; + } + this->isRunning = true; map = new Map(); map->loadMap("assets/SDL_map_test.txt", 25, 20); - //adding textures to the library in AssetManager + //adding textures to the library in AssetManager - assets->addTexture("player1", "assets/chicken_neutral_knight.png"); - assets->addTexture("player2", "assets/chicken_neutral.png"); - assets->addTexture("bigEgg", "assets/bigger_egg.png"); + assets->addTexture("player1", "assets/chicken_neutral_knight.png"); + assets->addTexture("player2", "assets/chicken_neutral.png"); + //assets->addTexture("bigEgg", "assets/bigger_egg.png"); // commented out cause png wasn't in assets //ecs implementation @@ -77,14 +119,14 @@ void Game::init(const char* title, int xpos, int ypos, int width, int height, bo player.addComponent("assets/chicken_knight_spritesheet.png", true); //adds sprite (32x32px), path needed player.addComponent(SDL_SCANCODE_W, SDL_SCANCODE_S, SDL_SCANCODE_A, SDL_SCANCODE_D, SDL_SCANCODE_E, Vector2D(1, 0));//custom keycontrols can be added player.addComponent("player"); //adds tag (for further use, reference tag) - player.addComponent(5, &manager, true); + player.addComponent(5, &manager, true); 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(SDL_SCANCODE_UP, SDL_SCANCODE_DOWN, SDL_SCANCODE_LEFT, SDL_SCANCODE_RIGHT, SDL_SCANCODE_RCTRL, Vector2D(-1, 0)); enemy.addComponent("enemy"); - enemy.addComponent(5, &manager, false); + enemy.addComponent(5, &manager, false); enemy.addGroup((size_t)GroupLabel::ENEMIES); } @@ -129,52 +171,52 @@ void Game::update() } } - //checking if projectiles hit player1 or player2 - for (auto& p : projectiles) { - if(SDL_HasIntersection(&enemy.getComponent().collider, &p->getComponent().collider) - && (p->getComponent().hasCollision) && !p->getComponent().getSource()) { - //std::cout << "Enemy hit!"; - p->getComponent().removeCollision(); - p->destroy(); + //checking if projectiles hit player1 or player2 + for (auto& p : projectiles) { + if(SDL_HasIntersection(&enemy.getComponent().collider, &p->getComponent().collider) + && (p->getComponent().hasCollision) && !p->getComponent().getSource()) { + //std::cout << "Enemy hit!"; + p->getComponent().removeCollision(); + p->destroy(); - enemy.getComponent().getDamage(); + enemy.getComponent().getDamage(); - //display updated health | pretty scuffed but works ig - for(auto h : hearts) - h->destroy(); + //display updated health | pretty scuffed but works ig + for(auto h : hearts) + h->destroy(); - player.getComponent().createAllHearts(); - enemy.getComponent().createAllHearts(); + player.getComponent().createAllHearts(); + enemy.getComponent().createAllHearts(); - if(enemy.getComponent().getHealth() < 1) { - std::cout << "Player1 wins!" << std::endl; - winner = true; - isRunning = false; - } - } + if(enemy.getComponent().getHealth() < 1) { + std::cout << "Player1 wins!" << std::endl; + winner = true; + isRunning = false; + } + } - if(SDL_HasIntersection(&player.getComponent().collider, &p->getComponent().collider) - && (p->getComponent().hasCollision) && p->getComponent().getSource()) { - //std::cout << "Player hit!"; - p->getComponent().removeCollision(); - p->destroy(); + if(SDL_HasIntersection(&player.getComponent().collider, &p->getComponent().collider) + && (p->getComponent().hasCollision) && p->getComponent().getSource()) { + //std::cout << "Player hit!"; + p->getComponent().removeCollision(); + p->destroy(); - player.getComponent().getDamage(); + player.getComponent().getDamage(); - //display updated health - for(auto h : hearts) - h->destroy(); + //display updated health + for(auto h : hearts) + h->destroy(); - player.getComponent().createAllHearts(); - enemy.getComponent().createAllHearts(); + player.getComponent().createAllHearts(); + enemy.getComponent().createAllHearts(); - if(player.getComponent().getHealth() < 1) { - std::cout << "Player2 wins!" << std::endl; - winner = false; - isRunning = false; - } - } - } + if(player.getComponent().getHealth() < 1) { + std::cout << "Player2 wins!" << std::endl; + winner = false; + isRunning = false; + } + } + } } void Game::render() @@ -192,11 +234,11 @@ void Game::render() { e->draw(); } - for (auto& p : projectiles) - p->draw(); + for (auto& p : projectiles) + p->draw(); - for (auto& h : hearts) - h->draw(); + for (auto& h : hearts) + h->draw(); SDL_RenderPresent(renderer); } @@ -223,5 +265,5 @@ bool Game::running() const } bool Game::getWinner() { - return this->winner; + return this->winner; } \ No newline at end of file