diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-04-07 21:58:53 +0100 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-04-07 21:58:53 +0100 |
commit | 12d4a0a5ce85c4034832b7f29c42aaba3101f119 (patch) | |
tree | db96d5e7a65abfce496da3c6562f153fbffc6c0f | |
parent | 884caeb57d6b0b94a21df4412f39d81925e58000 (diff) | |
download | Arider-12d4a0a5ce85c4034832b7f29c42aaba3101f119.tar.gz Arider-12d4a0a5ce85c4034832b7f29c42aaba3101f119.zip |
Fixed sprite batch class and level loading
-rw-r--r-- | include/game.hpp | 3 | ||||
-rw-r--r-- | include/levelloader.hpp | 11 | ||||
-rw-r--r-- | res/levels/level1.txt | 7 | ||||
-rw-r--r-- | src/game.cpp | 15 | ||||
-rw-r--r-- | src/levelloader.cpp | 31 |
5 files changed, 47 insertions, 20 deletions
diff --git a/include/game.hpp b/include/game.hpp index d70332d..3bcc14f 100644 --- a/include/game.hpp +++ b/include/game.hpp @@ -1,6 +1,7 @@ #ifndef GAME_HPP #define GAME_HPP +#include "levelloader.hpp" #include "player.hpp" #include <YAGE/camera2d.hpp> @@ -42,6 +43,8 @@ private: yage::InputManager input_manager_; // player Player player_; + //level + Level level_; // member functions public: diff --git a/include/levelloader.hpp b/include/levelloader.hpp index 3d11a00..07fb372 100644 --- a/include/levelloader.hpp +++ b/include/levelloader.hpp @@ -7,10 +7,15 @@ #include <string> -class LevelLoader { +class Level { +private: + int width_; + int height_; + std::string level_; + public: - static void loadLevel(const std::string &level_path, std::string &level, int &level_width, int &level_height); - static void drawLevel(yage::SpriteBatch &sprite_batch, const std::string &level, int level_width); + void loadLevel(const std::string &level_path); + void drawLevel(yage::SpriteBatch &sprite_batch); }; #endif diff --git a/res/levels/level1.txt b/res/levels/level1.txt new file mode 100644 index 0000000..9fee9c3 --- /dev/null +++ b/res/levels/level1.txt @@ -0,0 +1,7 @@ +eeeeeeeeeeeeeeeeeeeeeeeeeeeee +eeeeeeeeeeeeeeeeeeeeeeeeeeeee +eeeeeeeeeeeeeeeeeeeeeeeeeeeee +eeeeeeeeeeeeeeeeeeeeeeeeeeeee +bbbbbbbbbeeeeeeeeebbbbbbbbbbb +bbbbbbbbbbbbbbbbbbbbbbbbbbbbb +bbbbbbbbbbbbbbbbbbbbbbbbbbbbb diff --git a/src/game.cpp b/src/game.cpp index a59e62d..d2aa548 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1,5 +1,6 @@ #include "animation.hpp" #include "game.hpp" +#include "levelloader.hpp" #include <GL/glew.h> #include <glm/glm.hpp> @@ -44,6 +45,7 @@ void Game::initSystems() player_.animation_.pushFrame(AnimationState::MOVING, "res/textures/Player/p3_walk/PNG/p3_walk0"+std::to_string(i)+".png"); else player_.animation_.pushFrame(AnimationState::MOVING, "res/textures/Player/p3_walk/PNG/p3_walk"+std::to_string(i)+".png"); + level_.loadLevel("res/levels/level1.txt"); } void Game::initShaders() @@ -129,14 +131,17 @@ void Game::renderSprites() // draw the sprite batches sprite_batch_.begin(); + level_.drawLevel(sprite_batch_); + // drawing the player - player_.renderSprite(sprite_batch_); + // player_.renderSprite(sprite_batch_); // drawing the background - sprite_batch_.draw(glm::vec4(0.f, 0.f, 2560.f, 2560.f), glm::vec4(0.f, 0.f, 10.f, 10.f), yage::ResourceManager::getTexture("res/textures/bg_castle.png").id, yage::Color(255, 255, 255, 255), -2.f); - sprite_batch_.draw(glm::vec4(0.f, 0.f, 700.f, 70.f), glm::vec4(0.f, 0.f, 10.f, 1.f), yage::ResourceManager::getTexture("res/textures/Tiles/grassMid.png").id, yage::Color(255, 255, 255, 255), -1.f); - sprite_batch_.draw(glm::vec4(700.f, 0.f, 70.f, 70.f), glm::vec4(0.f, 0.f, 1.f, 1.f), yage::ResourceManager::getTexture("res/textures/Tiles/grassCliffRight.png").id, yage::Color(255, 255, 255, 255), -1.f); - + // sprite_batch_.draw(glm::vec4(0.f, 0.f, 2560.f, 2560.f), glm::vec4(0.f, 0.f, 10.f, 10.f), yage::ResourceManager::getTexture("res/textures/bg_castle.png").id, yage::Color(255, 255, 255, 255), -2.f); + // sprite_batch_.draw(glm::vec4(0.f, 280.f, 700.f, 70.f), glm::vec4(0.f, 0.f, 10.f, 1.f), yage::ResourceManager::getTexture("res/textures/Tiles/grassMid.png").id, yage::Color(255, 255, 255, 255), 0.f); + // sprite_batch_.draw(glm::vec4(0.f, 0.f, 700.f, 70.f), glm::vec4(0.f, 0.f, 10.f, 1.f), yage::ResourceManager::getTexture("res/textures/Tiles/grassMid.png").id, yage::Color(255, 255, 255, 255), -1.f); + // sprite_batch_.draw(glm::vec4(700.f, 0.f, 70.f, 70.f), glm::vec4(0.f, 0.f, 1.f, 1.f), yage::ResourceManager::getTexture("res/textures/Tiles/grassCliffRight.png").id, yage::Color(255, 255, 255, 255), -1.f); + sprite_batch_.end(); sprite_batch_.render(); } diff --git a/src/levelloader.cpp b/src/levelloader.cpp index b4c356f..eb4f38e 100644 --- a/src/levelloader.cpp +++ b/src/levelloader.cpp @@ -1,9 +1,15 @@ #include "levelloader.hpp" +#include <YAGE/resourcemanager.hpp> +#include <YAGE/vertex.hpp> + +#include <glm/glm.hpp> + #include <fstream> +#include <iostream> #include <stdexcept> -void LevelLoader::loadLevel(const std::string &level_path, std::string &level, int &level_width, int &level_height) +void Level::loadLevel(const std::string &level_path) { std::ifstream level_file(level_path); @@ -11,27 +17,28 @@ void LevelLoader::loadLevel(const std::string &level_path, std::string &level, i throw std::runtime_error("Could not load level: '"+level_path+"'"); // initialize inputs to be empty - level=""; - level_width=0; - level_height=0; + level_=""; + width_=0; + height_=0; std::string level_line; while(getline(level_file, level_line)) { - level+=level_line; - if(level_width<(int)level_line.length()) - level_width=level_line.length(); - ++level_height; + level_+=level_line; + if(width_<(int)level_line.length()) + width_=level_line.length(); + ++height_; } } -void LevelLoader::drawLevel(yage::SpriteBatch &sprite_batch, const std::string &level, int level_width) +void Level::drawLevel(yage::SpriteBatch &sprite_batch) { - for(int i=0; i<(int)level.size(); ++i) + for(int i=0; i<(int)level_.size(); ++i) { - switch(level[i]) + switch(level_[i]) { case 'b': // brick + sprite_batch.draw(glm::vec4(70*(i%width_), 70*(height_-i/width_-1), 70.f, 70.f), glm::vec4(0.f, 0.f, 1.f, 1.f), yage::ResourceManager::getTexture("res/textures/Tiles/stoneMid.png").id, yage::Color(255, 255, 255, 255), 5.f); break; case 'e': // empty break; @@ -40,7 +47,7 @@ void LevelLoader::drawLevel(yage::SpriteBatch &sprite_batch, const std::string & case ' ': break; default: - throw std::runtime_error("Could not recognize '"+std::to_string(level[i])+"' in level file"); + throw std::runtime_error("Could not recognize '"+std::to_string(level_[i])+"' in level file"); } } } |