diff --git a/source/level/layercollision.cpp b/source/level/layercollision.cpp index b9d75d663..23e21e4ad 100644 --- a/source/level/layercollision.cpp +++ b/source/level/layercollision.cpp @@ -48,6 +48,7 @@ void CLayerCollision::render(DVECTOR &MapPos) int xoff,yoff; u8 *coll; POLY_F4 *f4; + POLY_F3 *f3; xoff=MapPos.vx&15; yoff=MapPos.vy&15; @@ -58,13 +59,89 @@ void CLayerCollision::render(DVECTOR &MapPos) coll=&Map[mapx+(mapy*MapWidth)]; for(x=-xoff;x<(33*16)-xoff;x+=16) { - if(*coll) + switch(*coll) { - f4=GetPrimF4(); - setXYWH(f4,x,y,16,16); - setRGB0(f4,0,0,90); - setSemiTrans(f4,true); - AddPrimToList(f4,0); + case 0: + break; + + case 1: + case 2: + f4=GetPrimF4(); + setXYWH(f4,x,y,16,16); + setRGB0(f4,0,0,90); + setSemiTrans(f4,true); + AddPrimToList(f4,0); + break; + + case 5: + f3=GetPrimF3(); + setXY3(f3,x+16,y+16, + x,y+16, + x+16,y+8); + setRGB0(f3,0,0,90); + setSemiTrans(f3,true); + AddPrimToList(f3,0); + break; + + case 6: + f3=GetPrimF3(); + setXY3(f3,x,y+16, + x+16,y+16, + x,y+8); + setRGB0(f3,0,0,90); + setSemiTrans(f3,true); + AddPrimToList(f3,0); + break; + + case 9: + f4=GetPrimF4(); + setXY4(f4,x+16,y, + x,y+8, + x+16,y+16, + x,y+16); + setRGB0(f4,0,0,90); + setSemiTrans(f4,true); + AddPrimToList(f4,0); + break; + + case 10: + f4=GetPrimF4(); + setXY4(f4,x,y, + x+16,y+8, + x,y+16, + x+16,y+16); + setRGB0(f4,0,0,90); + setSemiTrans(f4,true); + AddPrimToList(f4,0); + break; + + case 13: + f3=GetPrimF3(); + setXY3(f3,x+16,y+16, + x,y+16, + x+16,y); + setRGB0(f3,0,0,90); + setSemiTrans(f3,true); + AddPrimToList(f3,0); + break; + + case 14: + f3=GetPrimF3(); + setXY3(f3,x,y+16, + x+16,y+16, + x,y); + setRGB0(f3,0,0,90); + setSemiTrans(f3,true); + AddPrimToList(f3,0); + break; + + default: + f4=GetPrimF4(); + setXYWH(f4,x,y,16,16); + setRGB0(f4,200,0,0); + setSemiTrans(f4,true); + AddPrimToList(f4,0); + break; } coll++; }