|
|
@ -673,6 +673,8 @@ void lightingEngineViewscreen::doOcupancyAndLights()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//df::tile_occupancy o = b->OccupancyAt(gpos);
|
|
|
|
//df::tile_occupancy o = b->OccupancyAt(gpos);
|
|
|
|
df::tiletype_shape shape = ENUM_ATTR(tiletype,shape,type);
|
|
|
|
df::tiletype_shape shape = ENUM_ATTR(tiletype,shape,type);
|
|
|
|
|
|
|
|
bool is_wall=!ENUM_ATTR(tiletype_shape,passable_high,shape);
|
|
|
|
|
|
|
|
bool is_floor=!ENUM_ATTR(tiletype_shape,passable_low,shape);
|
|
|
|
df::tiletype_shape_basic basic_shape = ENUM_ATTR(tiletype_shape, basic_shape, shape);
|
|
|
|
df::tiletype_shape_basic basic_shape = ENUM_ATTR(tiletype_shape, basic_shape, shape);
|
|
|
|
df::tiletype_material tileMat= ENUM_ATTR(tiletype,material,type);
|
|
|
|
df::tiletype_material tileMat= ENUM_ATTR(tiletype,material,type);
|
|
|
|
|
|
|
|
|
|
|
@ -685,7 +687,7 @@ void lightingEngineViewscreen::doOcupancyAndLights()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curCell=rgbf(0,0,0);
|
|
|
|
curCell=rgbf(0,0,0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(shape==df::tiletype_shape::WALL)
|
|
|
|
else if(is_wall)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(tileMat==df::tiletype_material::FROZEN_LIQUID)
|
|
|
|
if(tileMat==df::tiletype_material::FROZEN_LIQUID)
|
|
|
|
applyMaterial(tile,matIce);
|
|
|
|
applyMaterial(tile,matIce);
|
|
|
@ -700,8 +702,7 @@ void lightingEngineViewscreen::doOcupancyAndLights()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
applyMaterial(tile,matLava,(float)d.bits.flow_size/7.0f,(float)d.bits.flow_size/7.0f);
|
|
|
|
applyMaterial(tile,matLava,(float)d.bits.flow_size/7.0f,(float)d.bits.flow_size/7.0f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(shape==df::tiletype_shape::EMPTY || shape==df::tiletype_shape::RAMP_TOP
|
|
|
|
else if(!is_floor)
|
|
|
|
|| shape==df::tiletype_shape::STAIR_DOWN || shape==df::tiletype_shape::STAIR_UPDOWN)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(bDown)
|
|
|
|
if(bDown)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -749,20 +750,6 @@ void lightingEngineViewscreen::doOcupancyAndLights()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//plants
|
|
|
|
|
|
|
|
for(int i=0;i<block->plants.size();i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
df::plant* cPlant=block->plants[i];
|
|
|
|
|
|
|
|
if (cPlant->grow_counter <180000) //todo maybe smaller light/oclusion?
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
df::coord2d pos=cPlant->pos;
|
|
|
|
|
|
|
|
pos=worldToViewportCoord(pos,vp,window2d);
|
|
|
|
|
|
|
|
int tile=getIndex(pos.x,pos.y);
|
|
|
|
|
|
|
|
if(isInRect(pos,vp))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
applyMaterial(tile,419,cPlant->material);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//blood and other goo
|
|
|
|
//blood and other goo
|
|
|
|
for(int i=0;i<block->block_events.size();i++)
|
|
|
|
for(int i=0;i<block->block_events.size();i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|