Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define SHADOWLAYER TURF_LAYER+1.5
  2.  
  3. // If defined, shading is applied as an overlay on areas.
  4. // If not defined, the area icon is changed.
  5. #define USESHADOWOVERLAYS
  6.  
  7. var
  8.     matmaxx = world.maxx + 1
  9.     matmaxy = world.maxy + 1
  10.     list/lightMatrix = new/list(matmaxx * matmaxy * world.maxz)
  11.  
  12.     worldlum[0]
  13.     list/lightsources = list()
  14. #ifdef USESHADOWOVERLAYS
  15.     list/shadowimages
  16. #endif
  17.     useshadow=1
  18.  
  19.     const
  20.         numshades = 8
  21.         maxrad = 12
  22.  
  23.         shader=0
  24.         shadeg=0
  25.         shadeb=96
  26.         maxdark = 224
  27.  
  28.     atomlightcache[9][0]
  29.  
  30.     _shadedAtoms[0]
  31.  
  32. world
  33.     New()
  34.         .=..()
  35.         sleep(1)
  36.         PregenerateAtomShadows()
  37.         worldlum.len = world.maxz
  38.  
  39. proc
  40.     PregenerateAtomShadows()
  41.         set background = 1
  42.         for(var/atom/movable/A in _shadedAtoms)
  43.             if(!isturf(A.loc)) continue
  44.  
  45.             A.PregenerateShadows()
  46.  
  47.             A.UpdateShade()
  48.  
  49.             sleep(0)
  50.  
  51.  
  52.     SetWorldLum(lum,z=1)
  53.         lum = max(0,min(lum,numshades))
  54.         var/dl = lum - worldlum[z]
  55.         for(var/i = 1; i <= lightMatrix.len; ++i) lightMatrix[i] += dl
  56.         worldlum[z] = lum
  57.         for(var/turf/tile in world)
  58.             tile.UpdateShade()
  59.             for(var/atom/a in tile) a.UpdateShade()
  60.             sleep(-1)
  61.  
  62.     RollWorldLum(lum,z=1,delay = 0.25)
  63.         lum = max(0,min(lum,numshades))
  64.         var/dl = lum - worldlum[z]
  65.         for(var/i = 1; i <= lightMatrix.len; ++i) lightMatrix[i] += dl
  66.         worldlum[z] = lum
  67.         for(var/cz = 1; cz<= world.maxz; cz++)
  68.             for(var/x = world.maxx; x>=1; x--)
  69.                 for(var/y = 1; y<=world.maxy; y++)
  70.                     var/turf/tile = locate(x,y,cz)
  71.                     tile.UpdateShade()
  72.                     for(var/atom/a in tile) a.UpdateShade()
  73.                 if(delay > 1)
  74.                     sleep(delay)
  75.                 else
  76.                     if(x%round(1/delay)==0)
  77.                         sleep(1)
  78.                 sleep(-1)
  79.  
  80.     SetLightLayers(z = world.maxz)
  81.         var/req = matmaxx * matmaxy * z
  82.         worldlum.len = world.maxz
  83.         if(lightMatrix.len < req)
  84.             var/lmlen=lightMatrix.len
  85.             lightMatrix.Add(new/list(req - lmlen))
  86.             for(var/i = lmlen + 1; i <= req; ++i)
  87.                 lightMatrix[i] = worldlum[z]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement