aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-04-07 21:58:53 +0100
committerYann Herklotz <ymherklotz@gmail.com>2017-04-07 21:58:53 +0100
commit12d4a0a5ce85c4034832b7f29c42aaba3101f119 (patch)
treedb96d5e7a65abfce496da3c6562f153fbffc6c0f
parent884caeb57d6b0b94a21df4412f39d81925e58000 (diff)
downloadArider-12d4a0a5ce85c4034832b7f29c42aaba3101f119.tar.gz
Arider-12d4a0a5ce85c4034832b7f29c42aaba3101f119.zip
Fixed sprite batch class and level loading
-rw-r--r--include/game.hpp3
-rw-r--r--include/levelloader.hpp11
-rw-r--r--res/levels/level1.txt7
-rw-r--r--src/game.cpp15
-rw-r--r--src/levelloader.cpp31
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");
}
}
}