@ -24,8 +24,7 @@ namespace gui {
$ level ( level ) ,
$ level ( level ) ,
$ map_render ( std : : make_shared < sf : : RenderTexture > ( ) ) ,
$ map_render ( std : : make_shared < sf : : RenderTexture > ( ) ) ,
$ map_sprite ( $ map_render - > getTexture ( ) ) ,
$ map_sprite ( $ map_render - > getTexture ( ) ) ,
$ map_tiles ( matrix : : make ( MAP_WIDTH , MAP_HEIGHT ) ) ,
$ map_tiles ( matrix : : make ( MAP_WIDTH , MAP_HEIGHT ) )
$ fow ( matrix : : make ( $ level . map - > width ( ) , $ level . map - > height ( ) ) )
{
{
auto player = $ level . world - > get_the < Player > ( ) ;
auto player = $ level . world - > get_the < Player > ( ) ;
$ player_display = $ level . world - > get < Tile > ( player . entity ) . display ;
$ player_display = $ level . world - > get < Tile > ( player . entity ) . display ;
@ -33,7 +32,6 @@ namespace gui {
void MapViewUI : : update_level ( GameLevel & level ) {
void MapViewUI : : update_level ( GameLevel & level ) {
$ level = level ;
$ level = level ;
$ fow = matrix : : make ( $ level . map - > width ( ) , $ level . map - > height ( ) ) ;
}
}
void MapViewUI : : init ( ) {
void MapViewUI : : init ( ) {
@ -62,19 +60,8 @@ namespace gui {
void MapViewUI : : render ( sf : : RenderWindow & window , int compass_dir ) {
void MapViewUI : : render ( sf : : RenderWindow & window , int compass_dir ) {
$ gui . render ( window ) ;
$ gui . render ( window ) ;
System : : draw_map ( $ level , $ map_tiles , $ entity_map ) ;
auto player = $ level . world - > get_the < components : : Player > ( ) ;
System : : render_map ( $ level , $ map_tiles , $ entity_map , * $ map_render , compass_dir , $ player_display ) ;
auto player_pos = $ level . world - > get < components : : Position > ( player . entity ) . location ;
// NOTE: FoW is probably better done in the lighting system, because it illuminates where you've been. The light calcs could then simply set the light the player touches to 1 when it's run.
for ( matrix : : circle it { $ fow , player_pos , 2.5 } ; it . next ( ) ; ) {
for ( int x = it . left ; x < it . right ; x + + ) {
$ fow [ it . y ] [ x ] = 1 ;
}
}
System : : draw_map ( $ level , $ map_tiles , $ fow , $ entity_map ) ;
System : : render_map ( $ map_tiles , $ entity_map , * $ map_render , compass_dir , $ player_display ) ;
$ map_sprite . setTexture ( $ map_render - > getTexture ( ) , true ) ;
$ map_sprite . setTexture ( $ map_render - > getTexture ( ) , true ) ;
window . draw ( $ map_sprite ) ;
window . draw ( $ map_sprite ) ;
// $gui.debug_layout(window);
// $gui.debug_layout(window);