Advertisement
electronic_steve

ccs : ESGraphics no color

Mar 15th, 2015
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.89 KB | None | 0 0
  1.  
  2.  
  3. r={}
  4. fps={}
  5. fps.old=os.time()
  6. fps.enable=true
  7. fps.count=0
  8. fps.fps=20
  9. c={1,128,256,32768} --таблица цветов. просто для упрощения жизни.
  10. local monitor = peripheral.wrap( "top" )
  11.  
  12. r.s={} -- таблица для рендера.
  13. if monitor==nil then r.sx,r.sy=term.getSize() else
  14. r.sx,r.sy=monitor.getSize() end -- размер экрана
  15. r.d={} -- таблица для сравнения рендеров.
  16. r.se={} -- таблица несовпадений рендеров.
  17. r.to=os.time()
  18. r.renderspeed=0 -- чем больше число тем больше  сошибок делает рендер но fps будет выше. если поставить 0 то fps упадет до 10 до не будет глюков рендера.
  19. gh={}
  20. angle=0
  21. defbackcolor=16 -- цвет заднего фона.
  22. keypress=0
  23.  lcolor=1
  24.  
  25. function fps.update()
  26. local time=os.time()*1000*0.05
  27. if time>fps.old+1 then
  28. fps.old=time
  29. fps.fps=fps.count
  30. fps.count=0
  31.  
  32.  end
  33.  
  34.  
  35. return fps.fps
  36. end
  37.  function limit(n,n1) -- 1=<n=<n1
  38. local x=math.min(n,n1)
  39. local nx=math.max(1,x)
  40. return nx
  41. end
  42.  
  43. for y=1,r.sy do
  44. r.s[y]={}
  45. for x=1,r.sx do
  46. r.s[y][x]={" "}
  47. end end
  48. for y=1,r.sy do
  49. r.d[y]={}
  50. for x=1,r.sx do
  51. r.d[y][x]={"X"}
  52. end end
  53.  
  54.  
  55. function gh.rectangle(mode,x,y,x2,y2,text)
  56. local func={}
  57. func["line"]= function(x,y,x2,y2,text)
  58. for nx=0,x2 do
  59. for ny=0,y2 do
  60. if nx==0 or nx==x2 or ny==0 or ny==y2 then
  61. gh.point(x+nx,y+ny,text) end
  62.  
  63.  
  64. end end
  65.  end
  66. func["fill"]= function(x,y,x2,y2,text)
  67. for nx=x,x2 do
  68. for ny=y,y2 do
  69.  
  70. gh.point(nx,ny,text)
  71.  
  72.  
  73. end end
  74.  end
  75.  
  76.  func[mode](x,y,x2,y2,text)
  77.  
  78. end
  79. function gh.point(x,y,text)
  80.  
  81. r.s[limit(y,r.sy)][limit(x,r.sx)]={text}
  82. end
  83. function gh.text(x,y,text)
  84.  
  85. local i=0
  86. for w in string.gmatch(text, ".") do
  87.  
  88.  
  89. gh.point(x+i,y,w)
  90. i=i+1
  91.  
  92.  
  93. end
  94.  
  95.  
  96.  
  97. end
  98. function gh.getTextWidth(text)
  99. local i=0
  100. for S in string.gmatch(text, ".") do
  101. i=i+1
  102. end
  103. return i
  104. end
  105. function gh.line(x2,y2,x3,y3,text)
  106. local x=x3-x2
  107. local y=y3-y2
  108. local nx=x2
  109. local ny=y2
  110. local h=math.sqrt(x^2+y^2)
  111. local sina= y/h
  112. local cosa= x/h
  113.  
  114. for i=1,h do
  115. gh.point(math.floor(nx),math.floor(ny),text)
  116.  
  117. nx=nx+cosa
  118. ny=ny+sina
  119.  
  120.  end
  121.  
  122. end
  123.  function r.draw()
  124.  
  125.  
  126. -- пререндер
  127.  
  128.  
  129.  
  130.  
  131. for y=1,r.sy do
  132. for x=1,r.sx do
  133.  
  134. if  r.s[y][x][1]==r.d[y][x][1] then else
  135. r.se[#r.se+1]={y,x,r.s[y][x][1]}
  136. r.d[y][x][1]=r.s[y][x][1]
  137. r.s[y][x]={" "}
  138. end
  139. end
  140. end
  141.  
  142.  
  143.  
  144.  
  145. -- рендер
  146. if #r.se>0 then
  147. for i=#r.se,1,-1 do
  148.  if  monitor==nil then
  149.  term.setCursorPos(r.se[i][2],r.se[i][1])
  150.  
  151.  
  152. write(r.se[i][3])
  153.  
  154.  else
  155. monitor.setCursorPos(r.se[i][2],r.se[i][1])
  156.  
  157.  
  158. monitor.write(r.se[i][3])
  159.  end
  160. r.se[i]=nil
  161.  
  162.  
  163.  end
  164.  
  165.  
  166.  end
  167.  
  168.  
  169.  for y=1,r.sy do
  170. for x=1,r.sx do
  171. r.s[y][x]={" "}
  172. end end
  173.  end
  174.  
  175.  function r.systemupdate()
  176.  
  177. update()
  178. fps.count=fps.count+1
  179. draw()
  180. r.draw()
  181. sleep(0)
  182.  end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement