From 88e0b7cb0572290271367770ebab0dd35b3b595f Mon Sep 17 00:00:00 2001 From: Ninjaws Date: Fri, 13 Dec 2024 00:24:51 +0100 Subject: [PATCH] [Added] Gun angling --- include/entities/Game.h | 175 +++++++++++++------------ include/entities/Map.h | 4 +- include/entities/Player.h | 209 +++++++++++++++++++----------- include/entities/TextureWrapper.h | 44 ++++--- include/services/GameService.h | 45 ++++++- src/entities/Map.cpp | 78 +++++------ src/screens/GameScreen.cpp | 2 + src/screens/TitleScreen.cpp | 4 +- 8 files changed, 333 insertions(+), 228 deletions(-) diff --git a/include/entities/Game.h b/include/entities/Game.h index d75d022..7d61180 100644 --- a/include/entities/Game.h +++ b/include/entities/Game.h @@ -40,13 +40,13 @@ public: camera.target = (Vector2){screenSize.x / 2.0f, screenSize.y / 2.0f}; // Initially at the center of the world camera.rotation = 0.0f; camera.zoom = 1.0f; - this->camera = camera; + // this->camera = camera; + GameService::getInstance().setCamera(camera); this->player = Player(); - this->player.getTexture().setPosition({200, 350}); + this->player.setPosition({200, 350}); - - this->crosshair = TextureWrapper(AssetService::getInstance().getSprite(ESprite::CROSSHAIR), {15,15}, {0,0}, {0,0,15,15}); + this->crosshair = TextureWrapper(AssetService::getInstance().getSprite(ESprite::CROSSHAIR), {15, 15}, {0, 0}, {0, 0, 15, 15}); initPauseScreen(); initGameOverScreen(); @@ -55,10 +55,89 @@ public: AudioService::getInstance().setMusic(EMusic::GAME); AudioService::getInstance().playMusic(); } + ~Game() { } + void logic() + { + this->crosshair.setPosition(GetMousePosition()); + + if (GameService::getInstance().isPaused()) + { + pausedLogic(); + return; + } + else if (GameService::getInstance().isGameOver()) + { + gameOverLogic(); + return; + } + + if (InputService::getInstance().isKeyPressed(KEY_ENTER)) + { + GameService::getInstance().setPaused(true); + AudioService::getInstance().pauseMusic(); + return; + } + // this->camera.offset.x -= 1.5; + this->player.logic(); + if (this->player.getTexture().getPosition().x > (StateService::getInstance().getScreenSize().x / 2.0f)) + { + GameService::getInstance().getCamera().offset = {(StateService::getInstance().getScreenSize().x / 2.0f) + ((StateService::getInstance().getScreenSize().x / 2.0f) - this->player.getTexture().getPosition().x), StateService::getInstance().getScreenSize().y / 2.0f}; + } + } + + void draw() + { + BeginDrawing(); + BeginMode2D(GameService::getInstance().getCamera()); + + this->background.draw(); + this->map.draw(); + this->player.draw(); + + EndMode2D(); + + if (GameService::getInstance().isPaused()) + { + drawPaused(); + } + else if (GameService::getInstance().isGameOver()) + { + drawGameOver(); + } + drawCrosshair(); + EndDrawing(); + } + +private: + // Camera2D camera; + Background background; + Map map; + Player player; + TextureWrapper crosshair; + + std::vector pauseScreenButtons; + int hoveredPauseScreenButton = 0; + + Text gameOverText; + std::vector gameOverScreenButtons; + int hoveredGameOverScreenButton = 0; + + // bool isPaused = false; + // bool isGameOver = false; + + // std::vector enemies + // std::vector crates + // std::vector playerBullets + // std::vector enemyBullets + // std::vector jellies + // std::vector ammo + // std::vector healthpacks + // Powerup powerup + void initPauseScreen() { const int TOP_GAP = 100; @@ -106,35 +185,6 @@ public: } } - void logic() - { - this->crosshair.setPosition(GetMousePosition()); - - if (GameService::getInstance().isPaused()) - { - pausedLogic(); - return; - } - else if (GameService::getInstance().isGameOver()) - { - gameOverLogic(); - return; - } - - if (InputService::getInstance().isKeyPressed(KEY_ENTER)) - { - GameService::getInstance().setPaused(true); - AudioService::getInstance().pauseMusic(); - return; - } - // this->camera.offset.x -= 1.5; - this->player.logic(); - if (this->player.getTexture().getPosition().x > (StateService::getInstance().getScreenSize().x / 2.0f)) - { - this->camera.offset = {(StateService::getInstance().getScreenSize().x / 2.0f) + ((StateService::getInstance().getScreenSize().x / 2.0f) - this->player.getTexture().getPosition().x), StateService::getInstance().getScreenSize().y / 2.0f}; - } - } - void pausedLogic() { if (InputService::getInstance().isKeyPressed(KEY_S) || InputService::getInstance().isKeyPressed(KEY_W)) @@ -191,29 +241,6 @@ public: } } - void draw() - { - BeginDrawing(); - BeginMode2D(this->camera); - - this->background.draw(); - this->map.draw(); - this->player.draw(); - - EndMode2D(); - - if (GameService::getInstance().isPaused()) - { - drawPaused(); - } - else if (GameService::getInstance().isGameOver()) - { - drawGameOver(); - } - drawCrosshair(); - EndDrawing(); - } - void drawPaused() { // 100, 100, 255, 60 @@ -239,41 +266,17 @@ public: } } - void drawCrosshair() { - DrawTextureEx(this->crosshair.getTexture(),GetMousePosition(),0,1.2f,RED); + void drawCrosshair() + { + DrawTextureEx(this->crosshair.getTexture(), GetMousePosition(), 0, 1.2f, RED); // DrawTexturePro( // this->crosshair.getTexture(), - // this->crosshair.getSourceRect(), - // {GetMousePosition().x, GetMousePosition().y, GetMousePosition().x+this->crosshair.getSize().x, GetMousePosition().y+this->crosshair.getSize().y}, + // this->crosshair.getSourceRect(), + // {GetMousePosition().x, GetMousePosition().y, GetMousePosition().x+this->crosshair.getSize().x, GetMousePosition().y+this->crosshair.getSize().y}, // {this->crosshair.getSize().x/2.0f, this->crosshair.getSize().y/2.0f}, - // 0, + // 0, // WHITE); } -private: - Camera2D camera; - Background background; - Map map; - Player player; - TextureWrapper crosshair; - - std::vector pauseScreenButtons; - int hoveredPauseScreenButton = 0; - - Text gameOverText; - std::vector gameOverScreenButtons; - int hoveredGameOverScreenButton = 0; - - // bool isPaused = false; - // bool isGameOver = false; - - // std::vector enemies - // std::vector crates - // std::vector playerBullets - // std::vector enemyBullets - // std::vector jellies - // std::vector ammo - // std::vector healthpacks - // Powerup powerup }; #endif \ No newline at end of file diff --git a/include/entities/Map.h b/include/entities/Map.h index c16fcd3..f93bf97 100644 --- a/include/entities/Map.h +++ b/include/entities/Map.h @@ -18,7 +18,7 @@ public: void draw(); /** Checks and returns which corners of the object have been collided with */ - std::unordered_map checkForCollision(TextureWrapper texture); + // std::unordered_map checkForCollision(TextureWrapper texture); int getTileSize() { return this->tileSize; @@ -45,7 +45,7 @@ private: /** * Converts the corners of the object to the matching tiles, so that they can be checked for collision */ - std::unordered_map cornersToTilePos(std::unordered_map corners); + // std::unordered_map cornersToTilePos(std::unordered_map corners); }; #endif \ No newline at end of file diff --git a/include/entities/Player.h b/include/entities/Player.h index 2cb07e5..e530e19 100644 --- a/include/entities/Player.h +++ b/include/entities/Player.h @@ -16,11 +16,12 @@ class Player public: Player() { - TextureWrapper wrapper = TextureWrapper(AssetService::getInstance().getSprite(ESprite::PLAYER), {32, 32}, {200, 200}); - wrapper.setSourceRect({0, 0, 32, 32}); - this->texture = wrapper; + this->texture = TextureWrapper(AssetService::getInstance().getSprite(ESprite::PLAYER), {32, 32}, {200, 200}); + prevFrame = GetTime(); - spriteAnimation = {0,0}; + spriteAnimation = {0, 0}; + this->gunRight = TextureWrapper(AssetService::getInstance().getSprite(ESprite::PLAYER_GUN_RIGHT), {58, 29}, {0, 0}); + this->gunLeft = TextureWrapper(AssetService::getInstance().getSprite(ESprite::PLAYER_GUN_LEFT), {58, 29}, {0, 0}); } ~Player() { @@ -28,14 +29,14 @@ public: void logic() { - // applyGravity(); + rotateGun(); movement(); - // handleCollision(); outofboundsCheck(); } void draw() { + drawGun(); DrawTextureRec(this->texture.getTexture(), this->texture.getSourceRect(), this->texture.getPosition(), WHITE); } @@ -44,26 +45,35 @@ public: return this->texture; } + void setPosition(Vector2 pos) + { + this->texture.setPosition(pos); + } + protected: private: TextureWrapper texture; + TextureWrapper gunLeft; + TextureWrapper gunRight; Vector2 velocity = {0, 0}; float jumpPower = 7.2f; float moveSpeed = 5.0f; float gravity = 0.6f; - float animationDelay = 0.2f; // seconds + float animationDelay = 0.2f; // In seconds double prevFrame; - Vector2 spriteAnimation; // Keeps track of (1) Sprite cycling and (2) Player direction - enum Direction { Down, Left, Right, Up }; // Used in conjuction with spriteAnimation, makes sure sprite direction matches with player direction - std::vector tiles; // Holds eight points of the player for accurate collision + Vector2 spriteAnimation; // Keeps track of (1) Sprite cycling and (2) Player direction + enum Direction + { + Down, + Left, + Right, + Up + }; // Used in conjuction with spriteAnimation, makes sure sprite direction matches with player direction + std::vector tiles; // Holds eight points of the player for accurate collision std::vector timesCollision; // Holds the amount of times the player has collided with a tile, and which corner of the player is touching a tile bool groundCollision; // Keeps track of whether or not the player has collided with the ground - bool crateTopCollision; - /** - * Holds the corners of the player - * Is used for precise collision detection - */ + bool crateTopCollision; // Whether the player is standing on top of a crate void applyGravity() { @@ -90,15 +100,20 @@ private: spriteAnimation.y = Right; velocity.x = moveSpeed; animate(); - } else { + } + else + { velocity.x = 0.0f; } positionUpdates(); handleCollision(); - if (!groundCollision) { + if (!groundCollision) + { velocity.y += gravity; - } else { + } + else + { velocity.y = 0.0f; } @@ -106,7 +121,11 @@ private: { velocity.y -= jumpPower; } + move(velocity); + } + void move(Vector2 velocity) + { this->texture.move(velocity); } @@ -114,7 +133,7 @@ private: { if (GetTime() - prevFrame > animationDelay) { - spriteAnimation.x = std::fmod(spriteAnimation.x + 1,3); + spriteAnimation.x = std::fmod(spriteAnimation.x + 1, 3); Rectangle sourceRect = this->texture.getSourceRect(); sourceRect.x = spriteAnimation.x * this->texture.getSize().x; @@ -125,82 +144,76 @@ private: } } - void positionUpdates() { - const Vector2 pos = this->texture.getPosition(); - const Vector2 size = this->texture.getSize(); - const int tileSize = MapService::getInstance().getMap().getTileSize(); + void positionUpdates() + { + const Vector2 pos = this->texture.getPosition(); + const Vector2 size = this->texture.getSize(); + const int tileSize = MapService::getInstance().getMap().getTileSize(); - const float bottom = pos.y + size.y + velocity.y; - const float left = pos.x + velocity.x; - const float right = pos.x + size.x + velocity.x; - const float top = pos.y + velocity.y; + const float bottom = pos.y + size.y + velocity.y; + const float left = pos.x + velocity.x; + const float right = pos.x + size.x + velocity.x; + const float top = pos.y + velocity.y; - Vector2i topLeft(Vector2i((int)(left + 5) / tileSize, (int)top / tileSize)); // +5 to separate top from side - Vector2i topRight(Vector2i((int)(right - 5) / tileSize, (int)top / tileSize)); // -5 to separate top from side + Vector2i topLeft(Vector2i((int)(left + 5) / tileSize, (int)top / tileSize)); // +5 to separate top from side + Vector2i topRight(Vector2i((int)(right - 5) / tileSize, (int)top / tileSize)); // -5 to separate top from side - Vector2i leftTop(Vector2i((int)left / tileSize, (int)(top + 5) / tileSize)); - Vector2i leftBottom(Vector2i((int)left / tileSize, (int)(bottom - 5) / tileSize)); - Vector2i rightTop(Vector2i((int)right / tileSize, (int)(top + 5) / tileSize)); - Vector2i rightBottom(Vector2i((int)right / tileSize, (int)(bottom - 5) / tileSize)); + Vector2i leftTop(Vector2i((int)left / tileSize, (int)(top + 5) / tileSize)); + Vector2i leftBottom(Vector2i((int)left / tileSize, (int)(bottom - 5) / tileSize)); + Vector2i rightTop(Vector2i((int)right / tileSize, (int)(top + 5) / tileSize)); + Vector2i rightBottom(Vector2i((int)right / tileSize, (int)(bottom - 5) / tileSize)); - Vector2i bottomLeft(Vector2i((int)(left + 5) / tileSize, (int)bottom / tileSize)); // +5 to separate bottom from side - Vector2i bottomRight(Vector2i((int)(right - 5) / tileSize, (int)bottom / tileSize)); // -5 to separate bottom from side + Vector2i bottomLeft(Vector2i((int)(left + 5) / tileSize, (int)bottom / tileSize)); // +5 to separate bottom from side + Vector2i bottomRight(Vector2i((int)(right - 5) / tileSize, (int)bottom / tileSize)); // -5 to separate bottom from side + tiles.clear(); - tiles.clear(); + tiles.push_back(topLeft); + tiles.push_back(topRight); - tiles.push_back(topLeft); - tiles.push_back(topRight); + tiles.push_back(leftTop); + tiles.push_back(leftBottom); + tiles.push_back(rightTop); + tiles.push_back(rightBottom); - tiles.push_back(leftTop); - tiles.push_back(leftBottom); - tiles.push_back(rightTop); - tiles.push_back(rightBottom); - - tiles.push_back(bottomLeft); - tiles.push_back(bottomRight); + tiles.push_back(bottomLeft); + tiles.push_back(bottomRight); } - /** - * Stores the current position - * Applies the current velocity - * Checks for collision, and removes all velocities that are causing collisions - * Set the object exactly against the object it is colliding with position - */ void handleCollision() { timesCollision.clear(); - for (int i = 0; i < tiles.size(); i++) - { - if (MapService::getInstance().getMap().getColMap()[tiles[i].y][tiles[i].x] == 1) + for (int i = 0; i < tiles.size(); i++) { - timesCollision.push_back(i); - } - } - - groundCollision = false; - - if (timesCollision.size() > 0) - { - for (int i = 0; i < timesCollision.size(); i++) - { - if (timesCollision[i] == 0 || timesCollision[i] == 1) //Topleft and Topright + if (MapService::getInstance().getMap().getColMap()[tiles[i].y][tiles[i].x] == 1) { - velocity.y = 0; + timesCollision.push_back(i); } - else if (timesCollision[i] == 2 || timesCollision[i] == 3 || //Lefttop and Leftbottom - timesCollision[i] == 4 || timesCollision[i] == 5) //Righttop and Lefttop + } + + groundCollision = false; + + if (timesCollision.size() > 0) + { + for (int i = 0; i < timesCollision.size(); i++) { - velocity.x = 0; - } - else if (timesCollision[i] == 6 || timesCollision[i] == 7) //Bottomleft and Bottomright - { - groundCollision = true; + if (timesCollision[i] == 0 || timesCollision[i] == 1) // Topleft and Topright + { + velocity.y = 0; + } + else if (timesCollision[i] == 2 || timesCollision[i] == 3 || // Lefttop and Leftbottom + timesCollision[i] == 4 || timesCollision[i] == 5) // Righttop and Lefttop + { + velocity.x = 0; + } + else if (timesCollision[i] == 6 || timesCollision[i] == 7) // Bottomleft and Bottomright + { + groundCollision = true; + } } } - } // Set velocity.x based on going right or left @@ -217,7 +230,7 @@ private: // Set groundcollision to false // Loop through collisions // Based on their location (TopLeft, RightTop, etc) change the velocity - + // Apply gravity if not on the floor // If jumping and on the floor, go up @@ -261,6 +274,52 @@ private: AudioService::getInstance().playMusic(); } } + + void rotateGun() + { + if (GameService::getInstance().getMouseWorldPos().x > this->texture.getPosition().x + (this->gunLeft.getSize().x) && spriteAnimation.y == Right) + { + float gunRotationRight = atan2(GameService::getInstance().getMouseWorldPos().y - this->texture.getPosition().y, + GameService::getInstance().getMouseWorldPos().x - this->texture.getPosition().x); + this->gunRight.setRotation(gunRotationRight * 90); + } + else if (GameService::getInstance().getMouseWorldPos().x + (this->gunLeft.getSize().x / 2) < this->texture.getPosition().x && spriteAnimation.y == Left) + { + float gunRotationLeft = atan2(GameService::getInstance().getMouseWorldPos().y - this->texture.getPosition().y, + this->texture.getPosition().x - GameService::getInstance().getMouseWorldPos().x); + this->gunLeft.setRotation(-gunRotationLeft * 90); + } + } + + void drawGun() + { + if (GameService::getInstance().getMouseWorldPos().x > this->texture.getPosition().x + this->gunLeft.getSize().x && spriteAnimation.y == Right) + { + DrawTexturePro( + this->gunRight.getTexture(), + {0, 0, this->gunRight.getSize().x, this->gunRight.getSize().y}, + {this->texture.getPosition().x + this->texture.getSize().x / 2.0f, + this->texture.getPosition().y + this->texture.getSize().x / 2.0f, + this->gunRight.getSize().x, + this->gunRight.getSize().y}, + {this->gunRight.getSize().x / 2.0f, this->gunRight.getSize().y / 2.0f}, + this->gunRight.getRotation(), + WHITE); + } + else if (GameService::getInstance().getMouseWorldPos().x + (this->gunLeft.getSize().x / 2) < this->texture.getPosition().x && spriteAnimation.y == Left) + { + DrawTexturePro( + this->gunLeft.getTexture(), + {0, 0, this->gunLeft.getSize().x, this->gunLeft.getSize().y}, + {this->texture.getPosition().x + this->texture.getSize().x / 2.0f, + this->texture.getPosition().y + this->texture.getSize().x / 2.0f, + this->gunLeft.getSize().x, + this->gunLeft.getSize().y}, + {this->gunLeft.getSize().x / 2.0f, this->gunLeft.getSize().y / 2.0f}, + this->gunLeft.getRotation(), + WHITE); + } + } }; #endif diff --git a/include/entities/TextureWrapper.h b/include/entities/TextureWrapper.h index accd1c8..09cdf88 100644 --- a/include/entities/TextureWrapper.h +++ b/include/entities/TextureWrapper.h @@ -12,6 +12,7 @@ class TextureWrapper { this->texture = texture; this->size = size; this->position = position; + this->sourceRect = sourceRect; } ~TextureWrapper() { @@ -33,6 +34,10 @@ class TextureWrapper { return this->position; } + float getRotation() { + return this->rotation; + } + void setSourceRect(Rectangle rect) { this->sourceRect = rect; } @@ -41,35 +46,40 @@ class TextureWrapper { this->position = position; } + void setRotation(float rot) { + this->rotation = rot; + } + void move(Vector2 deltaPos) { this->position = {this->position.x + deltaPos.x, this->position.y + deltaPos.y}; } /** Returns the 4 corners of the texture */ - std::unordered_map getCorners() { - std::unordered_map corners; - float top = this->position.y; - float right = this->position.x+this->size.x; - float bottom = this->position.y + this->size.y; - float left = this->position.x; - float margin = 8; // Space to the corner - corners[ECorner::TOP_LEFT] = {left+margin, top}; - corners[ECorner::TOP_RIGHT] = {right-margin, top}; - corners[ECorner::RIGHT_TOP] = {right, top+margin}; - corners[ECorner::RIGHT_BOTTOM] = {right, bottom-margin}; - corners[ECorner::BOTTOM_RIGHT] = {right-margin, bottom}; - corners[ECorner::BOTTOM_LEFT] = {left+margin, bottom}; - corners[ECorner::LEFT_BOTTOM] = {left, bottom-margin}; - corners[ECorner::LEFT_TOP] = {left, top+margin}; + // std::unordered_map getCorners() { + // std::unordered_map corners; + // float top = this->position.y; + // float right = this->position.x+this->size.x; + // float bottom = this->position.y + this->size.y; + // float left = this->position.x; + // float margin = 8; // Space to the corner + // corners[ECorner::TOP_LEFT] = {left+margin, top}; + // corners[ECorner::TOP_RIGHT] = {right-margin, top}; + // corners[ECorner::RIGHT_TOP] = {right, top+margin}; + // corners[ECorner::RIGHT_BOTTOM] = {right, bottom-margin}; + // corners[ECorner::BOTTOM_RIGHT] = {right-margin, bottom}; + // corners[ECorner::BOTTOM_LEFT] = {left+margin, bottom}; + // corners[ECorner::LEFT_BOTTOM] = {left, bottom-margin}; + // corners[ECorner::LEFT_TOP] = {left, top+margin}; - return corners; - } + // return corners; + // } private: Texture2D texture; Rectangle sourceRect; Vector2 size; Vector2 position; + float rotation; }; #endif \ No newline at end of file diff --git a/include/services/GameService.h b/include/services/GameService.h index 5e8e364..d98fd3f 100644 --- a/include/services/GameService.h +++ b/include/services/GameService.h @@ -1,30 +1,61 @@ #ifndef GAME_SERVICE_H #define GAME_SERVICE_H -#include "Service.h" +#include "services/Service.h" +#include "entities/Game.h" -class GameService : public Service { +class GameService : public Service +{ public: - bool isPaused() { + bool isPaused() + { return this->paused; } - bool isGameOver() { + bool isGameOver() + { return this->gameOver; } - void setPaused(bool paused) { + void setPaused(bool paused) + { this->paused = paused; } - void setGameOver(bool gameOver) { + void setGameOver(bool gameOver) + { this->gameOver = gameOver; } + void setCamera(Camera2D camera) + { + this->camera = camera; + } + + Camera2D &getCamera() + { + return this->camera; + } + + /** + * Returns the position of the mouse in world coordinates + */ + Vector2 getMouseWorldPos() + { + Vector2 mouseWorldPos = {GetMousePosition().x + camera.target.x - camera.offset.x, GetMousePosition().y}; + return mouseWorldPos; + } + // void setGame(Game game) { + // this->game = game; + // } + + // Game& getGame() { + // return this->game; + // } private: bool paused = false; bool gameOver = false; + Camera2D camera; }; - #endif \ No newline at end of file diff --git a/src/entities/Map.cpp b/src/entities/Map.cpp index c1ddcc5..775e090 100644 --- a/src/entities/Map.cpp +++ b/src/entities/Map.cpp @@ -114,18 +114,18 @@ void Map::loadTileset() this->tileset = AssetService::getInstance().loadTexture("Textures/tileset.png"); } -std::unordered_map Map::cornersToTilePos(std::unordered_map corners) -{ - // std::cout << "Starting converting" << std::endl; - std::unordered_map cornersTilePos; - for (const auto &pair : corners) - { - // std::cout << "Foreach pair" << std::endl; - Vector2 original = corners[pair.first]; - cornersTilePos[pair.first] = {floorf(original.x / this->tileSize), floorf(original.y / this->tileSize)}; - } - return cornersTilePos; -} +// std::unordered_map Map::cornersToTilePos(std::unordered_map corners) +// { +// // std::cout << "Starting converting" << std::endl; +// std::unordered_map cornersTilePos; +// for (const auto &pair : corners) +// { +// // std::cout << "Foreach pair" << std::endl; +// Vector2 original = corners[pair.first]; +// cornersTilePos[pair.first] = {floorf(original.x / this->tileSize), floorf(original.y / this->tileSize)}; +// } +// return cornersTilePos; +// } void Map::draw() { @@ -146,35 +146,35 @@ void Map::draw() } } -std::unordered_map Map::checkForCollision(TextureWrapper texture) -{ - // std::cout << "Converting.." << std::endl; - std::unordered_map cornersTilePos = cornersToTilePos(texture.getCorners()); - // std::cout << "Done with converting" << std::endl; +// std::unordered_map Map::checkForCollision(TextureWrapper texture) +// { +// // std::cout << "Converting.." << std::endl; +// std::unordered_map cornersTilePos = cornersToTilePos(texture.getCorners()); +// // std::cout << "Done with converting" << std::endl; - std::unordered_map cornerCollisions; +// std::unordered_map cornerCollisions; - for (const auto &pair : cornersTilePos) - { - // std::cout << "foreach collision check" << std::endl; - Vector2 pos = cornersTilePos[pair.first]; - // std::cout << pos.x << " " << pos.y << std::endl; - if(colMap[pos.y][pos.x] == 1) { - cornerCollisions[pair.first] = true; - } else { - cornerCollisions[pair.first] = false; - } - } - // std::cout << "Finished collision checks" << std::endl; +// for (const auto &pair : cornersTilePos) +// { +// // std::cout << "foreach collision check" << std::endl; +// Vector2 pos = cornersTilePos[pair.first]; +// // std::cout << pos.x << " " << pos.y << std::endl; +// if(colMap[pos.y][pos.x] == 1) { +// cornerCollisions[pair.first] = true; +// } else { +// cornerCollisions[pair.first] = false; +// } +// } +// // std::cout << "Finished collision checks" << std::endl; - return cornerCollisions; +// return cornerCollisions; - // for (int i = 0; i < tiles.size(); i++) - // { - // if (colMap[tiles[i].y][tiles[i].x] == 1) - // { - // timesCollision.push_back(i); - // } - // } +// // for (int i = 0; i < tiles.size(); i++) +// // { +// // if (colMap[tiles[i].y][tiles[i].x] == 1) +// // { +// // timesCollision.push_back(i); +// // } +// // } -} +// } diff --git a/src/screens/GameScreen.cpp b/src/screens/GameScreen.cpp index d3d445a..3b01485 100644 --- a/src/screens/GameScreen.cpp +++ b/src/screens/GameScreen.cpp @@ -1,6 +1,7 @@ #include "screens/GameScreen.h" #include "entities/Map.h" #include "services/StateService.h" +#include "services/GameService.h" GameScreen::GameScreen() { @@ -12,6 +13,7 @@ GameScreen::GameScreen() // this->map = Map(); this->game = Game(); + // GameService::getInstance().setGame(this->game); // this->camera = camera; } diff --git a/src/screens/TitleScreen.cpp b/src/screens/TitleScreen.cpp index b3bf266..98e7f35 100644 --- a/src/screens/TitleScreen.cpp +++ b/src/screens/TitleScreen.cpp @@ -29,13 +29,13 @@ TitleScreen::TitleScreen() AudioService::getInstance().playMusic(); } - InputService::getInstance().setKeysToWatch({KEY_ENTER}, {}); + InputService::getInstance().setKeysToWatch({KEY_ENTER}, {MOUSE_BUTTON_LEFT}); } void TitleScreen::logic() { // std::cout << "Next screen!" << std::endl; - if (InputService::getInstance().isKeyPressed(KEY_ENTER)) + if (InputService::getInstance().isKeyPressed(KEY_ENTER) || InputService::getInstance().isMouseButtonPressed(MOUSE_BUTTON_LEFT)) { StateService::getInstance().setScreen(EScreen::MAIN); }