|
|
|
#include <catch2/catch_test_macros.hpp>
|
|
|
|
#include <fmt/core.h>
|
|
|
|
#include <nlohmann/json.hpp>
|
|
|
|
#include <fstream>
|
|
|
|
#include "map.hpp"
|
|
|
|
#include "worldbuilder.hpp"
|
|
|
|
#include "lights.hpp"
|
|
|
|
#include "point.hpp"
|
|
|
|
|
|
|
|
using namespace lighting;
|
|
|
|
|
|
|
|
TEST_CASE("lighting a map works", "[lighting]") {
|
|
|
|
Map map(20,23);
|
|
|
|
WorldBuilder builder(map);
|
|
|
|
builder.generate();
|
|
|
|
|
|
|
|
Point light1 = map.place_entity(0);
|
|
|
|
Point light2 = map.place_entity(1);
|
|
|
|
LightSource source1{6, 1.0};
|
|
|
|
LightSource source2{4,3};
|
|
|
|
|
|
|
|
LightRender lr(map.width(), map.height());
|
|
|
|
|
|
|
|
lr.reset_light();
|
|
|
|
|
|
|
|
lr.set_light_target(light1);
|
|
|
|
lr.set_light_target(light2);
|
|
|
|
|
|
|
|
lr.path_light(map.walls());
|
|
|
|
|
|
|
|
lr.render_light(source1, light1);
|
|
|
|
lr.render_light(source2, light2);
|
|
|
|
|
|
|
|
lr.clear_light_target(light1);
|
|
|
|
lr.clear_light_target(light2);
|
|
|
|
|
|
|
|
Matrix &lighting = lr.lighting();
|
|
|
|
|
|
|
|
matrix::dump("WALLS=====", map.walls(), light1.x, light1.y);
|
|
|
|
matrix::dump("PATHS=====", lr.paths(), light1.x, light1.y);
|
|
|
|
matrix::dump("LIGHTING 1", lighting, light1.x, light1.y);
|
|
|
|
matrix::dump("LIGHTING 2", lighting, light2.x, light2.y);
|
|
|
|
}
|