summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index 24f3829..2daf153 100644 --- a/src/main.cpp +++ b/src/main.cpp
@@ -358,11 +358,13 @@ void recalculateLighting(Game& game, fov_settings_type* fov)
358 358
359 fov_settings_set_apply_lighting_function( 359 fov_settings_set_apply_lighting_function(
360 fov, 360 fov,
361 [] (void* data, int x, int y, int dx, int dy, void*) { 361 [] (void* data, int x, int y, int dx, int dy, void* source) {
362 Game& game = *static_cast<Game*>(data); 362 Game& game = *static_cast<Game*>(data);
363 363
364 if (game.map.inBounds(x, y)) 364 if (game.map.inBounds(x, y))
365 { 365 {
366 double lightRadius = static_cast<double>(*static_cast<int*>(source));
367
366 if (!game.map.at(x,y).lit) 368 if (!game.map.at(x,y).lit)
367 { 369 {
368 game.litSpots++; 370 game.litSpots++;
@@ -375,7 +377,7 @@ void recalculateLighting(Game& game, fov_settings_type* fov)
375 std::pow( 377 std::pow(
376 std::max( 378 std::max(
377 0.0, 379 0.0,
378 1.0 - std::sqrt(dx * dx + dy * dy) / static_cast<double>(RADIUS)), 380 1.0 - std::sqrt(dx * dx + dy * dy) / lightRadius),
379 1.0/3.0)); 381 1.0/3.0));
380 } 382 }
381 }); 383 });
@@ -388,7 +390,24 @@ void recalculateLighting(Game& game, fov_settings_type* fov)
388 game.map.at(x,y).tile == Tile::Dust || 390 game.map.at(x,y).tile == Tile::Dust ||
389 game.map.at(x,y).tile == Tile::Lamp) 391 game.map.at(x,y).tile == Tile::Lamp)
390 { 392 {
391 fov_circle(fov, static_cast<void*>(&game), nullptr, x, y, RADIUS); 393 int lightRadius;
394
395 if ((game.player_x == x && game.player_y == y && game.renderPlayer) ||
396 game.map.at(x,y).tile == Tile::Lamp)
397 {
398 lightRadius = RADIUS;
399 } else if (game.map.at(x,y).tile == Tile::Dust)
400 {
401 lightRadius = 2;
402 }
403
404 fov_circle(
405 fov,
406 static_cast<void*>(&game),
407 static_cast<void*>(&lightRadius),
408 x,
409 y,
410 lightRadius);
392 411
393 game.map.at(x,y).lit = true; 412 game.map.at(x,y).lit = true;
394 game.map.at(x,y).visibility = 1.0; 413 game.map.at(x,y).visibility = 1.0;
@@ -646,7 +665,7 @@ int main(int, char**)
646 Input keystate; 665 Input keystate;
647 SDL_Event e; 666 SDL_Event e;
648 667
649 size_t dustDt = 30; 668 size_t dustDt = 40;
650 size_t dustAcc = 0; 669 size_t dustAcc = 0;
651 670
652 size_t inputDt = 50; 671 size_t inputDt = 50;