#include "level.hpp"
#include "SDL_error.h"
#include "building.hpp"
#include "effect.hpp"
#include "engine.hpp"
#include "spritesheet.hpp"
#include "unit.hpp"
#include <SDL.h>
#include <iostream>
#include <string>
namespace advanced_wars {
Level::Level(std::string name, int width, int height, std::vector<Tile> tiles,
std::vector<Building> buildings, std::vector<Unit> units,
std::vector<Effect> effects)
: name(name), width(width), height(height), tiles(tiles),
buildings(buildings), units(units), effects(effects) {
if ((size_t)(width * height) != tiles.size()) {
throw std::runtime_error("level tile mismatch");
}
};
void Level::render(Engine &engine, std::vector<SDL_Event> &events) {
const int RENDERING_SCALE = 3;
// Iterate over all events
while (!events.empty()) {
events.erase(events.begin());
}
// Tiles
for (Tile &tile : tiles) {
tile.render(engine, RENDERING_SCALE);
}
// Buildings
for (Building &building : buildings) {
building.render(engine, RENDERING_SCALE);
}
// Units
for (Unit &unit : units) {
unit.render(engine, RENDERING_SCALE);
}
// Effects
for (Effect &effect : effects) {
effect.render(engine, RENDERING_SCALE);
}
// Set background color for renderer
if (SDL_SetRenderDrawColor(engine.renderer(), 255, 0, 0, 0)) {
std::cout << "Could not set render draw color: " << SDL_GetError()
<< std::endl;
}
}
} // namespace advanced_wars